RTEMS 4.11Annotated Report
Sun Jan 9 17:10:31 2011
000433f0 <CPU_usage_Per_thread_handler>:
#include <rtems/cpuuse.h>
static void CPU_usage_Per_thread_handler(
Thread_Control *the_thread
)
{
433f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
433f4: 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
}
433f8: 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 );
433fa: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED
433fe: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED
#else
the_thread->cpu_time_used = 0;
#endif
}
0004a12c <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 ) {
4a12c: 7007 moveq #7,%d0
#define MAXSYMLINK 5
int IMFS_Set_handlers(
rtems_filesystem_location_info_t *loc
)
{
4a12e: 4e56 0000 linkw %fp,#0
4a132: 206e 0008 moveal %fp@(8),%a0
4a136: 2f0a movel %a2,%sp@-
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a138: 2468 0010 moveal %a0@(16),%a2
switch( node->type ) {
4a13c: 2250 moveal %a0@,%a1
)
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a13e: 246a 0034 moveal %a2@(52),%a2
switch( node->type ) {
4a142: b0a9 0048 cmpl %a1@(72),%d0
4a146: 6526 bcss 4a16e <IMFS_Set_handlers+0x42> <== NEVER TAKEN
4a148: 2029 0048 movel %a1@(72),%d0
4a14c: d080 addl %d0,%d0
4a14e: 303b 0808 movew %pc@(4a158 <IMFS_Set_handlers+0x2c>,%d0:l),%d0
4a152: 48c0 extl %d0
4a154: 4efb 0802 jmp %pc@(4a158 <IMFS_Set_handlers+0x2c>,%d0:l)
4a158: 0016 .short 0x0016 <== NOT EXECUTED
4a15a: 0010 .short 0x0010 <== NOT EXECUTED
4a15c: 004c .short 0x004c <== NOT EXECUTED
4a15e: 002c .short 0x002c <== NOT EXECUTED
4a160: 002c .short 0x002c <== NOT EXECUTED
4a162: 001e .short 0x001e <== NOT EXECUTED
4a164: 001e .short 0x001e <== NOT EXECUTED
4a166: 003e .short 0x003e <== NOT EXECUTED
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
4a168: 216a 000c 0008 movel %a2@(12),%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a16e: 245f moveal %sp@+,%a2
4a170: 4280 clrl %d0
4a172: 4e5e unlk %fp
4a174: 4e75 rts
4a176: 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;
4a178: 216a 0008 0008 movel %a2@(8),%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a17e: 245f moveal %sp@+,%a2
4a180: 4e5e unlk %fp
4a182: 4e75 rts
4a184: 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;
4a186: 203c 0005 d6d2 movel #382674,%d0 <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a18c: 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;
4a18e: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a192: 4280 clrl %d0 <== NOT EXECUTED
4a194: 4e75 rts <== NOT EXECUTED
4a196: 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;
4a198: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED
break;
}
return 0;
}
4a19e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4a1a0: 4e5e unlk %fp <== NOT EXECUTED
4a1a2: 4e75 rts <== NOT EXECUTED
4a1a4: 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;
4a1a6: 203c 0005 d662 movel #382562,%d0
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1ac: 4e5e unlk %fp
switch( node->type ) {
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
break;
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
4a1ae: 2140 0008 movel %d0,%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a1b2: 4280 clrl %d0 <== NOT EXECUTED
00049e7c <IMFS_allocate_node>:
IMFS_jnode_t *IMFS_allocate_node(
IMFS_jnode_types_t type,
const char *name,
mode_t mode
)
{
49e7c: 4e56 fff8 linkw %fp,#-8
49e80: 2f0a movel %a2,%sp@-
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49e82: 4878 0060 pea 60 <DBL_MANT_DIG+0x2b>
49e86: 4878 0001 pea 1 <ADD>
49e8a: 4eb9 0004 28f0 jsr 428f0 <calloc>
if ( !node )
49e90: 508f addql #8,%sp
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49e92: 2440 moveal %d0,%a2
if ( !node )
49e94: 4a80 tstl %d0
49e96: 6758 beqs 49ef0 <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 );
49e98: 4878 0020 pea 20 <OPER2+0xc>
49e9c: 2f2e 000c movel %fp@(12),%sp@-
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
49ea0: 256e 0008 0048 movel %fp@(8),%a2@(72)
strncpy( node->name, name, IMFS_NAME_MAX );
49ea6: 486a 000c pea %a2@(12)
return NULL;
/*
* Fill in the basic information
*/
node->st_nlink = 1;
49eaa: 7001 moveq #1,%d0
49eac: 3540 0032 movew %d0,%a2@(50)
node->type = type;
strncpy( node->name, name, IMFS_NAME_MAX );
49eb0: 4eb9 0004 fd54 jsr 4fd54 <strncpy>
/*
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
49eb6: 256e 0010 002e movel %fp@(16),%a2@(46)
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
49ebc: 4eb9 0004 b000 jsr 4b000 <geteuid>
49ec2: 3540 0038 movew %d0,%a2@(56)
node->st_gid = getegid();
49ec6: 4eb9 0004 afec jsr 4afec <getegid>
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49ecc: 42a7 clrl %sp@-
49ece: 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();
49ed2: 3540 003a movew %d0,%a2@(58)
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49ed6: 4eb9 0004 2d8c jsr 42d8c <gettimeofday>
node->stat_atime = (time_t) tv.tv_sec;
49edc: 202e fff8 movel %fp@(-8),%d0
node->stat_mtime = (time_t) tv.tv_sec;
node->stat_ctime = (time_t) tv.tv_sec;
return node;
49ee0: 4fef 0014 lea %sp@(20),%sp
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
node->stat_atime = (time_t) tv.tv_sec;
49ee4: 2540 003c movel %d0,%a2@(60)
node->stat_mtime = (time_t) tv.tv_sec;
49ee8: 2540 0040 movel %d0,%a2@(64)
node->stat_ctime = (time_t) tv.tv_sec;
49eec: 2540 0044 movel %d0,%a2@(68)
return node;
}
49ef0: 200a movel %a2,%d0
49ef2: 246e fff4 moveal %fp@(-12),%a2
49ef6: 4e5e unlk %fp <== NOT EXECUTED
0004ab4c <IMFS_check_node_remove>:
void IMFS_check_node_remove( IMFS_jnode_t *jnode )
{
4ab4c: 4e56 0000 linkw %fp,#0
4ab50: 2f0a movel %a2,%sp@-
4ab52: 246e 0008 moveal %fp@(8),%a2
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
4ab56: 2f0a movel %a2,%sp@-
4ab58: 4eb9 0004 b272 jsr 4b272 <rtems_libio_is_file_open>
4ab5e: 588f addql #4,%sp
4ab60: 4a80 tstl %d0
4ab62: 6634 bnes 4ab98 <IMFS_check_node_remove+0x4c> <== ALWAYS TAKEN
4ab64: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED
4ab68: 662e bnes 4ab98 <IMFS_check_node_remove+0x4c> <== NOT EXECUTED
if ( rtems_filesystem_current.node_access == jnode )
4ab6a: 2079 0005 e530 moveal 5e530 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4ab70: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED
4ab74: 6744 beqs 4abba <IMFS_check_node_remove+0x6e> <== NOT EXECUTED
rtems_filesystem_current.node_access = NULL;
switch ( jnode->type ) {
4ab76: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4ab7a: 7204 moveq #4,%d1 <== NOT EXECUTED
4ab7c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ab7e: 6748 beqs 4abc8 <IMFS_check_node_remove+0x7c> <== NOT EXECUTED
4ab80: 123c 0005 moveb #5,%d1 <== NOT EXECUTED
4ab84: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ab86: 6718 beqs 4aba0 <IMFS_check_node_remove+0x54> <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ab88: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4ab8c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ab90: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4ab92: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
}
}
4ab98: 246e fffc moveal %fp@(-4),%a2
4ab9c: 4e5e unlk %fp
4ab9e: 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 );
4aba0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4aba2: 4eb9 0004 d304 jsr 4d304 <IMFS_memfile_remove> <== NOT EXECUTED
break;
4aba8: 588f addql #4,%sp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abaa: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4abae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4abb2: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abb4: 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 ) {
4abba: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4abbe: 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;
4abc0: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
switch ( jnode->type ) {
4abc4: b280 cmpl %d0,%d1 <== NOT EXECUTED
4abc6: 66b8 bnes 4ab80 <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 );
4abc8: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
4abcc: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
break;
4abd2: 588f addql #4,%sp <== NOT EXECUTED
default:
break;
}
free( jnode );
4abd4: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4abd8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4abdc: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4abde: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
00049e0c <IMFS_chown>:
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49e0c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
49e10: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
49e14: 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;
49e18: 2450 moveal %a0@,%a2 <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
49e1a: 4284 clrl %d4 <== NOT EXECUTED
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49e1c: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED
49e20: 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();
49e24: 4eb9 0004 b000 jsr 4b000 <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
49e2a: 4281 clrl %d1 <== NOT EXECUTED
49e2c: 382a 0038 movew %a2@(56),%d4 <== NOT EXECUTED
49e30: 3200 movew %d0,%d1 <== NOT EXECUTED
49e32: b284 cmpl %d4,%d1 <== NOT EXECUTED
49e34: 6704 beqs 49e3a <IMFS_chown+0x2e> <== NOT EXECUTED
49e36: 4a40 tstw %d0 <== NOT EXECUTED
49e38: 6628 bnes 49e62 <IMFS_chown+0x56> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
#endif
jnode->st_uid = owner;
49e3a: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED
jnode->st_gid = group;
49e3e: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED
IMFS_update_ctime( jnode );
49e42: 42a7 clrl %sp@- <== NOT EXECUTED
49e44: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
49e48: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
49e4e: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
49e54: 508f addql #8,%sp <== NOT EXECUTED
49e56: 4280 clrl %d0 <== NOT EXECUTED
}
49e58: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED
49e5e: 4e5e unlk %fp <== NOT EXECUTED
49e60: 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 );
49e62: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
49e68: 7201 moveq #1,%d1 <== NOT EXECUTED
49e6a: 2040 moveal %d0,%a0 <== NOT EXECUTED
49e6c: 70ff moveq #-1,%d0 <== NOT EXECUTED
jnode->st_gid = group;
IMFS_update_ctime( jnode );
return 0;
}
49e6e: 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 );
49e74: 2081 movel %d1,%a0@ <== NOT EXECUTED
jnode->st_gid = group;
IMFS_update_ctime( jnode );
return 0;
}
49e76: 4e5e unlk %fp <== NOT EXECUTED
...
00049efa <IMFS_create_node>:
IMFS_jnode_types_t type,
const char *name,
mode_t mode,
const IMFS_types_union *info
)
{
49efa: 4e56 ffec linkw %fp,#-20
49efe: 206e 0008 moveal %fp@(8),%a0
49f02: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
49f06: 242e 000c movel %fp@(12),%d2
49f0a: 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 )
49f0e: 4a88 tstl %a0
49f10: 6700 00ac beqw 49fbe <IMFS_create_node+0xc4>
return NULL;
parent = parent_loc->node_access;
fs_info = parent_loc->mt_entry->fs_info;
49f14: 2268 0010 moveal %a0@(16),%a1
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49f18: 7007 moveq #7,%d0
* MUST have a parent node to call this routine.
*/
if ( parent_loc == NULL )
return NULL;
parent = parent_loc->node_access;
49f1a: 2650 moveal %a0@,%a3
fs_info = parent_loc->mt_entry->fs_info;
49f1c: 2469 0034 moveal %a1@(52),%a2
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49f20: b082 cmpl %d2,%d0
49f22: 6700 008c beqw 49fb0 <IMFS_create_node+0xb6>
return NULL;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
49f26: 2079 0005 e530 moveal 5e530 <rtems_current_user_env>,%a0
49f2c: 2028 002c movel %a0@(44),%d0
49f30: 4680 notl %d0
49f32: c0ae 0014 andl %fp@(20),%d0
49f36: 2f00 movel %d0,%sp@-
49f38: 2f2e 0010 movel %fp@(16),%sp@-
49f3c: 2f02 movel %d2,%sp@-
49f3e: 4eb9 0004 9e7c jsr 49e7c <IMFS_allocate_node>
if ( !node )
49f44: 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 );
49f48: 2a40 moveal %d0,%a5
if ( !node )
49f4a: 4a80 tstl %d0
49f4c: 6756 beqs 49fa4 <IMFS_create_node+0xaa> <== NEVER TAKEN
return NULL;
/*
* Set the type specific information
*/
if ( type == IMFS_DIRECTORY ) {
49f4e: 7001 moveq #1,%d0
49f50: b082 cmpl %d2,%d0
49f52: 6778 beqs 49fcc <IMFS_create_node+0xd2>
rtems_chain_initialize_empty(&node->info.directory.Entries);
} else if ( type == IMFS_HARD_LINK ) {
49f54: 7003 moveq #3,%d0
49f56: b082 cmpl %d2,%d0
49f58: 6700 00d6 beqw 4a030 <IMFS_create_node+0x136>
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
49f5c: 7204 moveq #4,%d1
49f5e: b282 cmpl %d2,%d1
49f60: 6700 00ce beqw 4a030 <IMFS_create_node+0x136>
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
49f64: 7002 moveq #2,%d0
49f66: b082 cmpl %d2,%d0
49f68: 6700 0098 beqw 4a002 <IMFS_create_node+0x108>
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
49f6c: 7206 moveq #6,%d1
49f6e: b282 cmpl %d2,%d1
49f70: 6700 010e beqw 4a080 <IMFS_create_node+0x186>
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
49f74: 7205 moveq #5,%d1
49f76: b282 cmpl %d2,%d1
49f78: 6700 013a beqw 4a0b4 <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 ) {
49f7c: 7207 moveq #7,%d1 <== NOT EXECUTED
49f7e: b282 cmpl %d2,%d1 <== NOT EXECUTED
49f80: 6700 00d6 beqw 4a058 <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;
49f84: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
49f88: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49f8a: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49f8e: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
49f92: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
49f96: 2f0d movel %a5,%sp@- <== NOT EXECUTED
49f98: 486b 004c pea %a3@(76) <== NOT EXECUTED
49f9c: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49fa2: 508f addql #8,%sp <== NOT EXECUTED
}
49fa4: 200d movel %a5,%d0
49fa6: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
49fac: 4e5e unlk %fp
49fae: 4e75 rts
fs_info = parent_loc->mt_entry->fs_info;
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49fb0: 223c 0005 d5f2 movel #382450,%d1 <== NOT EXECUTED
49fb6: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED
49fba: 6600 ff6a bnew 49f26 <IMFS_create_node+0x2c> <== NOT EXECUTED
fs_info->fifo_handlers == &rtems_filesystem_handlers_default )
return NULL;
49fbe: 9bcd subal %a5,%a5 <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
}
49fc0: 200d movel %a5,%d0 <== NOT EXECUTED
49fc2: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
49fc8: 4e5e unlk %fp <== NOT EXECUTED
49fca: 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 );
49fcc: 41ed 0050 lea %a5@(80),%a0
49fd0: 2b48 004c movel %a0,%a5@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
49fd4: 41ed 004c lea %a5@(76),%a0
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
49fd8: 42ad 0050 clrl %a5@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
49fdc: 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;
49fe0: 202a 0004 movel %a2@(4),%d0
49fe4: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49fe6: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
49fea: 2540 0004 movel %d0,%a2@(4)
49fee: 2b40 0034 movel %d0,%a5@(52)
49ff2: 2f0d movel %a5,%sp@-
49ff4: 486b 004c pea %a3@(76)
49ff8: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49ffe: 508f addql #8,%sp
4a000: 60a2 bras 49fa4 <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;
4a002: 2b54 004c movel %a4@,%a5@(76)
node->info.device.minor = info->device.minor;
4a006: 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;
4a00c: 202a 0004 movel %a2@(4),%d0
4a010: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a012: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a016: 2540 0004 movel %d0,%a2@(4)
4a01a: 2b40 0034 movel %d0,%a5@(52)
4a01e: 2f0d movel %a5,%sp@-
4a020: 486b 004c pea %a3@(76)
4a024: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a02a: 508f addql #8,%sp
4a02c: 6000 ff76 braw 49fa4 <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;
4a030: 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;
4a034: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4a038: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a03a: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a03e: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4a042: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
4a046: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4a048: 486b 004c pea %a3@(76) <== NOT EXECUTED
4a04c: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a052: 508f addql #8,%sp <== NOT EXECUTED
4a054: 6000 ff4e braw 49fa4 <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;
4a058: 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;
4a05c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a060: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
4a064: 5280 addql #1,%d0 <== NOT EXECUTED
4a066: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4a06a: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
4a06e: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4a070: 486b 004c pea %a3@(76) <== NOT EXECUTED
4a074: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a07a: 508f addql #8,%sp <== NOT EXECUTED
4a07c: 6000 ff26 braw 49fa4 <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;
4a080: 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;
4a084: 4280 clrl %d0 <== NOT EXECUTED
4a086: 4281 clrl %d1 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a088: 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;
4a08c: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED
4a090: 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;
4a094: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4a098: 5280 addql #1,%d0 <== NOT EXECUTED
4a09a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4a09e: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
4a0a2: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4a0a4: 486b 004c pea %a3@(76) <== NOT EXECUTED
4a0a8: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a0ae: 508f addql #8,%sp <== NOT EXECUTED
4a0b0: 6000 fef2 braw 49fa4 <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;
4a0b4: 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;
4a0b8: 4280 clrl %d0
4a0ba: 4281 clrl %d1
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
4a0bc: 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;
4a0c0: 2b40 004c movel %d0,%a5@(76)
4a0c4: 2b41 0050 movel %d1,%a5@(80)
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
4a0c8: 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;
4a0cc: 202a 0004 movel %a2@(4),%d0
4a0d0: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
4a0d2: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
4a0d6: 2540 0004 movel %d0,%a2@(4)
4a0da: 2b40 0034 movel %d0,%a5@(52)
4a0de: 2f0d movel %a5,%sp@-
4a0e0: 486b 004c pea %a3@(76)
4a0e4: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
4a0ea: 508f addql #8,%sp
4a0ec: 6000 feb6 braw 49fa4 <IMFS_create_node+0xaa>
0004ab08 <IMFS_create_orphan>:
#include <rtems/libio_.h>
#include "imfs.h"
void IMFS_create_orphan( IMFS_jnode_t *jnode )
{
4ab08: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4ab0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ab0e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
4ab12: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4ab16: 670e beqs 4ab26 <IMFS_create_orphan+0x1e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4ab18: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ab1a: 4eb9 0004 6f08 jsr 46f08 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
4ab20: 588f addql #4,%sp <== NOT EXECUTED
4ab22: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
}
--jnode->st_nlink;
IMFS_update_ctime( jnode );
4ab26: 42a7 clrl %sp@- <== NOT EXECUTED
4ab28: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
}
--jnode->st_nlink;
4ab2c: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED
4ab30: 5380 subql #1,%d0 <== NOT EXECUTED
4ab32: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4ab36: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4ab3c: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
4ab42: 508f addql #8,%sp <== NOT EXECUTED
}
4ab44: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4ab48: 4e5e unlk %fp <== NOT EXECUTED
0004a0f0 <IMFS_create_root_node>:
return node;
}
IMFS_jnode_t *IMFS_create_root_node(void)
{
4a0f0: 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) );
4a0f4: 4878 41ed pea 41ed <D_MAX_EXP+0x39ee>
4a0f8: 4879 0005 d450 pea 5d450 <rtems_filesystem_default_pathconf+0xb4>
4a0fe: 4878 0001 pea 1 <ADD>
4a102: 4eb9 0004 9e7c jsr 49e7c <IMFS_allocate_node>
if ( !node )
4a108: 4fef 000c lea %sp@(12),%sp
4a10c: 4a80 tstl %d0
4a10e: 6716 beqs 4a126 <IMFS_create_root_node+0x36> <== NEVER TAKEN
Chain_Node *tail = _Chain_Tail( the_chain );
4a110: 2240 moveal %d0,%a1
head->next = tail;
head->previous = NULL;
4a112: 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 );
4a114: 43e9 0050 lea %a1@(80),%a1
4a118: 2149 004c movel %a1,%a0@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a11c: 5989 subql #4,%a1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4a11e: 42a8 0050 clrl %a0@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a122: 2149 0054 movel %a1,%a0@(84)
* NOTE: Root node is always a directory.
*/
rtems_chain_initialize_empty(&node->info.directory.Entries);
return node;
}
4a126: 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 4888 moveal 64888 <_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 3f24 lea 53f24 <fwrite>,%a2 <== NOT EXECUTED
44fd0: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
44fd4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44fd8: 4879 0006 2f56 pea 62f56 <IntUartPollCallbacks.6370+0x88> <== NOT EXECUTED
44fde: 4e92 jsr %a2@ <== NOT EXECUTED
fprintf(stdout, "/\n" );
44fe0: 2079 0006 4888 moveal 64888 <_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 2f8b pea 62f8b <IntUartPollCallbacks.6370+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 47c0 moveal 647c0 <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 4888 moveal 64888 <_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 2f8e pea 62f8e <IntUartPollCallbacks.6370+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 3f24 lea 53f24 <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 4888 moveal 64888 <_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 2f51 pea 62f51 <IntUartPollCallbacks.6370+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
0004a29c <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 ) ) {
4a29c: 70f8 moveq #-8,%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
4a29e: 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 ) ) {
4a2a2: 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 */
)
{
4a2a6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4a2aa: 2a6e 0008 moveal %fp@(8),%a5
4a2ae: 246e 000c moveal %fp@(12),%a2
4a2b2: 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 ) ) {
4a2b6: 4a80 tstl %d0
4a2b8: 6600 0238 bnew 4a4f2 <IMFS_eval_path+0x256>
4a2bc: 2c0e movel %fp,%d6
4a2be: 280e movel %fp,%d4
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
int i = 0;
4a2c0: 4282 clrl %d2
4a2c2: 5986 subql #4,%d6
4a2c4: 0684 ffff ffdb addil #-37,%d4
4a2ca: 2a3c 0004 aa28 movel #305704,%d5
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a2d0: 2e3c 0004 a9ac movel #305580,%d7
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a2d6: 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 );
4a2d8: 2f06 movel %d6,%sp@-
4a2da: 2045 moveal %d5,%a0
4a2dc: 2f04 movel %d4,%sp@-
4a2de: 2f0a movel %a2,%sp@-
4a2e0: 4875 2800 pea %a5@(00000000,%d2:l)
4a2e4: 4e90 jsr %a0@
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a2e6: 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 );
4a2e8: 2600 movel %d0,%d3
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a2ea: 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;
4a2ee: 202e fffc movel %fp@(-4),%d0
i += len;
if ( !pathloc->node_access )
4a2f2: 4a88 tstl %a0
4a2f4: 6700 00f8 beqw 4a3ee <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;
4a2f8: 95c0 subal %d0,%a2
i += len;
4a2fa: 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 )
4a2fc: 4a83 tstl %d3
4a2fe: 6662 bnes 4a362 <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 ) {
4a300: 7201 moveq #1,%d1
4a302: b2a8 0048 cmpl %a0@(72),%d1
4a306: 6600 0132 bnew 4a43a <IMFS_eval_path+0x19e>
if ( node->info.directory.mt_fs != NULL ) {
4a30a: 2068 0058 moveal %a0@(88),%a0
4a30e: 4a88 tstl %a0
4a310: 6700 0128 beqw 4a43a <IMFS_eval_path+0x19e>
4a314: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED
4a318: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED
4a31c: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED
4a320: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED
4a324: 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],
4a328: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a32a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a32e: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
4a332: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED
4a336: 9488 subl %a0,%d2 <== NOT EXECUTED
4a338: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED
4a33c: 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 ) {
4a33e: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED
4a342: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED
4a346: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED
4a34a: 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],
4a34e: 4e90 jsr %a0@ <== NOT EXECUTED
4a350: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4a354: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a356: 2003 movel %d3,%d0
4a358: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a35e: 4e5e unlk %fp
4a360: 4e75 rts
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
4a362: 7001 moveq #1,%d0
4a364: b0ab 0048 cmpl %a3@(72),%d0
4a368: 6700 00b8 beqw 4a422 <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;
4a36c: 2648 moveal %a0,%a3
switch( type ) {
4a36e: 7003 moveq #3,%d0
4a370: b083 cmpl %d3,%d0
4a372: 671c beqs 4a390 <IMFS_eval_path+0xf4>
4a374: 7204 moveq #4,%d1
4a376: b283 cmpl %d3,%d1
4a378: 6700 008e beqw 4a408 <IMFS_eval_path+0x16c>
4a37c: 103c 0002 moveb #2,%d0
4a380: b083 cmpl %d3,%d0
4a382: 6748 beqs 4a3cc <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) ) {
4a384: 7004 moveq #4,%d0
4a386: b083 cmpl %d3,%d0
4a388: 6600 ff4e bnew 4a2d8 <IMFS_eval_path+0x3c>
4a38c: 6000 ff72 braw 4a300 <IMFS_eval_path+0x64> <== NOT EXECUTED
case IMFS_NAME:
/*
* If we are at a link follow it.
*/
if ( node->type == IMFS_HARD_LINK ) {
4a390: 2028 0048 movel %a0@(72),%d0
4a394: 7203 moveq #3,%d1
4a396: b280 cmpl %d0,%d1
4a398: 6700 00d8 beqw 4a472 <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 ) {
4a39c: 7204 moveq #4,%d1
4a39e: b280 cmpl %d0,%d1
4a3a0: 6700 0134 beqw 4a4d6 <IMFS_eval_path+0x23a>
}
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a3a4: 7201 moveq #1,%d1
4a3a6: b280 cmpl %d0,%d1
4a3a8: 6600 0162 bnew 4a50c <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 ) {
4a3ac: 206b 0058 moveal %a3@(88),%a0
4a3b0: 4a88 tstl %a0
4a3b2: 6600 ff60 bnew 4a314 <IMFS_eval_path+0x78>
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a3b6: 2f04 movel %d4,%sp@-
4a3b8: 2047 moveal %d7,%a0
4a3ba: 2f0b movel %a3,%sp@-
4a3bc: 4e90 jsr %a0@
if ( !node )
4a3be: 508f addql #8,%sp
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a3c0: 2640 moveal %d0,%a3
if ( !node )
4a3c2: 4a80 tstl %d0
4a3c4: 6728 beqs 4a3ee <IMFS_eval_path+0x152>
/*
* Set the node access to the point we have found.
*/
pathloc->node_access = node;
4a3c6: 288b movel %a3,%a4@
4a3c8: 6000 ff0e braw 4a2d8 <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 )
4a3cc: 2279 0005 e530 moveal 5e530 <rtems_current_user_env>,%a1 <== NOT EXECUTED
4a3d2: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED
4a3d6: 6700 ff00 beqw 4a2d8 <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) {
4a3da: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a3de: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED
4a3e2: 6700 00a4 beqw 4a488 <IMFS_eval_path+0x1ec> <== NOT EXECUTED
pathnamelen+len,
flags,pathloc);
}
} else {
if ( !node->Parent )
4a3e6: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
4a3ea: 4a8b tstl %a3 <== NOT EXECUTED
4a3ec: 66d8 bnes 4a3c6 <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 );
4a3ee: 4eb9 0004 e8e4 jsr 4e8e4 <__errno>
4a3f4: 76ff moveq #-1,%d3
4a3f6: 7a02 moveq #2,%d5
4a3f8: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a3fa: 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 );
4a3fc: 2085 movel %d5,%a0@
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a3fe: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a404: 4e5e unlk %fp
4a406: 4e75 rts
case IMFS_NO_MORE_PATH:
case IMFS_CURRENT_DIR:
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4a408: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a40e: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a410: 785b moveq #91,%d4 <== NOT EXECUTED
4a412: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a414: 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 );
4a416: 2084 movel %d4,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a418: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a41e: 4e5e unlk %fp <== NOT EXECUTED
4a420: 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 ) )
4a422: 4878 0001 pea 1 <ADD>
4a426: 2f0c movel %a4,%sp@-
4a428: 4eb9 0004 a1b6 jsr 4a1b6 <IMFS_evaluate_permission>
4a42e: 508f addql #8,%sp
4a430: 4a80 tstl %d0
4a432: 6724 beqs 4a458 <IMFS_eval_path+0x1bc> <== NEVER TAKEN
4a434: 2054 moveal %a4@,%a0
4a436: 6000 ff34 braw 4a36c <IMFS_eval_path+0xd0>
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a43a: 2f0c movel %a4,%sp@-
4a43c: 4eb9 0004 a12c jsr 4a12c <IMFS_Set_handlers>
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a442: 2eae 0010 movel %fp@(16),%sp@
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a446: 2600 movel %d0,%d3
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a448: 2f0c movel %a4,%sp@-
4a44a: 4eb9 0004 a1b6 jsr 4a1b6 <IMFS_evaluate_permission>
4a450: 508f addql #8,%sp
4a452: 4a80 tstl %d0
4a454: 6600 ff00 bnew 4a356 <IMFS_eval_path+0xba>
rtems_set_errno_and_return_minus_one( EACCES );
4a458: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a45e: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a460: 740d moveq #13,%d2 <== NOT EXECUTED
4a462: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a464: 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 );
4a466: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a468: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a46e: 4e5e unlk %fp <== NOT EXECUTED
4a470: 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 );
4a472: 42a7 clrl %sp@- <== NOT EXECUTED
4a474: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a476: 4eb9 0004 a250 jsr 4a250 <IMFS_evaluate_hard_link> <== NOT EXECUTED
node = pathloc->node_access;
4a47c: 2654 moveal %a4@,%a3 <== NOT EXECUTED
4a47e: 508f addql #8,%sp <== NOT EXECUTED
4a480: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED
4a484: 6000 ff1e braw 4a3a4 <IMFS_eval_path+0x108> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a488: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED
4a48c: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
4a490: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED
4a494: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED
4a498: 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]),
4a49c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a49e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a4a2: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED
4a4a6: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED
4a4aa: 9489 subl %a1,%d2 <== NOT EXECUTED
4a4ac: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED
4a4b0: 2250 moveal %a0@,%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a4b2: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED
4a4b6: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED
4a4ba: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED
4a4be: 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]),
4a4c2: 4e91 jsr %a1@ <== NOT EXECUTED
4a4c4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4a4c8: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a4ca: 2003 movel %d3,%d0 <== NOT EXECUTED
4a4cc: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a4d2: 4e5e unlk %fp <== NOT EXECUTED
4a4d4: 4e75 rts <== NOT EXECUTED
* was broken.
*/
IMFS_assert( node );
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_sym_link( pathloc, 0 );
4a4d6: 42a7 clrl %sp@- <== NOT EXECUTED
4a4d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a4da: 4eb9 0004 a534 jsr 4a534 <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;
4a4e0: 2654 moveal %a4@,%a3 <== NOT EXECUTED
if ( result == -1 )
4a4e2: 508f addql #8,%sp <== NOT EXECUTED
4a4e4: 72ff moveq #-1,%d1 <== NOT EXECUTED
4a4e6: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a4e8: 673c beqs 4a526 <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;
4a4ea: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED
4a4ee: 6000 feb4 braw 4a3a4 <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 );
4a4f2: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a4f8: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a4fa: 7e05 moveq #5,%d7 <== NOT EXECUTED
4a4fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a4fe: 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 );
4a500: 2087 movel %d7,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a502: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a508: 4e5e unlk %fp <== NOT EXECUTED
4a50a: 4e75 rts <== NOT EXECUTED
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a50c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a512: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a514: 7c14 moveq #20,%d6 <== NOT EXECUTED
4a516: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a518: 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 );
4a51a: 2086 movel %d6,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a51c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a522: 4e5e unlk %fp <== NOT EXECUTED
4a524: 4e75 rts <== NOT EXECUTED
4a526: 2600 movel %d0,%d3 <== NOT EXECUTED
4a528: 2003 movel %d3,%d0 <== NOT EXECUTED
4a52a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a530: 4e5e unlk %fp <== NOT EXECUTED
0004a676 <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 */
)
{
4a676: 4e56 ffb0 linkw %fp,#-80
4a67a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4a67e: 286e 0008 moveal %fp@(8),%a4
4a682: 2e0e movel %fp,%d7
4a684: 2c0e movel %fp,%d6
int i = 0;
4a686: 4284 clrl %d4
4a688: 5987 subql #4,%d7
4a68a: 0686 ffff ffdb addil #-37,%d6
4a690: 4bf9 0004 aa28 lea 4aa28 <IMFS_get_token>,%a5
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a696: 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 */
)
{
4a698: 266e 000c moveal %fp@(12),%a3
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a69c: 4eb9 0004 fd3c jsr 4fd3c <strlen>
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a6a2: 2453 moveal %a3@,%a2
/*
* Get the path length.
*/
pathlen = strlen( path );
4a6a4: 588f addql #4,%sp
4a6a6: 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 );
4a6a8: 2f07 movel %d7,%sp@-
4a6aa: 2f06 movel %d6,%sp@-
4a6ac: 2f02 movel %d2,%sp@-
4a6ae: 4874 4800 pea %a4@(00000000,%d4:l)
4a6b2: 4e95 jsr %a5@
pathlen -= len;
4a6b4: 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 );
4a6b8: 2600 movel %d0,%d3
pathlen -= len;
i += len;
if ( !pathloc->node_access )
4a6ba: 4fef 0010 lea %sp@(16),%sp
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
4a6be: 9485 subl %d5,%d2
i += len;
if ( !pathloc->node_access )
4a6c0: 2053 moveal %a3@,%a0
4a6c2: 4a88 tstl %a0
4a6c4: 6700 00ca beqw 4a790 <IMFS_evaluate_for_make+0x11a>
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
4a6c8: 4a80 tstl %d0
4a6ca: 6742 beqs 4a70e <IMFS_evaluate_for_make+0x98> <== NEVER TAKEN
if ( node->type == IMFS_DIRECTORY )
4a6cc: 7001 moveq #1,%d0
4a6ce: b0aa 0048 cmpl %a2@(72),%d0
4a6d2: 6700 00d6 beqw 4a7aa <IMFS_evaluate_for_make+0x134>
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
i += len;
4a6d6: 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;
4a6d8: 2448 moveal %a0,%a2
switch( type ) {
4a6da: 7002 moveq #2,%d0
4a6dc: b083 cmpl %d3,%d0
4a6de: 6700 008e beqw 4a76e <IMFS_evaluate_for_make+0xf8>
4a6e2: 6426 bccs 4a70a <IMFS_evaluate_for_make+0x94>
4a6e4: 7203 moveq #3,%d1
4a6e6: b283 cmpl %d3,%d1
4a6e8: 673e beqs 4a728 <IMFS_evaluate_for_make+0xb2> <== ALWAYS TAKEN
4a6ea: 7004 moveq #4,%d0 <== NOT EXECUTED
4a6ec: b083 cmpl %d3,%d0 <== NOT EXECUTED
4a6ee: 66b8 bnes 4a6a8 <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 );
4a6f0: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a6f6: 7c5b moveq #91,%d6 <== NOT EXECUTED
4a6f8: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a6fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a6fc: 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;
}
4a6fe: 2003 movel %d3,%d0
4a700: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a706: 4e5e unlk %fp
4a708: 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 ) {
4a70a: 4a83 tstl %d3
4a70c: 669a bnes 4a6a8 <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 );
4a70e: 4eb9 0004 e8e4 jsr 4e8e4 <__errno>
4a714: 76ff moveq #-1,%d3
4a716: 7e11 moveq #17,%d7
4a718: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a71a: 2003 movel %d3,%d0
pathloc->node_access = node;
break;
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
4a71c: 2087 movel %d7,%a0@
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a71e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a724: 4e5e unlk %fp
4a726: 4e75 rts
pathloc->node_access = node;
break;
case IMFS_NAME:
if ( node->type == IMFS_HARD_LINK ) {
4a728: 2028 0048 movel %a0@(72),%d0
4a72c: 7203 moveq #3,%d1
4a72e: b280 cmpl %d0,%d1
4a730: 6700 014e beqw 4a880 <IMFS_evaluate_for_make+0x20a>
result = IMFS_evaluate_link( pathloc, 0 );
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
4a734: 7204 moveq #4,%d1
4a736: b280 cmpl %d0,%d1
4a738: 6700 0146 beqw 4a880 <IMFS_evaluate_for_make+0x20a>
if ( result == -1 )
return -1;
}
node = pathloc->node_access;
if ( !node )
4a73c: 4a8a tstl %a2
4a73e: 6700 015c beqw 4a89c <IMFS_evaluate_for_make+0x226>
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a742: 7001 moveq #1,%d0
4a744: b0aa 0048 cmpl %a2@(72),%d0
4a748: 6600 0152 bnew 4a89c <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 ) {
4a74c: 206a 0058 moveal %a2@(88),%a0
4a750: 4a88 tstl %a0
4a752: 6600 0162 bnew 4a8b6 <IMFS_evaluate_for_make+0x240>
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a756: 2f06 movel %d6,%sp@-
4a758: 2f0a movel %a2,%sp@-
4a75a: 4eb9 0004 a9ac jsr 4a9ac <IMFS_find_match_in_dir>
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a760: 508f addql #8,%sp
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a762: 2440 moveal %d0,%a2
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a764: 4a80 tstl %d0
4a766: 675a beqs 4a7c2 <IMFS_evaluate_for_make+0x14c>
done = true;
else
pathloc->node_access = node;
4a768: 268a movel %a2,%a3@
4a76a: 6000 ff3c braw 4a6a8 <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 )
4a76e: 2279 0005 e530 moveal 5e530 <rtems_current_user_env>,%a1 <== NOT EXECUTED
4a774: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED
4a778: 6700 ff2e beqw 4a6a8 <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){
4a77c: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED
4a780: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED
4a784: 6700 00b0 beqw 4a836 <IMFS_evaluate_for_make+0x1c0> <== NOT EXECUTED
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
}
} else {
if ( !node->Parent )
4a788: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
4a78c: 4a8a tstl %a2 <== NOT EXECUTED
4a78e: 66d8 bnes 4a768 <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 );
4a790: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a796: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a798: 7a02 moveq #2,%d5 <== NOT EXECUTED
4a79a: 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;
}
4a79c: 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 );
4a79e: 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;
}
4a7a0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a7a6: 4e5e unlk %fp <== NOT EXECUTED
4a7a8: 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 ) )
4a7aa: 4878 0001 pea 1 <ADD>
4a7ae: 2f0b movel %a3,%sp@-
4a7b0: 4eb9 0004 a1b6 jsr 4a1b6 <IMFS_evaluate_permission>
4a7b6: 508f addql #8,%sp
4a7b8: 4a80 tstl %d0
4a7ba: 6760 beqs 4a81c <IMFS_evaluate_for_make+0x1a6> <== NEVER TAKEN
4a7bc: 2053 moveal %a3@,%a0
4a7be: 6000 ff16 braw 4a6d6 <IMFS_evaluate_for_make+0x60>
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4a7c2: 2004 movel %d4,%d0
4a7c4: 90ae fffc subl %fp@(-4),%d0
4a7c8: d08c addl %a4,%d0
4a7ca: 206e 0010 moveal %fp@(16),%a0
4a7ce: 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++) {
4a7d0: 1034 4800 moveb %a4@(00000000,%d4:l),%d0
4a7d4: 671a beqs 4a7f0 <IMFS_evaluate_for_make+0x17a> <== ALWAYS TAKEN
4a7d6: 4bf9 0004 3c2c lea 43c2c <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(
4a7dc: 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 ] ) )
4a7e0: 49c0 extbl %d0 <== NOT EXECUTED
4a7e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a7e4: 4e95 jsr %a5@ <== NOT EXECUTED
4a7e6: 588f addql #4,%sp <== NOT EXECUTED
4a7e8: 4a80 tstl %d0 <== NOT EXECUTED
4a7ea: 67a4 beqs 4a790 <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++) {
4a7ec: 101a moveb %a2@+,%d0 <== NOT EXECUTED
4a7ee: 66f0 bnes 4a7e0 <IMFS_evaluate_for_make+0x16a> <== NOT EXECUTED
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a7f0: 2f0b movel %a3,%sp@-
4a7f2: 4eb9 0004 a12c jsr 4a12c <IMFS_Set_handlers>
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a7f8: 2053 moveal %a3@,%a0
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a7fa: 2600 movel %d0,%d3
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a7fc: 588f addql #4,%sp
4a7fe: 7001 moveq #1,%d0
4a800: b0a8 0048 cmpl %a0@(72),%d0
4a804: 6600 0096 bnew 4a89c <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 ) )
4a808: 4878 0003 pea 3 <DIVIDE>
4a80c: 2f0b movel %a3,%sp@-
4a80e: 4eb9 0004 a1b6 jsr 4a1b6 <IMFS_evaluate_permission>
4a814: 508f addql #8,%sp
4a816: 4a80 tstl %d0
4a818: 6600 fee4 bnew 4a6fe <IMFS_evaluate_for_make+0x88>
rtems_set_errno_and_return_minus_one( EACCES );
4a81c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a822: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a824: 740d moveq #13,%d2 <== NOT EXECUTED
4a826: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a828: 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 );
4a82a: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a82c: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a832: 4e5e unlk %fp <== NOT EXECUTED
4a834: 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){
4a836: 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 );
4a83a: 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){
4a83e: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED
4a842: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
4a846: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED
4a84a: 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 );
4a84e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a852: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a854: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED
4a858: 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){
4a85c: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
4a860: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED
4a864: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED
4a868: 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 );
4a86c: 4e91 jsr %a1@ <== NOT EXECUTED
4a86e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a872: 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;
}
4a874: 2003 movel %d3,%d0 <== NOT EXECUTED
4a876: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a87c: 4e5e unlk %fp <== NOT EXECUTED
4a87e: 4e75 rts <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a880: 42a7 clrl %sp@- <== NOT EXECUTED
4a882: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a884: 4eb9 0004 a5bc jsr 4a5bc <IMFS_evaluate_link> <== NOT EXECUTED
if ( result == -1 )
4a88a: 508f addql #8,%sp <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a88c: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( result == -1 )
4a88e: 70ff moveq #-1,%d0 <== NOT EXECUTED
4a890: b083 cmpl %d3,%d0 <== NOT EXECUTED
4a892: 6700 fe6a beqw 4a6fe <IMFS_evaluate_for_make+0x88> <== NOT EXECUTED
4a896: 2453 moveal %a3@,%a2 <== NOT EXECUTED
4a898: 6000 fea2 braw 4a73c <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 );
4a89c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a8a2: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a8a4: 7814 moveq #20,%d4 <== NOT EXECUTED
4a8a6: 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;
}
4a8a8: 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 );
4a8aa: 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;
}
4a8ac: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a8b2: 4e5e unlk %fp <== NOT EXECUTED
4a8b4: 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 ) {
4a8b6: 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 );
4a8ba: 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 ) {
4a8be: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED
4a8c2: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED
4a8c6: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED
4a8ca: 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 );
4a8ce: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a8d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a8d4: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED
4a8d8: 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 ) {
4a8dc: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
4a8e0: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED
4a8e4: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED
4a8e8: 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 );
4a8ec: 4e90 jsr %a0@ <== NOT EXECUTED
4a8ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a8f2: 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;
}
4a8f4: 2003 movel %d3,%d0 <== NOT EXECUTED
4a8f6: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a8fc: 4e5e unlk %fp <== NOT EXECUTED
0004a250 <IMFS_evaluate_hard_link>:
int IMFS_evaluate_hard_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a250: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a254: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a256: 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;
4a25a: 2052 moveal %a2@,%a0 <== NOT EXECUTED
4a25c: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED
IMFS_Set_handlers( node );
4a260: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a262: 4eb9 0004 a12c jsr 4a12c <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a268: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4a26c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a26e: 4eb9 0004 a1b6 jsr 4a1b6 <IMFS_evaluate_permission> <== NOT EXECUTED
4a274: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a278: 4a80 tstl %d0 <== NOT EXECUTED
4a27a: 670a beqs 4a286 <IMFS_evaluate_hard_link+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a27c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
4a280: 4280 clrl %d0 <== NOT EXECUTED
}
4a282: 4e5e unlk %fp <== NOT EXECUTED
4a284: 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 );
4a286: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
return result;
}
4a28c: 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 );
4a290: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a292: 720d moveq #13,%d1 <== NOT EXECUTED
4a294: 70ff moveq #-1,%d0 <== NOT EXECUTED
return result;
}
4a296: 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 );
4a298: 2081 movel %d1,%a0@ <== NOT EXECUTED
return result;
}
0004a5bc <IMFS_evaluate_link>:
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a5bc: 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 );
4a5c0: 2079 0005 e530 moveal 5e530 <rtems_current_user_env>,%a0 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a5c6: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
4a5ca: 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 );
4a5ce: 4bf9 0004 a534 lea 4a534 <IMFS_evaluate_sym_link>,%a5 <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a5d4: 49f9 0004 a250 lea 4a250 <IMFS_evaluate_hard_link>,%a4 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a5da: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
IMFS_jnode_t *jnode;
int result = 0;
do {
jnode = node->node_access;
4a5de: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a5e0: 4281 clrl %d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a5e2: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED
4a5e6: 5280 addql #1,%d0 <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a5e8: 3200 movew %d0,%d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a5ea: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a5ee: 7005 moveq #5,%d0 <== NOT EXECUTED
4a5f0: b081 cmpl %d1,%d0 <== NOT EXECUTED
4a5f2: 6564 bcss 4a658 <IMFS_evaluate_link+0x9c> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
4a5f4: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4a5f8: 7203 moveq #3,%d1 <== NOT EXECUTED
4a5fa: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a5fc: 6740 beqs 4a63e <IMFS_evaluate_link+0x82> <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
4a5fe: 7204 moveq #4,%d1 <== NOT EXECUTED
4a600: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a602: 671a beqs 4a61e <IMFS_evaluate_link+0x62> <== NOT EXECUTED
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
4a604: 5780 subql #3,%d0 <== NOT EXECUTED
4a606: 7201 moveq #1,%d1 <== NOT EXECUTED
4a608: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a60a: 64d2 bccs 4a5de <IMFS_evaluate_link+0x22> <== NOT EXECUTED
4a60c: 4280 clrl %d0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a60e: 4241 clrw %d1 <== NOT EXECUTED
4a610: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
return result;
}
4a614: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4a61a: 4e5e unlk %fp <== NOT EXECUTED
4a61c: 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 );
4a61e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a620: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a622: 4e95 jsr %a5@ <== NOT EXECUTED
4a624: 508f addql #8,%sp <== NOT EXECUTED
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
( jnode->type == IMFS_HARD_LINK ) ) );
4a626: 4a80 tstl %d0 <== NOT EXECUTED
4a628: 6620 bnes 4a64a <IMFS_evaluate_link+0x8e> <== NOT EXECUTED
4a62a: 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 ) ||
4a62e: 7201 moveq #1,%d1 <== NOT EXECUTED
4a630: 5780 subql #3,%d0 <== NOT EXECUTED
( jnode->type == IMFS_HARD_LINK ) ) );
4a632: 2079 0005 e530 moveal 5e530 <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 ) ||
4a638: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a63a: 64a2 bccs 4a5de <IMFS_evaluate_link+0x22> <== NOT EXECUTED
4a63c: 60ce bras 4a60c <IMFS_evaluate_link+0x50> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a63e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a640: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a642: 4e94 jsr %a4@ <== NOT EXECUTED
4a644: 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 ) ) );
4a646: 4a80 tstl %d0 <== NOT EXECUTED
4a648: 67e0 beqs 4a62a <IMFS_evaluate_link+0x6e> <== NOT EXECUTED
4a64a: 2079 0005 e530 moveal 5e530 <rtems_current_user_env>,%a0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a650: 4241 clrw %d1 <== NOT EXECUTED
4a652: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
4a656: 60bc bras 4a614 <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;
4a658: 4241 clrw %d1 <== NOT EXECUTED
4a65a: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ELOOP );
4a65e: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a664: 725c moveq #92,%d1 <== NOT EXECUTED
4a666: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a668: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a66a: 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 );
4a670: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a672: 4e5e unlk %fp <== NOT EXECUTED
0004a1b6 <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 ) )
4a1b6: 70f8 moveq #-8,%d0
*/
int IMFS_evaluate_permission(
rtems_filesystem_location_info_t *node,
int flags
)
{
4a1b8: 4e56 fff4 linkw %fp,#-12
4a1bc: 48d7 040c moveml %d2-%d3/%a2,%sp@
4a1c0: 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 ) )
4a1c4: c082 andl %d2,%d0
4a1c6: 6670 bnes 4a238 <IMFS_evaluate_permission+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EPERM );
jnode = node->node_access;
4a1c8: 206e 0008 moveal %fp@(8),%a0
4a1cc: 2450 moveal %a0@,%a2
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
4a1ce: 4eb9 0004 b000 jsr 4b000 <geteuid>
4a1d4: 3600 movew %d0,%d3
st_gid = getegid();
4a1d6: 4eb9 0004 afec jsr 4afec <getegid>
* Check if I am owner or a group member or someone else.
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
4a1dc: 4281 clrl %d1
4a1de: 0283 0000 ffff andil #65535,%d3
4a1e4: 322a 0038 movew %a2@(56),%d1
4a1e8: b681 cmpl %d1,%d3
4a1ea: 6728 beqs 4a214 <IMFS_evaluate_permission+0x5e> <== ALWAYS TAKEN
flags_to_test <<= 6;
else if ( st_gid == jnode->st_gid )
4a1ec: 4281 clrl %d1 <== NOT EXECUTED
4a1ee: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
4a1f4: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED
4a1f8: b081 cmpl %d1,%d0 <== NOT EXECUTED
4a1fa: 672a beqs 4a226 <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 )
4a1fc: 2002 movel %d2,%d0 <== NOT EXECUTED
4a1fe: 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 );
4a202: b082 cmpl %d2,%d0 <== NOT EXECUTED
4a204: 57c0 seq %d0 <== NOT EXECUTED
4a206: 49c0 extbl %d0 <== NOT EXECUTED
4a208: 4480 negl %d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a20a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
4a210: 4e5e unlk %fp
4a212: 4e75 rts
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
flags_to_test <<= 6;
4a214: 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 )
4a216: 2002 movel %d2,%d0
4a218: 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 );
4a21c: b082 cmpl %d2,%d0
4a21e: 57c0 seq %d0
4a220: 49c0 extbl %d0
4a222: 4480 negl %d0
4a224: 60e4 bras 4a20a <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;
4a226: 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 )
4a228: 2002 movel %d2,%d0 <== NOT EXECUTED
4a22a: 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 );
4a22e: b082 cmpl %d2,%d0 <== NOT EXECUTED
4a230: 57c0 seq %d0 <== NOT EXECUTED
4a232: 49c0 extbl %d0 <== NOT EXECUTED
4a234: 4480 negl %d0 <== NOT EXECUTED
4a236: 60d2 bras 4a20a <IMFS_evaluate_permission+0x54> <== NOT EXECUTED
4a238: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a23e: 7201 moveq #1,%d1 <== NOT EXECUTED
4a240: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a242: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a244: 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 );
4a24a: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a24c: 4e5e unlk %fp <== NOT EXECUTED
0004a534 <IMFS_evaluate_sym_link>:
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a534: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4a538: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4a53c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *jnode = node->node_access;
4a540: 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;
4a542: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a546: 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(
4a54a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a54c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4a550: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED
4a554: 4eb9 0004 b5a4 jsr 4b5a4 <rtems_filesystem_get_sym_start_loc><== NOT EXECUTED
);
/*
* Use eval path to evaluate the path of the symbolic link.
*/
result = IMFS_eval_path(
4a55a: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED
4a55e: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED
4a562: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a564: 4eb9 0004 fd3c jsr 4fd3c <strlen> <== NOT EXECUTED
4a56a: 2e8a movel %a2,%sp@ <== NOT EXECUTED
4a56c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a56e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a570: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a572: 4eb9 0004 a29c jsr 4a29c <IMFS_eval_path> <== NOT EXECUTED
4a578: 2600 movel %d0,%d3 <== NOT EXECUTED
strlen( &jnode->info.sym_link.name[i] ),
flags,
node
);
IMFS_Set_handlers( node );
4a57a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a57c: 4eb9 0004 a12c jsr 4a12c <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a582: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4a586: 2e82 movel %d2,%sp@ <== NOT EXECUTED
4a588: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a58a: 4eb9 0004 a1b6 jsr 4a1b6 <IMFS_evaluate_permission> <== NOT EXECUTED
4a590: 508f addql #8,%sp <== NOT EXECUTED
4a592: 4a80 tstl %d0 <== NOT EXECUTED
4a594: 670c beqs 4a5a2 <IMFS_evaluate_sym_link+0x6e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a596: 2003 movel %d3,%d0 <== NOT EXECUTED
4a598: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4a59e: 4e5e unlk %fp <== NOT EXECUTED
4a5a0: 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 );
4a5a2: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4a5a8: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a5aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a5ac: 700d moveq #13,%d0 <== NOT EXECUTED
4a5ae: 2080 movel %d0,%a0@ <== NOT EXECUTED
return result;
}
4a5b0: 2003 movel %d3,%d0 <== NOT EXECUTED
4a5b2: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4a5b8: 4e5e unlk %fp <== NOT EXECUTED
0004de5c <IMFS_fchmod>:
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4de5c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4de60: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4de64: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = loc->node_access;
4de66: 2450 moveal %a0@,%a2 <== NOT EXECUTED
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4de68: 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 ) )
4de6a: 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();
4de6c: 4eb9 0004 b000 jsr 4b000 <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
4de72: 4281 clrl %d1 <== NOT EXECUTED
4de74: 342a 0038 movew %a2@(56),%d2 <== NOT EXECUTED
4de78: 3200 movew %d0,%d1 <== NOT EXECUTED
4de7a: b282 cmpl %d2,%d1 <== NOT EXECUTED
4de7c: 6704 beqs 4de82 <IMFS_fchmod+0x26> <== NOT EXECUTED
4de7e: 4a40 tstw %d0 <== NOT EXECUTED
4de80: 663c bnes 4debe <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);
4de82: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4de86: 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);
4de8a: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4de90: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED
4de96: 8280 orl %d0,%d1 <== NOT EXECUTED
4de98: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4de9c: 42a7 clrl %sp@- <== NOT EXECUTED
4de9e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4dea2: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4dea8: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
4deae: 508f addql #8,%sp <== NOT EXECUTED
4deb0: 4280 clrl %d0 <== NOT EXECUTED
}
4deb2: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4deb6: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4deba: 4e5e unlk %fp <== NOT EXECUTED
4debc: 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 );
4debe: 4eb9 0004 e8e4 jsr 4e8e4 <__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;
}
4dec4: 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 );
4dec8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4deca: 7201 moveq #1,%d1 <== NOT EXECUTED
4decc: 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;
}
4dece: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4ded2: 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 );
4ded4: 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;
}
0004ded8 <IMFS_fdatasync>:
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
return 0;
}
4ded8: 4280 clrl %d0 <== NOT EXECUTED
#include "imfs.h"
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
4deda: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4dede: 4e5e unlk %fp <== NOT EXECUTED
...
00043808 <IMFS_fifo_close>:
}
int IMFS_fifo_close(
rtems_libio_t *iop
)
{
43808: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4380c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4380e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43810: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int err = 0;
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
43814: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
pipe_release(&JNODE2PIPE(jnode), iop);
43818: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4381a: 486b 004c pea %a3@(76) <== NOT EXECUTED
4381e: 4eb9 0004 ceae jsr 4ceae <pipe_release> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
43824: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
4382a: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
IMFS_check_node_remove(jnode);
4382e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43830: 4eb9 0004 3ea8 jsr 43ea8 <IMFS_check_node_remove> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
43836: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4383a: 4280 clrl %d0 <== NOT EXECUTED
4383c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
43840: 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 d83a jsr 4d83a <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 0ecc jsr 50ecc <__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 0ecc jsr 50ecc <__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 d89a jsr 4d89a <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 0ecc jsr 50ecc <__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
00043844 <IMFS_fifo_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
43844: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43848: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4384c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
4384e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
43850: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43854: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED
43858: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4385a: 4eb9 0004 cf7c jsr 4cf7c <fifo_open> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43860: 508f addql #8,%sp <== NOT EXECUTED
uint32_t mode
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
43862: 2400 movel %d0,%d2 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43864: 6d0a blts 43870 <IMFS_fifo_open+0x2c> <== NOT EXECUTED
}
43866: 2002 movel %d2,%d0 <== NOT EXECUTED
43868: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4386c: 4e5e unlk %fp <== NOT EXECUTED
4386e: 4e75 rts <== NOT EXECUTED
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
IMFS_FIFO_RETURN(err);
43870: 4eb9 0005 0ecc jsr 50ecc <__errno> <== NOT EXECUTED
43876: 4482 negl %d2 <== NOT EXECUTED
43878: 2040 moveal %d0,%a0 <== NOT EXECUTED
4387a: 2082 movel %d2,%a0@ <== NOT EXECUTED
4387c: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
4387e: 2002 movel %d2,%d0 <== NOT EXECUTED
43880: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
43884: 4e5e unlk %fp <== NOT EXECUTED
0004378e <IMFS_fifo_read>:
ssize_t IMFS_fifo_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4378e: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
43792: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
43796: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43798: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
4379a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4379c: 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;
437a0: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
437a4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
437a8: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
437ac: 4eb9 0004 d424 jsr 4d424 <pipe_read> <== NOT EXECUTED
if (err > 0)
437b2: 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);
437b6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0)
437b8: 6f22 bles 437dc <IMFS_fifo_read+0x4e> <== NOT EXECUTED
IMFS_update_atime(jnode);
437ba: 42a7 clrl %sp@- <== NOT EXECUTED
437bc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
437c0: 4eb9 0004 4b58 jsr 44b58 <gettimeofday> <== NOT EXECUTED
437c6: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
437cc: 2002 movel %d2,%d0 <== NOT EXECUTED
437ce: 508f addql #8,%sp <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
437d0: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
437d4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
437d8: 4e5e unlk %fp <== NOT EXECUTED
437da: 4e75 rts <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0)
IMFS_update_atime(jnode);
IMFS_FIFO_RETURN(err);
437dc: 4a80 tstl %d0 <== NOT EXECUTED
437de: 660e bnes 437ee <IMFS_fifo_read+0x60> <== NOT EXECUTED
}
437e0: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0)
IMFS_update_atime(jnode);
IMFS_FIFO_RETURN(err);
437e4: 4280 clrl %d0 <== NOT EXECUTED
}
437e6: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
437ea: 4e5e unlk %fp <== NOT EXECUTED
437ec: 4e75 rts <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0)
IMFS_update_atime(jnode);
IMFS_FIFO_RETURN(err);
437ee: 4eb9 0005 0ecc jsr 50ecc <__errno> <== NOT EXECUTED
437f4: 4482 negl %d2 <== NOT EXECUTED
437f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
437f8: 70ff moveq #-1,%d0 <== NOT EXECUTED
437fa: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
437fc: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
43800: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
43804: 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 d616 jsr 4d616 <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 4b58 jsr 44b58 <gettimeofday> <== NOT EXECUTED
43746: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
4374a: 2002 movel %d2,%d0 <== NOT EXECUTED
4374c: 508f addql #8,%sp <== NOT EXECUTED
4374e: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED
}
IMFS_FIFO_RETURN(err);
}
43752: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0) {
IMFS_mtime_ctime_update(jnode);
43756: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED
}
IMFS_FIFO_RETURN(err);
}
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: 660e bnes 43774 <IMFS_fifo_write+0x66> <== NOT EXECUTED
}
43766: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0) {
IMFS_mtime_ctime_update(jnode);
}
IMFS_FIFO_RETURN(err);
4376a: 4280 clrl %d0 <== NOT EXECUTED
}
4376c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
43770: 4e5e unlk %fp <== NOT EXECUTED
43772: 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);
43774: 4eb9 0005 0ecc jsr 50ecc <__errno> <== NOT EXECUTED
4377a: 4482 negl %d2 <== NOT EXECUTED
4377c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4377e: 70ff moveq #-1,%d0 <== NOT EXECUTED
43780: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
43782: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
43786: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4378a: 4e5e unlk %fp <== NOT EXECUTED
0004a9ac <IMFS_find_match_in_dir>:
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a9ac: 4e56 fff0 linkw %fp,#-16
4a9b0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4a9b4: 4879 0005 d65a pea 5d65a <dotname>
4a9ba: 47f9 0004 f7e4 lea 4f7e4 <strcmp>,%a3
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a9c0: 242e 000c movel %fp@(12),%d2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4a9c4: 2f02 movel %d2,%sp@-
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a9c6: 246e 0008 moveal %fp@(8),%a2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4a9ca: 4e93 jsr %a3@
4a9cc: 508f addql #8,%sp
4a9ce: 4a80 tstl %d0
4a9d0: 6714 beqs 4a9e6 <IMFS_find_match_in_dir+0x3a> <== NEVER TAKEN
return directory;
if ( !strcmp( name, dotdotname ) )
4a9d2: 4879 0005 d65c pea 5d65c <dotdotname>
4a9d8: 2f02 movel %d2,%sp@-
4a9da: 4e93 jsr %a3@
4a9dc: 508f addql #8,%sp
4a9de: 4a80 tstl %d0
4a9e0: 6610 bnes 4a9f2 <IMFS_find_match_in_dir+0x46> <== ALWAYS TAKEN
return directory->Parent;
4a9e2: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
4a9e6: 200a movel %a2,%d0
4a9e8: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4a9ee: 4e5e unlk %fp
4a9f0: 4e75 rts
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
4a9f2: 260a movel %a2,%d3
4a9f4: 0683 0000 0050 addil #80,%d3
4a9fa: 202a 004c movel %a2@(76),%d0
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
4a9fe: b680 cmpl %d0,%d3
4aa00: 6716 beqs 4aa18 <IMFS_find_match_in_dir+0x6c>
4aa02: 2440 moveal %d0,%a2
!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 ) )
4aa04: 486a 000c pea %a2@(12)
4aa08: 2f02 movel %d2,%sp@-
4aa0a: 4e93 jsr %a3@
4aa0c: 508f addql #8,%sp
4aa0e: 4a80 tstl %d0
4aa10: 67d4 beqs 4a9e6 <IMFS_find_match_in_dir+0x3a>
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 ) {
4aa12: 2452 moveal %a2@,%a2
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
4aa14: b68a cmpl %a2,%d3
4aa16: 66ec bnes 4aa04 <IMFS_find_match_in_dir+0x58>
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
4aa18: 95ca subal %a2,%a2
}
4aa1a: 200a movel %a2,%d0
4aa1c: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4aa22: 4e5e unlk %fp
...
0004a900 <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
)
{
4a900: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
4a904: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a908: 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;
4a90c: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED
4a910: 49f9 0004 a12c lea 4a12c <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 );
4a916: 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;
4a91c: 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;
4a920: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
loc = temp_mt_entry->mt_fs_root;
4a924: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED
4a92a: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED
4a930: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED
4a936: 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;
4a93c: 42a8 001c clrl %a0@(28) <== NOT EXECUTED
do {
next = jnode->Parent;
4a940: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED
loc.node_access = (void *)jnode;
4a944: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED
IMFS_Set_handlers( &loc );
4a948: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a94a: 4e94 jsr %a4@ <== NOT EXECUTED
if ( jnode->type != IMFS_DIRECTORY ) {
4a94c: 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 );
4a94e: 200a movel %a2,%d0 <== NOT EXECUTED
4a950: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED
4a956: 7201 moveq #1,%d1 <== NOT EXECUTED
4a958: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED
4a95c: 6634 bnes 4a992 <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
4a95e: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED
4a962: 672e beqs 4a992 <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
}
if ( jnode != NULL ) {
4a964: 4a8a tstl %a2 <== NOT EXECUTED
4a966: 671e beqs 4a986 <IMFS_fsunmount+0x86> <== NOT EXECUTED
if ( jnode->type == IMFS_DIRECTORY ) {
4a968: 7001 moveq #1,%d0 <== NOT EXECUTED
4a96a: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
4a96e: 66d0 bnes 4a940 <IMFS_fsunmount+0x40> <== NOT EXECUTED
4a970: 220a movel %a2,%d1 <== NOT EXECUTED
4a972: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4a978: 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 ) )
4a97c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a97e: 67c0 beqs 4a940 <IMFS_fsunmount+0x40> <== NOT EXECUTED
jnode = jnode_get_first_child( jnode );
4a980: 2440 moveal %d0,%a2 <== NOT EXECUTED
}
}
} while (jnode != NULL);
4a982: 4a80 tstl %d0 <== NOT EXECUTED
4a984: 66ba bnes 4a940 <IMFS_fsunmount+0x40> <== NOT EXECUTED
return 0;
4a986: 4280 clrl %d0 <== NOT EXECUTED
}
4a988: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED
4a98e: 4e5e unlk %fp <== NOT EXECUTED
4a990: 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 );
4a992: 2f0b movel %a3,%sp@- <== NOT EXECUTED
if (result != 0)
return -1;
jnode = next;
4a994: 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 );
4a996: 42a7 clrl %sp@- <== NOT EXECUTED
4a998: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
4a99a: 508f addql #8,%sp <== NOT EXECUTED
4a99c: 4a80 tstl %d0 <== NOT EXECUTED
4a99e: 67c4 beqs 4a964 <IMFS_fsunmount+0x64> <== NOT EXECUTED
return -1;
4a9a0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4a9a2: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED
4a9a8: 4e5e unlk %fp <== NOT EXECUTED
0004aa28 <IMFS_get_token>:
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa28: 4e56 ffe4 linkw %fp,#-28
4aa2c: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa30: 246e 0008 moveal %fp@(8),%a2
4aa34: 49f9 0004 3c2c lea 43c2c <rtems_filesystem_is_separator>,%a4
int pathlen,
char *token,
int *token_len
)
{
register int i = 0;
4aa3a: 4282 clrl %d2
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa3c: 161a moveb %a2@+,%d3
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa3e: 2a6e 0010 moveal %fp@(16),%a5
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4aa42: 264d moveal %a5,%a3
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
4aa44: 1003 moveb %d3,%d0
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4aa46: 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) ) {
4aa4a: 49c0 extbl %d0
4aa4c: 2f00 movel %d0,%sp@-
4aa4e: 4e94 jsr %a4@
4aa50: 588f addql #4,%sp
4aa52: 4a80 tstl %d0
4aa54: 6620 bnes 4aa76 <IMFS_get_token+0x4e>
4aa56: b882 cmpl %d2,%d4
4aa58: 6f1c bles 4aa76 <IMFS_get_token+0x4e> <== NEVER TAKEN
token[i] = c;
if ( i == IMFS_NAME_MAX )
4aa5a: 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;
4aa5c: 16c3 moveb %d3,%a3@+
if ( i == IMFS_NAME_MAX )
4aa5e: b082 cmpl %d2,%d0
4aa60: 6700 0082 beqw 4aae4 <IMFS_get_token+0xbc>
return IMFS_INVALID_TOKEN;
if ( !IMFS_is_valid_name_char(c) )
type = IMFS_INVALID_TOKEN;
c = path [++i];
4aa64: 5282 addql #1,%d2
4aa66: 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) ) {
4aa68: 1003 moveb %d3,%d0
4aa6a: 49c0 extbl %d0
4aa6c: 2f00 movel %d0,%sp@-
4aa6e: 4e94 jsr %a4@
4aa70: 588f addql #4,%sp
4aa72: 4a80 tstl %d0
4aa74: 67e0 beqs 4aa56 <IMFS_get_token+0x2e>
/*
* Copy a seperator into token.
*/
if ( i == 0 ) {
4aa76: 4a82 tstl %d2
4aa78: 6626 bnes 4aaa0 <IMFS_get_token+0x78>
token[i] = c;
4aa7a: 1a83 moveb %d3,%a5@
if ( (token[i] != '\0') && pathlen ) {
4aa7c: 6718 beqs 4aa96 <IMFS_get_token+0x6e>
4aa7e: 4a84 tstl %d4
4aa80: 6714 beqs 4aa96 <IMFS_get_token+0x6e> <== NEVER TAKEN
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aa82: 206e 0014 moveal %fp@(20),%a0
if ( i == 0 ) {
token[i] = c;
if ( (token[i] != '\0') && pathlen ) {
i++;
4aa86: 7401 moveq #1,%d2
type = IMFS_CURRENT_DIR;
4aa88: 7001 moveq #1,%d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aa8a: 2082 movel %d2,%a0@
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4aa8c: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4aa92: 4e5e unlk %fp
4aa94: 4e75 rts
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aa96: 206e 0014 moveal %fp@(20),%a0
if ( (token[i] != '\0') && pathlen ) {
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
4aa9a: 4280 clrl %d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aa9c: 2082 movel %d2,%a0@
4aa9e: 60ec bras 4aa8c <IMFS_get_token+0x64>
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
}
} else if (token[ i-1 ] != '\0') {
4aaa0: 4a35 28ff tstb %a5@(ffffffff,%d2:l)
4aaa4: 6706 beqs 4aaac <IMFS_get_token+0x84> <== NEVER TAKEN
token[i] = '\0';
4aaa6: 4200 clrb %d0
4aaa8: 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 )
4aaac: 4879 0005 d65f pea 5d65f <dotdotname+0x3>
4aab2: 45f9 0004 f7e4 lea 4f7e4 <strcmp>,%a2
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4aab8: 206e 0014 moveal %fp@(20),%a0
4aabc: 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 )
4aabe: 2f0d movel %a5,%sp@-
4aac0: 4e92 jsr %a2@
4aac2: 508f addql #8,%sp
4aac4: 4a80 tstl %d0
4aac6: 6728 beqs 4aaf0 <IMFS_get_token+0xc8> <== NEVER TAKEN
type = IMFS_UP_DIR;
else if ( strcmp( token, "." ) == 0 )
4aac8: 4879 0005 d660 pea 5d660 <dotdotname+0x4>
4aace: 2f0d movel %a5,%sp@-
4aad0: 4e92 jsr %a2@
4aad2: 508f addql #8,%sp
4aad4: 4a80 tstl %d0
4aad6: 6724 beqs 4aafc <IMFS_get_token+0xd4> <== NEVER TAKEN
4aad8: 7003 moveq #3,%d0
type = IMFS_CURRENT_DIR;
}
return type;
}
4aada: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4aae0: 4e5e unlk %fp
4aae2: 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;
4aae4: 7004 moveq #4,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4aae6: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4aaec: 4e5e unlk %fp <== NOT EXECUTED
4aaee: 4e75 rts <== NOT EXECUTED
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
type = IMFS_UP_DIR;
4aaf0: 7002 moveq #2,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4aaf2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4aaf8: 4e5e unlk %fp <== NOT EXECUTED
4aafa: 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;
4aafc: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return type;
}
4aafe: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4ab04: 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 e318 movel 5e318 <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 f324 movel %d1,5f324 <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 a0f0 jsr 4a0f0 <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 d62a lea 5d62a <IMFS_LIMITS_AND_OPTIONS>,%a0
4218e: 43f9 0005 d62e lea 5d62e <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 d632 lea 5d632 <IMFS_LIMITS_AND_OPTIONS+0x8>,%a0
421a0: 2551 003c movel %a1@,%a2@(60)
421a4: 43f9 0005 d636 lea 5d636 <IMFS_LIMITS_AND_OPTIONS+0xc>,%a1
421aa: 2550 0040 movel %a0@,%a2@(64)
421ae: 41f9 0005 d63a lea 5d63a <IMFS_LIMITS_AND_OPTIONS+0x10>,%a0
421b4: 2551 0044 movel %a1@,%a2@(68)
421b8: 43f9 0005 d63e lea 5d63e <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 d642 lea 5d642 <IMFS_LIMITS_AND_OPTIONS+0x18>,%a0
421cc: 2551 004c movel %a1@,%a2@(76)
421d0: 43f9 0005 d646 lea 5d646 <IMFS_LIMITS_AND_OPTIONS+0x1c>,%a1
421d6: 2550 0050 movel %a0@,%a2@(80)
421da: 41f9 0005 d64a lea 5d64a <IMFS_LIMITS_AND_OPTIONS+0x20>,%a0
421e0: 2551 0054 movel %a1@,%a2@(84)
421e4: 43f9 0005 d64e lea 5d64e <IMFS_LIMITS_AND_OPTIONS+0x24>,%a1
421ea: 2550 0058 movel %a0@,%a2@(88)
421ee: 41f9 0005 d652 lea 5d652 <IMFS_LIMITS_AND_OPTIONS+0x28>,%a0
421f4: 2551 005c movel %a1@,%a2@(92)
421f8: 43f9 0005 d656 lea 5d656 <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 f328 movel 5f328 <imfs_instance.5969>,%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 f328 movel %a1,5f328 <imfs_instance.5969>
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 e8e4 jsr 4e8e4 <__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 fd3c jsr 4fd3c <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 aa28 jsr 4aa28 <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 9efa jsr 49efa <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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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;
}
...
0004d258 <IMFS_memfile_addblock>:
*/
MEMFILE_STATIC int IMFS_memfile_addblock(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d258: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d25c: 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 );
4d25e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d262: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4d266: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d26a: 4eb9 0004 ce2c jsr 4ce2c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( *block_entry_ptr )
4d270: 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 );
4d274: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( *block_entry_ptr )
4d276: 4a92 tstl %a2@ <== NOT EXECUTED
4d278: 670a beqs 4d284 <IMFS_memfile_addblock+0x2c> <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d27a: 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;
4d27e: 4280 clrl %d0 <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4d280: 4e5e unlk %fp <== NOT EXECUTED
4d282: 4e75 rts <== NOT EXECUTED
return 0;
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
4d284: 4eb9 0004 ce08 jsr 4ce08 <memfile_alloc_block> <== NOT EXECUTED
if ( !memory )
4d28a: 4a80 tstl %d0 <== NOT EXECUTED
4d28c: 670c beqs 4d29a <IMFS_memfile_addblock+0x42> <== NOT EXECUTED
return 1;
*block_entry_ptr = memory;
4d28e: 2480 movel %d0,%a2@ <== NOT EXECUTED
return 0;
}
4d290: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
memory = memfile_alloc_block();
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
4d294: 4280 clrl %d0 <== NOT EXECUTED
}
4d296: 4e5e unlk %fp <== NOT EXECUTED
4d298: 4e75 rts <== NOT EXECUTED
4d29a: 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;
4d29e: 7001 moveq #1,%d0 <== NOT EXECUTED
*block_entry_ptr = memory;
return 0;
}
4d2a0: 4e5e unlk %fp <== NOT EXECUTED
0004d446 <IMFS_memfile_extend>:
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4d446: 4280 clrl %d0 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d448: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
4d44c: 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 )
4d450: 2c39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4d456: 2406 movel %d6,%d2 <== NOT EXECUTED
4d458: e48a lsrl #2,%d2 <== NOT EXECUTED
4d45a: 2802 movel %d2,%d4 <== NOT EXECUTED
4d45c: 5284 addql #1,%d4 <== NOT EXECUTED
4d45e: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d462: 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 )
4d466: 5284 addql #1,%d4 <== NOT EXECUTED
4d468: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4d46c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4d470: 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 )
4d474: 5384 subql #1,%d4 <== NOT EXECUTED
4d476: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED
4d47a: 2204 movel %d4,%d1 <== NOT EXECUTED
4d47c: 2800 movel %d0,%d4 <== NOT EXECUTED
4d47e: 2a01 movel %d1,%d5 <== NOT EXECUTED
4d480: 9a83 subl %d3,%d5 <== NOT EXECUTED
4d482: 9982 subxl %d2,%d4 <== NOT EXECUTED
4d484: 6f00 00ae blew 4d534 <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 )
4d488: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4d48c: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4d490: 2002 movel %d2,%d0 <== NOT EXECUTED
4d492: 2203 movel %d3,%d1 <== NOT EXECUTED
4d494: 9285 subl %d5,%d1 <== NOT EXECUTED
4d496: 9184 subxl %d4,%d0 <== NOT EXECUTED
4d498: 6f5e bles 4d4f8 <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;
4d49a: 49f9 0005 a780 lea 5a780 <__divdi3>,%a4 <== NOT EXECUTED
4d4a0: 2e06 movel %d6,%d7 <== NOT EXECUTED
4d4a2: 5bc6 smi %d6 <== NOT EXECUTED
4d4a4: 49c6 extbl %d6 <== NOT EXECUTED
4d4a6: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4d4a8: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d4aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d4ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d4ae: 4e94 jsr %a4@ <== NOT EXECUTED
4d4b0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d4b4: 2641 moveal %d1,%a3 <== NOT EXECUTED
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d4b6: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4d4b8: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d4ba: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d4bc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d4be: 4e94 jsr %a4@ <== NOT EXECUTED
4d4c0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d4c4: 2c01 movel %d1,%d6 <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4d4c6: b28b cmpl %a3,%d1 <== NOT EXECUTED
4d4c8: 621a bhis 4d4e4 <IMFS_memfile_extend+0x9e> <== NOT EXECUTED
4d4ca: 2801 movel %d1,%d4 <== NOT EXECUTED
4d4cc: 49f9 0004 d258 lea 4d258 <IMFS_memfile_addblock>,%a4 <== NOT EXECUTED
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
4d4d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d4d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d4d6: 4e94 jsr %a4@ <== NOT EXECUTED
4d4d8: 508f addql #8,%sp <== NOT EXECUTED
4d4da: 4a80 tstl %d0 <== NOT EXECUTED
4d4dc: 6626 bnes 4d504 <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++ ) {
4d4de: 5284 addql #1,%d4 <== NOT EXECUTED
4d4e0: b88b cmpl %a3,%d4 <== NOT EXECUTED
4d4e2: 63ee blss 4d4d2 <IMFS_memfile_extend+0x8c> <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
4d4e4: 4280 clrl %d0 <== NOT EXECUTED
}
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
4d4e6: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED
4d4ea: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED
return 0;
}
4d4ee: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d4f4: 4e5e unlk %fp <== NOT EXECUTED
4d4f6: 4e75 rts <== NOT EXECUTED
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
return 0;
4d4f8: 4280 clrl %d0 <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4d4fa: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d500: 4e5e unlk %fp <== NOT EXECUTED
4d502: 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-- ) {
4d504: b886 cmpl %d6,%d4 <== NOT EXECUTED
4d506: 6514 bcss 4d51c <IMFS_memfile_extend+0xd6> <== NOT EXECUTED
4d508: 47f9 0004 d41e lea 4d41e <IMFS_memfile_remove_block>,%a3 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d50e: 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-- ) {
4d510: 5384 subql #1,%d4 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4d512: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d514: 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-- ) {
4d516: 508f addql #8,%sp <== NOT EXECUTED
4d518: b886 cmpl %d6,%d4 <== NOT EXECUTED
4d51a: 64f2 bccs 4d50e <IMFS_memfile_extend+0xc8> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4d51c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4d522: 721c moveq #28,%d1 <== NOT EXECUTED
4d524: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d526: 70ff moveq #-1,%d0 <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4d528: 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 );
4d52e: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4d530: 4e5e unlk %fp <== NOT EXECUTED
4d532: 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 );
4d534: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4d53a: 7416 moveq #22,%d2 <== NOT EXECUTED
4d53c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d53e: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d540: 2082 movel %d2,%a0@ <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4d542: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d548: 4e5e unlk %fp <== NOT EXECUTED
0004ce2c <IMFS_memfile_get_block_pointer>:
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4ce2c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4ce30: 2239 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4ce36: e489 lsrl #2,%d1 <== NOT EXECUTED
4ce38: 2001 movel %d1,%d0 <== NOT EXECUTED
4ce3a: 5380 subql #1,%d0 <== NOT EXECUTED
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4ce3c: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
4ce40: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4ce44: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4ce48: 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 ) {
4ce4c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4ce4e: 651e bcss 4ce6e <IMFS_memfile_get_block_pointer+0x42><== NOT EXECUTED
p = info->indirect;
4ce50: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED
if ( malloc_it ) {
4ce54: 4a88 tstl %a0 <== NOT EXECUTED
4ce56: 675a beqs 4ceb2 <IMFS_memfile_get_block_pointer+0x86><== NOT EXECUTED
if ( !p ) {
4ce58: 4a89 tstl %a1 <== NOT EXECUTED
4ce5a: 6700 00c0 beqw 4cf1c <IMFS_memfile_get_block_pointer+0xf0><== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4ce5e: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED
4ce62: 2009 movel %a1,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4ce64: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4ce6a: 4e5e unlk %fp <== NOT EXECUTED
4ce6c: 4e75 rts <== NOT EXECUTED
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
4ce6e: 2001 movel %d1,%d0 <== NOT EXECUTED
4ce70: 5280 addql #1,%d0 <== NOT EXECUTED
4ce72: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
4ce76: 2240 moveal %d0,%a1 <== NOT EXECUTED
4ce78: 5389 subql #1,%a1 <== NOT EXECUTED
4ce7a: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
4ce7c: 6544 bcss 4cec2 <IMFS_memfile_get_block_pointer+0x96><== NOT EXECUTED
my_block -= FIRST_DOUBLY_INDIRECT;
4ce7e: 9481 subl %d1,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
4ce80: 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;
4ce84: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED
4ce88: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
if ( malloc_it ) {
4ce8c: 4a88 tstl %a0 <== NOT EXECUTED
4ce8e: 6700 0104 beqw 4cf94 <IMFS_memfile_get_block_pointer+0x168><== NOT EXECUTED
if ( !p ) {
4ce92: 4a89 tstl %a1 <== NOT EXECUTED
4ce94: 6700 00a0 beqw 4cf36 <IMFS_memfile_get_block_pointer+0x10a><== NOT EXECUTED
if ( !p )
return 0;
info->doubly_indirect = p;
}
p1 = (block_p *)p[ doubly ];
4ce98: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4ce9c: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4ce9e: 4a88 tstl %a0 <== NOT EXECUTED
4cea0: 6764 beqs 4cf06 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cea2: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4cea6: 2008 movel %a0,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4cea8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4ceae: 4e5e unlk %fp <== NOT EXECUTED
4ceb0: 4e75 rts <== NOT EXECUTED
info->indirect = p;
}
return &info->indirect[ my_block ];
}
if ( !p )
4ceb2: 4a89 tstl %a1 <== NOT EXECUTED
4ceb4: 66a8 bnes 4ce5e <IMFS_memfile_get_block_pointer+0x32><== NOT EXECUTED
if ( !p1 )
return 0;
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
4ceb6: 4280 clrl %d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4ceb8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4cebe: 4e5e unlk %fp <== NOT EXECUTED
4cec0: 4e75 rts <== NOT EXECUTED
}
/*
* Is the block number in the triply indirect portion?
*/
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
4cec2: 2600 movel %d0,%d3 <== NOT EXECUTED
4cec4: 5283 addql #1,%d3 <== NOT EXECUTED
4cec6: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED
4ceca: 5383 subql #1,%d3 <== NOT EXECUTED
4cecc: b682 cmpl %d2,%d3 <== NOT EXECUTED
4cece: 65e6 bcss 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
my_block -= FIRST_TRIPLY_INDIRECT;
4ced0: 9480 subl %d0,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4ced2: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED
4ced6: 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;
4ceda: 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;
4cede: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED
4cee2: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
if ( malloc_it ) {
4cee6: 4a88 tstl %a0 <== NOT EXECUTED
4cee8: 6700 00c4 beqw 4cfae <IMFS_memfile_get_block_pointer+0x182><== NOT EXECUTED
if ( !p ) {
4ceec: 4a89 tstl %a1 <== NOT EXECUTED
4ceee: 6700 0084 beqw 4cf74 <IMFS_memfile_get_block_pointer+0x148><== NOT EXECUTED
if ( !p )
return 0;
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
4cef2: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4cef6: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cef8: 4a88 tstl %a0 <== NOT EXECUTED
4cefa: 675a beqs 4cf56 <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
if ( !p1 )
return 0;
p[ triply ] = (block_p) p1;
}
p2 = (block_p *)p1[ doubly ];
4cefc: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED
4cf00: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4cf02: 4a88 tstl %a0 <== NOT EXECUTED
4cf04: 669c bnes 4cea2 <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
p2 = memfile_alloc_block();
4cf06: 4eb9 0004 ce08 jsr 4ce08 <memfile_alloc_block> <== NOT EXECUTED
4cf0c: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p2 )
4cf0e: 4a80 tstl %d0 <== NOT EXECUTED
4cf10: 67a4 beqs 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1[ doubly ] = (block_p) p2;
4cf12: 2480 movel %d0,%a2@ <== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cf14: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4cf18: 2008 movel %a0,%d0 <== NOT EXECUTED
4cf1a: 608c bras 4cea8 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p = info->indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cf1c: 4eb9 0004 ce08 jsr 4ce08 <memfile_alloc_block> <== NOT EXECUTED
if ( !p )
4cf22: 4a80 tstl %d0 <== NOT EXECUTED
4cf24: 6790 beqs 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->indirect = p;
4cf26: 2240 moveal %d0,%a1 <== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4cf28: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED
if ( !p ) {
p = memfile_alloc_block();
if ( !p )
return 0;
info->indirect = p;
4cf2c: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4cf30: 2009 movel %a1,%d0 <== NOT EXECUTED
4cf32: 6000 ff30 braw 4ce64 <IMFS_memfile_get_block_pointer+0x38><== NOT EXECUTED
p = info->doubly_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cf36: 4eb9 0004 ce08 jsr 4ce08 <memfile_alloc_block> <== NOT EXECUTED
4cf3c: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cf3e: 4a80 tstl %d0 <== NOT EXECUTED
4cf40: 6700 ff74 beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->doubly_indirect = p;
4cf44: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED
}
p1 = (block_p *)p[ doubly ];
4cf48: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4cf4c: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cf4e: 4a88 tstl %a0 <== NOT EXECUTED
4cf50: 6600 ff50 bnew 4cea2 <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
4cf54: 60b0 bras 4cf06 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
if ( !p1 ) {
p1 = memfile_alloc_block();
4cf56: 4eb9 0004 ce08 jsr 4ce08 <memfile_alloc_block> <== NOT EXECUTED
4cf5c: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p1 )
4cf5e: 4a80 tstl %d0 <== NOT EXECUTED
4cf60: 6700 ff54 beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p[ triply ] = (block_p) p1;
4cf64: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
p2 = (block_p *)p1[ doubly ];
4cf66: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED
4cf6a: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4cf6c: 4a88 tstl %a0 <== NOT EXECUTED
4cf6e: 6600 ff32 bnew 4cea2 <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
4cf72: 6092 bras 4cf06 <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p = info->triply_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4cf74: 4eb9 0004 ce08 jsr 4ce08 <memfile_alloc_block> <== NOT EXECUTED
4cf7a: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4cf7c: 4a80 tstl %d0 <== NOT EXECUTED
4cf7e: 6700 ff36 beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->triply_indirect = p;
4cf82: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
}
p1 = (block_p *) p[ triply ];
4cf86: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4cf8a: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4cf8c: 4a88 tstl %a0 <== NOT EXECUTED
4cf8e: 6600 ff6c bnew 4cefc <IMFS_memfile_get_block_pointer+0xd0><== NOT EXECUTED
4cf92: 60c2 bras 4cf56 <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
}
return (block_p *)&p1[ singly ];
}
if ( !p )
4cf94: 4a89 tstl %a1 <== NOT EXECUTED
4cf96: 6700 ff1e beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p = (block_p *)p[ doubly ];
4cf9a: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p )
4cf9e: 4a88 tstl %a0 <== NOT EXECUTED
4cfa0: 6700 ff14 beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4cfa4: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4cfa8: 2008 movel %a0,%d0 <== NOT EXECUTED
4cfaa: 6000 fefc braw 4cea8 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p1[ doubly ] = (block_p) p2;
}
return (block_p *)&p2[ singly ];
}
if ( !p )
4cfae: 4a89 tstl %a1 <== NOT EXECUTED
4cfb0: 6700 ff04 beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1 = (block_p *) p[ triply ];
4cfb4: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p1 )
4cfb8: 4a88 tstl %a0 <== NOT EXECUTED
4cfba: 6700 fefa beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p2 = (block_p *)p1[ doubly ];
4cfbe: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED
if ( !p2 )
4cfc2: 4a88 tstl %a0 <== NOT EXECUTED
4cfc4: 6700 fef0 beqw 4ceb6 <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
return (block_p *)&p2[ singly ];
4cfc8: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4cfcc: 2008 movel %a0,%d0 <== NOT EXECUTED
4cfce: 6000 fed8 braw 4cea8 <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 55f4 movel 655f4 <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
0004cfd2 <IMFS_memfile_read>:
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4cfd2: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
4cfd6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4cfda: 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) {
4cfde: 7806 moveq #6,%d4 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4cfe0: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED
4cfe4: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED
4cfe8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4cfec: 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) {
4cff0: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED
4cff4: 6700 017c beqw 4d172 <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;
4cff8: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size )
4cffc: 4280 clrl %d0 <== NOT EXECUTED
4cffe: 2209 movel %a1,%d1 <== NOT EXECUTED
4d000: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4d004: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4d008: 2c00 movel %d0,%d6 <== NOT EXECUTED
4d00a: 2e01 movel %d1,%d7 <== NOT EXECUTED
4d00c: 9e85 subl %d5,%d7 <== NOT EXECUTED
4d00e: 9d84 subxl %d4,%d6 <== NOT EXECUTED
4d010: 6f00 0110 blew 4d122 <IMFS_memfile_read+0x150> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d014: 2c39 0005 f324 movel 5f324 <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;
4d01a: 2e05 movel %d5,%d7 <== NOT EXECUTED
4d01c: 9e83 subl %d3,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d01e: 2a06 movel %d6,%d5 <== NOT EXECUTED
4d020: 5bc4 smi %d4 <== NOT EXECUTED
4d022: 49c4 extbl %d4 <== NOT EXECUTED
4d024: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d026: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d028: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d02a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d02c: 4eb9 0005 ab34 jsr 5ab34 <__moddi3> <== NOT EXECUTED
4d032: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d036: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d038: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d03a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d03c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d03e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d040: 4eb9 0005 a780 jsr 5a780 <__divdi3> <== NOT EXECUTED
4d046: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d04a: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d04c: 4a8c tstl %a4 <== NOT EXECUTED
4d04e: 6700 010e beqw 4d15e <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 );
4d052: 42a7 clrl %sp@- <== NOT EXECUTED
4d054: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d056: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d058: 4eb9 0004 ce2c jsr 4ce2c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d05e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d062: 4a80 tstl %d0 <== NOT EXECUTED
4d064: 6700 01c0 beqw 4d226 <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;
4d068: 9c8c subl %a4,%d6 <== NOT EXECUTED
4d06a: 2207 movel %d7,%d1 <== NOT EXECUTED
4d06c: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4d06e: 6500 0162 bcsw 4d1d2 <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 );
4d072: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d074: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d076: d9d0 addal %a0@,%a4 <== NOT EXECUTED
dest += to_copy;
4d078: 280b movel %a3,%d4 <== NOT EXECUTED
4d07a: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d07c: 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++;
4d07e: 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 );
4d080: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d082: 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 );
4d084: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d086: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4d08c: 2c39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4d092: 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 ) {
4d096: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4d098: 623c bhis 4d0d6 <IMFS_memfile_read+0x104> <== NOT EXECUTED
4d09a: 47f9 0004 ce2c lea 4ce2c <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 );
4d0a0: 4bf9 0004 f190 lea 4f190 <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 );
4d0a6: 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;
4d0a8: 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 );
4d0aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
4d0ac: 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 );
4d0ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d0b0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4d0b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d0b6: 4a80 tstl %d0 <== NOT EXECUTED
4d0b8: 6700 00ac beqw 4d166 <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4d0bc: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d0be: 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 );
4d0c0: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d0c2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4d0c4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
dest += to_copy;
4d0c6: 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 );
4d0c8: 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 ) {
4d0ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d0ce: beb9 0005 f324 cmpl 5f324 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED
4d0d4: 64d0 bccs 4d0a6 <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 ) {
4d0d6: 4a87 tstl %d7 <== NOT EXECUTED
4d0d8: 6728 beqs 4d102 <IMFS_memfile_read+0x130> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d0da: 42a7 clrl %sp@- <== NOT EXECUTED
4d0dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d0de: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d0e0: 4eb9 0004 ce2c jsr 4ce2c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d0e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d0ea: 4a80 tstl %d0 <== NOT EXECUTED
4d0ec: 6778 beqs 4d166 <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4d0ee: 2040 moveal %d0,%a0 <== NOT EXECUTED
copied += my_length;
4d0f0: 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 );
4d0f2: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4d0f4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4d0f6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d0f8: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
copied += my_length;
4d0fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
4d102: 42a7 clrl %sp@- <== NOT EXECUTED
4d104: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d108: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4d10e: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return copied;
4d114: 200c movel %a4,%d0 <== NOT EXECUTED
4d116: 508f addql #8,%sp <== NOT EXECUTED
}
4d118: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d11e: 4e5e unlk %fp <== NOT EXECUTED
4d120: 4e75 rts <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d122: 2c39 0005 f324 movel 5f324 <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;
4d128: 2e0d movel %a5,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d12a: 2a06 movel %d6,%d5 <== NOT EXECUTED
4d12c: 5bc4 smi %d4 <== NOT EXECUTED
4d12e: 49c4 extbl %d4 <== NOT EXECUTED
4d130: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d132: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d134: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d136: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d138: 4eb9 0005 ab34 jsr 5ab34 <__moddi3> <== NOT EXECUTED
4d13e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d142: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d144: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d146: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d148: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d14a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d14c: 4eb9 0005 a780 jsr 5a780 <__divdi3> <== NOT EXECUTED
4d152: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d156: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d158: 4a8c tstl %a4 <== NOT EXECUTED
4d15a: 6600 fef6 bnew 4d052 <IMFS_memfile_read+0x80> <== NOT EXECUTED
unsigned int last_byte;
unsigned int copied;
unsigned int start_offset;
unsigned char *dest;
dest = destination;
4d15e: 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;
4d160: 99cc subal %a4,%a4 <== NOT EXECUTED
4d162: 6000 ff32 braw 4d096 <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;
4d166: 200c movel %a4,%d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d168: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d16e: 4e5e unlk %fp <== NOT EXECUTED
4d170: 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))
4d172: 91c8 subal %a0,%a0 <== NOT EXECUTED
4d174: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED
4d178: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED
4d17c: 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;
4d180: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED
if (my_length > (the_jnode->info.linearfile.size - start))
4d184: 2800 movel %d0,%d4 <== NOT EXECUTED
4d186: 2a01 movel %d1,%d5 <== NOT EXECUTED
4d188: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
4d18c: 9a83 subl %d3,%d5 <== NOT EXECUTED
4d18e: 9982 subxl %d2,%d4 <== NOT EXECUTED
4d190: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED
4d194: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED
4d198: 9e85 subl %d5,%d7 <== NOT EXECUTED
4d19a: 9d84 subxl %d4,%d6 <== NOT EXECUTED
4d19c: 6f5e bles 4d1fc <IMFS_memfile_read+0x22a> <== NOT EXECUTED
my_length = the_jnode->info.linearfile.size - start;
4d19e: 2e01 movel %d1,%d7 <== NOT EXECUTED
4d1a0: 9e83 subl %d3,%d7 <== NOT EXECUTED
memcpy(dest, &file_ptr[start], my_length);
4d1a2: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4d1a4: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED
4d1a8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d1aa: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d1b0: 42a7 clrl %sp@- <== NOT EXECUTED
4d1b2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d1b6: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4d1bc: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4d1c2: 2007 movel %d7,%d0 <== NOT EXECUTED
4d1c4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d1c8: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d1ce: 4e5e unlk %fp <== NOT EXECUTED
4d1d0: 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;
4d1d2: 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 );
4d1d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
4d1d6: 280b movel %a3,%d4 <== NOT EXECUTED
4d1d8: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d1da: 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++;
4d1dc: 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 );
4d1de: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d1e0: d9d0 addal %a0@,%a4 <== NOT EXECUTED
4d1e2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d1e4: 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 );
4d1e6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d1e8: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4d1ee: 2c39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4d1f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d1f8: 6000 fe9c braw 4d096 <IMFS_memfile_read+0xc4> <== NOT EXECUTED
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4d1fc: 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);
4d1fe: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4d200: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED
4d204: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d206: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d20c: 42a7 clrl %sp@- <== NOT EXECUTED
4d20e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d212: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4d218: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4d21e: 2007 movel %d7,%d0 <== NOT EXECUTED
4d220: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4d224: 60a2 bras 4d1c8 <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;
4d226: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4d228: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d22e: 4e5e unlk %fp <== NOT EXECUTED
0004d304 <IMFS_memfile_remove>:
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4d304: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
4d308: 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;
4d30c: 2839 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d4<== NOT EXECUTED
4d312: 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
)
{
4d314: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
* + doubly indirect
* + triply indirect
*/
info = &the_jnode->info.file;
if ( info->indirect ) {
4d318: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED
4d31c: 670e beqs 4d32c <IMFS_memfile_remove+0x28> <== NOT EXECUTED
memfile_free_blocks_in_table( &info->indirect, to_free );
4d31e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d320: 486c 0054 pea %a4@(84) <== NOT EXECUTED
4d324: 4eb9 0004 d2be jsr 4d2be <memfile_free_blocks_in_table> <== NOT EXECUTED
4d32a: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->doubly_indirect ) {
4d32c: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED
4d330: 4a88 tstl %a0 <== NOT EXECUTED
4d332: 6750 beqs 4d384 <IMFS_memfile_remove+0x80> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d334: 2239 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4d33a: 2001 movel %d1,%d0 <== NOT EXECUTED
4d33c: e488 lsrl #2,%d0 <== NOT EXECUTED
4d33e: 47f9 0004 d2be lea 4d2be <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4d344: 6734 beqs 4d37a <IMFS_memfile_remove+0x76> <== NOT EXECUTED
4d346: 4280 clrl %d0 <== NOT EXECUTED
4d348: 4282 clrl %d2 <== NOT EXECUTED
4d34a: 47f9 0004 d2be lea 4d2be <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4d350: 5282 addql #1,%d2 <== NOT EXECUTED
if ( info->doubly_indirect[i] ) {
4d352: e588 lsll #2,%d0 <== NOT EXECUTED
4d354: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED
4d358: 6710 beqs 4d36a <IMFS_memfile_remove+0x66> <== NOT EXECUTED
memfile_free_blocks_in_table(
4d35a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d35c: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
4d360: 4e93 jsr %a3@ <== NOT EXECUTED
4d362: 2239 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4d368: 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++ ) {
4d36a: 2601 movel %d1,%d3 <== NOT EXECUTED
4d36c: 2002 movel %d2,%d0 <== NOT EXECUTED
4d36e: e48b lsrl #2,%d3 <== NOT EXECUTED
4d370: b483 cmpl %d3,%d2 <== NOT EXECUTED
4d372: 6406 bccs 4d37a <IMFS_memfile_remove+0x76> <== NOT EXECUTED
4d374: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED
4d378: 60d6 bras 4d350 <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 );
4d37a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d37c: 486c 0058 pea %a4@(88) <== NOT EXECUTED
4d380: 4e93 jsr %a3@ <== NOT EXECUTED
4d382: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->triply_indirect ) {
4d384: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED
4d388: 4a88 tstl %a0 <== NOT EXECUTED
4d38a: 6700 0086 beqw 4d412 <IMFS_memfile_remove+0x10e> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4d38e: 2239 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4d394: 2001 movel %d1,%d0 <== NOT EXECUTED
4d396: e488 lsrl #2,%d0 <== NOT EXECUTED
4d398: 47f9 0004 d2be lea 4d2be <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4d39e: 6768 beqs 4d408 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
4d3a0: 2450 moveal %a0@,%a2 <== NOT EXECUTED
4d3a2: 47f9 0004 d2be lea 4d2be <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d3a8: 4a8a tstl %a2 <== NOT EXECUTED
4d3aa: 675c beqs 4d408 <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];
4d3ac: 4286 clrl %d6 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d3ae: 4285 clrl %d5 <== NOT EXECUTED
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
4d3b0: 4a80 tstl %d0 <== NOT EXECUTED
4d3b2: 6728 beqs 4d3dc <IMFS_memfile_remove+0xd8> <== NOT EXECUTED
4d3b4: 4280 clrl %d0 <== NOT EXECUTED
4d3b6: 4282 clrl %d2 <== NOT EXECUTED
4d3b8: 5282 addql #1,%d2 <== NOT EXECUTED
if ( p[j] ) {
4d3ba: e588 lsll #2,%d0 <== NOT EXECUTED
4d3bc: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED
4d3c0: 6710 beqs 4d3d2 <IMFS_memfile_remove+0xce> <== NOT EXECUTED
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4d3c2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d3c4: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED
4d3c8: 4e93 jsr %a3@ <== NOT EXECUTED
4d3ca: 2239 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4d3d0: 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++ ) {
4d3d2: 2601 movel %d1,%d3 <== NOT EXECUTED
4d3d4: 2002 movel %d2,%d0 <== NOT EXECUTED
4d3d6: e48b lsrl #2,%d3 <== NOT EXECUTED
4d3d8: b682 cmpl %d2,%d3 <== NOT EXECUTED
4d3da: 62dc bhis 4d3b8 <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(
4d3dc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d3de: 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++ ) {
4d3e2: 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(
4d3e4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d3e6: 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++ ) {
4d3e8: 2239 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4d3ee: 2001 movel %d1,%d0 <== NOT EXECUTED
4d3f0: 508f addql #8,%sp <== NOT EXECUTED
4d3f2: e488 lsrl #2,%d0 <== NOT EXECUTED
4d3f4: ba80 cmpl %d0,%d5 <== NOT EXECUTED
4d3f6: 6410 bccs 4d408 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
if ( !p ) /* ensure we have a valid pointer */
4d3f8: 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];
4d3fa: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d3fe: 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];
4d400: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4d404: 4a8a tstl %a2 <== NOT EXECUTED
4d406: 66a8 bnes 4d3b0 <IMFS_memfile_remove+0xac> <== NOT EXECUTED
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4d408: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d40a: 486c 005c pea %a4@(92) <== NOT EXECUTED
4d40e: 4e93 jsr %a3@ <== NOT EXECUTED
4d410: 508f addql #8,%sp <== NOT EXECUTED
(block_p **)&info->triply_indirect, to_free );
}
return 0;
}
4d412: 4280 clrl %d0 <== NOT EXECUTED
4d414: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
4d41a: 4e5e unlk %fp <== NOT EXECUTED
0004d41e <IMFS_memfile_remove_block>:
*/
MEMFILE_STATIC int IMFS_memfile_remove_block(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4d41e: 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 );
4d422: 42a7 clrl %sp@- <== NOT EXECUTED
4d424: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4d428: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d42c: 4eb9 0004 ce2c jsr 4ce2c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
IMFS_assert( block_ptr );
ptr = *block_ptr;
4d432: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d434: 2210 movel %a0@,%d1 <== NOT EXECUTED
*block_ptr = 0;
4d436: 4290 clrl %a0@ <== NOT EXECUTED
memfile_free_block( ptr );
4d438: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d43a: 4eb9 0004 d2a4 jsr 4d2a4 <memfile_free_block> <== NOT EXECUTED
return 1;
}
4d440: 7001 moveq #1,%d0 <== NOT EXECUTED
4d442: 4e5e unlk %fp <== NOT EXECUTED
0004d54c <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 ) {
4d54c: 4280 clrl %d0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d54e: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4d552: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
4d556: 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;
4d55a: 2047 moveal %d7,%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d55c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4d560: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4d564: 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;
4d568: d1c3 addal %d3,%a0 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size ) {
4d56a: 2208 movel %a0,%d1 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4d56c: 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 ) {
4d570: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4d574: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4d578: 9a81 subl %d1,%d5 <== NOT EXECUTED
4d57a: 9980 subxl %d0,%d4 <== NOT EXECUTED
4d57c: 6d00 0118 bltw 4d696 <IMFS_memfile_write+0x14a> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4d580: 2c39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4d586: 2a06 movel %d6,%d5 <== NOT EXECUTED
4d588: 5bc4 smi %d4 <== NOT EXECUTED
4d58a: 49c4 extbl %d4 <== NOT EXECUTED
4d58c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d58e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d590: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d592: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d594: 4eb9 0005 ab34 jsr 5ab34 <__moddi3> <== NOT EXECUTED
4d59a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d59e: 2641 moveal %d1,%a3 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4d5a0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4d5a2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d5a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d5a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d5a8: 4eb9 0005 a780 jsr 5a780 <__divdi3> <== NOT EXECUTED
4d5ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d5b2: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4d5b4: 4a8b tstl %a3 <== NOT EXECUTED
4d5b6: 6700 00d6 beqw 4d68e <IMFS_memfile_write+0x142> <== 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 );
4d5ba: 42a7 clrl %sp@- <== NOT EXECUTED
4d5bc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d5be: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d5c0: 4eb9 0004 ce2c jsr 4ce2c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d5c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d5ca: 4a80 tstl %d0 <== NOT EXECUTED
4d5cc: 6700 012c beqw 4d6fa <IMFS_memfile_write+0x1ae> <== 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;
4d5d0: 9c8b subl %a3,%d6 <== NOT EXECUTED
4d5d2: be86 cmpl %d6,%d7 <== NOT EXECUTED
4d5d4: 6500 00fa bcsw 4d6d0 <IMFS_memfile_write+0x184> <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d5d8: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d5da: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4d5dc: 280c movel %a4,%d4 <== NOT EXECUTED
4d5de: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d5e0: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4d5e2: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d5e4: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d5e6: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d5e8: d7d0 addal %a0@,%a3 <== NOT EXECUTED
4d5ea: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d5ec: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d5f2: 2c39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4d5f8: 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 ) {
4d5fc: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4d5fe: 623c bhis 4d63c <IMFS_memfile_write+0xf0> <== NOT EXECUTED
4d600: 47f9 0004 ce2c lea 4ce2c <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 );
4d606: 49f9 0004 f190 lea 4f190 <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 );
4d60c: 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;
4d60e: 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 );
4d610: 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++;
4d612: 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 );
4d614: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d616: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4d618: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d61c: 4a80 tstl %d0 <== NOT EXECUTED
4d61e: 6700 00a4 beqw 4d6c4 <IMFS_memfile_write+0x178> <== 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 );
4d622: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d624: 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(
4d626: 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 );
4d628: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d62a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
src += to_copy;
4d62c: 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 );
4d62e: 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 ) {
4d630: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d634: beb9 0005 f324 cmpl 5f324 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED
4d63a: 64d0 bccs 4d60c <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 ) {
4d63c: 4a87 tstl %d7 <== NOT EXECUTED
4d63e: 6728 beqs 4d668 <IMFS_memfile_write+0x11c> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4d640: 42a7 clrl %sp@- <== NOT EXECUTED
4d642: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d644: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d646: 4eb9 0004 ce2c jsr 4ce2c <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4d64c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d650: 4a80 tstl %d0 <== NOT EXECUTED
4d652: 6770 beqs 4d6c4 <IMFS_memfile_write+0x178> <== 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 );
4d654: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4d656: 2040 moveal %d0,%a0 <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4d658: 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 );
4d65a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d65c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4d65e: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4d664: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
4d668: 42a7 clrl %sp@- <== NOT EXECUTED
4d66a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d66e: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4d674: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
return copied;
4d678: 2003 movel %d3,%d0 <== NOT EXECUTED
4d67a: 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 );
4d67c: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED
4d680: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED
return copied;
}
4d684: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d68a: 4e5e unlk %fp <== NOT EXECUTED
4d68c: 4e75 rts <== NOT EXECUTED
unsigned int last_byte;
unsigned int start_offset;
int copied;
const unsigned char *src;
src = source;
4d68e: 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;
4d690: 4283 clrl %d3 <== NOT EXECUTED
4d692: 6000 ff68 braw 4d5fc <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 );
4d696: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d698: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d69a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d69c: 4eb9 0004 d446 jsr 4d446 <IMFS_memfile_extend> <== NOT EXECUTED
if ( status )
4d6a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d6a6: 4a80 tstl %d0 <== NOT EXECUTED
4d6a8: 6700 fed6 beqw 4d580 <IMFS_memfile_write+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4d6ac: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4d6b2: 761c moveq #28,%d3 <== NOT EXECUTED
4d6b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d6b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d6b8: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6ba: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d6c0: 4e5e unlk %fp <== NOT EXECUTED
4d6c2: 4e75 rts <== NOT EXECUTED
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
to_copy = my_length;
if ( my_length ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
if ( !block_ptr )
4d6c4: 2003 movel %d3,%d0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6c6: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d6cc: 4e5e unlk %fp <== NOT EXECUTED
4d6ce: 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;
4d6d0: 2c07 movel %d7,%d6 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d6d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4d6d4: 280c movel %a4,%d4 <== NOT EXECUTED
4d6d6: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4d6d8: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4d6da: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4d6dc: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4d6de: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d6e0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d6e2: d7d0 addal %a0@,%a3 <== NOT EXECUTED
4d6e4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d6e6: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4d6ec: 2c39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4d6f2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d6f6: 6000 ff04 braw 4d5fc <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;
4d6fa: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4d6fc: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4d702: 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 fd3c jsr 4fd3c <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 aa28 jsr 4aa28 <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 9efa jsr 49efa <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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 4888 moveal 64888 <_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 33bc jsr 533bc <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 2f43 pea 62f43 <IntUartPollCallbacks.6370+0x75> <== NOT EXECUTED
44dd2: 2079 0006 4888 moveal 64888 <_impure_ptr>,%a0 <== NOT EXECUTED
44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44ddc: 4eb9 0005 326e jsr 5326e <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 4888 moveal 64888 <_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 2f1c pea 62f1c <IntUartPollCallbacks.6370+0x4e> <== NOT EXECUTED
44e20: 4eb9 0005 3f24 jsr 53f24 <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 4888 moveal 64888 <_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 32ec jsr 532ec <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 35f6 movel #407030,%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 4c46 jmp 54c46 <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 4888 moveal 64888 <_impure_ptr>,%a0 <== NOT EXECUTED
44e6c: 4879 0006 2eee pea 62eee <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44e76: 4eb9 0005 326e jsr 5326e <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 35f6 movel #407030,%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 4c46 jmp 54c46 <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 4888 moveal 64888 <_impure_ptr>,%a0 <== NOT EXECUTED
44ea0: 4879 0006 2f10 pea 62f10 <IntUartPollCallbacks.6370+0x42> <== NOT EXECUTED
44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44eaa: 4eb9 0005 326e jsr 5326e <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 35f6 movel #407030,%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 4c46 jmp 54c46 <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 4888 moveal 64888 <_impure_ptr>,%a0 <== NOT EXECUTED
44ed8: 4879 0006 2f01 pea 62f01 <IntUartPollCallbacks.6370+0x33> <== NOT EXECUTED
44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44ee2: 4eb9 0005 326e jsr 5326e <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 35f6 movel #407030,%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 4c46 jmp 54c46 <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 4888 moveal 64888 <_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 2f30 pea 62f30 <IntUartPollCallbacks.6370+0x62> <== NOT EXECUTED
44f1a: 4eb9 0005 3f24 jsr 53f24 <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>:
ssize_t 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;
ssize_t i;
node = loc->node_access;
42460: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
ssize_t 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;
ssize_t 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 fd54 jsr 4fd54 <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 6f08 jsr 46f08 <_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 6ed0 jsr 46ed0 <_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
0004abe4 <IMFS_rmnod>:
int IMFS_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4abe4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4abe8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4abec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
4abee: 2410 movel %a0@,%d2 <== NOT EXECUTED
IMFS_create_orphan( jnode );
4abf0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4abf2: 4eb9 0004 ab08 jsr 4ab08 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( jnode );
4abf8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4abfa: 4eb9 0004 ab4c jsr 4ab4c <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4ac00: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4ac04: 4280 clrl %d0 <== NOT EXECUTED
4ac06: 4e5e unlk %fp <== NOT EXECUTED
...
0004ac0c <IMFS_stat>:
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4ac0c: 7007 moveq #7,%d0
int IMFS_stat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4ac0e: 4e56 0000 linkw %fp,#0
4ac12: 206e 000c moveal %fp@(12),%a0
4ac16: 2f0a movel %a2,%sp@-
4ac18: 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;
4ac1c: 2252 moveal %a2@,%a1
switch ( the_jnode->type ) {
4ac1e: b0a9 0048 cmpl %a1@(72),%d0
4ac22: 6418 bccs 4ac3c <IMFS_stat+0x30> <== ALWAYS TAKEN
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4ac24: 4eb9 0004 e8e4 jsr 4e8e4 <__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;
}
4ac2a: 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 );
4ac2e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ac30: 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;
}
4ac32: 4e5e unlk %fp <== NOT EXECUTED
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4ac34: 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;
}
4ac3a: 4e75 rts <== NOT EXECUTED
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4ac3c: 2029 0048 movel %a1@(72),%d0
4ac40: d080 addl %d0,%d0
4ac42: 303b 0808 movew %pc@(4ac4c <IMFS_stat+0x40>,%d0:l),%d0
4ac46: 48c0 extl %d0
4ac48: 4efb 0802 jmp %pc@(4ac4c <IMFS_stat+0x40>,%d0:l)
4ac4c: ffd8 .short 0xffd8 <== NOT EXECUTED
4ac4e: ffd8 .short 0xffd8 <== NOT EXECUTED
4ac50: 00c2 bitrev %d2 <== NOT EXECUTED
4ac52: ffd8 .short 0xffd8 <== NOT EXECUTED
4ac54: 0010 .short 0x0010 <== NOT EXECUTED
4ac56: 006a .short 0x006a <== NOT EXECUTED
4ac58: 006a .short 0x006a <== NOT EXECUTED
4ac5a: 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;
4ac5c: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4ac60: 4280 clrl %d0 <== NOT EXECUTED
4ac62: 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 );
4ac64: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4ac68: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED
4ac6c: 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 );
4ac70: 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;
4ac72: 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;
4ac74: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ac7a: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4ac80: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ac86: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4ac8c: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4ac92: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ac98: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ac9e: 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 =
4aca4: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED
4acaa: 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;
}
4acae: 246e fffc moveal %fp@(-4),%a2
4acb2: 4e5e unlk %fp
4acb4: 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;
4acb6: 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;
4acba: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED
4acbe: 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 );
4acc2: 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;
4acc6: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED
4acca: 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 );
4acce: 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;
4acd0: 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;
4acd2: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4acd8: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4acde: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ace4: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4acea: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4acf0: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4acf6: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4acfc: 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 =
4ad02: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED
4ad08: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
4ad0c: 60a0 bras 4acae <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;
4ad0e: 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 );
4ad12: 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 );
4ad16: 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 );
4ad1a: 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 );
4ad20: 2212 movel %a2@,%d1
buf->st_mode = the_jnode->st_mode;
4ad22: 2169 002e 000c movel %a1@(46),%a0@(12)
buf->st_nlink = the_jnode->st_nlink;
4ad28: 3169 0032 0010 movew %a1@(50),%a0@(16)
buf->st_ino = the_jnode->st_ino;
4ad2e: 2169 0034 0008 movel %a1@(52),%a0@(8)
buf->st_uid = the_jnode->st_uid;
4ad34: 3169 0038 0012 movew %a1@(56),%a0@(18)
buf->st_gid = the_jnode->st_gid;
4ad3a: 3169 003a 0014 movew %a1@(58),%a0@(20)
buf->st_atime = the_jnode->stat_atime;
4ad40: 2169 003c 0026 movel %a1@(60),%a0@(38)
buf->st_mtime = the_jnode->stat_mtime;
4ad46: 2169 0040 002e movel %a1@(64),%a0@(46)
buf->st_ctime = the_jnode->stat_ctime;
4ad4c: 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 );
4ad52: 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;
4ad56: 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 =
4ad58: 20bc 0000 fffe movel #65534,%a0@
4ad5e: 2141 0004 movel %d1,%a0@(4)
4ad62: 6000 ff4a braw 4acae <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 fd3c jsr 4fd3c <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 aa28 jsr 4aa28 <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 f8ac jsr 4f8ac <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 9efa jsr 49efa <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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 a12c jsr 4a12c <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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 2004 jsr 52004 <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 eab6 moveal 5eab6 <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 eaba moveal 5eaba <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 eab4 tstb 5eab4 <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 e3f0 tstb 5e3f0 <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 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@-
42fba: 4eb9 0004 75ae jsr 475ae <_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 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@-
42fce: 2439 0005 fb3c movel 5fb3c <rtems_malloc_statistics>,%d2
42fd4: 4eb9 0004 80f0 jsr 480f0 <_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 fb3c movel %d0,5fb3c <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 f200 jsr 4f200 <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 eab4 tstb 5eab4 <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 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@-
43014: 4eb9 0004 75ae jsr 475ae <_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 6bac jsr 46bac <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 24dc moveal 624dc <print_handler>,%a4 <== NOT EXECUTED
428e6: 4eb9 0004 90a8 jsr 490a8 <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 fe9a pea 5fe9a <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
428f8: 2f39 0006 24d8 movel 624d8 <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 feb5 pea 5feb5 <IntUartPollCallbacks.6370+0x3b> <== NOT EXECUTED
4291c: 2f39 0006 24d8 movel 624d8 <print_context>,%sp@- <== NOT EXECUTED
42922: 2079 0006 24dc moveal 624dc <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 24e0 tstl 624e0 <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 fee0 pea 5fee0 <IntUartPollCallbacks.6370+0x66> <== NOT EXECUTED
4293e: 2f39 0006 24d8 movel 624d8 <print_context>,%sp@- <== NOT EXECUTED
42944: 2079 0006 24dc moveal 624dc <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 fea7 pea 5fea7 <IntUartPollCallbacks.6370+0x2d> <== NOT EXECUTED
4296c: 2f39 0006 24d8 movel 624d8 <print_context>,%sp@- <== NOT EXECUTED
42972: 2079 0006 24dc moveal 624dc <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 feb5 pea 5feb5 <IntUartPollCallbacks.6370+0x3b> <== NOT EXECUTED
42996: 2f39 0006 24d8 movel 624d8 <print_context>,%sp@- <== NOT EXECUTED
4299c: 2079 0006 24dc moveal 624dc <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 24e0 tstl 624e0 <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 fed3 pea 5fed3 <IntUartPollCallbacks.6370+0x59> <== NOT EXECUTED
429b6: 2f39 0006 24d8 movel 624d8 <print_context>,%sp@- <== NOT EXECUTED
429bc: 2079 0006 24dc moveal 624dc <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 2cf8 moveal 62cf8 <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 2cf4 lea 62cf4 <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 24e0 tstl 624e0 <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 333e movel 6333e <_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 2ce4 movel %d1,62ce4 <Stack_check_Pattern>
42a0e: 223c 0bad 0d06 movel #195890438,%d1
42a14: 23c1 0006 2ce8 movel %d1,62ce8 <Stack_check_Pattern+0x4>
42a1a: 223c dead f00d movel #-559026163,%d1
42a20: 23c1 0006 2cec movel %d1,62cec <Stack_check_Pattern+0x8>
42a26: 223c 600d 0d06 movel #1611468038,%d1
42a2c: 23c1 0006 2cf0 movel %d1,62cf0 <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 3342 movel 63342 <_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 2cf8 movel %d0,62cf8 <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 2cf4 movel %d1,62cf4 <Stack_check_Interrupt_stack><== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
42a54: 4eb9 0005 2060 jsr 52060 <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 24e0 movel %d0,624e0 <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 fee6 pea 5fee6 <IntUartPollCallbacks.6370+0x6c> <== NOT EXECUTED
42aea: 47f9 0004 4bf8 lea 44bf8 <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 fef6 pea 5fef6 <IntUartPollCallbacks.6370+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 ff13 pea 5ff13 <IntUartPollCallbacks.6370+0x99> <== NOT EXECUTED
42b12: 4e93 jsr %a3@ <== NOT EXECUTED
printk(
42b14: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
42b18: 4879 0005 ff25 pea 5ff25 <IntUartPollCallbacks.6370+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 90a8 jsr 490a8 <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 ff39 pea 5ff39 <IntUartPollCallbacks.6370+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 ff4f pea 5ff4f <IntUartPollCallbacks.6370+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 99cc jsr 499cc <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 0005 ff80 pea 5ff80 <IntUartPollCallbacks.6370+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 99cc jsr 499cc <rtems_fatal_error_occurred> <== NOT EXECUTED
0004c908 <TOD_MICROSECONDS_TO_TICKS>:
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c908: 41f9 0006 3e20 lea 63e20 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4c90e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c912: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4c916: 4e5e unlk %fp <== NOT EXECUTED
4c918: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
...
00047fb0 <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47fb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
47fb4: 2039 0005 f9a0 movel 5f9a0 <Configuration+0xc>,%d0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47fba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
47fbc: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
47fc2: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
47fc6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47fca: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
47fce: 2002 movel %d2,%d0 <== NOT EXECUTED
47fd0: 241f movel %sp@+,%d2 <== NOT EXECUTED
47fd2: 4e5e unlk %fp <== NOT EXECUTED
...
0004e670 <TOD_TICKS_PER_SECOND_method>:
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4e670: 41f9 0005 e3d0 lea 5e3d0 <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)
{
4e676: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4e67a: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
4e680: 4e5e unlk %fp <== NOT EXECUTED
4e682: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00046e9c <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
46e9c: 4e56 0000 linkw %fp,#0
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46ea0: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
46ea6: 5280 addql #1,%d0
46ea8: 206e 0008 moveal %fp@(8),%a0
46eac: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_CORE_mutex_Surrender(
46eb2: 42a7 clrl %sp@-
46eb4: 2f28 0008 movel %a0@(8),%sp@-
46eb8: 4868 0010 pea %a0@(16)
46ebc: 4eb9 0004 71a4 jsr 471a4 <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46ec2: 4fef 000c lea %sp@(12),%sp
}
46ec6: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46ec8: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch>
...
00046d76 <_API_extensions_Run_postdriver>:
*
* _API_extensions_Run_postdriver
*/
void _API_extensions_Run_postdriver( void )
{
46d76: 4e56 0000 linkw %fp,#0
46d7a: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d7c: 2479 0005 fdf4 moveal 5fdf4 <_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 );
46d82: b5fc 0005 fdf8 cmpal #392696,%a2
46d88: 6710 beqs 46d9a <_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)();
46d8a: 206a 0008 moveal %a2@(8),%a0
46d8e: 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 ) {
46d90: 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 );
46d92: b5fc 0005 fdf8 cmpal #392696,%a2
46d98: 66f0 bnes 46d8a <_API_extensions_Run_postdriver+0x14>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
}
}
46d9a: 246e fffc moveal %fp@(-4),%a2
46d9e: 4e5e unlk %fp <== NOT EXECUTED
00046da2 <_API_extensions_Run_postswitch>:
*
* _API_extensions_Run_postswitch
*/
void _API_extensions_Run_postswitch( void )
{
46da2: 4e56 0000 linkw %fp,#0
46da6: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46da8: 2479 0005 fdf4 moveal 5fdf4 <_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 );
46dae: b5fc 0005 fdf8 cmpal #392696,%a2
46db4: 6718 beqs 46dce <_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 );
46db6: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-
46dbc: 206a 000c moveal %a2@(12),%a0
46dc0: 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 ) {
46dc2: 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 );
46dc4: 588f addql #4,%sp
46dc6: b5fc 0005 fdf8 cmpal #392696,%a2
46dcc: 66e8 bnes 46db6 <_API_extensions_Run_postswitch+0x14>
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46dce: 246e fffc moveal %fp@(-4),%a2
46dd2: 4e5e unlk %fp
...
00050af4 <_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];
50af4: 41f9 0006 0fc8 lea 60fc8 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Barrier_Translate_core_barrier_return_code (
CORE_barrier_Status the_barrier_status
)
{
50afa: 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];
}
50afe: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
50b02: 4e5e unlk %fp <== NOT EXECUTED
50b04: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
000495ec <_CORE_RWLock_Initialize>:
void _CORE_RWLock_Initialize(
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
495ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
495f0: 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(
495f4: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
the_rwlock->Attributes = *the_rwlock_attributes;
495f8: 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(
495fc: 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;
49602: 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(
49606: 42a7 clrl %sp@- <== NOT EXECUTED
the_rwlock->Attributes = *the_rwlock_attributes;
/*
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
49608: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
4960c: 42a8 0044 clrl %a0@(68) <== NOT EXECUTED
_Thread_queue_Initialize(
49610: 2f08 movel %a0,%sp@- <== NOT EXECUTED
49612: 4eb9 0004 b7e8 jsr 4b7e8 <_Thread_queue_Initialize> <== NOT EXECUTED
49618: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&the_rwlock->Wait_queue,
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_RWLOCK,
CORE_RWLOCK_TIMEOUT
);
}
4961c: 4e5e unlk %fp <== NOT EXECUTED
00049620 <_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 );
49620: 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
)
{
49626: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4962a: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
4962e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
49632: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
49636: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
4963a: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing = _Thread_Executing;
4963e: 2679 0006 3266 moveal 63266 <_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 );
49644: 40c2 movew %sr,%d2 <== NOT EXECUTED
49646: 8082 orl %d2,%d0 <== NOT EXECUTED
49648: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
4964a: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED
4964e: 661a bnes 4966a <_CORE_RWLock_Obtain_for_reading+0x4a><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
49650: 7001 moveq #1,%d0 <== NOT EXECUTED
the_rwlock->number_of_readers += 1;
49652: 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;
49656: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
the_rwlock->number_of_readers += 1;
_ISR_Enable( level );
4965a: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
4965c: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49660: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
49666: 4e5e unlk %fp <== NOT EXECUTED
49668: 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 ) {
4966a: 7201 moveq #1,%d1 <== NOT EXECUTED
4966c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4966e: 674e beqs 496be <_CORE_RWLock_Obtain_for_reading+0x9e><== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
49670: 4a03 tstb %d3 <== NOT EXECUTED
49672: 6612 bnes 49686 <_CORE_RWLock_Obtain_for_reading+0x66><== NOT EXECUTED
_ISR_Enable( level );
49674: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
49676: 7202 moveq #2,%d1 <== NOT EXECUTED
49678: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4967c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
49682: 4e5e unlk %fp <== NOT EXECUTED
49684: 4e75 rts <== NOT EXECUTED
49686: 7001 moveq #1,%d0 <== NOT EXECUTED
49688: 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;
4968c: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED
executing->Wait.id = id;
49690: 2745 0020 movel %d5,%a3@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
49694: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
49698: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
_ISR_Enable( level );
4969c: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
4969e: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED
496a2: 223c 0004 984c movel #301132,%d1 <== NOT EXECUTED
496a8: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
496ac: 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(
496b2: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
496b6: 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(
496b8: 4ef9 0004 b3a0 jmp 4b3a0 <_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 );
496be: 2f0a movel %a2,%sp@- <== NOT EXECUTED
496c0: 4eb9 0004 b744 jsr 4b744 <_Thread_queue_First> <== NOT EXECUTED
if ( !waiter ) {
496c6: 588f addql #4,%sp <== NOT EXECUTED
496c8: 4a80 tstl %d0 <== NOT EXECUTED
496ca: 66a4 bnes 49670 <_CORE_RWLock_Obtain_for_reading+0x50><== NOT EXECUTED
the_rwlock->number_of_readers += 1;
496cc: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_ISR_Enable( level );
496d0: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
496d2: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
496d6: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
496dc: 4e5e unlk %fp <== NOT EXECUTED
000496e0 <_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 );
496e0: 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
)
{
496e6: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
496ea: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
496ee: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
496f2: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
496f6: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing = _Thread_Executing;
496fa: 2279 0006 3266 moveal 63266 <_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
)
{
49700: 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 );
49704: 40c1 movew %sr,%d1 <== NOT EXECUTED
49706: 8081 orl %d1,%d0 <== NOT EXECUTED
49708: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
4970a: 4aa8 0044 tstl %a0@(68) <== NOT EXECUTED
4970e: 6614 bnes 49724 <_CORE_RWLock_Obtain_for_writing+0x44><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
49710: 7002 moveq #2,%d0 <== NOT EXECUTED
49712: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
_ISR_Enable( level );
49716: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
49718: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4971c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
49720: 4e5e unlk %fp <== NOT EXECUTED
49722: 4e75 rts <== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
49724: 4a02 tstb %d2 <== NOT EXECUTED
49726: 6610 bnes 49738 <_CORE_RWLock_Obtain_for_writing+0x58><== NOT EXECUTED
_ISR_Enable( level );
49728: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
4972a: 7002 moveq #2,%d0 <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4972c: 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;
49730: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49734: 4e5e unlk %fp <== NOT EXECUTED
49736: 4e75 rts <== NOT EXECUTED
49738: 7001 moveq #1,%d0 <== NOT EXECUTED
4973a: 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;
4973e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
49742: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
49746: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
4974a: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
4974e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
49750: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
49754: 203c 0004 984c movel #301132,%d0 <== NOT EXECUTED
4975a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4975e: 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(
49762: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
49766: 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(
49768: 4ef9 0004 b3a0 jmp 4b3a0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
00049770 <_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 );
49770: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
49776: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing = _Thread_Executing;
4977a: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
49780: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
49784: 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 );
49788: 40c1 movew %sr,%d1 <== NOT EXECUTED
4978a: 8081 orl %d1,%d0 <== NOT EXECUTED
4978c: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
4978e: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED
49792: 6700 0090 beqw 49824 <_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 ) {
49796: 7401 moveq #1,%d2 <== NOT EXECUTED
49798: b480 cmpl %d0,%d2 <== NOT EXECUTED
4979a: 676e beqs 4980a <_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;
4979c: 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;
497a0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
497a4: 46c1 movew %d1,%sr <== NOT EXECUTED
next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );
497a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
497a8: 4eb9 0004 b228 jsr 4b228 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( next ) {
497ae: 588f addql #4,%sp <== NOT EXECUTED
497b0: 4a80 tstl %d0 <== NOT EXECUTED
497b2: 674a beqs 497fe <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED
if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
497b4: 7201 moveq #1,%d1 <== NOT EXECUTED
497b6: 2040 moveal %d0,%a0 <== NOT EXECUTED
497b8: b2a8 0030 cmpl %a0@(48),%d1 <== NOT EXECUTED
497bc: 677c beqs 4983a <_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;
497be: 7201 moveq #1,%d1 <== NOT EXECUTED
}
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
497c0: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
497c4: 47f9 0004 b744 lea 4b744 <_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 );
497ca: 49f9 0004 b5ec lea 4b5ec <_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;
497d0: 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 );
497d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
497d6: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !next ||
497d8: 588f addql #4,%sp <== NOT EXECUTED
497da: 4a80 tstl %d0 <== NOT EXECUTED
497dc: 6720 beqs 497fe <_CORE_RWLock_Release+0x8e> <== NOT EXECUTED
497de: 7401 moveq #1,%d2 <== NOT EXECUTED
497e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
497e2: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED
497e6: 6716 beqs 497fe <_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;
497e8: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_Thread_queue_Extract( &the_rwlock->Wait_queue, next );
497ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
497ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED
497f0: 4e94 jsr %a4@ <== NOT EXECUTED
}
497f2: 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 );
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: 66e0 bnes 497de <_CORE_RWLock_Release+0x6e> <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
497fe: 4280 clrl %d0 <== NOT EXECUTED
49800: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
49806: 4e5e unlk %fp <== NOT EXECUTED
49808: 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;
4980a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4980e: 5380 subql #1,%d0 <== NOT EXECUTED
49810: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
if ( the_rwlock->number_of_readers != 0 ) {
49814: 6786 beqs 4979c <_CORE_RWLock_Release+0x2c> <== NOT EXECUTED
/* must be unlocked again */
_ISR_Enable( level );
49816: 46c1 movew %d1,%sr <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
49818: 4280 clrl %d0 <== NOT EXECUTED
4981a: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
49820: 4e5e unlk %fp <== NOT EXECUTED
49822: 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 );
49824: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
49826: 103c 0002 moveb #2,%d0 <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
4982a: 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;
49830: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
49834: 4280 clrl %d0 <== NOT EXECUTED
49836: 4e5e unlk %fp <== NOT EXECUTED
49838: 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;
4983a: 7002 moveq #2,%d0 <== NOT EXECUTED
4983c: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
49840: 4280 clrl %d0 <== NOT EXECUTED
49842: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
49848: 4e5e unlk %fp <== NOT EXECUTED
0004984c <_CORE_RWLock_Timeout>:
void _CORE_RWLock_Timeout(
Objects_Id id,
void *ignored
)
{
4984c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49850: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49854: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49858: 4eb9 0004 aeec jsr 4aeec <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4985e: 508f addql #8,%sp <== NOT EXECUTED
49860: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49864: 6618 bnes 4987e <_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 );
49866: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49868: 4eb9 0004 b880 jsr 4b880 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4986e: 588f addql #4,%sp <== NOT EXECUTED
49870: 2039 0006 2ddc movel 62ddc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
49876: 5380 subql #1,%d0 <== NOT EXECUTED
49878: 23c0 0006 2ddc movel %d0,62ddc <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
4987e: 4e5e unlk %fp <== NOT EXECUTED
...
0004d704 <_CORE_barrier_Release>:
#else
Objects_Id id __attribute__((unused)),
CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused))
#endif
)
{
4d704: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4d708: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4d70c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4d710: 47f9 0004 9f98 lea 49f98 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t count;
count = 0;
4d716: 4282 clrl %d2 <== NOT EXECUTED
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4d718: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d71a: 4e93 jsr %a3@ <== NOT EXECUTED
4d71c: 588f addql #4,%sp <== NOT EXECUTED
4d71e: 4a80 tstl %d0 <== NOT EXECUTED
4d720: 670c beqs 4d72e <_CORE_barrier_Release+0x2a> <== NOT EXECUTED
4d722: 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++;
4d724: 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)) ) {
4d726: 4e93 jsr %a3@ <== NOT EXECUTED
4d728: 588f addql #4,%sp <== NOT EXECUTED
4d72a: 4a80 tstl %d0 <== NOT EXECUTED
4d72c: 66f4 bnes 4d722 <_CORE_barrier_Release+0x1e> <== NOT EXECUTED
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
return count;
}
4d72e: 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;
4d730: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
return count;
}
4d734: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4d73a: 4e5e unlk %fp <== NOT EXECUTED
...
00048250 <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
48250: 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
)
{
48256: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4825a: 2279 0006 19a6 moveal 619a6 <_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
)
{
48260: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
48264: 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;
48268: 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
)
{
4826c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
48270: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
48274: 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 );
48278: 40c1 movew %sr,%d1 <== NOT EXECUTED
4827a: 8081 orl %d1,%d0 <== NOT EXECUTED
4827c: 46c0 movew %d0,%sr <== NOT EXECUTED
the_barrier->number_of_waiting_threads++;
4827e: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
48282: 5280 addql #1,%d0 <== NOT EXECUTED
48284: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
48288: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED
4828c: 6606 bnes 48294 <_CORE_barrier_Wait+0x44> <== NOT EXECUTED
if ( the_barrier->number_of_waiting_threads ==
4828e: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED
48292: 672e beqs 482c2 <_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;
48294: 7001 moveq #1,%d0 <== NOT EXECUTED
48296: 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;
4829a: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
4829e: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
482a2: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
482a4: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
482a8: 203c 0004 a4d4 movel #304340,%d0 <== NOT EXECUTED
482ae: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
482b2: 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 );
482b6: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
482ba: 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 );
482bc: 4ef9 0004 a110 jmp 4a110 <_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;
482c2: 7001 moveq #1,%d0 <== NOT EXECUTED
482c4: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
482c8: 46c1 movew %d1,%sr <== NOT EXECUTED
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
482ca: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED
482ce: 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 );
}
482d2: 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 );
482d6: 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 );
}
482da: 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 );
482dc: 4ef9 0004 d704 jmp 4d704 <_CORE_barrier_Release> <== NOT EXECUTED
...
00059d3c <_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
)
{
59d3c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
59d40: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
59d44: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
59d48: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
59d4c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
59d50: 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 ) {
59d54: b4ab 004c cmpl %a3@(76),%d2 <== NOT EXECUTED
59d58: 6262 bhis 59dbc <_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 ) {
59d5a: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED
59d5e: 664c bnes 59dac <_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 =
59d60: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d62: 49f9 0005 c7fc lea 5c7fc <_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 ) {
59d68: 4283 clrl %d3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
59d6a: 4bf9 0006 2b5c lea 62b5c <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 =
59d70: 4e94 jsr %a4@ <== NOT EXECUTED
59d72: 588f addql #4,%sp <== NOT EXECUTED
59d74: 2440 moveal %d0,%a2 <== NOT EXECUTED
59d76: 4a80 tstl %d0 <== NOT EXECUTED
59d78: 6722 beqs 59d9c <_CORE_message_queue_Broadcast+0x60><== NOT EXECUTED
59d7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
59d7c: 5283 addql #1,%d3 <== NOT EXECUTED
59d7e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59d80: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
59d84: 4e95 jsr %a5@ <== NOT EXECUTED
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
59d86: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
59d8a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59d8e: 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 =
59d90: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d92: 4e94 jsr %a4@ <== NOT EXECUTED
59d94: 588f addql #4,%sp <== NOT EXECUTED
59d96: 2440 moveal %d0,%a2 <== NOT EXECUTED
59d98: 4a80 tstl %d0 <== NOT EXECUTED
59d9a: 66de bnes 59d7a <_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;
59d9c: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59d9e: 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;
59da0: 2083 movel %d3,%a0@ <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59da2: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
59da8: 4e5e unlk %fp <== NOT EXECUTED
59daa: 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;
59dac: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59dae: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59db0: 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;
59db6: 4290 clrl %a0@ <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59db8: 4e5e unlk %fp <== NOT EXECUTED
59dba: 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;
59dbc: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59dbe: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
59dc4: 4e5e unlk %fp <== NOT EXECUTED
0004e4f4 <_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
)
{
4e4f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4e4f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
4e4fa: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4e4fe: 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
)
{
4e502: 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(
4e506: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e508: 4eb9 0005 0974 jsr 50974 <_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 )
4e50e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e512: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED
4e516: 6612 bnes 4e52a <_CORE_message_queue_Close+0x36> <== NOT EXECUTED
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
4e518: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
}
4e51e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4e522: 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 );
4e524: 4ef9 0005 1552 jmp 51552 <_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 );
4e52a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e52c: 4eb9 0004 e548 jsr 4e548 <_CORE_message_queue_Flush_support><== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
4e532: 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 );
4e538: 588f addql #4,%sp <== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
}
4e53a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4e53e: 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 );
4e540: 4ef9 0005 1552 jmp 51552 <_Workspace_Free> <== NOT EXECUTED
...
00059e1c <_CORE_message_queue_Flush>:
*/
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
59e1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59e20: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( the_message_queue->number_of_pending_messages != 0 )
59e24: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED
59e28: 6606 bnes 59e30 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED
return _CORE_message_queue_Flush_support( the_message_queue );
else
return 0;
}
59e2a: 4280 clrl %d0 <== NOT EXECUTED
59e2c: 4e5e unlk %fp <== NOT EXECUTED
59e2e: 4e75 rts <== NOT EXECUTED
59e30: 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 );
59e32: 4ef9 0005 9e38 jmp 59e38 <_CORE_message_queue_Flush_support><== NOT EXECUTED
0004e548 <_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 );
4e548: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
uint32_t _CORE_message_queue_Flush_support(
CORE_message_queue_Control *the_message_queue
)
{
4e54e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4e552: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4e556: 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 );
4e55a: 40c1 movew %sr,%d1 <== NOT EXECUTED
4e55c: 8081 orl %d1,%d0 <== NOT EXECUTED
4e55e: 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;
}
4e560: 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 );
4e564: 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;
}
4e568: 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;
4e56c: 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;;
4e570: 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;
4e574: 214b 0068 movel %a3,%a0@(104) <== NOT EXECUTED
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
4e578: 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;
4e57c: 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 );
4e57e: 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 );
4e582: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4e586: 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 );
4e58a: 214b 0058 movel %a3,%a0@(88) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4e58e: 214c 0050 movel %a4,%a0@(80) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
4e592: 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;
4e596: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
4e59a: 46c1 movew %d1,%sr <== NOT EXECUTED
return count;
}
4e59c: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED
4e5a0: 4e5e unlk %fp <== NOT EXECUTED
00050154 <_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)) {
50154: 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
)
{
50156: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5015a: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
5015e: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
50162: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
50166: 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)) {
5016a: 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;
5016c: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED
the_message_queue->number_of_pending_messages = 0;
50170: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
the_message_queue->maximum_message_size = maximum_message_size;
50174: 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;
50178: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
5017c: 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)) {
50180: 4a81 tstl %d1 <== NOT EXECUTED
50182: 6718 beqs 5019c <_CORE_message_queue_Initialize+0x48><== NOT EXECUTED
allocated_message_size += sizeof(uint32_t);
50184: 2200 movel %d0,%d1 <== NOT EXECUTED
50186: 5881 addql #4,%d1 <== NOT EXECUTED
allocated_message_size &= ~(sizeof(uint32_t) - 1);
50188: 76fc moveq #-4,%d3 <== NOT EXECUTED
5018a: c283 andl %d3,%d1 <== NOT EXECUTED
}
if (allocated_message_size < maximum_message_size)
5018c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5018e: 640e bccs 5019e <_CORE_message_queue_Initialize+0x4a><== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50190: 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;
50196: 4200 clrb %d0 <== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50198: 4e5e unlk %fp <== NOT EXECUTED
5019a: 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)) {
5019c: 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));
5019e: 2601 movel %d1,%d3 <== NOT EXECUTED
501a0: 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 *
501a6: 2003 movel %d3,%d0 <== NOT EXECUTED
501a8: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
if (message_buffering_required < allocated_message_size)
501ac: b280 cmpl %d0,%d1 <== NOT EXECUTED
501ae: 62e0 bhis 50190 <_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 );
501b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
501b2: 4eb9 0005 30fa jsr 530fa <_Workspace_Allocate> <== NOT EXECUTED
if (the_message_queue->message_buffers == 0)
501b8: 588f addql #4,%sp <== NOT EXECUTED
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
501ba: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
501be: 67d0 beqs 50190 <_CORE_message_queue_Initialize+0x3c><== NOT EXECUTED
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
501c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
501c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
501c4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
501c6: 486a 0068 pea %a2@(104) <== NOT EXECUTED
501ca: 4eb9 0005 5994 jsr 55994 <_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 );
501d0: 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(
501d4: 7001 moveq #1,%d0 <== NOT EXECUTED
501d6: 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 );
501da: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED
501de: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED
501e2: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
501e6: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED
501ea: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
501ee: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED
501f2: b090 cmpl %a0@,%d0 <== NOT EXECUTED
501f4: 57c0 seq %d0 <== NOT EXECUTED
501f6: 49c0 extbl %d0 <== NOT EXECUTED
501f8: 4480 negl %d0 <== NOT EXECUTED
501fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
501fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
501fe: 4eb9 0005 2678 jsr 52678 <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
50204: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
50208: 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;
5020e: 7001 moveq #1,%d0 <== NOT EXECUTED
}
50210: 4e5e unlk %fp <== NOT EXECUTED
00055a08 <_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
)
{
55a08: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
55a0c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
55a10: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
55a14: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
55a18: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
55a1c: 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 ) {
55a20: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED
55a26: 677a beqs 55aa2 <_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 ) {
55a28: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED
55a2e: 6700 00a8 beqw 55ad8 <_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));
55a32: 2208 movel %a0,%d1 <== NOT EXECUTED
55a34: 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
}
55a3a: 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 ) ) {
55a3e: b5c1 cmpal %d1,%a2 <== NOT EXECUTED
55a40: 670c beqs 55a4e <_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 ) {
55a42: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED
55a46: 6d06 blts 55a4e <_CORE_message_queue_Insert_message+0x46><== NOT EXECUTED
the_node = the_node->next;
55a48: 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 ) ) {
55a4a: b5c1 cmpal %d1,%a2 <== NOT EXECUTED
55a4c: 66f4 bnes 55a42 <_CORE_message_queue_Insert_message+0x3a><== NOT EXECUTED
the_node = the_node->next;
continue;
}
break;
}
_ISR_Disable( level );
55a4e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
55a54: 40c1 movew %sr,%d1 <== NOT EXECUTED
55a56: 8081 orl %d1,%d0 <== NOT EXECUTED
55a58: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55a5a: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55a5e: 2400 movel %d0,%d2 <== NOT EXECUTED
55a60: 5282 addql #1,%d2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55a62: 4a80 tstl %d0 <== NOT EXECUTED
55a64: 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 );
55a66: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55a6a: 4480 negl %d0 <== NOT EXECUTED
}
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
55a6c: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
55a70: 2652 moveal %a2@,%a3 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
55a72: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
55a76: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
55a78: 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;
55a7c: 228b movel %a3,%a1@ <== NOT EXECUTED
_Chain_Insert_unprotected( the_node->previous, &the_message->Node );
_ISR_Enable( level );
55a7e: 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 )
55a80: 4a00 tstb %d0 <== NOT EXECUTED
55a82: 6716 beqs 55a9a <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED
55a84: 2268 0060 moveal %a0@(96),%a1 <== NOT EXECUTED
55a88: 4a89 tstl %a1 <== NOT EXECUTED
55a8a: 670e beqs 55a9a <_CORE_message_queue_Insert_message+0x92><== NOT EXECUTED
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
55a8c: 2d68 0064 0008 movel %a0@(100),%fp@(8) <== NOT EXECUTED
#endif
}
55a92: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED
55a96: 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);
55a98: 4ed1 jmp %a1@ <== NOT EXECUTED
#endif
}
55a9a: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED
55a9e: 4e5e unlk %fp <== NOT EXECUTED
55aa0: 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 );
55aa2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
55aa8: 40c1 movew %sr,%d1 <== NOT EXECUTED
55aaa: 8081 orl %d1,%d0 <== NOT EXECUTED
55aac: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55aae: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55ab2: 2400 movel %d0,%d2 <== NOT EXECUTED
55ab4: 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 );
55ab6: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55aba: 4a80 tstl %d0 <== NOT EXECUTED
55abc: 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++;
55abe: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
55ac2: 2468 0058 moveal %a0@(88),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55ac6: 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 );
55ac8: 228b movel %a3,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
55aca: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
old_last->next = the_node;
55ace: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
55ad0: 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 );
55ad4: 46c1 movew %d1,%sr <== NOT EXECUTED
55ad6: 60a8 bras 55a80 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
55ad8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
55ade: 40c1 movew %sr,%d1 <== NOT EXECUTED
55ae0: 8081 orl %d1,%d0 <== NOT EXECUTED
55ae2: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
55ae4: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
55ae8: 2400 movel %d0,%d2 <== NOT EXECUTED
55aea: 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);
55aec: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55af0: 4a80 tstl %d0 <== NOT EXECUTED
55af2: 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++;
55af4: 2142 0048 movel %d2,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
55af8: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
55afc: 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);
55afe: 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;
55b02: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
55b06: 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;
55b0a: 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 );
55b0c: 46c1 movew %d1,%sr <== NOT EXECUTED
55b0e: 6000 ff70 braw 55a80 <_CORE_message_queue_Insert_message+0x78><== NOT EXECUTED
...
00050214 <_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 );
50214: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
5021a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
5021e: 2279 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
50224: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
50228: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5022c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
50230: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
50234: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
50238: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED
5023c: 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;
50240: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
50244: 40c1 movew %sr,%d1 <== NOT EXECUTED
50246: 8081 orl %d1,%d0 <== NOT EXECUTED
50248: 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 );
5024a: 200a movel %a2,%d0 <== NOT EXECUTED
5024c: 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 );
}
50252: 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))
50256: b08b cmpl %a3,%d0 <== NOT EXECUTED
50258: 6700 0088 beqw 502e2 <_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;
5025c: 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 );
5025e: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED
50262: 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;
50266: 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;
5026a: 2549 0050 movel %a1,%a2@(80) <== NOT EXECUTED
_ISR_Enable( level );
5026e: 46c1 movew %d1,%sr <== NOT EXECUTED
*size_p = the_message->Contents.size;
_Thread_Executing->Wait.count =
50270: 2279 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
_CORE_message_queue_Get_message_priority( the_message );
_CORE_message_queue_Copy_buffer(
the_message->Contents.buffer,
50276: 240b movel %a3,%d2 <== NOT EXECUTED
50278: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
5027e: 49f9 0005 87e8 lea 587e8 <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;
50284: 20ab 000c movel %a3@(12),%a0@ <== NOT EXECUTED
_Thread_Executing->Wait.count =
50288: 236b 0008 0024 movel %a3@(8),%a1@(36) <== NOT EXECUTED
5028e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
50290: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50292: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50294: 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 );
50296: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50298: 4eb9 0005 2248 jsr 52248 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( !the_thread ) {
5029e: 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 );
502a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !the_thread ) {
502a4: 4a80 tstl %d0 <== NOT EXECUTED
502a6: 6700 0088 beqw 50330 <_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;
502aa: 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;
502ae: 2768 0024 0008 movel %a0@(36),%a3@(8) <== NOT EXECUTED
502b4: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
502b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
502ba: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
502be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
502c0: 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(
502c2: 2d6b 0008 0010 movel %a3@(8),%fp@(16) <== NOT EXECUTED
502c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
502cc: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
502d0: 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 );
}
502d4: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
502da: 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(
502dc: 4ef9 0005 5a08 jmp 55a08 <_CORE_message_queue_Insert_message><== NOT EXECUTED
return;
}
#endif
}
if ( !wait ) {
502e2: 4a02 tstb %d2 <== NOT EXECUTED
502e4: 6612 bnes 502f8 <_CORE_message_queue_Seize+0xe4> <== NOT EXECUTED
_ISR_Enable( level );
502e6: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
502e8: 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 );
}
502ea: 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;
502f0: 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 );
}
502f4: 4e5e unlk %fp <== NOT EXECUTED
502f6: 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;
502f8: 7001 moveq #1,%d0 <== NOT EXECUTED
502fa: 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;
502fe: 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;
50302: 234a 0044 movel %a2,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
50306: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
5030a: 2348 0028 movel %a0,%a1@(40) <== NOT EXECUTED
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
5030e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
50310: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED
50314: 49f9 0005 2784 lea 52784 <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED
5031a: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
5031e: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED
}
50322: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
50328: 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 );
5032a: 4ef9 0005 23c0 jmp 523c0 <_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 );
50330: 45ea 0068 lea %a2@(104),%a2 <== NOT EXECUTED
50334: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
50338: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
5033c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
50342: 4e5e unlk %fp <== NOT EXECUTED
50344: 4ef9 0005 0088 jmp 50088 <_Chain_Append> <== NOT EXECUTED
...
0005034c <_CORE_message_queue_Submit>:
#endif
CORE_message_queue_Submit_types submit_type,
bool wait,
Watchdog_Interval timeout
)
{
5034c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
50350: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
50354: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
50358: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
5035c: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED
50360: 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 ) {
50364: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED
50368: 6228 bhis 50392 <_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 ) {
5036a: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
5036e: 672e beqs 5039e <_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 <
50370: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED
50374: 6500 00ba bcsw 50430 <_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 ) {
50378: 4a03 tstb %d3 <== NOT EXECUTED
5037a: 6700 00f4 beqw 50470 <_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() ) {
5037e: 4ab9 0006 a116 tstl 6a116 <_Per_CPU_Information+0x8> <== NOT EXECUTED
50384: 6754 beqs 503da <_CORE_message_queue_Submit+0x8e><== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
50386: 7003 moveq #3,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50388: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5038e: 4e5e unlk %fp <== NOT EXECUTED
50390: 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;
50392: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50394: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5039a: 4e5e unlk %fp <== NOT EXECUTED
5039c: 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 );
5039e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
503a0: 4eb9 0005 2248 jsr 52248 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( the_thread ) {
503a6: 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 );
503a8: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( the_thread ) {
503aa: 4a80 tstl %d0 <== NOT EXECUTED
503ac: 6700 00ce beqw 5047c <_CORE_message_queue_Submit+0x130><== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
503b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
503b2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
503b6: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED
503ba: 4eb9 0005 87e8 jsr 587e8 <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;
503c0: 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;
503c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
503c8: 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;
503ca: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_thread->Wait.count = (uint32_t) submit_type;
503cc: 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
}
503d0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
503d6: 4e5e unlk %fp <== NOT EXECUTED
503d8: 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;
503da: 2079 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
503e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
503e6: 40c1 movew %sr,%d1 <== NOT EXECUTED
503e8: 8081 orl %d1,%d0 <== NOT EXECUTED
503ea: 46c0 movew %d0,%sr <== NOT EXECUTED
503ec: 7001 moveq #1,%d0 <== NOT EXECUTED
503ee: 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;
503f2: 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;
503f6: 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;
503fc: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.return_argument_second.immutable_object = buffer;
50400: 2140 002c movel %d0,%a0@(44) <== NOT EXECUTED
executing->Wait.option = (uint32_t) size;
50404: 2142 0030 movel %d2,%a0@(48) <== NOT EXECUTED
executing->Wait.count = submit_type;
50408: 2144 0024 movel %d4,%a0@(36) <== NOT EXECUTED
_ISR_Enable( level );
5040c: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
5040e: 4879 0005 2784 pea 52784 <_Thread_queue_Timeout> <== NOT EXECUTED
50414: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED
50418: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5041a: 4eb9 0005 23c0 jsr 523c0 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
50420: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
50424: 7007 moveq #7,%d0 <== NOT EXECUTED
#endif
}
50426: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5042c: 4e5e unlk %fp <== NOT EXECUTED
5042e: 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 );
50430: 486a 0068 pea %a2@(104) <== NOT EXECUTED
50434: 4eb9 0005 00e8 jsr 500e8 <_Chain_Get> <== NOT EXECUTED
5043a: 2640 moveal %d0,%a3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
5043c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5043e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50442: 486b 0010 pea %a3@(16) <== NOT EXECUTED
50446: 4eb9 0005 87e8 jsr 587e8 <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_message->Contents.buffer,
size
);
the_message->Contents.size = size;
5044c: 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;
50450: 2744 0008 movel %d4,%a3@(8) <== NOT EXECUTED
_CORE_message_queue_Set_message_priority( the_message, submit_type );
_CORE_message_queue_Insert_message(
50454: 2f04 movel %d4,%sp@- <== NOT EXECUTED
50456: 2f0b movel %a3,%sp@- <== NOT EXECUTED
50458: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5045a: 4eb9 0005 5a08 jsr 55a08 <_CORE_message_queue_Insert_message><== NOT EXECUTED
the_message_queue,
the_message,
submit_type
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
50460: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
50464: 4280 clrl %d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50466: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5046c: 4e5e unlk %fp <== NOT EXECUTED
5046e: 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;
50470: 7002 moveq #2,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50472: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
50478: 4e5e unlk %fp <== NOT EXECUTED
5047a: 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 ) {
5047c: 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 <
50480: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED
50484: 6400 fef2 bccw 50378 <_CORE_message_queue_Submit+0x2c><== NOT EXECUTED
50488: 60a6 bras 50430 <_CORE_message_queue_Submit+0xe4><== NOT EXECUTED
...
00046f78 <_CORE_mutex_Initialize>:
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46f78: 4e56 0000 linkw %fp,#0
46f7c: 206e 0008 moveal %fp@(8),%a0
46f80: 2f0a movel %a2,%sp@-
46f82: 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;
46f86: 224a moveal %a2,%a1
46f88: 2159 0040 movel %a1@+,%a0@(64)
46f8c: 2159 0044 movel %a1@+,%a0@(68)
46f90: 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
)
{
46f94: 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;
46f98: 3151 004c movew %a1@,%a0@(76)
the_mutex->lock = initial_lock;
46f9c: 2140 004e movel %d0,%a0@(78)
the_mutex->blocked_count = 0;
46fa0: 42a8 0056 clrl %a0@(86)
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46fa4: 4a80 tstl %d0
46fa6: 6654 bnes 46ffc <_CORE_mutex_Initialize+0x84>
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46fa8: 2279 0006 0102 moveal 60102 <_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;
46fae: 7201 moveq #1,%d1
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
46fb0: 2169 0008 005e movel %a1@(8),%a0@(94)
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
46fb6: 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;
46fba: 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 ) ||
46fbe: 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;
46fc2: 2149 005a movel %a1,%a0@(90)
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46fc6: b280 cmpl %d0,%d1
46fc8: 6762 beqs 4702c <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
46fca: 123c 0003 moveb #3,%d1
46fce: b280 cmpl %d0,%d1
46fd0: 675a beqs 4702c <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46fd2: 4aaa 0006 tstl %a2@(6)
46fd6: 56c0 sne %d0
46fd8: 4878 0005 pea 5 <COMPARE>
46fdc: 49c0 extbl %d0
46fde: 4878 0400 pea 400 <D_BIAS+0x2>
46fe2: 4480 negl %d0
46fe4: 2f00 movel %d0,%sp@-
46fe6: 2f08 movel %a0,%sp@-
46fe8: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
46fee: 4fef 0010 lea %sp@(16),%sp
46ff2: 4280 clrl %d0
}
46ff4: 246e fffc moveal %fp@(-4),%a2
46ff8: 4e5e unlk %fp
46ffa: 4e75 rts
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46ffc: 4aaa 0006 tstl %a2@(6)
47000: 56c0 sne %d0
#endif
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
47002: 42a8 0052 clrl %a0@(82)
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
47006: 49c0 extbl %d0
47008: 4480 negl %d0
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
4700a: 42a8 005a clrl %a0@(90)
the_mutex->holder_id = 0;
4700e: 42a8 005e clrl %a0@(94)
}
_Thread_queue_Initialize(
47012: 4878 0005 pea 5 <COMPARE>
47016: 4878 0400 pea 400 <D_BIAS+0x2>
4701a: 2f00 movel %d0,%sp@-
4701c: 2f08 movel %a0,%sp@-
4701e: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
47024: 4fef 0010 lea %sp@(16),%sp
47028: 4280 clrl %d0
4702a: 60c8 bras 46ff4 <_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 <
4702c: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED
47030: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED
47034: 6228 bhis 4705e <_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++;
47036: 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(
4703a: 4aaa 0006 tstl %a2@(6) <== NOT EXECUTED
4703e: 56c0 sne %d0 <== NOT EXECUTED
47040: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
47044: 49c0 extbl %d0 <== NOT EXECUTED
47046: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
4704a: 4480 negl %d0 <== NOT EXECUTED
4704c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4704e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47050: 4eb9 0004 90d0 jsr 490d0 <_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;
47056: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4705a: 4280 clrl %d0 <== NOT EXECUTED
4705c: 6096 bras 46ff4 <_CORE_mutex_Initialize+0x7c> <== NOT EXECUTED
}
4705e: 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;
47062: 7006 moveq #6,%d0 <== NOT EXECUTED
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47064: 4e5e unlk %fp <== NOT EXECUTED
000470f4 <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
470f4: 4e56 0000 linkw %fp,#0
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
470f8: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
470fe: 2f0a movel %a2,%sp@-
47100: 246e 0008 moveal %fp@(8),%a2
47104: 2f02 movel %d2,%sp@-
47106: 142e 0013 moveb %fp@(19),%d2
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4710a: 4a80 tstl %d0
4710c: 6704 beqs 47112 <_CORE_mutex_Seize+0x1e>
4710e: 4a02 tstb %d2
47110: 6634 bnes 47146 <_CORE_mutex_Seize+0x52> <== ALWAYS TAKEN
47112: 486e 0018 pea %fp@(24)
47116: 2f0a movel %a2,%sp@-
47118: 4eb9 0004 c44c jsr 4c44c <_CORE_mutex_Seize_interrupt_trylock>
4711e: 508f addql #8,%sp
47120: 4a80 tstl %d0
47122: 6716 beqs 4713a <_CORE_mutex_Seize+0x46>
47124: 4a02 tstb %d2
47126: 6636 bnes 4715e <_CORE_mutex_Seize+0x6a> <== ALWAYS TAKEN
47128: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED
4712c: 46c0 movew %d0,%sr <== NOT EXECUTED
4712e: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
47134: 7001 moveq #1,%d0 <== NOT EXECUTED
47136: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
4713a: 242e fff8 movel %fp@(-8),%d2
4713e: 246e fffc moveal %fp@(-4),%a2
47142: 4e5e unlk %fp
47144: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
47146: 7001 moveq #1,%d0
47148: b0b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d0
4714e: 64c2 bccs 47112 <_CORE_mutex_Seize+0x1e>
47150: 4878 0012 pea 12 <INVALID_OPERATION+0x2>
47154: 42a7 clrl %sp@-
47156: 42a7 clrl %sp@-
47158: 4eb9 0004 7810 jsr 47810 <_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;
4715e: 7001 moveq #1,%d0
47160: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
47166: 2540 0030 movel %d0,%a2@(48)
4716a: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
47170: 5280 addql #1,%d0
47172: 216e 000c 0020 movel %fp@(12),%a0@(32)
47178: 214a 0044 movel %a2,%a0@(68)
4717c: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level>
47182: 202e 0018 movel %fp@(24),%d0
47186: 46c0 movew %d0,%sr
47188: 2f2e 0014 movel %fp@(20),%sp@-
4718c: 2f0a movel %a2,%sp@-
4718e: 4eb9 0004 7068 jsr 47068 <_CORE_mutex_Seize_interrupt_blocking>
}
47194: 242e fff8 movel %fp@(-8),%d2
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
47198: 508f addql #8,%sp
}
4719a: 246e fffc moveal %fp@(-4),%a2
4719e: 4e5e unlk %fp
...
00047068 <_CORE_mutex_Seize_interrupt_blocking>:
)
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47068: 7002 moveq #2,%d0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
4706a: 4e56 0000 linkw %fp,#0
Thread_Control *executing;
executing = _Thread_Executing;
4706e: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
47074: 2f0a movel %a2,%sp@-
47076: 246e 0008 moveal %fp@(8),%a2
4707a: 2f02 movel %d2,%sp@-
4707c: 242e 000c movel %fp@(12),%d2
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47080: b0aa 0046 cmpl %a2@(70),%d0
47084: 6728 beqs 470ae <_CORE_mutex_Seize_interrupt_blocking+0x46>
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
47086: 4879 0004 91dc pea 491dc <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
4708c: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
47090: 2f02 movel %d2,%sp@-
47092: 2f0a movel %a2,%sp@-
47094: 4eb9 0004 8e18 jsr 48e18 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
4709a: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
4709e: 4fef 000c lea %sp@(12),%sp
}
470a2: 246e fffc moveal %fp@(-4),%a2
470a6: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470a8: 4ef9 0004 893e jmp 4893e <_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 ) {
470ae: 226a 005a moveal %a2@(90),%a1
470b2: 2028 0014 movel %a0@(20),%d0
470b6: b0a9 0014 cmpl %a1@(20),%d0
470ba: 64ca bccs 47086 <_CORE_mutex_Seize_interrupt_blocking+0x1e><== NEVER TAKEN
_Thread_Change_priority(
470bc: 42a7 clrl %sp@-
470be: 2f00 movel %d0,%sp@-
470c0: 2f09 movel %a1,%sp@-
470c2: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority>
470c8: 4fef 000c lea %sp@(12),%sp
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470cc: 4879 0004 91dc pea 491dc <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
470d2: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
470d6: 2f02 movel %d2,%sp@-
470d8: 2f0a movel %a2,%sp@-
470da: 4eb9 0004 8e18 jsr 48e18 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
470e0: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470e4: 4fef 000c lea %sp@(12),%sp
}
470e8: 246e fffc moveal %fp@(-4),%a2
470ec: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470ee: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch>
0004c44c <_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
)
{
4c44c: 4e56 0000 linkw %fp,#0
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4c450: 2279 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a1
4c456: 2f0a movel %a2,%sp@-
4c458: 206e 0008 moveal %fp@(8),%a0
4c45c: 2f02 movel %d2,%sp@-
4c45e: 246e 000c moveal %fp@(12),%a2
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
4c462: 42a9 0034 clrl %a1@(52)
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
4c466: 4aa8 004e tstl %a0@(78)
4c46a: 673a beqs 4c4a6 <_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;
4c46c: 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;
4c46e: 2169 0008 005e movel %a1@(8),%a0@(94)
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p );
}
4c474: 2028 0046 movel %a0@(70),%d0
the_mutex->nest_count = 1;
4c478: 2141 0052 movel %d1,%a0@(82)
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4c47c: 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;
4c480: 42a8 004e clrl %a0@(78)
the_mutex->holder = executing;
4c484: 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 ) ||
4c488: b280 cmpl %d0,%d1
4c48a: 672e beqs 4c4ba <_CORE_mutex_Seize_interrupt_trylock+0x6e>
4c48c: 123c 0003 moveb #3,%d1
4c490: b280 cmpl %d0,%d1
4c492: 674e beqs 4c4e2 <_CORE_mutex_Seize_interrupt_trylock+0x96><== NEVER TAKEN
executing->resource_count++;
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4c494: 2012 movel %a2@,%d0
4c496: 46c0 movew %d0,%sr
return 0;
4c498: 4280 clrl %d0
4c49a: 242e fff8 movel %fp@(-8),%d2
4c49e: 246e fffc moveal %fp@(-4),%a2
4c4a2: 4e5e unlk %fp
4c4a4: 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 ) ) {
4c4a6: b3e8 005a cmpal %a0@(90),%a1
4c4aa: 671a beqs 4c4c6 <_CORE_mutex_Seize_interrupt_trylock+0x7a>
4c4ac: 242e fff8 movel %fp@(-8),%d2
/*
* The mutex is not available and the caller must deal with the possibility
* of blocking.
*/
return 1;
4c4b0: 7001 moveq #1,%d0
4c4b2: 246e fffc moveal %fp@(-4),%a2
4c4b6: 4e5e unlk %fp
4c4b8: 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++;
4c4ba: 52a9 001c addql #1,%a1@(28)
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4c4be: 2012 movel %a2@,%d0
4c4c0: 46c0 movew %d0,%sr
return 0;
4c4c2: 4280 clrl %d0
4c4c4: 60d4 bras 4c49a <_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 ) {
4c4c6: 2028 0040 movel %a0@(64),%d0
4c4ca: 6658 bnes 4c524 <_CORE_mutex_Seize_interrupt_trylock+0xd8><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
4c4cc: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c4d0: 2012 movel %a2@,%d0 <== NOT EXECUTED
4c4d2: 46c0 movew %d0,%sr <== NOT EXECUTED
4c4d4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c4d8: 4280 clrl %d0 <== NOT EXECUTED
4c4da: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c4de: 4e5e unlk %fp <== NOT EXECUTED
4c4e0: 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++;
4c4e2: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED
4c4e6: 2002 movel %d2,%d0 <== NOT EXECUTED
4c4e8: 5280 addql #1,%d0 <== NOT EXECUTED
4c4ea: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED
*/
{
Priority_Control ceiling;
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
4c4ee: 2228 004a movel %a0@(74),%d1 <== NOT EXECUTED
current = executing->current_priority;
4c4f2: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED
if ( current == ceiling ) {
4c4f6: b081 cmpl %d1,%d0 <== NOT EXECUTED
4c4f8: 6700 0082 beqw 4c57c <_CORE_mutex_Seize_interrupt_trylock+0x130><== NOT EXECUTED
_ISR_Enable( *level_p );
return 0;
}
if ( current > ceiling ) {
4c4fc: 6244 bhis 4c542 <_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;
4c4fe: 7206 moveq #6,%d1 <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4c500: 7001 moveq #1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4c502: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4c506: 2140 004e movel %d0,%a0@(78) <== NOT EXECUTED
the_mutex->nest_count = 0; /* undo locking above */
4c50a: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
executing->resource_count--; /* undo locking above */
4c50e: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c512: 2012 movel %a2@,%d0 <== NOT EXECUTED
4c514: 46c0 movew %d0,%sr <== NOT EXECUTED
4c516: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c51a: 4280 clrl %d0 <== NOT EXECUTED
4c51c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c520: 4e5e unlk %fp <== NOT EXECUTED
4c522: 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 ) {
4c524: 7201 moveq #1,%d1
4c526: b280 cmpl %d0,%d1
4c528: 6682 bnes 4c4ac <_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;
4c52a: 7002 moveq #2,%d0 <== NOT EXECUTED
4c52c: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( *level_p );
4c530: 2012 movel %a2@,%d0 <== NOT EXECUTED
4c532: 46c0 movew %d0,%sr <== NOT EXECUTED
4c534: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c538: 4280 clrl %d0 <== NOT EXECUTED
4c53a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c53e: 4e5e unlk %fp <== NOT EXECUTED
4c540: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4c542: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4c548: 5280 addql #1,%d0 <== NOT EXECUTED
4c54a: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return 0;
}
if ( current > ceiling ) {
_Thread_Disable_dispatch();
_ISR_Enable( *level_p );
4c550: 2012 movel %a2@,%d0 <== NOT EXECUTED
4c552: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_Change_priority(
4c554: 42a7 clrl %sp@- <== NOT EXECUTED
4c556: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED
4c55a: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED
4c55e: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED
the_mutex->holder,
the_mutex->Attributes.priority_ceiling,
false
);
_Thread_Enable_dispatch();
4c564: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
4c56a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4c56e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
4c572: 4280 clrl %d0 <== NOT EXECUTED
4c574: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c578: 4e5e unlk %fp <== NOT EXECUTED
4c57a: 4e75 rts <== NOT EXECUTED
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
current = executing->current_priority;
if ( current == ceiling ) {
_ISR_Enable( *level_p );
4c57c: 2012 movel %a2@,%d0 <== NOT EXECUTED
4c57e: 46c0 movew %d0,%sr <== NOT EXECUTED
4c580: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4c584: 4280 clrl %d0 <== NOT EXECUTED
4c586: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c58a: 4e5e unlk %fp <== NOT EXECUTED
...
000471a4 <_CORE_mutex_Surrender>:
#else
Objects_Id id __attribute__((unused)),
CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused))
#endif
)
{
471a4: 4e56 0000 linkw %fp,#0
471a8: 2f0a movel %a2,%sp@-
471aa: 246e 0008 moveal %fp@(8),%a2
Thread_Control *the_thread;
Thread_Control *holder;
holder = the_mutex->holder;
471ae: 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 ) {
471b2: 4a2a 0044 tstb %a2@(68)
471b6: 6712 beqs 471ca <_CORE_mutex_Surrender+0x26>
if ( !_Thread_Is_executing( holder ) )
471b8: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0
471be: 670a beqs 471ca <_CORE_mutex_Surrender+0x26> <== ALWAYS TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471c0: 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;
471c4: 7003 moveq #3,%d0 <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471c6: 4e5e unlk %fp <== NOT EXECUTED
471c8: 4e75 rts <== NOT EXECUTED
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
}
/* XXX already unlocked -- not right status */
if ( !the_mutex->nest_count )
471ca: 202a 0052 movel %a2@(82),%d0
471ce: 6758 beqs 47228 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
return CORE_MUTEX_STATUS_SUCCESSFUL;
the_mutex->nest_count--;
471d0: 5380 subql #1,%d0
471d2: 2540 0052 movel %d0,%a2@(82)
if ( the_mutex->nest_count != 0 ) {
471d6: 6650 bnes 47228 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471d8: 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 ) ||
471dc: 7202 moveq #2,%d1
471de: b280 cmpl %d0,%d1
471e0: 6750 beqs 47232 <_CORE_mutex_Surrender+0x8e>
471e2: 123c 0003 moveb #3,%d1
471e6: b280 cmpl %d0,%d1
471e8: 6748 beqs 47232 <_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;
471ea: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
471ee: 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 ) ) ) {
471f2: 2f0a movel %a2,%sp@-
471f4: 4eb9 0004 8ca0 jsr 48ca0 <_Thread_queue_Dequeue>
471fa: 588f addql #4,%sp
471fc: 2040 moveal %d0,%a0
471fe: 4a80 tstl %d0
47200: 6700 0090 beqw 47292 <_CORE_mutex_Surrender+0xee>
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
47204: 7201 moveq #1,%d1
} else
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
47206: 2568 0008 005e movel %a0@(8),%a2@(94)
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
4720c: 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;
47210: 2541 0052 movel %d1,%a2@(82)
switch ( the_mutex->Attributes.discipline ) {
47214: 123c 0002 moveb #2,%d1
} else
#endif
{
the_mutex->holder = the_thread;
47218: 2548 005a movel %a0,%a2@(90)
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
4721c: b280 cmpl %d0,%d1
4721e: 6764 beqs 47284 <_CORE_mutex_Surrender+0xe0> <== ALWAYS TAKEN
47220: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
47224: b280 cmpl %d0,%d1 <== NOT EXECUTED
47226: 6734 beqs 4725c <_CORE_mutex_Surrender+0xb8> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47228: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
4722c: 4280 clrl %d0 <== NOT EXECUTED
}
4722e: 4e5e unlk %fp <== NOT EXECUTED
47230: 4e75 rts <== NOT EXECUTED
_CORE_mutex_Pop_priority( the_mutex, holder );
if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL )
return pop_status;
holder->resource_count--;
47232: 2028 001c movel %a0@(28),%d0
47236: 5380 subql #1,%d0
47238: 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 &&
4723c: 66ac bnes 471ea <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
4723e: 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 &&
47242: b0a8 0014 cmpl %a0@(20),%d0
47246: 67a2 beqs 471ea <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
47248: 4878 0001 pea 1 <ADD>
4724c: 2f00 movel %d0,%sp@-
4724e: 2f08 movel %a0,%sp@-
47250: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority>
47256: 4fef 000c lea %sp@(12),%sp
4725a: 608e bras 471ea <_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 <
4725c: 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++;
47260: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
if (the_mutex->Attributes.priority_ceiling <
47264: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
47268: 64be bccs 47228 <_CORE_mutex_Surrender+0x84> <== NOT EXECUTED
the_thread->current_priority){
_Thread_Change_priority(
4726a: 42a7 clrl %sp@- <== NOT EXECUTED
4726c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4726e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47270: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47276: 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(
4727a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
4727e: 4280 clrl %d0 <== NOT EXECUTED
}
47280: 4e5e unlk %fp <== NOT EXECUTED
47282: 4e75 rts <== NOT EXECUTED
47284: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47288: 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++;
4728a: 52a8 001c addql #1,%a0@(28)
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4728e: 4e5e unlk %fp
47290: 4e75 rts
}
break;
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
47292: 7001 moveq #1,%d0
47294: 2540 004e movel %d0,%a2@(78)
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47298: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
4729c: 4200 clrb %d0
}
4729e: 4e5e unlk %fp
...
00050448 <_CORE_semaphore_Seize>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
50448: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
5044e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
50452: 2279 0006 53fe moveal 653fe <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
50458: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
5045c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
50460: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
50464: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
50468: 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;
5046c: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
50470: 40c1 movew %sr,%d1 <== NOT EXECUTED
50472: 8081 orl %d1,%d0 <== NOT EXECUTED
50474: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
50476: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
5047a: 6642 bnes 504be <_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 ) {
5047c: 4a02 tstb %d2 <== NOT EXECUTED
5047e: 6610 bnes 50490 <_CORE_semaphore_Seize+0x48> <== NOT EXECUTED
_ISR_Enable( level );
50480: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
50482: 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 );
}
50484: 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;
50488: 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 );
}
5048c: 4e5e unlk %fp <== NOT EXECUTED
5048e: 4e75 rts <== NOT EXECUTED
50490: 7001 moveq #1,%d0 <== NOT EXECUTED
50492: 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;
50496: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
5049a: 2344 0020 movel %d4,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
5049e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
504a0: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
504a4: 203c 0004 c99c movel #313756,%d0 <== NOT EXECUTED
504aa: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
504ae: 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 );
504b2: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
504b6: 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 );
504b8: 4ef9 0004 c5d8 jmp 4c5d8 <_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;
504be: 5380 subql #1,%d0 <== NOT EXECUTED
504c0: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
504c4: 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 );
}
504c6: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
504ca: 4e5e unlk %fp <== NOT EXECUTED
...
000472f8 <_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
)
{
472f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
472fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472fe: 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)) ) {
47302: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47304: 4eb9 0004 8ca0 jsr 48ca0 <_Thread_queue_Dequeue> <== NOT EXECUTED
4730a: 588f addql #4,%sp <== NOT EXECUTED
4730c: 4a80 tstl %d0 <== NOT EXECUTED
4730e: 670a beqs 4731a <_CORE_semaphore_Surrender+0x22> <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
47310: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47314: 4280 clrl %d0 <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
47316: 4e5e unlk %fp <== NOT EXECUTED
47318: 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 );
4731a: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
4731e: 40c1 movew %sr,%d1 <== NOT EXECUTED
47320: 8081 orl %d1,%d0 <== NOT EXECUTED
47322: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
47324: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
47328: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
4732c: 6412 bccs 47340 <_CORE_semaphore_Surrender+0x48> <== NOT EXECUTED
the_semaphore->count += 1;
4732e: 5280 addql #1,%d0 <== NOT EXECUTED
47330: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
47334: 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 );
47336: 46c1 movew %d1,%sr <== NOT EXECUTED
}
return status;
}
47338: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4733c: 4e5e unlk %fp <== NOT EXECUTED
4733e: 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;
47340: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
47342: 46c1 movew %d1,%sr <== NOT EXECUTED
47344: 60f2 bras 47338 <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED
...
00047db8 <_CORE_spinlock_Initialize>:
void _CORE_spinlock_Initialize(
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
47db8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47dbc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47dc0: 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;
}
47dc4: 4e5e unlk %fp <== NOT EXECUTED
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
the_spinlock->Attributes = *the_spinlock_attributes;
47dc6: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_spinlock->lock = 0;
47dc8: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->users = 0;
47dcc: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
the_spinlock->holder = 0;
47dd0: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
}
...
00047dd8 <_CORE_spinlock_Release>:
CORE_spinlock_Control *the_spinlock
)
{
ISR_Level level;
_ISR_Disable( level );
47dd8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
CORE_spinlock_Status _CORE_spinlock_Release(
CORE_spinlock_Control *the_spinlock
)
{
47dde: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47de2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
47de6: 40c1 movew %sr,%d1 <== NOT EXECUTED
47de8: 8081 orl %d1,%d0 <== NOT EXECUTED
47dea: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* It must locked before it can be unlocked.
*/
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47dec: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
47df0: 660a bnes 47dfc <_CORE_spinlock_Release+0x24> <== NOT EXECUTED
_ISR_Enable( level );
47df2: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_LOCKED;
47df4: 103c 0006 moveb #6,%d0 <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
the_spinlock->holder = 0;
_ISR_Enable( level );
return CORE_SPINLOCK_SUCCESSFUL;
}
47df8: 4e5e unlk %fp <== NOT EXECUTED
47dfa: 4e75 rts <== NOT EXECUTED
}
/*
* It must locked by the current thread before it can be unlocked.
*/
if ( the_spinlock->holder != _Thread_Executing->Object.id ) {
47dfc: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
47e00: 2279 0006 1292 moveal 61292 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
47e06: b0a9 0008 cmpl %a1@(8),%d0 <== NOT EXECUTED
47e0a: 6708 beqs 47e14 <_CORE_spinlock_Release+0x3c> <== NOT EXECUTED
_ISR_Enable( level );
47e0c: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_HOLDER;
47e0e: 7002 moveq #2,%d0 <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
the_spinlock->holder = 0;
_ISR_Enable( level );
return CORE_SPINLOCK_SUCCESSFUL;
}
47e10: 4e5e unlk %fp <== NOT EXECUTED
47e12: 4e75 rts <== NOT EXECUTED
}
/*
* Let it be unlocked.
*/
the_spinlock->users -= 1;
47e14: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
47e18: 5380 subql #1,%d0 <== NOT EXECUTED
47e1a: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
47e1e: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->holder = 0;
47e22: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
_ISR_Enable( level );
47e26: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
47e28: 4280 clrl %d0 <== NOT EXECUTED
}
47e2a: 4e5e unlk %fp <== NOT EXECUTED
...
00047e30 <_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 );
47e30: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_spinlock_Status _CORE_spinlock_Wait(
CORE_spinlock_Control *the_spinlock,
bool wait,
Watchdog_Interval timeout
)
{
47e36: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47e3a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
47e3e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
47e42: 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 );
47e46: 40c2 movew %sr,%d2 <== NOT EXECUTED
47e48: 8082 orl %d2,%d0 <== NOT EXECUTED
47e4a: 46c0 movew %d0,%sr <== NOT EXECUTED
47e4c: 2202 movel %d2,%d1 <== NOT EXECUTED
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
47e4e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
47e52: 7801 moveq #1,%d4 <== NOT EXECUTED
47e54: b880 cmpl %d0,%d4 <== NOT EXECUTED
47e56: 6762 beqs 47eba <_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;
47e58: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
47e5c: 5280 addql #1,%d0 <== NOT EXECUTED
47e5e: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
47e62: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
47e66: 6730 beqs 47e98 <_CORE_spinlock_Wait+0x68> <== NOT EXECUTED
}
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
47e68: 4a03 tstb %d3 <== NOT EXECUTED
47e6a: 676c beqs 47ed8 <_CORE_spinlock_Wait+0xa8> <== NOT EXECUTED
47e6c: 47f9 0004 9466 lea 49466 <_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 );
47e72: 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 );
47e78: 46c1 movew %d1,%sr <== NOT EXECUTED
/* An ISR could occur here */
_Thread_Enable_dispatch();
47e7a: 4e93 jsr %a3@ <== NOT EXECUTED
47e7c: 2039 0006 0e08 movel 60e08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47e82: 5280 addql #1,%d0 <== NOT EXECUTED
47e84: 23c0 0006 0e08 movel %d0,60e08 <_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 );
47e8a: 2002 movel %d2,%d0 <== NOT EXECUTED
47e8c: 40c1 movew %sr,%d1 <== NOT EXECUTED
47e8e: 8081 orl %d1,%d0 <== NOT EXECUTED
47e90: 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 ) {
47e92: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
47e96: 66e0 bnes 47e78 <_CORE_spinlock_Wait+0x48> <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_LOCKED;
the_spinlock->holder = _Thread_Executing->Object.id;
47e98: 2079 0006 1292 moveal 61292 <_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;
47e9e: 7001 moveq #1,%d0 <== NOT EXECUTED
47ea0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
the_spinlock->holder = _Thread_Executing->Object.id;
47ea4: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
47ea8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
_ISR_Enable( level );
47eac: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
47eae: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47eb0: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
47eb6: 4e5e unlk %fp <== NOT EXECUTED
47eb8: 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) ) {
47eba: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
47ebe: 2079 0006 1292 moveal 61292 <_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) &&
47ec4: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
47ec8: 668e bnes 47e58 <_CORE_spinlock_Wait+0x28> <== NOT EXECUTED
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
_ISR_Enable( level );
47eca: 46c2 movew %d2,%sr <== NOT EXECUTED
return CORE_SPINLOCK_HOLDER_RELOCKING;
47ecc: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47ece: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
47ed4: 4e5e unlk %fp <== NOT EXECUTED
47ed6: 4e75 rts <== NOT EXECUTED
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
the_spinlock->users -= 1;
47ed8: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
47edc: 5380 subql #1,%d0 <== NOT EXECUTED
47ede: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
_ISR_Enable( level );
47ee2: 46c2 movew %d2,%sr <== NOT EXECUTED
return CORE_SPINLOCK_UNAVAILABLE;
47ee4: 7005 moveq #5,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
}
}
47ee6: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
47eec: 4e5e unlk %fp <== NOT EXECUTED
000475d4 <_Chain_Append_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
475d4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Append_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
475da: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
475de: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
475e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
475e4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
475e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
475ea: 40c2 movew %sr,%d2 <== NOT EXECUTED
475ec: 8082 orl %d2,%d0 <== NOT EXECUTED
475ee: 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 );
475f0: 2209 movel %a1,%d1 <== NOT EXECUTED
475f2: 5881 addql #4,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
475f4: b291 cmpl %a1@,%d1 <== NOT EXECUTED
475f6: 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;
475f8: 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 )
475fc: 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;
475fe: 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;
47602: 2081 movel %d1,%a0@ <== NOT EXECUTED
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
47604: 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;
47608: 2488 movel %a0,%a2@ <== NOT EXECUTED
was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
4760a: 46c2 movew %d2,%sr <== NOT EXECUTED
return was_empty;
}
4760c: 241f movel %sp@+,%d2 <== NOT EXECUTED
4760e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
47610: 4e5e unlk %fp <== NOT EXECUTED
00047674 <_Chain_Get_with_empty_check>:
)
{
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
47674: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Get_with_empty_check(
Chain_Control *chain,
Chain_Node **node
)
{
4767a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4767e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47682: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47684: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
47688: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
4768a: 40c1 movew %sr,%d1 <== NOT EXECUTED
4768c: 8081 orl %d1,%d0 <== NOT EXECUTED
4768e: 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 );
47690: 2008 movel %a0,%d0 <== NOT EXECUTED
47692: 5880 addql #4,%d0 <== NOT EXECUTED
Chain_Node *old_first = head->next;
47694: 2250 moveal %a0@,%a1 <== NOT EXECUTED
if ( old_first != tail ) {
47696: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
47698: 671a beqs 476b4 <_Chain_Get_with_empty_check+0x40><== NOT EXECUTED
Chain_Node *new_first = old_first->next;
4769a: 2451 moveal %a1@,%a2 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
4769c: b5c0 cmpal %d0,%a2 <== NOT EXECUTED
4769e: 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;
476a0: 208a movel %a2,%a0@ <== NOT EXECUTED
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
476a2: 4480 negl %d0 <== NOT EXECUTED
if ( old_first != tail ) {
Chain_Node *new_first = old_first->next;
head->next = new_first;
new_first->previous = head;
476a4: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
*the_node = old_first;
476a8: 2689 movel %a1,%a3@ <== NOT EXECUTED
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
476aa: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
476ac: 245f moveal %sp@+,%a2 <== NOT EXECUTED
476ae: 265f moveal %sp@+,%a3 <== NOT EXECUTED
476b0: 4e5e unlk %fp <== NOT EXECUTED
476b2: 4e75 rts <== NOT EXECUTED
is_empty_now = new_first == tail;
} else
*the_node = NULL;
476b4: 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;
476b6: 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 );
476b8: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
476ba: 245f moveal %sp@+,%a2 <== NOT EXECUTED
476bc: 265f moveal %sp@+,%a3 <== NOT EXECUTED
476be: 4e5e unlk %fp <== NOT EXECUTED
...
0004c3d8 <_Chain_Initialize>:
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4c3d8: 4e56 ffec linkw %fp,#-20
4c3dc: 202e 0010 movel %fp@(16),%d0
4c3e0: 48d7 043c moveml %d2-%d5/%a2,%sp@
4c3e4: 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 );
4c3e8: 280a movel %a2,%d4
4c3ea: 5884 addql #4,%d4
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4c3ec: 262e 000c movel %fp@(12),%d3
4c3f0: 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;
4c3f4: 42aa 0004 clrl %a2@(4)
while ( count-- ) {
4c3f8: 4a80 tstl %d0
4c3fa: 6740 beqs 4c43c <_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;
4c3fc: 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;
4c3fe: 224a moveal %a2,%a1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c400: 5380 subql #1,%d0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c402: 2208 movel %a0,%d1
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c404: 2a00 movel %d0,%d5
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c406: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4c408: 2288 movel %a0,%a1@
next->previous = current;
4c40a: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c40e: 4a80 tstl %d0
4c410: 6714 beqs 4c426 <_Chain_Initialize+0x4e>
4c412: 2248 moveal %a0,%a1
current->next = next;
next->previous = current;
current = next;
next = (Chain_Node *)
4c414: 2041 moveal %d1,%a0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c416: 2208 movel %a0,%d1
4c418: 5380 subql #1,%d0
4c41a: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4c41c: 2288 movel %a0,%a1@
next->previous = current;
4c41e: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c422: 4a80 tstl %d0
4c424: 66ec bnes 4c412 <_Chain_Initialize+0x3a>
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4c426: 4c05 2800 mulsl %d5,%d2
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4c42a: 2043 moveal %d3,%a0
4c42c: d1c2 addal %d2,%a0
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4c42e: 2548 0008 movel %a0,%a2@(8)
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4c432: 2084 movel %d4,%a0@
tail->previous = current;
}
4c434: 4cd7 043c moveml %sp@,%d2-%d5/%a2
4c438: 4e5e unlk %fp
4c43a: 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;
4c43c: 204a moveal %a2,%a0 <== NOT EXECUTED
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4c43e: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4c442: 2084 movel %d4,%a0@ <== NOT EXECUTED
tail->previous = current;
}
4c444: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
4c448: 4e5e unlk %fp <== NOT EXECUTED
00047730 <_Chain_Prepend_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
47730: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Prepend_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
47736: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4773a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4773e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47740: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
47744: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
47746: 40c1 movew %sr,%d1 <== NOT EXECUTED
47748: 8081 orl %d1,%d0 <== NOT EXECUTED
4774a: 46c0 movew %d0,%sr <== NOT EXECUTED
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
return was_empty;
}
4774c: 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;
4774e: 224b moveal %a3,%a1 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
47750: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
47754: 22c8 movel %a0,%a1@+ <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
47756: 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;
4775a: 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 );
4775c: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
4775e: b3ca cmpal %a2,%a1 <== NOT EXECUTED
47760: 57c0 seq %d0 <== NOT EXECUTED
return was_empty;
}
47762: 245f moveal %sp@+,%a2 <== NOT EXECUTED
47764: 4480 negl %d0 <== NOT EXECUTED
47766: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47768: 4e5e unlk %fp <== NOT EXECUTED
00045e04 <_Event_Seize>:
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
_ISR_Disable( level );
45e04: 203c 0000 0700 movel #1792,%d0
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45e0a: 4e56 ffec linkw %fp,#-20
45e0e: 222e 0008 movel %fp@(8),%d1
45e12: 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;
45e16: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45e1c: 242e 000c movel %fp@(12),%d2
45e20: 2a2e 0010 movel %fp@(16),%d5
45e24: 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;
45e28: 42aa 0034 clrl %a2@(52)
api = executing->API_Extensions[ THREAD_API_RTEMS ];
45e2c: 206a 00fe moveal %a2@(254),%a0
_ISR_Disable( level );
45e30: 40c4 movew %sr,%d4
45e32: 8084 orl %d4,%d0
45e34: 46c0 movew %d0,%sr
pending_events = api->pending_events;
45e36: 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 );
45e38: 2001 movel %d1,%d0
45e3a: c083 andl %d3,%d0
seized_events = _Event_sets_Get( pending_events, event_in );
if ( !_Event_sets_Is_empty( seized_events ) &&
45e3c: 670c beqs 45e4a <_Event_Seize+0x46>
45e3e: b081 cmpl %d1,%d0
45e40: 6700 0084 beqw 45ec6 <_Event_Seize+0xc2>
(seized_events == event_in || _Options_Is_any( option_set )) ) {
45e44: 0802 0001 btst #1,%d2 <== NOT EXECUTED
45e48: 667c bnes 45ec6 <_Event_Seize+0xc2> <== NOT EXECUTED
_ISR_Enable( level );
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
45e4a: 0802 0000 btst #0,%d2
45e4e: 6662 bnes 45eb2 <_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;
45e50: 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;
45e54: 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;
45e56: 2541 0024 movel %d1,%a2@(36)
executing->Wait.return_argument = event_out;
45e5a: 2549 0028 movel %a1,%a2@(40)
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45e5e: 23c2 0006 04d4 movel %d2,604d4 <_Event_Sync_state>
_ISR_Enable( level );
45e64: 46c4 movew %d4,%sr
if ( ticks ) {
45e66: 4a85 tstl %d5
45e68: 6672 bnes 45edc <_Event_Seize+0xd8>
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
45e6a: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
45e6e: 2f0a movel %a2,%sp@-
45e70: 4eb9 0004 923c jsr 4923c <_Thread_Set_state>
_ISR_Disable( level );
45e76: 203c 0000 0700 movel #1792,%d0
45e7c: 40c1 movew %sr,%d1
45e7e: 8081 orl %d1,%d0
45e80: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45e82: 7401 moveq #1,%d2
45e84: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
45e86: 2039 0006 04d4 movel 604d4 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45e8c: 42b9 0006 04d4 clrl 604d4 <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45e92: b480 cmpl %d0,%d2
45e94: 6700 00a4 beqw 45f3a <_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 );
45e98: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
45e9c: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
}
45ea0: 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 );
45ea6: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45eaa: 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 );
45eac: 4ef9 0004 83e0 jmp 483e0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
_ISR_Enable( level );
45eb2: 46c4 movew %d4,%sr <== NOT EXECUTED
executing->Wait.return_code = RTEMS_UNSATISFIED;
45eb4: 720d moveq #13,%d1 <== NOT EXECUTED
45eb6: 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 );
}
45eba: 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;
45ec0: 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 );
}
45ec2: 4e5e unlk %fp <== NOT EXECUTED
45ec4: 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) );
45ec6: 2200 movel %d0,%d1
45ec8: 4681 notl %d1
45eca: c283 andl %d3,%d1
45ecc: 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 );
45ece: 46c4 movew %d4,%sr
*event_out = seized_events;
45ed0: 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 );
}
45ed2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
45ed8: 4e5e unlk %fp
45eda: 4e75 rts
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
_ISR_Enable( level );
if ( ticks ) {
_Watchdog_Initialize(
45edc: 202a 0008 movel %a2@(8),%d0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45ee0: 223c 0004 60cc movel #286924,%d1
the_watchdog->id = id;
45ee6: 2540 0068 movel %d0,%a2@(104)
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45eea: 2541 0064 movel %d1,%a2@(100)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
45eee: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
45ef2: 42aa 006c clrl %a2@(108)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45ef6: 2545 0054 movel %d5,%a2@(84)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
45efa: 486a 0048 pea %a2@(72)
45efe: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain>
45f04: 4eb9 0004 987c jsr 4987c <_Watchdog_Insert>
45f0a: 508f addql #8,%sp
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
45f0c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
45f10: 2f0a movel %a2,%sp@-
45f12: 4eb9 0004 923c jsr 4923c <_Thread_Set_state>
_ISR_Disable( level );
45f18: 203c 0000 0700 movel #1792,%d0
45f1e: 40c1 movew %sr,%d1
45f20: 8081 orl %d1,%d0
45f22: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45f24: 7401 moveq #1,%d2
45f26: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
45f28: 2039 0006 04d4 movel 604d4 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45f2e: 42b9 0006 04d4 clrl 604d4 <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45f34: b480 cmpl %d0,%d2
45f36: 6600 ff60 bnew 45e98 <_Event_Seize+0x94>
_ISR_Enable( level );
45f3a: 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 );
}
45f3c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
45f42: 4e5e unlk %fp
...
00045fa4 <_Event_Surrender>:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
option_set = (rtems_option) the_thread->Wait.option;
_ISR_Disable( level );
45fa4: 203c 0000 0700 movel #1792,%d0
*/
void _Event_Surrender(
Thread_Control *the_thread
)
{
45faa: 4e56 ffec linkw %fp,#-20
45fae: 48d7 043c moveml %d2-%d5/%a2,%sp@
45fb2: 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 ];
45fb6: 206a 00fe moveal %a2@(254),%a0
option_set = (rtems_option) the_thread->Wait.option;
45fba: 282a 0030 movel %a2@(48),%d4
_ISR_Disable( level );
45fbe: 40c3 movew %sr,%d3
45fc0: 8083 orl %d3,%d0
45fc2: 46c0 movew %d0,%sr
pending_events = api->pending_events;
event_condition = (rtems_event_set) the_thread->Wait.count;
45fc4: 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 );
45fc8: 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;
45fca: 2410 movel %a0@,%d2
45fcc: 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 ) ) {
45fce: 6776 beqs 46046 <_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() &&
45fd0: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8>
45fd6: 670a beqs 45fe2 <_Event_Surrender+0x3e> <== ALWAYS TAKEN
45fd8: b5f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
45fde: 6700 00a0 beqw 46080 <_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);
45fe2: 2a2a 0010 movel %a2@(16),%d5
45fe6: 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 ) ) {
45fec: 674c beqs 4603a <_Event_Surrender+0x96> <== NEVER TAKEN
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
45fee: b081 cmpl %d1,%d0
45ff0: 6706 beqs 45ff8 <_Event_Surrender+0x54> <== ALWAYS TAKEN
45ff2: 0804 0001 btst #1,%d4 <== NOT EXECUTED
45ff6: 6742 beqs 4603a <_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) );
45ff8: 2200 movel %d0,%d1
45ffa: 4681 notl %d1
45ffc: c282 andl %d2,%d1
45ffe: 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;
46000: 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;
46004: 42aa 0024 clrl %a2@(36)
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
46008: 2080 movel %d0,%a0@
_ISR_Flash( level );
4600a: 203c 0000 0700 movel #1792,%d0
46010: 46c3 movew %d3,%sr
46012: 8083 orl %d3,%d0
46014: 46c0 movew %d0,%sr
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
46016: 7a02 moveq #2,%d5
46018: baaa 0050 cmpl %a2@(80),%d5
4601c: 6734 beqs 46052 <_Event_Surrender+0xae>
_ISR_Enable( level );
4601e: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
46020: 2f3c 1003 fff8 movel #268697592,%sp@-
46026: 2f0a movel %a2,%sp@-
46028: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state>
4602e: 508f addql #8,%sp
}
return;
}
}
_ISR_Enable( level );
}
46030: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
46036: 4e5e unlk %fp
46038: 4e75 rts
_Thread_Unblock( the_thread );
}
return;
}
}
_ISR_Enable( level );
4603a: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4603c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
46042: 4e5e unlk %fp <== NOT EXECUTED
46044: 4e75 rts <== NOT EXECUTED
/*
* No events were seized in this operation
*/
if ( _Event_sets_Is_empty( seized_events ) ) {
_ISR_Enable( level );
46046: 46c3 movew %d3,%sr
}
return;
}
}
_ISR_Enable( level );
}
46048: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
4604e: 4e5e unlk %fp
46050: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
46052: 7003 moveq #3,%d0
46054: 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 );
46058: 46c3 movew %d3,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
4605a: 486a 0048 pea %a2@(72)
4605e: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove>
46064: 2f3c 1003 fff8 movel #268697592,%sp@-
4606a: 2f0a movel %a2,%sp@-
4606c: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state>
46072: 4fef 000c lea %sp@(12),%sp
}
return;
}
}
_ISR_Enable( level );
}
46076: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
4607c: 4e5e unlk %fp
4607e: 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) ||
46080: 2279 0006 04d4 moveal 604d4 <_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 ) &&
46086: 7a02 moveq #2,%d5 <== NOT EXECUTED
46088: ba89 cmpl %a1,%d5 <== NOT EXECUTED
4608a: 6710 beqs 4609c <_Event_Surrender+0xf8> <== NOT EXECUTED
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
4608c: 2279 0006 04d4 moveal 604d4 <_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) ||
46092: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED
46096: ba89 cmpl %a1,%d5 <== NOT EXECUTED
46098: 6600 ff48 bnew 45fe2 <_Event_Surrender+0x3e> <== NOT EXECUTED
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
4609c: b081 cmpl %d1,%d0 <== NOT EXECUTED
4609e: 6706 beqs 460a6 <_Event_Surrender+0x102> <== NOT EXECUTED
460a0: 0804 0001 btst #1,%d4 <== NOT EXECUTED
460a4: 671a beqs 460c0 <_Event_Surrender+0x11c> <== NOT EXECUTED
460a6: 2200 movel %d0,%d1 <== NOT EXECUTED
460a8: 4681 notl %d1 <== NOT EXECUTED
460aa: c282 andl %d2,%d1 <== NOT EXECUTED
460ac: 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;
460ae: 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;
460b2: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
460b6: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
460b8: 7003 moveq #3,%d0 <== NOT EXECUTED
460ba: 23c0 0006 04d4 movel %d0,604d4 <_Event_Sync_state> <== NOT EXECUTED
}
_ISR_Enable( level );
460c0: 46c3 movew %d3,%sr <== NOT EXECUTED
}
return;
}
}
_ISR_Enable( level );
}
460c2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
460c8: 4e5e unlk %fp <== NOT EXECUTED
000460cc <_Event_Timeout>:
void _Event_Timeout(
Objects_Id id,
void *ignored
)
{
460cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
460d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
460d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
ISR_Level level;
the_thread = _Thread_Get( id, &location );
460d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
460d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
460dc: 4eb9 0004 8964 jsr 48964 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
460e2: 508f addql #8,%sp <== NOT EXECUTED
460e4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
460e8: 6642 bnes 4612c <_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 );
460ea: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
460f0: 40c2 movew %sr,%d2 <== NOT EXECUTED
460f2: 8282 orl %d2,%d1 <== NOT EXECUTED
460f4: 46c1 movew %d1,%sr <== NOT EXECUTED
_ISR_Enable( level );
return;
}
#endif
the_thread->Wait.count = 0;
460f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
460f8: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED
if ( _Thread_Is_executing( the_thread ) ) {
460fc: b0b9 0006 0102 cmpl 60102 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
46102: 6734 beqs 46138 <_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;
46104: 7606 moveq #6,%d3 <== NOT EXECUTED
46106: 2040 moveal %d0,%a0 <== NOT EXECUTED
46108: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED
_ISR_Enable( level );
4610c: 46c2 movew %d2,%sr <== NOT EXECUTED
4610e: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
46114: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46116: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
4611c: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4611e: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46124: 5380 subql #1,%d0 <== NOT EXECUTED
46126: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
4612c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
46130: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
46134: 4e5e unlk %fp <== NOT EXECUTED
46136: 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 )
46138: 2239 0006 04d4 movel 604d4 <_Event_Sync_state>,%d1 <== NOT EXECUTED
4613e: 7601 moveq #1,%d3 <== NOT EXECUTED
46140: b681 cmpl %d1,%d3 <== NOT EXECUTED
46142: 66c0 bnes 46104 <_Event_Timeout+0x38> <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
46144: 7606 moveq #6,%d3 <== NOT EXECUTED
46146: 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;
46148: 7202 moveq #2,%d1 <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
4614a: 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;
4614e: 23c1 0006 04d4 movel %d1,604d4 <_Event_Sync_state> <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
_ISR_Enable( level );
46154: 46c2 movew %d2,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
46156: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4615c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4615e: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
46164: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
46166: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4616c: 5380 subql #1,%d0 <== NOT EXECUTED
4616e: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
46174: 60b6 bras 4612c <_Event_Timeout+0x60> <== NOT EXECUTED
...
0004c5f4 <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c5f4: 4e56 ffcc linkw %fp,#-52
4c5f8: 226e 000c moveal %fp@(12),%a1
4c5fc: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4c600: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4c604: 2e09 movel %a1,%d7
4c606: 5887 addql #4,%d7
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4c608: 202a 0010 movel %a2@(16),%d0
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4c60c: 222e 0010 movel %fp@(16),%d1
4c610: 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;
4c614: 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 ) {
4c618: be89 cmpl %a1,%d7
4c61a: 6500 014e bcsw 4c76a <_Heap_Allocate_aligned_with_boundary+0x176>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4c61e: 4a84 tstl %d4
4c620: 6600 0144 bnew 4c766 <_Heap_Allocate_aligned_with_boundary+0x172>
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c624: 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 ) {
4c628: b1ca cmpal %a2,%a0
4c62a: 6700 013e beqw 4c76a <_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
4c62e: 242e fffc movel %fp@(-4),%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c632: 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
4c634: 5e82 addql #7,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c636: 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 ) {
4c638: 7601 moveq #1,%d3
4c63a: 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
4c63c: 2d42 fff8 movel %d2,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4c640: 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 ) {
4c644: 2028 0004 movel %a0@(4),%d0
4c648: b08b cmpl %a3,%d0
4c64a: 630e blss 4c65a <_Heap_Allocate_aligned_with_boundary+0x66>
if ( alignment == 0 ) {
4c64c: 4a81 tstl %d1
4c64e: 661c bnes 4c66c <_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;
4c650: 2408 movel %a0,%d2
4c652: 5082 addql #8,%d2
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c654: 4a82 tstl %d2
4c656: 6600 00de bnew 4c736 <_Heap_Allocate_aligned_with_boundary+0x142>
break;
}
block = block->next;
4c65a: 2003 movel %d3,%d0
4c65c: 5280 addql #1,%d0
4c65e: 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 ) {
4c662: b1ca cmpal %a2,%a0
4c664: 6700 0110 beqw 4c776 <_Heap_Allocate_aligned_with_boundary+0x182>
4c668: 2600 movel %d0,%d3 <== NOT EXECUTED
4c66a: 60d8 bras 4c644 <_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;
4c66c: 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;
4c66e: 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;
4c672: c087 andl %d7,%d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c674: 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;
4c678: 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;
4c67a: 2a2e fff8 movel %fp@(-8),%d5
4c67e: 9a8c subl %a4,%d5
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4c680: 242e fff4 movel %fp@(-12),%d2
4c684: d480 addl %d0,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c686: 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
4c688: d085 addl %d5,%d0
4c68a: 4c41 6005 remul %d1,%d5,%d6
4c68e: 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 ) {
4c690: b480 cmpl %d0,%d2
4c692: 630a blss 4c69e <_Heap_Allocate_aligned_with_boundary+0xaa><== ALWAYS TAKEN
4c694: 2a00 movel %d0,%d5 <== NOT EXECUTED
4c696: 4c41 5002 remul %d1,%d2,%d5 <== NOT EXECUTED
4c69a: 9082 subl %d2,%d0 <== NOT EXECUTED
4c69c: 2400 movel %d0,%d2 <== NOT EXECUTED
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4c69e: 4a84 tstl %d4
4c6a0: 676a beqs 4c70c <_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;
4c6a2: 2002 movel %d2,%d0 <== NOT EXECUTED
4c6a4: d089 addl %a1,%d0 <== NOT EXECUTED
4c6a6: 2c00 movel %d0,%d6 <== NOT EXECUTED
4c6a8: 4c44 6005 remul %d4,%d5,%d6 <== NOT EXECUTED
4c6ac: 2c00 movel %d0,%d6 <== NOT EXECUTED
4c6ae: 9c85 subl %d5,%d6 <== NOT EXECUTED
4c6b0: 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 ) {
4c6b2: bc82 cmpl %d2,%d6 <== NOT EXECUTED
4c6b4: 6356 blss 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
4c6b6: bc80 cmpl %d0,%d6 <== NOT EXECUTED
4c6b8: 6452 bccs 4c70c <_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;
4c6ba: 2c0d movel %a5,%d6 <== NOT EXECUTED
4c6bc: 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 ) {
4c6be: ba86 cmpl %d6,%d5 <== NOT EXECUTED
4c6c0: 6598 bcss 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c6c2: 2405 movel %d5,%d2 <== NOT EXECUTED
4c6c4: 9489 subl %a1,%d2 <== NOT EXECUTED
4c6c6: 2a02 movel %d2,%d5 <== NOT EXECUTED
4c6c8: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED
4c6cc: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c6ce: 2002 movel %d2,%d0 <== NOT EXECUTED
4c6d0: d089 addl %a1,%d0 <== NOT EXECUTED
4c6d2: 2e00 movel %d0,%d7 <== NOT EXECUTED
4c6d4: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED
4c6d8: 2e00 movel %d0,%d7 <== NOT EXECUTED
4c6da: 9e85 subl %d5,%d7 <== NOT EXECUTED
4c6dc: 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 ) {
4c6de: be82 cmpl %d2,%d7 <== NOT EXECUTED
4c6e0: 632a blss 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
4c6e2: be80 cmpl %d0,%d7 <== NOT EXECUTED
4c6e4: 6426 bccs 4c70c <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
if ( boundary_line < boundary_floor ) {
4c6e6: ba86 cmpl %d6,%d5 <== NOT EXECUTED
4c6e8: 6500 ff70 bcsw 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4c6ec: 2405 movel %d5,%d2 <== NOT EXECUTED
4c6ee: 9489 subl %a1,%d2 <== NOT EXECUTED
4c6f0: 2a02 movel %d2,%d5 <== NOT EXECUTED
4c6f2: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED
4c6f6: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4c6f8: 2002 movel %d2,%d0 <== NOT EXECUTED
4c6fa: d089 addl %a1,%d0 <== NOT EXECUTED
4c6fc: 2e00 movel %d0,%d7 <== NOT EXECUTED
4c6fe: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED
4c702: 2e00 movel %d0,%d7 <== NOT EXECUTED
4c704: 9e85 subl %d5,%d7 <== NOT EXECUTED
4c706: 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 ) {
4c708: be82 cmpl %d2,%d7 <== NOT EXECUTED
4c70a: 62d6 bhis 4c6e2 <_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 ) {
4c70c: b48d cmpl %a5,%d2
4c70e: 6500 ff4a bcsw 4c65a <_Heap_Allocate_aligned_with_boundary+0x66>
4c712: 2e2e fffc movel %fp@(-4),%d7
4c716: 2c02 movel %d2,%d6
4c718: 70f8 moveq #-8,%d0
4c71a: 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);
4c71c: d082 addl %d2,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c71e: 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;
4c722: 9085 subl %d5,%d0
if ( free_size >= min_block_size || free_size == 0 ) {
4c724: b08c cmpl %a4,%d0
4c726: 6400 ff2c bccw 4c654 <_Heap_Allocate_aligned_with_boundary+0x60>
4c72a: 4a80 tstl %d0 <== NOT EXECUTED
4c72c: 6600 ff2c bnew 4c65a <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4c730: 4a82 tstl %d2 <== NOT EXECUTED
4c732: 6700 ff26 beqw 4c65a <_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 );
4c736: 2f09 movel %a1,%sp@-
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4c738: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4c73c: d7aa 004c addl %d3,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4c740: 2f02 movel %d2,%sp@-
4c742: 2f08 movel %a0,%sp@-
4c744: 2f0a movel %a2,%sp@-
4c746: 4eb9 0004 76fa jsr 476fa <_Heap_Block_allocate>
4c74c: 4fef 0010 lea %sp@(16),%sp
4c750: 2002 movel %d2,%d0
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4c752: b6aa 0044 cmpl %a2@(68),%d3
4c756: 6304 blss 4c75c <_Heap_Allocate_aligned_with_boundary+0x168>
stats->max_search = search_count;
4c758: 2543 0044 movel %d3,%a2@(68)
}
return (void *) alloc_begin;
}
4c75c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
4c762: 4e5e unlk %fp
4c764: 4e75 rts
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
4c766: b889 cmpl %a1,%d4 <== NOT EXECUTED
4c768: 6410 bccs 4c77a <_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 ) {
4c76a: 4280 clrl %d0 <== NOT EXECUTED
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4c76c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4c772: 4e5e unlk %fp <== NOT EXECUTED
4c774: 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 ) {
4c776: 4280 clrl %d0
4c778: 60d8 bras 4c752 <_Heap_Allocate_aligned_with_boundary+0x15e>
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
return NULL;
}
if ( alignment == 0 ) {
4c77a: 4a81 tstl %d1 <== NOT EXECUTED
4c77c: 6600 fea6 bnew 4c624 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
alignment = page_size;
4c780: 2200 movel %d0,%d1 <== NOT EXECUTED
4c782: 6000 fea0 braw 4c624 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
...
000476fa <_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;
476fa: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
476fc: 4e56 ffe0 linkw %fp,#-32
47700: 206e 000c moveal %fp@(12),%a0
47704: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47708: 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;
4770c: 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;
4770e: c082 andl %d2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47710: 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);
47714: 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;
47718: 2641 moveal %d1,%a3
4771a: 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;
4771c: 2a0b movel %a3,%d5
4771e: 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;
47720: c8ac 0004 andl %a4@(4),%d4
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47724: 246e 0008 moveal %fp@(8),%a2
47728: 262e 0014 movel %fp@(20),%d3
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
4772c: 4a84 tstl %d4
4772e: 6600 0090 bnew 477c0 <_Heap_Block_allocate+0xc6>
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47732: 2828 0008 movel %a0@(8),%d4
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
next->prev = prev;
47736: 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;
47738: 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;
4773c: 2344 0008 movel %d4,%a1@(8)
next->prev = prev;
47740: 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 );
47744: 91aa 0030 subl %d0,%a2@(48)
free_list_anchor = block->prev;
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
47748: 53aa 0038 subql #1,%a2@(56)
++stats->used_blocks;
4774c: 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 ) {
47750: 202a 0010 movel %a2@(16),%d0
47754: b085 cmpl %d5,%d0
47756: 6272 bhis 477ca <_Heap_Block_allocate+0xd0>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
47758: 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);
4775c: 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;
4775e: 200b movel %a3,%d0
47760: 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;
47762: 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;
47766: 99cb subal %a3,%a4
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
if ( _Heap_Is_prev_used( block ) ) {
47768: 0802 0000 btst #0,%d2
4776c: 6774 beqs 477e2 <_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;
4776e: 2a69 0008 moveal %a1@(8),%a5
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47772: 7401 moveq #1,%d2
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
47774: 2208 movel %a0,%d1
new_block->next = next;
47776: 214d 0008 movel %a5,%a0@(8)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4777a: 8480 orl %d0,%d2
new_block->prev = block_before;
4777c: 2149 000c movel %a1,%a0@(12)
block_before->next = new_block;
47780: 2348 0008 movel %a0,%a1@(8)
next->prev = new_block;
47784: 2b48 000c movel %a0,%a5@(12)
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
47788: 52aa 0038 addql #1,%a2@(56)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4778c: 2142 0004 movel %d2,%a0@(4)
new_block->prev_size = block_size;
47790: 2680 movel %d0,%a3@
new_block->size_and_flag = new_block_size;
47792: 274c 0004 movel %a4,%a3@(4)
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
47796: 2f03 movel %d3,%sp@-
47798: 2f01 movel %d1,%sp@-
4779a: 2f0b movel %a3,%sp@-
4779c: 2f0a movel %a2,%sp@-
4779e: 4eba fcb0 jsr %pc@(47450 <_Heap_Block_split>)
477a2: 4fef 0010 lea %sp@(16),%sp
alloc_size
);
}
/* Statistics */
if ( stats->min_free_size > stats->free_size ) {
477a6: 202a 0030 movel %a2@(48),%d0
477aa: b0aa 0034 cmpl %a2@(52),%d0
477ae: 6404 bccs 477b4 <_Heap_Block_allocate+0xba> <== NEVER TAKEN
stats->min_free_size = stats->free_size;
477b0: 2540 0034 movel %d0,%a2@(52)
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
477b4: 200b movel %a3,%d0
477b6: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
477bc: 4e5e unlk %fp
477be: 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 ) {
477c0: 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 );
477c4: 224a moveal %a2,%a1 <== NOT EXECUTED
}
if ( alloc_area_offset < heap->page_size ) {
477c6: b085 cmpl %d5,%d0 <== NOT EXECUTED
477c8: 638e blss 47758 <_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 );
477ca: 2645 moveal %d5,%a3
477cc: 4873 3800 pea %a3@(00000000,%d3:l)
477d0: 2648 moveal %a0,%a3
477d2: 2f09 movel %a1,%sp@-
477d4: 2f08 movel %a0,%sp@-
477d6: 2f0a movel %a2,%sp@-
477d8: 4eba fc76 jsr %pc@(47450 <_Heap_Block_split>)
477dc: 4fef 0010 lea %sp@(16),%sp
477e0: 60c4 bras 477a6 <_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);
477e2: 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;
477e4: 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;
477e6: 2209 movel %a1,%d1 <== NOT EXECUTED
477e8: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
477ec: d082 addl %d2,%d0 <== NOT EXECUTED
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477ee: 7401 moveq #1,%d2 <== NOT EXECUTED
477f0: 8480 orl %d0,%d2 <== NOT EXECUTED
new_block->prev_size = block_size;
477f2: 2680 movel %d0,%a3@ <== NOT EXECUTED
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477f4: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
477f8: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
477fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477fe: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47800: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47802: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47804: 4eba fc4a jsr %pc@(47450 <_Heap_Block_split>) <== NOT EXECUTED
47808: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4780c: 6098 bras 477a6 <_Heap_Block_allocate+0xac> <== NOT EXECUTED
...
00047450 <_Heap_Block_split>:
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
47450: 4e56 ffe4 linkw %fp,#-28
47454: 226e 0008 moveal %fp@(8),%a1
47458: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
4745c: 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;
47460: 76fe moveq #-2,%d3
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47462: 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;
47466: 2669 0014 moveal %a1@(20),%a3
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
4746a: 220b movel %a3,%d1
4746c: 5181 subql #8,%d1
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
4746e: 286e 0010 moveal %fp@(16),%a4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
47472: 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;
47476: 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;
4747a: 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;
4747c: b280 cmpl %d0,%d1
4747e: 6302 blss 47482 <_Heap_Block_split+0x32>
47480: 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 =
47482: 5080 addql #8,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
47484: 2a00 movel %d0,%d5
47486: 4c42 5001 remul %d2,%d1,%d5
if ( remainder != 0 ) {
4748a: 4a81 tstl %d1
4748c: 6766 beqs 474f4 <_Heap_Block_split+0xa4>
return value - remainder + alignment;
4748e: d480 addl %d0,%d2
47490: 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;
47492: 2203 movel %d3,%d1
47494: 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);
47496: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
4749a: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
4749c: 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 ) {
4749e: b7c1 cmpal %d1,%a3
474a0: 6264 bhis 47506 <_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;
474a2: 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);
474a4: 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;
474a8: 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;
474aa: 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;
474ac: 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;
474ae: 70fe moveq #-2,%d0
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
474b0: 8484 orl %d4,%d2
474b2: 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;
474b6: 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;
474ba: 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;
474be: c2b0 0804 andl %a0@(00000004,%d0:l),%d1
if ( _Heap_Is_used( next_block ) ) {
474c2: 6750 beqs 47514 <_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;
474c4: 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;
474c8: 7001 moveq #1,%d0
new_block->next = next;
new_block->prev = block_before;
474ca: 274c 000c movel %a4,%a3@(12)
474ce: 8083 orl %d3,%d0
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
474d0: 274a 0008 movel %a2,%a3@(8)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
474d4: 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;
474d8: 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;
474dc: 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;
474e0: 2740 0004 movel %d0,%a3@(4)
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
474e4: 70fe moveq #-2,%d0
474e6: 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;
474ea: 2083 movel %d3,%a0@
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
}
}
474ec: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4
474f0: 4e5e unlk %fp
474f2: 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;
474f4: 2203 movel %d3,%d1
474f6: 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);
474f8: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
474fc: 2400 movel %d0,%d2
474fe: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
47500: 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 ) {
47502: b7c1 cmpal %d1,%a3
47504: 639c blss 474a2 <_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;
47506: 7001 moveq #1,%d0
}
}
47508: 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;
4750c: 81a8 0004 orl %d0,%a0@(4)
}
}
47510: 4e5e unlk %fp
47512: 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;
47514: 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;
47516: 7001 moveq #1,%d0 <== NOT EXECUTED
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47518: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED
4751c: 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);
47520: 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;
47524: 8083 orl %d3,%d0 <== NOT EXECUTED
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
47526: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED
new_block->prev = prev;
4752a: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED
4752e: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
47532: 70fe moveq #-2,%d0 <== NOT EXECUTED
next->prev = new_block;
prev->next = new_block;
47534: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
47538: 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;
4753c: 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;
47540: 2083 movel %d3,%a0@ <== NOT EXECUTED
47542: 60a8 bras 474ec <_Heap_Block_split+0x9c> <== NOT EXECUTED
0004cab0 <_Heap_Extend>:
Heap_Control *heap,
void *extend_area_begin_ptr,
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
4cab0: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
4cab4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
4cab8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4cabc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4cac0: 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;
4cac4: 2602 movel %d2,%d3 <== NOT EXECUTED
4cac6: 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;
4cac8: 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;
4cacc: 282a 0010 movel %a2@(16),%d4 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4cad0: 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;
4cad4: 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;
4cad8: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
Heap_Block *extend_last_block = NULL;
4cadc: 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 ) {
4cae0: b682 cmpl %d2,%d3 <== NOT EXECUTED
4cae2: 640c bccs 4caf0 <_Heap_Extend+0x40> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cae4: 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;
4caea: 4200 clrb %d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4caec: 4e5e unlk %fp <== NOT EXECUTED
4caee: 4e75 rts <== NOT EXECUTED
if ( extend_area_end < extend_area_begin ) {
return false;
}
extend_area_ok = _Heap_Get_first_and_last_block(
4caf0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4caf4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4caf8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4cafa: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4cafc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cafe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4cb00: 4eb9 0004 7890 jsr 47890 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&extend_first_block,
&extend_last_block
);
if (!extend_area_ok ) {
4cb06: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4cb0a: 4a00 tstb %d0 <== NOT EXECUTED
4cb0c: 67d6 beqs 4cae4 <_Heap_Extend+0x34> <== NOT EXECUTED
4cb0e: 2045 moveal %d5,%a0 <== NOT EXECUTED
4cb10: 9bcd subal %a5,%a5 <== NOT EXECUTED
4cb12: 97cb subal %a3,%a3 <== NOT EXECUTED
4cb14: 99cc subal %a4,%a4 <== NOT EXECUTED
4cb16: 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;
4cb1a: ba88 cmpl %a0,%d5 <== NOT EXECUTED
4cb1c: 6700 014a beqw 4cc68 <_Heap_Extend+0x1b8> <== NOT EXECUTED
4cb20: 2208 movel %a0,%d1 <== NOT EXECUTED
uintptr_t const sub_area_end = start_block->prev_size;
4cb22: 2010 movel %a0@,%d0 <== NOT EXECUTED
Heap_Block *const end_block =
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
4cb24: b082 cmpl %d2,%d0 <== NOT EXECUTED
4cb26: 6304 blss 4cb2c <_Heap_Extend+0x7c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
4cb28: b681 cmpl %d1,%d3 <== NOT EXECUTED
4cb2a: 62b8 bhis 4cae4 <_Heap_Extend+0x34> <== NOT EXECUTED
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4cb2c: b681 cmpl %d1,%d3 <== NOT EXECUTED
4cb2e: 6700 0132 beqw 4cc62 <_Heap_Extend+0x1b2> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4cb32: b083 cmpl %d3,%d0 <== NOT EXECUTED
4cb34: 6304 blss 4cb3a <_Heap_Extend+0x8a> <== NOT EXECUTED
4cb36: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
4cb3a: 2e00 movel %d0,%d7 <== NOT EXECUTED
4cb3c: 2240 moveal %d0,%a1 <== NOT EXECUTED
4cb3e: 5189 subql #8,%a1 <== NOT EXECUTED
4cb40: 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);
4cb44: 93c1 subal %d1,%a1 <== NOT EXECUTED
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
4cb46: b480 cmpl %d0,%d2 <== NOT EXECUTED
4cb48: 6700 0100 beqw 4cc4a <_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 ) {
4cb4c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4cb4e: 6402 bccs 4cb52 <_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 )
4cb50: 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;
4cb52: 70fe moveq #-2,%d0 <== NOT EXECUTED
4cb54: 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);
4cb58: 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 );
4cb5c: b1c5 cmpal %d5,%a0 <== NOT EXECUTED
4cb5e: 66ba bnes 4cb1a <_Heap_Extend+0x6a> <== NOT EXECUTED
if ( extend_area_begin < heap->area_begin ) {
4cb60: b4aa 0018 cmpl %a2@(24),%d2 <== NOT EXECUTED
4cb64: 6500 010a bcsw 4cc70 <_Heap_Extend+0x1c0> <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
4cb68: b6aa 001c cmpl %a2@(28),%d3 <== NOT EXECUTED
4cb6c: 6304 blss 4cb72 <_Heap_Extend+0xc2> <== NOT EXECUTED
heap->area_end = extend_area_end;
4cb6e: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4cb72: 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 =
4cb76: 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;
4cb78: 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;
4cb7a: 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 =
4cb7e: 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;
4cb80: 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;
4cb82: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cb84: 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;
4cb88: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4cb8a: 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 ) {
4cb8e: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
4cb92: 6400 0104 bccw 4cc98 <_Heap_Extend+0x1e8> <== NOT EXECUTED
heap->first_block = extend_first_block;
4cb96: 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 ) {
4cb9a: 4a8c tstl %a4 <== NOT EXECUTED
4cb9c: 6700 0148 beqw 4cce6 <_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;
4cba0: 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 );
4cba4: 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;
4cba6: 2802 movel %d2,%d4 <== NOT EXECUTED
4cba8: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED
if ( remainder != 0 ) {
4cbac: 4a81 tstl %d1 <== NOT EXECUTED
4cbae: 6704 beqs 4cbb4 <_Heap_Extend+0x104> <== NOT EXECUTED
return value - remainder + alignment;
4cbb0: d480 addl %d0,%d2 <== NOT EXECUTED
4cbb2: 9481 subl %d1,%d2 <== NOT EXECUTED
uintptr_t const new_first_block_begin =
4cbb4: 2042 moveal %d2,%a0 <== NOT EXECUTED
4cbb6: 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 =
4cbb8: 200c movel %a4,%d0 <== NOT EXECUTED
4cbba: 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;
4cbbc: 7201 moveq #1,%d1 <== NOT EXECUTED
4cbbe: 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;
4cbc0: 2094 movel %a4@,%a0@ <== NOT EXECUTED
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4cbc2: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Free_block( heap, new_first_block );
4cbc6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4cbc8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cbca: 4eba fec8 jsr %pc@(4ca94 <_Heap_Free_block>) <== NOT EXECUTED
4cbce: 508f addql #8,%sp <== NOT EXECUTED
link_below_block,
extend_last_block
);
}
if ( merge_above_block != NULL ) {
4cbd0: 4a8b tstl %a3 <== NOT EXECUTED
4cbd2: 6700 00d4 beqw 4cca8 <_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,
4cbd6: 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(
4cbd8: 968b subl %a3,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4cbda: 2203 movel %d3,%d1 <== NOT EXECUTED
4cbdc: 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;
4cbe2: 7201 moveq #1,%d1 <== NOT EXECUTED
4cbe4: 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)
4cbe6: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
4cbea: 9083 subl %d3,%d0 <== NOT EXECUTED
| HEAP_PREV_BLOCK_USED;
4cbec: 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;
4cbee: 7001 moveq #1,%d0 <== NOT EXECUTED
4cbf0: 2781 3804 movel %d1,%a3@(00000004,%d3:l) <== NOT EXECUTED
4cbf4: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4cbf8: 8680 orl %d0,%d3 <== NOT EXECUTED
4cbfa: 2743 0004 movel %d3,%a3@(4) <== NOT EXECUTED
_Heap_Block_set_size( last_block, last_block_new_size );
_Heap_Free_block( heap, last_block );
4cbfe: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4cc00: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cc02: 4eba fe90 jsr %pc@(4ca94 <_Heap_Free_block>) <== NOT EXECUTED
4cc06: 508f addql #8,%sp <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4cc08: 4a8c tstl %a4 <== NOT EXECUTED
4cc0a: 6700 00c4 beqw 4ccd0 <_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;
4cc0e: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
4cc12: 9086 subl %d6,%d0 <== NOT EXECUTED
4cc14: 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;
4cc16: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cc18: 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(
4cc1c: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
4cc20: 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;
4cc22: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4cc26: 8280 orl %d0,%d1 <== NOT EXECUTED
4cc28: 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;
4cc2c: ddaa 002c addl %d6,%a2@(44) <== NOT EXECUTED
if ( extended_size_ptr != NULL )
4cc30: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
4cc34: 6700 00ca beqw 4cd00 <_Heap_Extend+0x250> <== NOT EXECUTED
*extended_size_ptr = extended_size;
4cc38: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4cc3c: 2086 movel %d6,%a0@ <== NOT EXECUTED
return true;
}
4cc3e: 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;
4cc44: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4cc46: 4e5e unlk %fp <== NOT EXECUTED
4cc48: 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;
4cc4a: 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 )
4cc4c: 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;
4cc4e: 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;
4cc52: 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);
4cc54: 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 );
4cc58: b1c5 cmpal %d5,%a0 <== NOT EXECUTED
4cc5a: 6600 febe bnew 4cb1a <_Heap_Extend+0x6a> <== NOT EXECUTED
4cc5e: 6000 ff00 braw 4cb60 <_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 ) {
4cc62: 2848 moveal %a0,%a4 <== NOT EXECUTED
4cc64: 6000 fed4 braw 4cb3a <_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;
4cc68: 222a 0018 movel %a2@(24),%d1 <== NOT EXECUTED
4cc6c: 6000 feb4 braw 4cb22 <_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;
4cc70: 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 =
4cc74: 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;
4cc76: 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;
4cc78: 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 =
4cc7c: 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;
4cc7e: 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;
4cc82: 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;
4cc84: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4cc86: 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;
4cc8a: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4cc8c: 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 ) {
4cc90: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
4cc94: 6500 ff00 bcsw 4cb96 <_Heap_Extend+0xe6> <== NOT EXECUTED
heap->first_block = extend_first_block;
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
4cc98: b3ea 0024 cmpal %a2@(36),%a1 <== NOT EXECUTED
4cc9c: 6300 fefc blsw 4cb9a <_Heap_Extend+0xea> <== NOT EXECUTED
heap->last_block = extend_last_block;
4cca0: 2549 0024 movel %a1,%a2@(36) <== NOT EXECUTED
4cca4: 6000 fef4 braw 4cb9a <_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 ) {
4cca8: 4a8d tstl %a5 <== NOT EXECUTED
4ccaa: 6700 ff5c beqw 4cc08 <_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;
4ccae: 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 );
4ccb0: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4ccb4: 928d subl %a5,%d1 <== NOT EXECUTED
4ccb6: 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(
4ccba: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4ccbe: 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;
4ccc0: 7001 moveq #1,%d0 <== NOT EXECUTED
4ccc2: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED
4ccc6: 81a8 0004 orl %d0,%a0@(4) <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4ccca: 4a8c tstl %a4 <== NOT EXECUTED
4cccc: 6600 ff40 bnew 4cc0e <_Heap_Extend+0x15e> <== NOT EXECUTED
4ccd0: 4a8b tstl %a3 <== NOT EXECUTED
4ccd2: 6600 ff3a bnew 4cc0e <_Heap_Extend+0x15e> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
4ccd6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4ccda: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ccdc: 4eba fdb6 jsr %pc@(4ca94 <_Heap_Free_block>) <== NOT EXECUTED
4cce0: 508f addql #8,%sp <== NOT EXECUTED
4cce2: 6000 ff2a braw 4cc0e <_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 ) {
4cce6: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED
4ccea: 6700 fee4 beqw 4cbd0 <_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;
4ccee: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4ccf2: 7201 moveq #1,%d1 <== NOT EXECUTED
4ccf4: 9089 subl %a1,%d0 <== NOT EXECUTED
4ccf6: 8280 orl %d0,%d1 <== NOT EXECUTED
4ccf8: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
4ccfc: 6000 fed2 braw 4cbd0 <_Heap_Extend+0x120> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4cd00: 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;
4cd06: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4cd08: 4e5e unlk %fp <== NOT EXECUTED
0004c788 <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4c788: 4e56 ffe8 linkw %fp,#-24
4c78c: 202e 000c movel %fp@(12),%d0
4c790: 2040 moveal %d0,%a0
4c792: 5188 subql #8,%a0
4c794: 226e 0008 moveal %fp@(8),%a1
4c798: 4c69 0001 0010 remul %a1@(16),%d1,%d0
4c79e: 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
4c7a2: 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);
4c7a6: 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;
4c7a8: b088 cmpl %a0,%d0
4c7aa: 6200 0098 bhiw 4c844 <_Heap_Free+0xbc>
4c7ae: 2229 0024 movel %a1@(36),%d1
4c7b2: b288 cmpl %a0,%d1
4c7b4: 6500 008e bcsw 4c844 <_Heap_Free+0xbc>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c7b8: 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;
4c7bc: 74fe moveq #-2,%d2
4c7be: 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);
4c7c0: 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;
4c7c4: b5c0 cmpal %d0,%a2
4c7c6: 657c bcss 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN
4c7c8: b5c1 cmpal %d1,%a2
4c7ca: 6278 bhis 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN
4c7cc: 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 ) ) {
4c7d0: 0804 0000 btst #0,%d4
4c7d4: 676e beqs 4c844 <_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;
4c7d6: 7afe moveq #-2,%d5
4c7d8: 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 ));
4c7da: b5c1 cmpal %d1,%a2
4c7dc: 6700 00f6 beqw 4c8d4 <_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;
4c7e0: 7a01 moveq #1,%d5
4c7e2: cab2 4804 andl %a2@(00000004,%d4:l),%d5
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
4c7e6: 57c5 seq %d5
4c7e8: 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 ) ) {
4c7ea: 0803 0000 btst #0,%d3
4c7ee: 665e bnes 4c84e <_Heap_Free+0xc6>
uintptr_t const prev_size = block->prev_size;
4c7f0: 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);
4c7f2: 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;
4c7f4: b1c0 cmpal %d0,%a0
4c7f6: 654c bcss 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN
4c7f8: b1c1 cmpal %d1,%a0
4c7fa: 6248 bhis 4c844 <_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;
4c7fc: 7001 moveq #1,%d0
4c7fe: 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) ) {
4c802: 6740 beqs 4c844 <_Heap_Free+0xbc> <== NEVER TAKEN
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4c804: 4a05 tstb %d5
4c806: 6700 00d2 beqw 4c8da <_Heap_Free+0x152>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c80a: 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;
4c80e: d882 addl %d2,%d4 <== NOT EXECUTED
4c810: 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;
4c812: 7001 moveq #1,%d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c814: 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;
4c818: 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;
4c81c: 8083 orl %d3,%d0 <== NOT EXECUTED
next->prev = prev;
4c81e: 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;
4c822: 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;
4c826: 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;
4c82a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c82e: 53a9 0040 subql #1,%a1@(64) <== NOT EXECUTED
++stats->frees;
4c832: 52a9 0050 addql #1,%a1@(80) <== NOT EXECUTED
stats->free_size += block_size;
4c836: d5a9 0030 addl %d2,%a1@(48) <== NOT EXECUTED
return( true );
4c83a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c83c: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
4c840: 4e5e unlk %fp
4c842: 4e75 rts
4c844: 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 );
4c848: 4200 clrb %d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c84a: 4e5e unlk %fp <== NOT EXECUTED
4c84c: 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 */
4c84e: 4a05 tstb %d5
4c850: 6736 beqs 4c888 <_Heap_Free+0x100>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c852: 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;
4c856: d882 addl %d2,%d4
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c858: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4c85a: 246a 000c moveal %a2@(12),%a2
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4c85e: 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;
4c862: 8084 orl %d4,%d0
new_block->prev = prev;
4c864: 214a 000c movel %a2,%a0@(12)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4c868: 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;
4c86c: 2140 0004 movel %d0,%a0@(4)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c870: 7001 moveq #1,%d0
next->prev = new_block;
prev->next = new_block;
4c872: 2548 0008 movel %a0,%a2@(8)
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4c876: 2748 000c movel %a0,%a3@(12)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c87a: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c87e: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c882: d5a9 0030 addl %d2,%a1@(48)
4c886: 60b4 bras 4c83c <_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;
4c888: 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;
4c88c: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c88e: 7afe moveq #-2,%d5
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4c890: 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;
4c892: 2669 0008 moveal %a1@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4c896: 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;
4c89a: 8282 orl %d2,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4c89c: 214b 0008 movel %a3,%a0@(8)
4c8a0: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c8a4: cbaa 0004 andl %d5,%a2@(4)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
4c8a8: 2748 000c movel %a0,%a3@(12)
next_block->prev_size = block_size;
4c8ac: 2482 movel %d2,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4c8ae: 2348 0008 movel %a0,%a1@(8)
/* Statistics */
++stats->free_blocks;
4c8b2: 2340 0038 movel %d0,%a1@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4c8b6: b0a9 003c cmpl %a1@(60),%d0
4c8ba: 6300 ff72 blsw 4c82e <_Heap_Free+0xa6>
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c8be: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c8c2: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c8c6: 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;
4c8ca: 2340 003c movel %d0,%a1@(60)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c8ce: 7001 moveq #1,%d0
4c8d0: 6000 ff6a braw 4c83c <_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 ));
4c8d4: 4205 clrb %d5 <== NOT EXECUTED
4c8d6: 6000 ff12 braw 4c7ea <_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;
4c8da: d682 addl %d2,%d3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4c8dc: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c8de: 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;
4c8e0: 8283 orl %d3,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4c8e2: 2483 movel %d3,%a2@
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4c8e4: 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;
4c8e6: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4c8ea: cbaa 0004 andl %d5,%a2@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4c8ee: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4c8f2: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4c8f6: d5a9 0030 addl %d2,%a1@(48)
4c8fa: 6000 ff40 braw 4c83c <_Heap_Free+0xb4>
...
0004ca94 <_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 )
{
4ca94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ca98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Heap_Statistics *const stats = &heap->stats;
/* Statistics */
++stats->used_blocks;
4ca9c: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED
--stats->frees;
4caa0: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4caa4: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED
}
4caa8: 4e5e unlk %fp <== NOT EXECUTED
/* Statistics */
++stats->used_blocks;
--stats->frees;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4caaa: 4ef9 0004 cd0c jmp 4cd0c <_Heap_Free> <== NOT EXECUTED
00047544 <_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
)
{
47544: 4e56 fff0 linkw %fp,#-16
47548: 202e 0008 movel %fp@(8),%d0
4754c: 48d7 003c moveml %d2-%d5,%sp@
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 );
47550: 2400 movel %d0,%d2
47552: 5082 addql #8,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
47554: 2a02 movel %d2,%d5
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
47556: 222e 0010 movel %fp@(16),%d1
4755a: 262e 000c movel %fp@(12),%d3
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
4755e: 2043 moveal %d3,%a0
47560: d1c0 addal %d0,%a0
47562: 4c41 5004 remul %d1,%d4,%d5
if ( remainder != 0 ) {
47566: 4a84 tstl %d4
47568: 6704 beqs 4756e <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN
return value - remainder + alignment;
4756a: d481 addl %d1,%d2 <== NOT EXECUTED
4756c: 9484 subl %d4,%d2 <== 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 (
4756e: b1c0 cmpal %d0,%a0
47570: 6532 bcss 475a4 <_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);
47572: 2042 moveal %d2,%a0
47574: 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 =
47576: 9480 subl %d0,%d2
Heap_Block *const last_block =
_Heap_Block_at( first_block, first_block_size );
if (
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
47578: b483 cmpl %d3,%d2
4757a: 6428 bccs 475a4 <_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 );
4757c: 9682 subl %d2,%d3
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4757e: 2403 movel %d3,%d2
47580: 4c41 2000 remul %d1,%d0,%d2
47584: 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
47586: b6ae 0014 cmpl %fp@(20),%d3
4758a: 6518 bcss 475a4 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
) {
/* Invalid area or area too small */
return false;
}
*first_block_ptr = first_block;
4758c: 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);
47590: d688 addl %a0,%d3
47592: 2288 movel %a0,%a1@
47594: 226e 001c moveal %fp@(28),%a1
47598: 2283 movel %d3,%a1@
*last_block_ptr = last_block;
return true;
}
4759a: 4cd7 003c moveml %sp@,%d2-%d5
}
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
4759e: 7001 moveq #1,%d0
}
475a0: 4e5e unlk %fp
475a2: 4e75 rts
475a4: 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;
475a8: 4200 clrb %d0
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
}
475aa: 4e5e unlk %fp <== NOT EXECUTED
000518fc <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
518fc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
51900: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
51904: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
51908: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
5190c: 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;
51910: 4292 clrl %a2@ <== NOT EXECUTED
info->largest = 0;
51912: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
info->total = 0;
51916: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
for(the_block = _Heap_Free_list_first(the_heap);
5191a: b1cb cmpal %a3,%a0 <== NOT EXECUTED
5191c: 6734 beqs 51952 <_Heap_Get_free_information+0x56><== NOT EXECUTED
5191e: 7401 moveq #1,%d2 <== NOT EXECUTED
51920: 4283 clrl %d3 <== NOT EXECUTED
51922: 93c9 subal %a1,%a1 <== 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;
51924: 70fe moveq #-2,%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;
51926: 2209 movel %a1,%d1 <== 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)
51928: 2802 movel %d2,%d4 <== NOT EXECUTED
5192a: 5284 addql #1,%d4 <== NOT EXECUTED
5192c: 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;
51930: d280 addl %d0,%d1 <== NOT EXECUTED
info->number = 0;
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
51932: 2241 moveal %d1,%a1 <== 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;
if ( info->largest < the_size )
51934: b680 cmpl %d0,%d3 <== NOT EXECUTED
51936: 6404 bccs 5193c <_Heap_Get_free_information+0x40><== NOT EXECUTED
info->largest = the_size;
51938: 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)
5193c: 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);
51940: b1cb cmpal %a3,%a0 <== NOT EXECUTED
51942: 6708 beqs 5194c <_Heap_Get_free_information+0x50><== NOT EXECUTED
51944: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
51948: 2404 movel %d4,%d2 <== NOT EXECUTED
5194a: 60d8 bras 51924 <_Heap_Get_free_information+0x28><== NOT EXECUTED
5194c: 2482 movel %d2,%a2@ <== NOT EXECUTED
5194e: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
51952: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3 <== NOT EXECUTED
51956: 4e5e unlk %fp <== NOT EXECUTED
...
0004d3f8 <_Heap_Get_information>:
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
4d3f8: 4e56 fff0 linkw %fp,#-16
4d3fc: 48d7 041c moveml %d2-%d4/%a2,%sp@
4d400: 246e 0008 moveal %fp@(8),%a2
4d404: 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));
4d408: 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;
4d40a: 226a 0020 moveal %a2@(32),%a1
Heap_Block *const end = the_heap->last_block;
4d40e: 242a 0024 movel %a2@(36),%d2
memset(the_info, 0, sizeof(*the_info));
4d412: 4298 clrl %a0@+
4d414: 4298 clrl %a0@+
4d416: 4298 clrl %a0@+
4d418: 4298 clrl %a0@+
4d41a: 4298 clrl %a0@+
4d41c: 4290 clrl %a0@
while ( the_block != end ) {
4d41e: b489 cmpl %a1,%d2
4d420: 6734 beqs 4d456 <_Heap_Get_information+0x5e> <== 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;
4d422: 2604 movel %d4,%d3
4d424: 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 ) {
4d42a: 2229 0004 movel %a1@(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;
4d42e: 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;
4d430: 2043 moveal %d3,%a0
4d432: 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);
4d434: d3c0 addal %d0,%a1
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4d436: 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) )
4d43a: 0801 0000 btst #0,%d1
4d43e: 6602 bnes 4d442 <_Heap_Get_information+0x4a>
info = &the_info->Used;
else
info = &the_info->Free;
4d440: 2044 moveal %d4,%a0
info->number++;
4d442: 5290 addql #1,%a0@
info->total += the_size;
4d444: d1a8 0008 addl %d0,%a0@(8)
if ( info->largest < the_size )
4d448: b0a8 0004 cmpl %a0@(4),%d0
4d44c: 6304 blss 4d452 <_Heap_Get_information+0x5a>
info->largest = the_size;
4d44e: 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 ) {
4d452: b3c2 cmpal %d2,%a1
4d454: 66d8 bnes 4d42e <_Heap_Get_information+0x36>
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4d456: 4cd7 041c moveml %sp@,%d2-%d4/%a2
4d45a: 4e5e unlk %fp
...
000475ae <_Heap_Initialize>:
Heap_Control *heap,
void *heap_area_begin_ptr,
uintptr_t heap_area_size,
uintptr_t page_size
)
{
475ae: 4e56 ffe0 linkw %fp,#-32
475b2: 48d7 047c moveml %d2-%d6/%a2,%sp@
475b6: 246e 0008 moveal %fp@(8),%a2
475ba: 282e 000c movel %fp@(12),%d4
475be: 2a2e 0010 movel %fp@(16),%d5
475c2: 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;
475c6: 42ae fffc clrl %fp@(-4)
Heap_Block *last_block = NULL;
475ca: 42ae fff8 clrl %fp@(-8)
if ( page_size == 0 ) {
475ce: 4a82 tstl %d2
475d0: 6750 beqs 47622 <_Heap_Initialize+0x74> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
475d2: 7003 moveq #3,%d0
475d4: c082 andl %d2,%d0
if ( remainder != 0 ) {
475d6: 6704 beqs 475dc <_Heap_Initialize+0x2e> <== ALWAYS TAKEN
return value - remainder + alignment;
475d8: 5882 addql #4,%d2 <== NOT EXECUTED
475da: 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 ) {
475dc: 7003 moveq #3,%d0
475de: b082 cmpl %d2,%d0
475e0: 6434 bccs 47616 <_Heap_Initialize+0x68> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
475e2: 7210 moveq #16,%d1
475e4: 4c42 1000 remul %d2,%d0,%d1
if ( remainder != 0 ) {
475e8: 4a80 tstl %d0
475ea: 6700 00e8 beqw 476d4 <_Heap_Initialize+0x126>
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
475ee: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
return value - remainder + alignment;
475f2: 2602 movel %d2,%d3 <== NOT EXECUTED
475f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
475f8: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
475fe: 9680 subl %d0,%d3 <== NOT EXECUTED
47600: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47602: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47604: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47606: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47608: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
4760e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
47612: 4a00 tstb %d0 <== NOT EXECUTED
47614: 662e bnes 47644 <_Heap_Initialize+0x96> <== NOT EXECUTED
return 0;
47616: 4280 clrl %d0
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47618: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2
4761e: 4e5e unlk %fp
47620: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
47622: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
} else {
return value;
47626: 7610 moveq #16,%d3 <== NOT EXECUTED
47628: 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;
4762c: 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(
4762e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47630: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47632: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47634: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47636: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
4763c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
47640: 4a00 tstb %d0 <== NOT EXECUTED
47642: 67d2 beqs 47616 <_Heap_Initialize+0x68> <== NOT EXECUTED
return 0;
}
memset(heap, 0, sizeof(*heap));
47644: 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;
47648: da84 addl %d4,%d5
);
if ( !area_ok ) {
return 0;
}
memset(heap, 0, sizeof(*heap));
4764a: 42a7 clrl %sp@-
4764c: 2f0a movel %a2,%sp@-
4764e: 4eb9 0004 f200 jsr 4f200 <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++;
47654: 2239 0005 f42c movel 5f42c <instance>,%d1
4765a: 2c01 movel %d1,%d6
4765c: 5286 addql #1,%d6
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
4765e: 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;
47662: 226e fff8 moveal %fp@(-8),%a1
first_block_size = last_block_begin - first_block_begin;
47666: 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;
47668: 206e fffc moveal %fp@(-4),%a0
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
4766c: 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++;
4766e: 23c6 0005 f42c movel %d6,5f42c <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;
47674: 7c01 moveq #1,%d6
47676: 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;
47678: 2085 movel %d5,%a0@
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
4767a: 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;
4767e: 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 );
47680: 214a 0008 movel %a2,%a0@(8)
first_block->prev = _Heap_Free_list_head( heap );
47684: 214a 000c movel %a2,%a0@(12)
_Heap_Protection_block_initialize( heap, first_block );
/* Heap control */
heap->page_size = page_size;
47688: 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(
4768c: 2408 movel %a0,%d2
4768e: 9489 subl %a1,%d2
heap->min_block_size = min_block_size;
47690: 2543 0014 movel %d3,%a2@(20)
heap->area_begin = heap_area_begin;
47694: 2544 0018 movel %d4,%a2@(24)
heap->area_end = heap_area_end;
47698: 2545 001c movel %d5,%a2@(28)
heap->first_block = first_block;
4769c: 2548 0020 movel %a0,%a2@(32)
heap->last_block = last_block;
476a0: 2549 0024 movel %a1,%a2@(36)
476a4: 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;
476a8: 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;
476aa: 2548 0008 movel %a0,%a2@(8)
_Heap_Free_list_tail( heap )->prev = first_block;
476ae: 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;
476b2: 2540 002c movel %d0,%a2@(44)
stats->free_size = first_block_size;
476b6: 2540 0030 movel %d0,%a2@(48)
stats->min_free_size = first_block_size;
476ba: 2540 0034 movel %d0,%a2@(52)
stats->free_blocks = 1;
476be: 2546 0038 movel %d6,%a2@(56)
stats->max_free_blocks = 1;
476c2: 2546 003c movel %d6,%a2@(60)
stats->instance = instance++;
476c6: 2541 0028 movel %d1,%a2@(40)
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
476ca: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2
476d0: 4e5e unlk %fp
476d2: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
476d4: 486e fff8 pea %fp@(-8)
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
476d8: 7610 moveq #16,%d3
476da: 486e fffc pea %fp@(-4)
476de: 2f03 movel %d3,%sp@-
476e0: 2f02 movel %d2,%sp@-
476e2: 2f05 movel %d5,%sp@-
476e4: 2f04 movel %d4,%sp@-
476e6: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block>
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
476ec: 4fef 0018 lea %sp@(24),%sp
476f0: 4a00 tstb %d0
476f2: 6700 ff22 beqw 47616 <_Heap_Initialize+0x68>
476f6: 6000 ff4c braw 47644 <_Heap_Initialize+0x96>
0005c68c <_Heap_Resize_block>:
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5c68c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5c690: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
5c694: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
5c698: 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);
5c69c: 2202 movel %d2,%d1 <== NOT EXECUTED
5c69e: 2042 moveal %d2,%a0 <== NOT EXECUTED
5c6a0: 5188 subql #8,%a0 <== NOT EXECUTED
5c6a2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5c6a6: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED
5c6ac: 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);
5c6b0: 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;
5c6b2: 4291 clrl %a1@ <== NOT EXECUTED
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5c6b4: 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;
5c6b8: 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;
5c6ba: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
5c6be: 6500 0098 bcsw 5c758 <_Heap_Resize_block+0xcc> <== NOT EXECUTED
5c6c2: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED
5c6c6: 6200 0090 bhiw 5c758 <_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;
5c6ca: 76fe moveq #-2,%d3 <== NOT EXECUTED
5c6cc: 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;
5c6ce: 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;
5c6d0: 7204 moveq #4,%d1 <== NOT EXECUTED
5c6d2: 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;
5c6d4: 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;
5c6d8: 49f0 3800 lea %a0@(00000000,%d3:l),%a4 <== NOT EXECUTED
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5c6dc: d28c addl %a4,%d1 <== NOT EXECUTED
5c6de: 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;
5c6e2: 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;
5c6e6: 2281 movel %d1,%a1@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_free(
const Heap_Block *block
)
{
return !_Heap_Is_used( block );
5c6e8: 4a85 tstl %d5 <== NOT EXECUTED
5c6ea: 57c5 seq %d5 <== NOT EXECUTED
5c6ec: 4485 negl %d5 <== NOT EXECUTED
if ( next_block_is_free ) {
5c6ee: 4a05 tstb %d5 <== NOT EXECUTED
5c6f0: 6672 bnes 5c764 <_Heap_Resize_block+0xd8> <== NOT EXECUTED
block_size += next_block_size;
alloc_size += next_block_size;
}
if ( new_alloc_size > alloc_size ) {
5c6f2: b280 cmpl %d0,%d1 <== NOT EXECUTED
5c6f4: 6576 bcss 5c76c <_Heap_Resize_block+0xe0> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
}
if ( next_block_is_free ) {
5c6f6: 4a05 tstb %d5 <== NOT EXECUTED
5c6f8: 672a beqs 5c724 <_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;
5c6fa: 7201 moveq #1,%d1 <== NOT EXECUTED
5c6fc: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c700: 226c 0008 moveal %a4@(8),%a1 <== NOT EXECUTED
block->size_and_flag = size | flag;
5c704: 8283 orl %d3,%d1 <== NOT EXECUTED
5c706: 286c 000c moveal %a4@(12),%a4 <== NOT EXECUTED
5c70a: 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;
5c70e: 7201 moveq #1,%d1 <== NOT EXECUTED
5c710: 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;
5c714: 2949 0008 movel %a1,%a4@(8) <== NOT EXECUTED
next->prev = prev;
5c718: 234c 000c movel %a4,%a1@(12) <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
5c71c: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED
stats->free_size -= next_block_size;
5c720: 99aa 0030 subl %d4,%a2@(48) <== NOT EXECUTED
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5c724: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c726: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c728: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5c72a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c72c: 4eb9 0004 76fa jsr 476fa <_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;
5c732: 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;
5c736: 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 );
5c738: 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;
5c73a: 2240 moveal %d0,%a1 <== NOT EXECUTED
5c73c: 93c2 subal %d2,%a1 <== NOT EXECUTED
/* Statistics */
++stats->resizes;
return HEAP_RESIZE_SUCCESSFUL;
5c73e: 4280 clrl %d0 <== NOT EXECUTED
5c740: 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;
5c744: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED
5c748: 2689 movel %a1,%a3@ <== NOT EXECUTED
/* Statistics */
++stats->resizes;
5c74a: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c74e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5c754: 4e5e unlk %fp <== NOT EXECUTED
5c756: 4e75 rts <== NOT EXECUTED
new_alloc_size,
old_size,
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
5c758: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
5c75a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5c760: 4e5e unlk %fp <== NOT EXECUTED
5c762: 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;
5c764: d684 addl %d4,%d3 <== NOT EXECUTED
alloc_size += next_block_size;
5c766: d284 addl %d4,%d1 <== NOT EXECUTED
}
if ( new_alloc_size > alloc_size ) {
5c768: b280 cmpl %d0,%d1 <== NOT EXECUTED
5c76a: 648a bccs 5c6f6 <_Heap_Resize_block+0x6a> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
5c76c: 7001 moveq #1,%d0 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5c76e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5c774: 4e5e unlk %fp <== NOT EXECUTED
0005c778 <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5c778: 4e56 0000 linkw %fp,#0
5c77c: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5c780: 2040 moveal %d0,%a0
5c782: 5188 subql #8,%a0
5c784: 226e 0008 moveal %fp@(8),%a1
5c788: 2f02 movel %d2,%sp@-
5c78a: 2400 movel %d0,%d2
5c78c: 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);
5c792: 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
5c794: 2229 0020 movel %a1@(32),%d1
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5c798: b288 cmpl %a0,%d1
5c79a: 6236 bhis 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5c79c: 2269 0024 moveal %a1@(36),%a1
5c7a0: b3c8 cmpal %a0,%a1
5c7a2: 652e bcss 5c7d2 <_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;
5c7a4: 74fe moveq #-2,%d2
5c7a6: 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);
5c7aa: 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;
5c7ac: b1c1 cmpal %d1,%a0
5c7ae: 6522 bcss 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5c7b0: b1c9 cmpal %a1,%a0
5c7b2: 621e bhis 5c7d2 <_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;
5c7b4: 7201 moveq #1,%d1
5c7b6: 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 )
5c7ba: 6716 beqs 5c7d2 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c7bc: 7204 moveq #4,%d1
5c7be: 9280 subl %d0,%d1
5c7c0: 2001 movel %d1,%d0
5c7c2: d088 addl %a0,%d0
5c7c4: 226e 0010 moveal %fp@(16),%a1
return true;
}
5c7c8: 241f movel %sp@+,%d2
5c7ca: 4e5e unlk %fp
|| !_Heap_Is_prev_used( next_block )
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5c7cc: 2280 movel %d0,%a1@
return true;
5c7ce: 7001 moveq #1,%d0
}
5c7d0: 4e75 rts
5c7d2: 241f movel %sp@+,%d2 <== NOT EXECUTED
5c7d4: 4e5e unlk %fp <== NOT EXECUTED
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
) {
return false;
5c7d6: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
...
0004822a <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
4822a: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
4822e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
48232: 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;
48236: 4bfa ff94 lea %pc@(481cc <_Heap_Walk_print_nothing>),%a5<== NOT EXECUTED
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
4823a: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
uintptr_t const page_size = heap->page_size;
4823e: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
48242: 2c2a 0014 movel %a2@(20),%d6 <== NOT EXECUTED
Heap_Block *const first_block = heap->first_block;
48246: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
Heap_Block *const last_block = heap->last_block;
4824a: 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;
4824e: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED
48252: 6704 beqs 48258 <_Heap_Walk+0x2e> <== NOT EXECUTED
48254: 4bfa ff7e lea %pc@(481d4 <_Heap_Walk_print>),%a5 <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
48258: 7003 moveq #3,%d0 <== NOT EXECUTED
4825a: b0b9 0006 22bc cmpl 622bc <_System_state_Current>,%d0 <== NOT EXECUTED
48260: 670c beqs 4826e <_Heap_Walk+0x44> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48262: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
block = next_block;
} while ( block != first_block );
return true;
48268: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4826a: 4e5e unlk %fp <== NOT EXECUTED
4826c: 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)(
4826e: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
48272: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
48276: 2f07 movel %d7,%sp@- <== NOT EXECUTED
48278: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4827a: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED
4827e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
48282: 2f06 movel %d6,%sp@- <== NOT EXECUTED
48284: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48286: 4879 0005 e55b pea 5e55b <_Status_Object_name_errors_to_status+0x5d><== NOT EXECUTED
4828c: 42a7 clrl %sp@- <== NOT EXECUTED
4828e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48290: 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 ) {
48292: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
48296: 4a83 tstl %d3 <== NOT EXECUTED
48298: 6700 0082 beqw 4831c <_Heap_Walk+0xf2> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
4829c: 7003 moveq #3,%d0 <== NOT EXECUTED
4829e: c083 andl %d3,%d0 <== NOT EXECUTED
(*printer)( source, true, "page size is zero\n" );
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
482a0: 6600 0090 bnew 48332 <_Heap_Walk+0x108> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
482a4: 2206 movel %d6,%d1 <== NOT EXECUTED
482a6: 4c43 1000 remul %d3,%d0,%d1 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
482aa: 4a80 tstl %d0 <== NOT EXECUTED
482ac: 6600 00a4 bnew 48352 <_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;
482b0: 2004 movel %d4,%d0 <== NOT EXECUTED
482b2: 5080 addql #8,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
482b4: 4c43 0001 remul %d3,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if (
482b8: 4a81 tstl %d1 <== NOT EXECUTED
482ba: 6600 00ae bnew 4836a <_Heap_Walk+0x140> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482be: 2044 moveal %d4,%a0 <== NOT EXECUTED
482c0: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
482c4: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
482c8: 0801 0000 btst #0,%d1 <== NOT EXECUTED
482cc: 6700 0188 beqw 48456 <_Heap_Walk+0x22c> <== 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;
482d0: 2047 moveal %d7,%a0 <== NOT EXECUTED
482d2: 72fe moveq #-2,%d1 <== NOT EXECUTED
482d4: 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);
482d8: 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;
482da: 7201 moveq #1,%d1 <== NOT EXECUTED
482dc: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
482e0: 6724 beqs 48306 <_Heap_Walk+0xdc> <== NOT EXECUTED
);
return false;
}
if (
482e2: b1c4 cmpal %d4,%a0 <== NOT EXECUTED
482e4: 6700 009c beqw 48382 <_Heap_Walk+0x158> <== NOT EXECUTED
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
482e8: 4879 0005 e6b5 pea 5e6b5 <_Status_Object_name_errors_to_status+0x1b7><== NOT EXECUTED
482ee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
482f2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
482f4: 4e95 jsr %a5@ <== NOT EXECUTED
482f6: 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;
482fa: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482fc: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
48302: 4e5e unlk %fp <== NOT EXECUTED
48304: 4e75 rts <== NOT EXECUTED
return false;
}
if ( _Heap_Is_free( last_block ) ) {
(*printer)(
48306: 4879 0005 e6a0 pea 5e6a0 <_Status_Object_name_errors_to_status+0x1a2><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4830c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48310: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48312: 4e95 jsr %a5@ <== NOT EXECUTED
48314: 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;
48318: 4200 clrb %d0 <== NOT EXECUTED
4831a: 60e0 bras 482fc <_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" );
4831c: 4879 0005 e5ec pea 5e5ec <_Status_Object_name_errors_to_status+0xee><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48322: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48326: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48328: 4e95 jsr %a5@ <== NOT EXECUTED
4832a: 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;
4832e: 4200 clrb %d0 <== NOT EXECUTED
48330: 60ca bras 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
(*printer)(
48332: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48334: 4879 0005 e5ff pea 5e5ff <_Status_Object_name_errors_to_status+0x101><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4833a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4833e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48340: 4e95 jsr %a5@ <== NOT EXECUTED
48342: 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;
48346: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48348: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4834e: 4e5e unlk %fp <== NOT EXECUTED
48350: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
(*printer)(
48352: 2f06 movel %d6,%sp@- <== NOT EXECUTED
48354: 4879 0005 e61d pea 5e61d <_Status_Object_name_errors_to_status+0x11f><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4835a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4835e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48360: 4e95 jsr %a5@ <== NOT EXECUTED
48362: 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;
48366: 4200 clrb %d0 <== NOT EXECUTED
48368: 60de bras 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
4836a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4836c: 4879 0005 e641 pea 5e641 <_Status_Object_name_errors_to_status+0x143><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48372: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48376: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48378: 4e95 jsr %a5@ <== NOT EXECUTED
4837a: 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;
4837e: 4200 clrb %d0 <== NOT EXECUTED
48380: 60c6 bras 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
48382: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48386: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
4838a: 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 ) {
4838e: b3ca cmpal %a2,%a1 <== NOT EXECUTED
48390: 6700 034e beqw 486e0 <_Heap_Walk+0x4b6> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48394: 242a 0020 movel %a2@(32),%d2 <== NOT EXECUTED
48398: 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;
4839c: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
4839e: 6500 009a bcsw 4843a <_Heap_Walk+0x210> <== NOT EXECUTED
483a2: 286a 0024 moveal %a2@(36),%a4 <== NOT EXECUTED
483a6: b3cc cmpal %a4,%a1 <== NOT EXECUTED
483a8: 6200 0090 bhiw 4843a <_Heap_Walk+0x210> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
483ac: 47e9 0008 lea %a1@(8),%a3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
483b0: 200b movel %a3,%d0 <== NOT EXECUTED
483b2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
483b6: 4c41 0002 remul %d1,%d2,%d0 <== NOT EXECUTED
);
return false;
}
if (
483ba: 4a82 tstl %d2 <== NOT EXECUTED
483bc: 6600 00b0 bnew 4846e <_Heap_Walk+0x244> <== 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;
483c0: 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;
483c2: 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;
483c4: c4a9 0004 andl %a1@(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;
483c8: c0b1 2804 andl %a1@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
483cc: 6600 0304 bnew 486d2 <_Heap_Walk+0x4a8> <== NOT EXECUTED
483d0: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
483d4: 240a movel %a2,%d2 <== NOT EXECUTED
483d6: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
483da: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
483de: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
);
return false;
}
if ( free_block->prev != prev_block ) {
483e2: 2069 000c moveal %a1@(12),%a0 <== NOT EXECUTED
483e6: b488 cmpl %a0,%d2 <== NOT EXECUTED
483e8: 6600 02cc bnew 486b6 <_Heap_Walk+0x48c> <== NOT EXECUTED
return false;
}
prev_block = free_block;
free_block = free_block->next;
483ec: 2069 0008 moveal %a1@(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 ) {
483f0: b1ca cmpal %a2,%a0 <== NOT EXECUTED
483f2: 6700 0096 beqw 4848a <_Heap_Walk+0x260> <== 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;
483f6: b1c1 cmpal %d1,%a0 <== NOT EXECUTED
483f8: 6542 bcss 4843c <_Heap_Walk+0x212> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
483fa: 2608 movel %a0,%d3 <== NOT EXECUTED
483fc: 5083 addql #8,%d3 <== 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;
483fe: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
48400: 653a bcss 4843c <_Heap_Walk+0x212> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
48402: 282e fffc movel %fp@(-4),%d4 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48406: 2409 movel %a1,%d2 <== NOT EXECUTED
48408: 2248 moveal %a0,%a1 <== NOT EXECUTED
4840a: 4c44 3000 remul %d4,%d0,%d3 <== NOT EXECUTED
);
return false;
}
if (
4840e: 4a80 tstl %d0 <== NOT EXECUTED
48410: 665e bnes 48470 <_Heap_Walk+0x246> <== 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;
48412: 70fe moveq #-2,%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
48414: 7601 moveq #1,%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;
48416: c0a8 0004 andl %a0@(4),%d0 <== 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: c6b0 0804 andl %a0@(00000004,%d0:l),%d3 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4841e: 67c2 beqs 483e2 <_Heap_Walk+0x1b8> <== NOT EXECUTED
(*printer)(
48420: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48422: 4879 0005 e734 pea 5e734 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48428: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4842c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4842e: 4e95 jsr %a5@ <== NOT EXECUTED
48430: 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;
48434: 4200 clrb %d0 <== NOT EXECUTED
48436: 6000 ff10 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4843a: 2049 moveal %a1,%a0 <== 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)(
4843c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4843e: 4879 0005 e6e4 pea 5e6e4 <_Status_Object_name_errors_to_status+0x1e6><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48444: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48448: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4844a: 4e95 jsr %a5@ <== NOT EXECUTED
4844c: 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;
48450: 4200 clrb %d0 <== NOT EXECUTED
48452: 6000 fef4 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
(*printer)(
48456: 4879 0005 e672 pea 5e672 <_Status_Object_name_errors_to_status+0x174><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4845c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48460: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48462: 4e95 jsr %a5@ <== NOT EXECUTED
48464: 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;
48468: 4200 clrb %d0 <== NOT EXECUTED
4846a: 6000 fe90 braw 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED
);
return false;
}
if (
4846e: 2049 moveal %a1,%a0 <== NOT EXECUTED
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
48470: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48472: 4879 0005 e704 pea 5e704 <_Status_Object_name_errors_to_status+0x206><== 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 fec0 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
4848a: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4848e: 282e fff0 movel %fp@(-16),%d4 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48492: 2844 moveal %d4,%a4 <== NOT EXECUTED
48494: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
48498: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4849c: 2d4b ffec movel %a3,%fp@(-20) <== NOT EXECUTED
484a0: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
484a4: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED
484a8: 2d47 fff0 movel %d7,%fp@(-16) <== 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;
484ac: 74fe moveq #-2,%d2 <== NOT EXECUTED
484ae: 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);
484b0: 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;
484b4: b7c1 cmpal %d1,%a3 <== NOT EXECUTED
484b6: 657e bcss 48536 <_Heap_Walk+0x30c> <== NOT EXECUTED
484b8: b7ea 0024 cmpal %a2@(36),%a3 <== NOT EXECUTED
484bc: 6278 bhis 48536 <_Heap_Walk+0x30c> <== 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;
484be: b9ee fff0 cmpal %fp@(-16),%a4 <== NOT EXECUTED
484c2: 56c7 sne %d7 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
484c4: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
484c8: 2002 movel %d2,%d0 <== NOT EXECUTED
484ca: 3247 moveaw %d7,%a1 <== NOT EXECUTED
484cc: 4c41 0007 remul %d1,%d7,%d0 <== NOT EXECUTED
484d0: 2009 movel %a1,%d0 <== NOT EXECUTED
484d2: 4480 negl %d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
484d4: 4a87 tstl %d7 <== NOT EXECUTED
484d6: 6704 beqs 484dc <_Heap_Walk+0x2b2> <== NOT EXECUTED
484d8: 4a00 tstb %d0 <== NOT EXECUTED
484da: 667c bnes 48558 <_Heap_Walk+0x32e> <== NOT EXECUTED
);
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
484dc: b486 cmpl %d6,%d2 <== NOT EXECUTED
484de: 6406 bccs 484e6 <_Heap_Walk+0x2bc> <== NOT EXECUTED
484e0: 4a00 tstb %d0 <== NOT EXECUTED
484e2: 6600 008e bnew 48572 <_Heap_Walk+0x348> <== NOT EXECUTED
);
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
484e6: b7cc cmpal %a4,%a3 <== NOT EXECUTED
484e8: 6206 bhis 484f0 <_Heap_Walk+0x2c6> <== NOT EXECUTED
484ea: 4a00 tstb %d0 <== NOT EXECUTED
484ec: 6600 00a8 bnew 48596 <_Heap_Walk+0x36c> <== 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;
484f0: 7001 moveq #1,%d0 <== NOT EXECUTED
484f2: 7201 moveq #1,%d1 <== NOT EXECUTED
484f4: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
484f8: c681 andl %d1,%d3 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
484fa: 4a80 tstl %d0 <== NOT EXECUTED
484fc: 6700 00cc beqw 485ca <_Heap_Walk+0x3a0> <== NOT EXECUTED
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
48500: 4a83 tstl %d3 <== NOT EXECUTED
48502: 6700 00ac beqw 485b0 <_Heap_Walk+0x386> <== NOT EXECUTED
(*printer)(
48506: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48508: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4850a: 4879 0005 e8d9 pea 5e8d9 <_Status_Object_name_errors_to_status+0x3db><== NOT EXECUTED
48510: 42a7 clrl %sp@- <== NOT EXECUTED
48512: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48514: 4e95 jsr %a5@ <== NOT EXECUTED
48516: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
4851a: b7c4 cmpal %d4,%a3 <== NOT EXECUTED
4851c: 6700 fd44 beqw 48262 <_Heap_Walk+0x38> <== NOT EXECUTED
48520: 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;
48524: 74fe moveq #-2,%d2 <== NOT EXECUTED
48526: 284b moveal %a3,%a4 <== NOT EXECUTED
48528: c483 andl %d3,%d2 <== NOT EXECUTED
4852a: 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);
4852e: 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;
48532: b7c1 cmpal %d1,%a3 <== NOT EXECUTED
48534: 6482 bccs 484b8 <_Heap_Walk+0x28e> <== 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)(
48536: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48538: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4853a: 4879 0005 e782 pea 5e782 <_Status_Object_name_errors_to_status+0x284><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48540: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48544: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48546: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48548: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4854c: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4854e: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
48554: 4e5e unlk %fp <== NOT EXECUTED
48556: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
48558: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4855a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4855c: 4879 0005 e7af pea 5e7af <_Status_Object_name_errors_to_status+0x2b1><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48562: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48566: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48568: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
4856a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4856e: 4200 clrb %d0 <== NOT EXECUTED
48570: 60dc bras 4854e <_Heap_Walk+0x324> <== NOT EXECUTED
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
(*printer)(
48572: 2f06 movel %d6,%sp@- <== NOT EXECUTED
48574: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48576: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48578: 4879 0005 e7dd pea 5e7dd <_Status_Object_name_errors_to_status+0x2df><== NOT EXECUTED
4857e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48582: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48584: 4e95 jsr %a5@ <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
48586: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4858a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
48590: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48592: 4e5e unlk %fp <== NOT EXECUTED
48594: 4e75 rts <== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48596: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48598: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4859a: 4879 0005 e808 pea 5e808 <_Status_Object_name_errors_to_status+0x30a><== NOT EXECUTED
485a0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
485a4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
485a6: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
485a8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
485ac: 4200 clrb %d0 <== NOT EXECUTED
485ae: 609e bras 4854e <_Heap_Walk+0x324> <== NOT EXECUTED
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
485b0: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
485b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
485b4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
485b6: 4879 0005 e8f0 pea 5e8f0 <_Status_Object_name_errors_to_status+0x3f2><== NOT EXECUTED
485bc: 42a7 clrl %sp@- <== NOT EXECUTED
485be: 2f05 movel %d5,%sp@- <== NOT EXECUTED
485c0: 4e95 jsr %a5@ <== NOT EXECUTED
485c2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
485c6: 6000 ff52 braw 4851a <_Heap_Walk+0x2f0> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485ca: 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)(
485ce: 43f9 0005 e528 lea 5e528 <_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 ?
485d4: 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)(
485d8: b2aa 000c cmpl %a2@(12),%d1 <== NOT EXECUTED
485dc: 670a beqs 485e8 <_Heap_Walk+0x3be> <== 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)" : "")
485de: 43f9 0005 e470 lea 5e470 <rtems_filesystem_default_pathconf+0xb4>,%a1<== NOT EXECUTED
485e4: b28a cmpl %a2,%d1 <== NOT EXECUTED
485e6: 6764 beqs 4864c <_Heap_Walk+0x422> <== 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 ?
485e8: 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)(
485ec: 41f9 0005 e541 lea 5e541 <_Status_Object_name_errors_to_status+0x43>,%a0<== NOT EXECUTED
485f2: b087 cmpl %d7,%d0 <== NOT EXECUTED
485f4: 670a beqs 48600 <_Heap_Walk+0x3d6> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
485f6: 41f9 0005 e470 lea 5e470 <rtems_filesystem_default_pathconf+0xb4>,%a0<== NOT EXECUTED
485fc: b08a cmpl %a2,%d0 <== NOT EXECUTED
485fe: 6754 beqs 48654 <_Heap_Walk+0x42a> <== 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)(
48600: 2f09 movel %a1,%sp@- <== NOT EXECUTED
48602: 2f01 movel %d1,%sp@- <== NOT EXECUTED
48604: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48606: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48608: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4860a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4860c: 4879 0005 e83c pea 5e83c <_Status_Object_name_errors_to_status+0x33e><== NOT EXECUTED
48612: 42a7 clrl %sp@- <== NOT EXECUTED
48614: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48616: 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 ) {
48618: 2213 movel %a3@,%d1 <== NOT EXECUTED
4861a: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
4861e: b282 cmpl %d2,%d1 <== NOT EXECUTED
48620: 663a bnes 4865c <_Heap_Walk+0x432> <== NOT EXECUTED
);
return false;
}
if ( !prev_used ) {
48622: 4a83 tstl %d3 <== NOT EXECUTED
48624: 6776 beqs 4869c <_Heap_Walk+0x472> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48626: 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 ) {
4862a: b1ca cmpal %a2,%a0 <== NOT EXECUTED
4862c: 6754 beqs 48682 <_Heap_Walk+0x458> <== NOT EXECUTED
if ( free_block == block ) {
4862e: b1cc cmpal %a4,%a0 <== NOT EXECUTED
48630: 6700 fee8 beqw 4851a <_Heap_Walk+0x2f0> <== NOT EXECUTED
48634: 2e2e fff0 movel %fp@(-16),%d7 <== NOT EXECUTED
return true;
}
free_block = free_block->next;
48638: 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 ) {
4863c: b1ca cmpal %a2,%a0 <== NOT EXECUTED
4863e: 6742 beqs 48682 <_Heap_Walk+0x458> <== NOT EXECUTED
if ( free_block == block ) {
48640: b1cc cmpal %a4,%a0 <== NOT EXECUTED
48642: 66f4 bnes 48638 <_Heap_Walk+0x40e> <== NOT EXECUTED
48644: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED
48648: 6000 fed0 braw 4851a <_Heap_Walk+0x2f0> <== 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)" : "")
4864c: 43f9 0005 e537 lea 5e537 <_Status_Object_name_errors_to_status+0x39>,%a1<== NOT EXECUTED
48652: 6094 bras 485e8 <_Heap_Walk+0x3be> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
48654: 41f9 0005 e551 lea 5e551 <_Status_Object_name_errors_to_status+0x53>,%a0<== NOT EXECUTED
4865a: 60a4 bras 48600 <_Heap_Walk+0x3d6> <== NOT EXECUTED
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
(*printer)(
4865c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4865e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
48660: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48662: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48664: 4879 0005 e871 pea 5e871 <_Status_Object_name_errors_to_status+0x373><== NOT EXECUTED
4866a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4866e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48670: 4e95 jsr %a5@ <== NOT EXECUTED
48672: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48676: 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;
4867c: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4867e: 4e5e unlk %fp <== NOT EXECUTED
48680: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48682: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48684: 4879 0005 e915 pea 5e915 <_Status_Object_name_errors_to_status+0x417><== NOT EXECUTED
4868a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4868e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48690: 4e95 jsr %a5@ <== NOT EXECUTED
48692: 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;
48696: 4200 clrb %d0 <== NOT EXECUTED
48698: 6000 fcae braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !prev_used ) {
(*printer)(
4869c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4869e: 4879 0005 e8aa pea 5e8aa <_Status_Object_name_errors_to_status+0x3ac><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
486a4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
486a8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
486aa: 4e95 jsr %a5@ <== NOT EXECUTED
486ac: 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;
486b0: 4200 clrb %d0 <== NOT EXECUTED
486b2: 6000 fc94 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( free_block->prev != prev_block ) {
(*printer)(
486b6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
486b8: 2f09 movel %a1,%sp@- <== NOT EXECUTED
486ba: 4879 0005 e750 pea 5e750 <_Status_Object_name_errors_to_status+0x252><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
486c0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
486c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
486c6: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
486c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
486cc: 4200 clrb %d0 <== NOT EXECUTED
486ce: 6000 fe7e braw 4854e <_Heap_Walk+0x324> <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
486d2: 2049 moveal %a1,%a0 <== NOT EXECUTED
(*printer)(
486d4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
486d6: 4879 0005 e734 pea 5e734 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
486dc: 6000 fd4a braw 48428 <_Heap_Walk+0x1fe> <== 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 ) {
486e0: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
486e4: 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 ) {
486e6: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
486ea: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
486ee: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
486f2: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED
486f6: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED
486fa: 6000 fdb0 braw 484ac <_Heap_Walk+0x282> <== NOT EXECUTED
...
000481d4 <_Heap_Walk_print>:
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
481d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481d8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
va_list ap;
if ( error ) {
481dc: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED
481e0: 6624 bnes 48206 <_Heap_Walk_print+0x32> <== NOT EXECUTED
printk( "FAIL[%d]: ", source );
} else {
printk( "PASS[%d]: ", source );
481e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
481e4: 4879 0005 e51d pea 5e51d <_Status_Object_name_errors_to_status+0x1f><== NOT EXECUTED
481ea: 4eb9 0004 42a0 jsr 442a0 <printk> <== NOT EXECUTED
481f0: 508f addql #8,%sp <== NOT EXECUTED
}
va_start( ap, fmt );
vprintk( fmt, ap );
481f2: 486e 0014 pea %fp@(20) <== NOT EXECUTED
481f6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
481fa: 4eb9 0004 60bc jsr 460bc <vprintk> <== NOT EXECUTED
va_end( ap );
48200: 508f addql #8,%sp <== NOT EXECUTED
}
48202: 4e5e unlk %fp <== NOT EXECUTED
48204: 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 );
48206: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48208: 4879 0005 e512 pea 5e512 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED
4820e: 4eb9 0004 42a0 jsr 442a0 <printk> <== NOT EXECUTED
48214: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "PASS[%d]: ", source );
}
va_start( ap, fmt );
vprintk( fmt, ap );
48216: 486e 0014 pea %fp@(20) <== NOT EXECUTED
4821a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4821e: 4eb9 0004 60bc jsr 460bc <vprintk> <== NOT EXECUTED
va_end( ap );
48224: 508f addql #8,%sp <== NOT EXECUTED
}
48226: 4e5e unlk %fp <== NOT EXECUTED
000481cc <_Heap_Walk_print_nothing>:
int source,
bool error,
const char *fmt,
...
)
{
481cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */
}
481d0: 4e5e unlk %fp <== NOT EXECUTED
00046c5a <_IO_Initialize_all_drivers>:
*
* Output Parameters: NONE
*/
void _IO_Initialize_all_drivers( void )
{
46c5a: 4e56 0000 linkw %fp,#0
46c5e: 2f0a movel %a2,%sp@-
46c60: 2f02 movel %d2,%sp@-
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c62: 4ab9 0006 0512 tstl 60512 <_IO_Number_of_drivers>
46c68: 671e beqs 46c88 <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN
46c6a: 4282 clrl %d2
46c6c: 45f9 0004 c390 lea 4c390 <rtems_io_initialize>,%a2
(void) rtems_io_initialize( major, 0, NULL );
46c72: 42a7 clrl %sp@-
46c74: 42a7 clrl %sp@-
46c76: 2f02 movel %d2,%sp@-
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c78: 5282 addql #1,%d2
(void) rtems_io_initialize( major, 0, NULL );
46c7a: 4e92 jsr %a2@
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c7c: 4fef 000c lea %sp@(12),%sp
46c80: b4b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d2
46c86: 65ea bcss 46c72 <_IO_Initialize_all_drivers+0x18>
(void) rtems_io_initialize( major, 0, NULL );
}
46c88: 242e fff8 movel %fp@(-8),%d2
46c8c: 246e fffc moveal %fp@(-4),%a2
46c90: 4e5e unlk %fp <== NOT EXECUTED
00046bc0 <_IO_Manager_initialization>:
* workspace.
*
*/
void _IO_Manager_initialization(void)
{
46bc0: 4e56 fff0 linkw %fp,#-16
46bc4: 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;
46bc8: 2639 0005 e3fa movel 5e3fa <Configuration+0x36>,%d3
drivers_in_table = Configuration.number_of_device_drivers;
46bce: 2439 0005 e3f6 movel 5e3f6 <Configuration+0x32>,%d2
number_of_drivers = Configuration.maximum_drivers;
46bd4: 2839 0005 e3f2 movel 5e3f2 <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 )
46bda: b882 cmpl %d2,%d4
46bdc: 6366 blss 46c44 <_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(
46bde: 2004 movel %d4,%d0
46be0: 2a04 movel %d4,%d5
46be2: e788 lsll #3,%d0
46be4: eb8d lsll #5,%d5
46be6: 9a80 subl %d0,%d5
46be8: 2f05 movel %d5,%sp@-
46bea: 4eb9 0004 9b86 jsr 49b86 <_Workspace_Allocate_or_fatal_error>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
46bf0: 2f05 movel %d5,%sp@-
46bf2: 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 *)
46bf4: 23c0 0006 0516 movel %d0,60516 <_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(
46bfa: 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;
46bfc: 23c4 0006 0512 movel %d4,60512 <_IO_Number_of_drivers>
memset(
46c02: 4eb9 0004 f200 jsr 4f200 <memset>
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c08: 4fef 0010 lea %sp@(16),%sp
46c0c: 4a82 tstl %d2
46c0e: 672a beqs 46c3a <_IO_Manager_initialization+0x7a><== NEVER TAKEN
46c10: 2839 0006 0516 movel 60516 <_IO_Driver_address_table>,%d4
46c16: 4280 clrl %d0
46c18: 4281 clrl %d1
_IO_Driver_address_table[index] = driver_table[index];
46c1a: 2243 moveal %d3,%a1
46c1c: 2044 moveal %d4,%a0
46c1e: d3c0 addal %d0,%a1
46c20: 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++ )
46c22: 5281 addql #1,%d1
46c24: 0680 0000 0018 addil #24,%d0
_IO_Driver_address_table[index] = driver_table[index];
46c2a: 20d9 movel %a1@+,%a0@+
46c2c: 20d9 movel %a1@+,%a0@+
46c2e: 20d9 movel %a1@+,%a0@+
46c30: 20d9 movel %a1@+,%a0@+
46c32: 20d9 movel %a1@+,%a0@+
46c34: 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++ )
46c36: b282 cmpl %d2,%d1
46c38: 65e0 bcss 46c1a <_IO_Manager_initialization+0x5a>
_IO_Driver_address_table[index] = driver_table[index];
}
46c3a: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c40: 4e5e unlk %fp
46c42: 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;
46c44: 23c3 0006 0516 movel %d3,60516 <_IO_Driver_address_table>
_IO_Number_of_drivers = number_of_drivers;
46c4a: 23c2 0006 0512 movel %d2,60512 <_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];
}
46c50: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c56: 4e5e unlk %fp <== NOT EXECUTED
00047810 <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
47810: 4e56 fffc linkw %fp,#-4
47814: 206e 0010 moveal %fp@(16),%a0
47818: 2f02 movel %d2,%sp@-
4781a: 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 );
4781e: 4282 clrl %d2
47820: 1401 moveb %d1,%d2
47822: 2242 moveal %d2,%a1
47824: 2f08 movel %a0,%sp@-
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
47826: 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 );
4782a: 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;
4782c: 13c1 0005 fd32 moveb %d1,5fd32 <_Internal_errors_What_happened+0x4>
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
47832: 2d48 fffc movel %a0,%fp@(-4)
bool is_internal,
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
47836: 23c0 0005 fd2e movel %d0,5fd2e <_Internal_errors_What_happened>
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
4783c: 23c8 0005 fd34 movel %a0,5fd34 <_Internal_errors_What_happened+0x6>
_User_extensions_Fatal( the_source, is_internal, the_error );
47842: 2f00 movel %d0,%sp@-
47844: 4eb9 0004 9706 jsr 49706 <_User_extensions_Fatal>
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
4784a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
4784e: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED
47852: 2409 movel %a1,%d2 <== NOT EXECUTED
47854: 40c0 movew %sr,%d0 <== NOT EXECUTED
47856: 8082 orl %d2,%d0 <== NOT EXECUTED
47858: 46c0 movew %d0,%sr <== NOT EXECUTED
4785a: 2008 movel %a0,%d0 <== NOT EXECUTED
4785c: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED
47862: 4ac8 halt <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
47864: 7005 moveq #5,%d0 <== NOT EXECUTED
47866: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4786a: 23c0 0005 fde4 movel %d0,5fde4 <_System_state_Current> <== NOT EXECUTED
47870: 60fe bras 47870 <_Internal_error_Occurred+0x60> <== NOT EXECUTED
...
00055598 <_Message_queue_Allocate>:
* Output parameters:
* the_message_queue - set if successful, NULL otherwise
*/
Message_queue_Control *_Message_queue_Allocate(void)
{
55598: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (Message_queue_Control *)
_Objects_Allocate(&_Message_queue_Information);
5559c: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED
555a2: 4eb9 0005 0dec jsr 50dec <_Objects_Allocate> <== NOT EXECUTED
}
555a8: 4e5e unlk %fp <== NOT EXECUTED
0004ef94 <_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];
4ef94: 41f9 0006 844c lea 6844c <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
uint32_t status
)
{
4ef9a: 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];
}
4ef9e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4efa2: 4e5e unlk %fp <== NOT EXECUTED
4efa4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004c900 <_Objects_API_maximum_class>:
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c900: 7202 moveq #2,%d1
4c902: 4e56 0000 linkw %fp,#0
4c906: 202e 0008 movel %fp@(8),%d0
4c90a: 5380 subql #1,%d0
4c90c: b280 cmpl %d0,%d1
4c90e: 650e bcss 4c91e <_Objects_API_maximum_class+0x1e><== NEVER TAKEN
4c910: 41f9 0005 d994 lea 5d994 <CSWTCH.1>,%a0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c916: 4e5e unlk %fp
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c918: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c91c: 4e75 rts
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4c91e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4c920: 4e5e unlk %fp <== NOT EXECUTED
000478cc <_Objects_Allocate>:
*/
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
478cc: 4e56 fff0 linkw %fp,#-16
478d0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
478d4: 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 )
478d8: 4aaa 0014 tstl %a2@(20)
478dc: 660c bnes 478ea <_Objects_Allocate+0x1e> <== ALWAYS TAKEN
return NULL;
478de: 4280 clrl %d0 <== NOT EXECUTED
);
}
#endif
return the_object;
}
478e0: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
478e6: 4e5e unlk %fp
478e8: 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 );
478ea: 240a movel %a2,%d2
478ec: 0682 0000 001c addil #28,%d2
478f2: 47f9 0004 6f30 lea 46f30 <_Chain_Get>,%a3
478f8: 2f02 movel %d2,%sp@-
478fa: 4e93 jsr %a3@
if ( information->auto_extend ) {
478fc: 588f addql #4,%sp
478fe: 4a2a 0010 tstb %a2@(16)
47902: 67dc beqs 478e0 <_Objects_Allocate+0x14>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
47904: 4a80 tstl %d0
47906: 6738 beqs 47940 <_Objects_Allocate+0x74> <== NEVER TAKEN
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47908: 2040 moveal %d0,%a0
4790a: 4281 clrl %d1
4790c: 4283 clrl %d3
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
4790e: 4282 clrl %d2
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47910: 362a 0008 movew %a2@(8),%d3
47914: 3228 000a movew %a0@(10),%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47918: 342a 0012 movew %a2@(18),%d2
information->inactive_per_block[ block ]--;
4791c: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47920: 9283 subl %d3,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47922: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
information->inactive--;
47926: 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 ]--;
4792a: e589 lsll #2,%d1
information->inactive--;
4792c: 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 ]--;
4792e: d1c1 addal %d1,%a0
47930: 5390 subql #1,%a0@
information->inactive--;
47932: 3549 0028 movew %a1,%a2@(40)
);
}
#endif
return the_object;
}
47936: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4793c: 4e5e unlk %fp
4793e: 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 );
47940: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47942: 4eb9 0004 7988 jsr 47988 <_Objects_Extend_information> <== NOT EXECUTED
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
47948: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4794a: 4e93 jsr %a3@ <== NOT EXECUTED
}
if ( the_object ) {
4794c: 508f addql #8,%sp <== NOT EXECUTED
4794e: 4a80 tstl %d0 <== NOT EXECUTED
47950: 66b6 bnes 47908 <_Objects_Allocate+0x3c> <== NOT EXECUTED
);
}
#endif
return the_object;
}
47952: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47958: 4e5e unlk %fp <== NOT EXECUTED
0004795c <_Objects_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
4795c: 4280 clrl %d0
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
4795e: 4e56 0000 linkw %fp,#0
47962: 226e 000c moveal %fp@(12),%a1
47966: 206e 0008 moveal %fp@(8),%a0
4796a: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4796c: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
47970: 3029 000a movew %a1@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47974: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
47978: 245f moveal %sp@+,%a2
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
4797a: 2d49 000c movel %a1,%fp@(12)
}
4797e: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
47980: 4ef9 0004 7f0c jmp 47f0c <_Objects_Namespace_remove>
...
00047988 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
47988: 4e56 ffcc linkw %fp,#-52
4798c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
47990: 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 );
47994: 4285 clrl %d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47996: 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 );
4799a: 3a2a 0008 movew %a2@(8),%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
4799e: 4a88 tstl %a0
479a0: 6700 0232 beqw 47bd4 <_Objects_Extend_information+0x24c>
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
479a4: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED
479a8: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED
479ac: 3801 movew %d1,%d4 <== NOT EXECUTED
479ae: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
479b4: 88c0 divuw %d0,%d4 <== NOT EXECUTED
479b6: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
for ( ; block < block_count; block++ ) {
479bc: 6700 022c beqw 47bea <_Objects_Extend_information+0x262><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
479c0: 4a90 tstl %a0@ <== NOT EXECUTED
479c2: 6700 0236 beqw 47bfa <_Objects_Extend_information+0x272><== NOT EXECUTED
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
479c6: 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 );
479c8: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
479ca: 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 ) {
479cc: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
break;
} else
index_base += information->allocation_size;
479d2: 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++ ) {
479d4: 5282 addql #1,%d2 <== NOT EXECUTED
479d6: b484 cmpl %d4,%d2 <== NOT EXECUTED
479d8: 6400 01a6 bccw 47b80 <_Objects_Extend_information+0x1f8><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
479dc: 4a98 tstl %a0@+ <== NOT EXECUTED
479de: 66f2 bnes 479d2 <_Objects_Extend_information+0x4a><== NOT EXECUTED
do_extend = false;
479e0: 4207 clrb %d7 <== NOT EXECUTED
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
479e2: 0281 0000 ffff andil #65535,%d1
479e8: 2641 moveal %d1,%a3
479ea: 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 ) {
479ec: b7fc 0000 ffff cmpal #65535,%a3
479f2: 6200 0182 bhiw 47b76 <_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;
479f6: 41ea 0014 lea %a2@(20),%a0
479fa: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
479fe: 4a2a 0010 tstb %a2@(16)
47a02: 6700 0182 beqw 47b86 <_Objects_Extend_information+0x1fe>
new_object_block = _Workspace_Allocate( block_size );
47a06: 2f00 movel %d0,%sp@-
47a08: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
if ( !new_object_block )
47a0e: 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 );
47a10: 2c00 movel %d0,%d6
if ( !new_object_block )
47a12: 6700 0162 beqw 47b76 <_Objects_Extend_information+0x1ee>
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
47a16: 4a07 tstb %d7
47a18: 6700 00c4 beqw 47ade <_Objects_Extend_information+0x156>
*/
/*
* Up the block count and maximum
*/
block_count++;
47a1c: 2a44 moveal %d4,%a5
47a1e: 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 *));
47a20: 200b movel %a3,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a22: 41f5 da00 lea %a5@(00000000,%a5:l:2),%a0
((maximum + minimum_index) * sizeof(Objects_Control *));
47a26: d088 addl %a0,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a28: d085 addl %d5,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
47a2a: 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 );
47a2c: 2f00 movel %d0,%sp@-
47a2e: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
if ( !object_blocks ) {
47a34: 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 );
47a36: 2840 moveal %d0,%a4
if ( !object_blocks ) {
47a38: 4a80 tstl %d0
47a3a: 6700 01ce beqw 47c0a <_Objects_Extend_information+0x282>
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a3e: 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 ) {
47a40: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a42: 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 ) {
47a44: 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);
47a48: 4bf4 7800 lea %a4@(00000000,%d7:l),%a5
47a4c: de8d addl %a5,%d7
47a4e: b085 cmpl %d5,%d0
47a50: 6200 0144 bhiw 47b96 <_Objects_Extend_information+0x20e>
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47a54: 4a85 tstl %d5
47a56: 670c beqs 47a64 <_Objects_Extend_information+0xdc><== NEVER TAKEN
47a58: 2047 moveal %d7,%a0
47a5a: 4280 clrl %d0
local_table[ index ] = NULL;
47a5c: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47a5e: 5280 addql #1,%d0
47a60: b085 cmpl %d5,%d0
47a62: 65f8 bcss 47a5c <_Objects_Extend_information+0xd4><== NEVER TAKEN
47a64: 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 );
47a66: 4281 clrl %d1
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
47a68: 42b4 4800 clrl %a4@(00000000,%d4:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a6c: 322a 0012 movew %a2@(18),%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
47a70: 42b5 4800 clrl %a5@(00000000,%d4:l)
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a74: 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 ;
47a76: b283 cmpl %d3,%d1
47a78: 6310 blss 47a8a <_Objects_Extend_information+0x102><== NEVER TAKEN
47a7a: 2247 moveal %d7,%a1
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47a7c: 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 ;
47a7e: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
47a82: 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++ ) {
47a84: 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 ;
47a86: b280 cmpl %d0,%d1
47a88: 62f8 bhis 47a82 <_Objects_Extend_information+0xfa>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
47a8a: 203c 0000 0700 movel #1792,%d0
47a90: 40c4 movew %sr,%d4
47a92: 8084 orl %d4,%d0
47a94: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47a96: 2012 movel %a2@,%d0
47a98: 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(
47a9a: 4281 clrl %d1
47a9c: eba8 lsll %d5,%d0
47a9e: 4285 clrl %d5
47aa0: 3a0b movew %a3,%d5
47aa2: 322a 0004 movew %a2@(4),%d1
47aa6: 08c0 0010 bset #16,%d0
47aaa: 2245 moveal %d5,%a1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47aac: 7a1b moveq #27,%d5
47aae: eba9 lsll %d5,%d1
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
47ab0: 206a 002e moveal %a2@(46),%a0
47ab4: 8081 orl %d1,%d0
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47ab6: 2209 movel %a1,%d1
47ab8: 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;
47aba: 354b 000e movew %a3,%a2@(14)
_ISR_Disable( level );
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
47abe: 254c 002e movel %a4,%a2@(46)
information->inactive_per_block = inactive_per_block;
47ac2: 254d 002a movel %a5,%a2@(42)
47ac6: 2541 000a movel %d1,%a2@(10)
information->local_table = local_table;
47aca: 2547 0018 movel %d7,%a2@(24)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
47ace: 46c4 movew %d4,%sr
if ( old_tables )
47ad0: 4a88 tstl %a0
47ad2: 670a beqs 47ade <_Objects_Extend_information+0x156><== ALWAYS TAKEN
_Workspace_Free( old_tables );
47ad4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47ad6: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
47adc: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47ade: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47ae2: 4280 clrl %d0
47ae4: 280e movel %fp,%d4
47ae6: 0684 ffff fff4 addil #-12,%d4
47aec: 47f9 0004 6f30 lea 46f30 <_Chain_Get>,%a3
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47af2: 2a0a movel %a2,%d5
47af4: 0685 0000 001c addil #28,%d5
47afa: 49f9 0004 6ed0 lea 46ed0 <_Chain_Append>,%a4
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b00: e58a lsll #2,%d2
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b02: 302a 0012 movew %a2@(18),%d0
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b06: 2186 2800 movel %d6,%a0@(00000000,%d2:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b0a: 2f2a 0014 movel %a2@(20),%sp@-
47b0e: 2f00 movel %d0,%sp@-
47b10: 2f06 movel %d6,%sp@-
47b12: 2f04 movel %d4,%sp@-
47b14: 4eb9 0004 c3d8 jsr 4c3d8 <_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 ) {
47b1a: 4fef 0010 lea %sp@(16),%sp
47b1e: 2f04 movel %d4,%sp@-
47b20: 4e93 jsr %a3@
47b22: 588f addql #4,%sp
47b24: 4a80 tstl %d0
47b26: 6734 beqs 47b5c <_Objects_Extend_information+0x1d4><== NEVER TAKEN
47b28: 2212 movel %a2@,%d1
47b2a: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
47b2c: 4286 clrl %d6
47b2e: 2040 moveal %d0,%a0
47b30: 3c2a 0004 movew %a2@(4),%d6
47b34: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b36: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b3a: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b3e: efae lsll %d7,%d6
47b40: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b42: 8283 orl %d3,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
47b44: 5283 addql #1,%d3
47b46: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47b4a: 2f00 movel %d0,%sp@-
47b4c: 2f05 movel %d5,%sp@-
47b4e: 4e94 jsr %a4@
index++;
47b50: 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 ) {
47b52: 2f04 movel %d4,%sp@-
47b54: 4e93 jsr %a3@
47b56: 588f addql #4,%sp
47b58: 4a80 tstl %d0
47b5a: 66cc bnes 47b28 <_Objects_Extend_information+0x1a0>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b5c: 4281 clrl %d1
47b5e: 302a 0012 movew %a2@(18),%d0
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47b62: 326a 0028 moveaw %a2@(40),%a1
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b66: 206a 002a moveal %a2@(42),%a0
47b6a: 3200 movew %d0,%d1
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47b6c: d089 addl %a1,%d0
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b6e: 2181 2800 movel %d1,%a0@(00000000,%d2:l)
information->inactive =
47b72: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47b76: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
47b7c: 4e5e unlk %fp
47b7e: 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;
47b80: 7e01 moveq #1,%d7 <== NOT EXECUTED
47b82: 6000 fe5e braw 479e2 <_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 );
47b86: 2f00 movel %d0,%sp@-
47b88: 4eb9 0004 9b86 jsr 49b86 <_Workspace_Allocate_or_fatal_error>
47b8e: 588f addql #4,%sp
47b90: 2c00 movel %d0,%d6
47b92: 6000 fe82 braw 47a16 <_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,
47b96: e58c lsll #2,%d4 <== NOT EXECUTED
47b98: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47b9a: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED
47b9e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47ba0: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
47ba6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47ba8: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED
47bac: 2f0d movel %a5,%sp@- <== NOT EXECUTED
47bae: 4eb9 0004 f190 jsr 4f190 <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 *) );
47bb4: 4280 clrl %d0 <== NOT EXECUTED
47bb6: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
47bba: 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,
47bbc: e58d lsll #2,%d5 <== NOT EXECUTED
47bbe: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47bc0: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
47bc4: 2f07 movel %d7,%sp@- <== NOT EXECUTED
47bc6: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
47bcc: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
47bd0: 6000 fe94 braw 47a66 <_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 )
47bd4: 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 );
47bd6: 2605 movel %d5,%d3
index_base = minimum_index;
block = 0;
47bd8: 4282 clrl %d2
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
47bda: 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 )
47bdc: 322a 000e movew %a2@(14),%d1
47be0: 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;
47be4: 7e01 moveq #1,%d7
47be6: 6000 fdfa braw 479e2 <_Objects_Extend_information+0x5a>
minimum_index = _Objects_Get_index( information->minimum_id );
47bea: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47bec: 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++ ) {
47bee: 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;
47bf4: 7e01 moveq #1,%d7 <== NOT EXECUTED
47bf6: 6000 fdea braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
47bfa: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47bfc: 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 ) {
47bfe: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
47c04: 4207 clrb %d7 <== NOT EXECUTED
47c06: 6000 fdda braw 479e2 <_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 );
47c0a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
47c0c: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
return;
47c12: 588f addql #4,%sp <== NOT EXECUTED
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47c14: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
47c1a: 4e5e unlk %fp <== NOT EXECUTED
...
00047c20 <_Objects_Free>:
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
47c20: 4e56 fff0 linkw %fp,#-16
47c24: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
47c28: 266e 000c moveal %fp@(12),%a3
47c2c: 246e 0008 moveal %fp@(8),%a2
uint32_t allocation_size = information->allocation_size;
_Chain_Append( &information->Inactive, &the_object->Node );
47c30: 2f0b movel %a3,%sp@-
47c32: 486a 001c pea %a2@(28)
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47c36: 342a 0012 movew %a2@(18),%d2
_Chain_Append( &information->Inactive, &the_object->Node );
47c3a: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append>
if ( information->auto_extend ) {
47c40: 508f addql #8,%sp
47c42: 4a2a 0010 tstb %a2@(16)
47c46: 6740 beqs 47c88 <_Objects_Free+0x68> <== ALWAYS TAKEN
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47c48: 4280 clrl %d0 <== NOT EXECUTED
47c4a: 4283 clrl %d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c4c: 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 ) -
47c4e: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED
47c52: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c56: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
47c5a: 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 ) -
47c5e: 9083 subl %d3,%d0 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c60: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
information->inactive++;
47c64: 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;
47c68: 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 ]++;
47c6e: e588 lsll #2,%d0 <== NOT EXECUTED
information->inactive++;
47c70: 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 ) ) ) {
47c72: 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 ]++;
47c74: d1c0 addal %d0,%a0 <== NOT EXECUTED
47c76: 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 ) ) ) {
47c78: 4280 clrl %d0 <== NOT EXECUTED
47c7a: e28b lsrl #1,%d3 <== NOT EXECUTED
47c7c: d483 addl %d3,%d2 <== NOT EXECUTED
47c7e: 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++;
47c80: 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 ) ) ) {
47c84: b480 cmpl %d0,%d2 <== NOT EXECUTED
47c86: 650a bcss 47c92 <_Objects_Free+0x72> <== NOT EXECUTED
_Objects_Shrink_information( information );
}
}
}
47c88: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
47c8e: 4e5e unlk %fp
47c90: 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 );
47c92: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
}
47c96: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47c9c: 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 );
47c9e: 4ef9 0004 7fbc jmp 47fbc <_Objects_Shrink_information> <== NOT EXECUTED
00047d8c <_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;
47d8c: 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 ) {
47d8e: 4281 clrl %d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47d90: 4e56 fffc linkw %fp,#-4
47d94: 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;
47d98: 90a8 0006 subl %a0@(6),%d0
47d9c: d0ae 000c addl %fp@(12),%d0
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47da0: 2f0a movel %a2,%sp@-
47da2: 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 ) {
47da6: 3228 000e movew %a0@(14),%d1
47daa: b280 cmpl %d0,%d1
47dac: 6522 bcss 47dd0 <_Objects_Get+0x44> <== NEVER TAKEN
47dae: 2239 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d1
47db4: 5281 addql #1,%d1
47db6: 23c1 0005 fc78 movel %d1,5fc78 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( (the_object = information->local_table[ index ]) != NULL ) {
47dbc: 2068 0018 moveal %a0@(24),%a0
47dc0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47dc4: 6718 beqs 47dde <_Objects_Get+0x52> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
47dc6: 4292 clrl %a2@
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47dc8: 246e fff8 moveal %fp@(-8),%a2
47dcc: 4e5e unlk %fp
47dce: 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;
47dd0: 7001 moveq #1,%d0 <== NOT EXECUTED
47dd2: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47dd4: 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;
47dd8: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
47dda: 4e5e unlk %fp <== NOT EXECUTED
47ddc: 4e75 rts <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
47dde: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
47de2: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
*location = OBJECTS_ERROR;
return NULL;
47de8: 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;
47dec: 7201 moveq #1,%d1 <== NOT EXECUTED
47dee: 2481 movel %d1,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47df0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47df4: 4e5e unlk %fp <== NOT EXECUTED
00047cd0 <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
47cd0: 4e56 0000 linkw %fp,#0
47cd4: 2f02 movel %d2,%sp@-
47cd6: 342e 000e movew %fp@(14),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
47cda: 660a bnes 47ce6 <_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;
47cdc: 4280 clrl %d0 <== NOT EXECUTED
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
47cde: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47ce2: 4e5e unlk %fp <== NOT EXECUTED
47ce4: 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 );
47ce6: 2f2e 0008 movel %fp@(8),%sp@-
47cea: 4eb9 0004 c900 jsr 4c900 <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
47cf0: 588f addql #4,%sp
47cf2: 4a80 tstl %d0
47cf4: 67e6 beqs 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
47cf6: 0282 0000 ffff andil #65535,%d2
47cfc: b480 cmpl %d0,%d2
47cfe: 62dc bhis 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( !_Objects_Information_table[ the_api ] )
47d00: 202e 0008 movel %fp@(8),%d0
47d04: 41f9 0005 fc34 lea 5fc34 <_Objects_Information_table>,%a0
47d0a: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0
47d0e: 4a88 tstl %a0
47d10: 67ca beqs 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
47d12: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
if ( !info )
47d16: 67c6 beqs 47cde <_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;
47d18: 2040 moveal %d0,%a0
47d1a: 4a68 000e tstw %a0@(14)
47d1e: 56c1 sne %d1
#endif
return info;
}
47d20: 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;
47d24: 49c1 extbl %d1
#endif
return info;
}
47d26: 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;
47d28: c081 andl %d1,%d0 <== NOT EXECUTED
#endif
return info;
}
00047d2c <_Objects_Get_isr_disable>:
{
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d2c: 7001 moveq #1,%d0
_ISR_Disable( level );
47d2e: 223c 0000 0700 movel #1792,%d1
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d34: 4e56 0000 linkw %fp,#0
47d38: 206e 0008 moveal %fp@(8),%a0
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d3c: 90a8 0006 subl %a0@(6),%d0
47d40: d0ae 000c addl %fp@(12),%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d44: 2f02 movel %d2,%sp@-
47d46: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
_ISR_Disable( level );
47d4a: 40c2 movew %sr,%d2
47d4c: 8282 orl %d2,%d1
47d4e: 46c1 movew %d1,%sr
if ( information->maximum >= index ) {
47d50: 4281 clrl %d1
47d52: 3228 000e movew %a0@(14),%d1
47d56: b280 cmpl %d0,%d1
47d58: 6518 bcss 47d72 <_Objects_Get_isr_disable+0x46> <== NEVER TAKEN
if ( (the_object = information->local_table[ index ]) != NULL ) {
47d5a: 2068 0018 moveal %a0@(24),%a0
47d5e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47d62: 671c beqs 47d80 <_Objects_Get_isr_disable+0x54> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
*level_p = level;
47d64: 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;
47d68: 4291 clrl %a1@
*level_p = level;
47d6a: 2082 movel %d2,%a0@
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d6c: 241f movel %sp@+,%d2
47d6e: 4e5e unlk %fp
47d70: 4e75 rts
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
47d72: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47d74: 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;
47d76: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
47d78: 241f movel %sp@+,%d2 <== NOT EXECUTED
47d7a: 4e5e unlk %fp <== NOT EXECUTED
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
47d7c: 2281 movel %d1,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d7e: 4e75 rts <== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
*level_p = level;
return the_object;
}
_ISR_Enable( level );
47d80: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47d82: 7401 moveq #1,%d2 <== NOT EXECUTED
47d84: 2282 movel %d2,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d86: 241f movel %sp@+,%d2 <== NOT EXECUTED
47d88: 4e5e unlk %fp <== NOT EXECUTED
0004978c <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
4978c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
49790: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
49794: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
49798: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
4979c: 4a83 tstl %d3 <== NOT EXECUTED
4979e: 660e bnes 497ae <_Objects_Get_name_as_string+0x22><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
497a0: 4282 clrl %d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
497a2: 2002 movel %d2,%d0 <== NOT EXECUTED
497a4: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED
497aa: 4e5e unlk %fp <== NOT EXECUTED
497ac: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( length == 0 )
return NULL;
if ( name == NULL )
497ae: 4a82 tstl %d2 <== NOT EXECUTED
497b0: 67f0 beqs 497a2 <_Objects_Get_name_as_string+0x16><== NOT EXECUTED
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
497b2: 4aae 0008 tstl %fp@(8) <== NOT EXECUTED
497b6: 6600 009a bnew 49852 <_Objects_Get_name_as_string+0xc6><== NOT EXECUTED
497ba: 2079 0006 a6dc moveal 6a6dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
497c0: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
497c4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
497c6: 4eb9 0004 96a4 jsr 496a4 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
497cc: 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 );
497ce: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( !information )
497d0: 4a80 tstl %d0 <== NOT EXECUTED
497d2: 67cc beqs 497a0 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
497d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
497d8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
497da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
497dc: 4eb9 0004 9890 jsr 49890 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
497e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
497e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
497ea: 66b4 bnes 497a0 <_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 ) {
497ec: 4a2a 0032 tstb %a2@(50) <== NOT EXECUTED
497f0: 6768 beqs 4985a <_Objects_Get_name_as_string+0xce><== NOT EXECUTED
s = the_object->name.name_p;
497f2: 2040 moveal %d0,%a0 <== NOT EXECUTED
497f4: 2668 000c moveal %a0@(12),%a3 <== NOT EXECUTED
lname[ 4 ] = '\0';
s = lname;
}
d = name;
if ( s ) {
497f8: 4a8b tstl %a3 <== NOT EXECUTED
497fa: 674a beqs 49846 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
497fc: 5383 subql #1,%d3 <== NOT EXECUTED
497fe: 6746 beqs 49846 <_Objects_Get_name_as_string+0xba><== NOT EXECUTED
49800: 1013 moveb %a3@,%d0 <== NOT EXECUTED
49802: 6742 beqs 49846 <_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(
49804: 528b addql #1,%a3 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49806: 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(
49808: 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 : '*';
4980a: 4281 clrl %d1 <== NOT EXECUTED
4980c: 1200 moveb %d0,%d1 <== NOT EXECUTED
4980e: 2479 0006 0df4 moveal 60df4 <__ctype_ptr__>,%a2 <== NOT EXECUTED
49814: 1232 1801 moveb %a2@(00000001,%d1:l),%d1 <== NOT EXECUTED
49818: 49c1 extbl %d1 <== NOT EXECUTED
4981a: 0281 0000 0097 andil #151,%d1 <== NOT EXECUTED
49820: 6602 bnes 49824 <_Objects_Get_name_as_string+0x98><== NOT EXECUTED
49822: 702a moveq #42,%d0 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49824: 5288 addql #1,%a0 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
49826: 12c0 moveb %d0,%a1@+ <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49828: 2449 moveal %a1,%a2 <== NOT EXECUTED
4982a: b688 cmpl %a0,%d3 <== NOT EXECUTED
4982c: 6304 blss 49832 <_Objects_Get_name_as_string+0xa6><== NOT EXECUTED
4982e: 101b moveb %a3@+,%d0 <== NOT EXECUTED
49830: 66d8 bnes 4980a <_Objects_Get_name_as_string+0x7e><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
49832: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49834: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return name;
}
return NULL; /* unreachable path */
}
4983a: 2002 movel %d2,%d0 <== NOT EXECUTED
4983c: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED
49842: 4e5e unlk %fp <== NOT EXECUTED
49844: 4e75 rts <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49846: 2442 moveal %d2,%a2 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
49848: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4984a: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
49850: 60e8 bras 4983a <_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;
49852: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
49856: 6000 ff6c braw 497c4 <_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;
4985a: 2040 moveal %d0,%a0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
4985c: 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;
4985e: 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;
49862: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
49866: 2a00 movel %d0,%d5 <== NOT EXECUTED
49868: e2ad lsrl %d1,%d5 <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
4986a: 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;
4986c: 2800 movel %d0,%d4 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
4986e: e089 lsrl #8,%d1 <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
49870: 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;
49874: 4244 clrw %d4 <== NOT EXECUTED
49876: 4844 swap %d4 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
49878: 4200 clrb %d0 <== NOT EXECUTED
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
4987a: 1d45 fff7 moveb %d5,%fp@(-9) <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
4987e: 1d44 fff8 moveb %d4,%fp@(-8) <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
49882: 1d41 fff9 moveb %d1,%fp@(-7) <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
49886: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED
4988a: 6000 ff70 braw 497fc <_Objects_Get_name_as_string+0x70><== NOT EXECUTED
...
00047f94 <_Objects_Get_next>:
Objects_Information *information,
Objects_Id id,
Objects_Locations *location_p,
Objects_Id *next_id_p
)
{
47f94: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47f98: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
47f9c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
47fa0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
Objects_Control *object;
Objects_Id next_id;
if ( !information )
47fa4: 4a8a tstl %a2 <== NOT EXECUTED
47fa6: 660c bnes 47fb4 <_Objects_Get_next+0x20> <== NOT EXECUTED
if ( !location_p )
return NULL;
if ( !next_id_p )
return NULL;
47fa8: 4280 clrl %d0 <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47faa: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47fb0: 4e5e unlk %fp <== NOT EXECUTED
47fb2: 4e75 rts <== NOT EXECUTED
Objects_Id next_id;
if ( !information )
return NULL;
if ( !location_p )
47fb4: 4a8b tstl %a3 <== NOT EXECUTED
47fb6: 67f0 beqs 47fa8 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if ( !next_id_p )
47fb8: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
47fbc: 67ea beqs 47fa8 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
47fbe: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
47fc2: 663a bnes 47ffe <_Objects_Get_next+0x6a> <== NOT EXECUTED
next_id = information->minimum_id;
47fc4: 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);
47fc8: 49f9 0004 8024 lea 48024 <_Objects_Get>,%a4 <== NOT EXECUTED
else
next_id = id;
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
47fce: 4281 clrl %d1 <== NOT EXECUTED
47fd0: 4280 clrl %d0 <== NOT EXECUTED
47fd2: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED
47fd6: 3002 movew %d2,%d0 <== NOT EXECUTED
47fd8: b081 cmpl %d1,%d0 <== NOT EXECUTED
47fda: 622e bhis 4800a <_Objects_Get_next+0x76> <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47fdc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47fde: 2f02 movel %d2,%sp@- <== NOT EXECUTED
next_id++;
47fe0: 5282 addql #1,%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47fe2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47fe4: 4e94 jsr %a4@ <== NOT EXECUTED
next_id++;
} while (*location_p != OBJECTS_LOCAL);
47fe6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47fea: 4a93 tstl %a3@ <== NOT EXECUTED
47fec: 66e0 bnes 47fce <_Objects_Get_next+0x3a> <== NOT EXECUTED
*next_id_p = next_id;
47fee: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
47ff2: 2082 movel %d2,%a0@ <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47ff4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47ffa: 4e5e unlk %fp <== NOT EXECUTED
47ffc: 4e75 rts <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
next_id = information->minimum_id;
else
next_id = id;
47ffe: 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);
48002: 49f9 0004 8024 lea 48024 <_Objects_Get>,%a4 <== NOT EXECUTED
48008: 60c4 bras 47fce <_Objects_Get_next+0x3a> <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
4800a: 7401 moveq #1,%d2 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
4800c: 72ff moveq #-1,%d1 <== NOT EXECUTED
return 0;
4800e: 4280 clrl %d0 <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
48010: 2682 movel %d2,%a3@ <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
48012: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
return 0;
}
48016: 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;
4801c: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
4801e: 4e5e unlk %fp <== NOT EXECUTED
...
0005b8ac <_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;
5b8ac: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b8ae: 4281 clrl %d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b8b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b8b4: 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;
5b8b8: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED
5b8bc: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b8c0: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b8c4: 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 ) {
5b8c8: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b8ca: 6510 bcss 5b8dc <_Objects_Get_no_protection+0x30><== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
5b8cc: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
5b8d0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
5b8d4: 6706 beqs 5b8dc <_Objects_Get_no_protection+0x30><== NOT EXECUTED
*location = OBJECTS_LOCAL;
5b8d6: 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;
}
5b8d8: 4e5e unlk %fp <== NOT EXECUTED
5b8da: 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;
5b8dc: 7001 moveq #1,%d0 <== NOT EXECUTED
return NULL;
}
5b8de: 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;
5b8e0: 2280 movel %d0,%a1@ <== NOT EXECUTED
return NULL;
5b8e2: 4280 clrl %d0 <== NOT EXECUTED
}
...
000494e8 <_Objects_Id_to_name>:
*/
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
494e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
494ec: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
494f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
494f2: 4a81 tstl %d1 <== NOT EXECUTED
494f4: 660a bnes 49500 <_Objects_Id_to_name+0x18> <== NOT EXECUTED
494f6: 2079 0006 1dea moveal 61dea <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
494fc: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
49500: 7418 moveq #24,%d2 <== NOT EXECUTED
49502: 2001 movel %d1,%d0 <== NOT EXECUTED
49504: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
49506: 143c 0007 moveb #7,%d2 <== NOT EXECUTED
4950a: 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 )
4950c: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
49510: 2040 moveal %d0,%a0 <== NOT EXECUTED
49512: 5388 subql #1,%a0 <== NOT EXECUTED
49514: b488 cmpl %a0,%d2 <== NOT EXECUTED
49516: 6522 bcss 4953a <_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 ] )
49518: 41f9 0006 191c lea 6191c <_Objects_Information_table>,%a0 <== NOT EXECUTED
4951e: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
49522: 4a88 tstl %a0 <== NOT EXECUTED
49524: 6714 beqs 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
49526: 2001 movel %d1,%d0 <== NOT EXECUTED
49528: 741b moveq #27,%d2 <== NOT EXECUTED
4952a: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
4952c: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
if ( !information )
49530: 4a88 tstl %a0 <== NOT EXECUTED
49532: 6706 beqs 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string )
49534: 4a28 0032 tstb %a0@(50) <== NOT EXECUTED
49538: 670a beqs 49544 <_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;
}
4953a: 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;
4953e: 7003 moveq #3,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49540: 4e5e unlk %fp <== NOT EXECUTED
49542: 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 );
49544: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49548: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4954a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4954c: 4eb9 0004 947c jsr 4947c <_Objects_Get> <== NOT EXECUTED
if ( !the_object )
49552: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49556: 4a80 tstl %d0 <== NOT EXECUTED
49558: 67e0 beqs 4953a <_Objects_Id_to_name+0x52> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
4955a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4955e: 2240 moveal %d0,%a1 <== NOT EXECUTED
49560: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49564: 4eb9 0004 a0ba jsr 4a0ba <_Thread_Enable_dispatch> <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
4956a: 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;
4956e: 4280 clrl %d0 <== NOT EXECUTED
}
49570: 4e5e unlk %fp <== NOT EXECUTED
000547e8 <_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
)
{
547e8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
547ec: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
547f0: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
547f4: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
547f8: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
Objects_Control *the_object;
uint32_t index;
/* ASSERT: information->is_string == true */
if ( !id )
547fc: 6762 beqs 54860 <_Objects_Name_to_id_string+0x78><== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( !name )
547fe: 4a84 tstl %d4 <== NOT EXECUTED
54800: 6742 beqs 54844 <_Objects_Name_to_id_string+0x5c><== NOT EXECUTED
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
54802: 362c 000e movew %a4@(14),%d3 <== NOT EXECUTED
54806: 673c beqs 54844 <_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(
54808: 266c 0018 moveal %a4@(24),%a3 <== NOT EXECUTED
5480c: 7401 moveq #1,%d2 <== NOT EXECUTED
5480e: 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)) {
54810: 4bf9 0005 8510 lea 58510 <strncmp>,%a5 <== NOT EXECUTED
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
for ( index = 1; index <= information->maximum; index++ ) {
54816: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED
the_object = information->local_table[ index ];
5481c: 245b moveal %a3@+,%a2 <== NOT EXECUTED
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
for ( index = 1; index <= information->maximum; index++ ) {
5481e: 5282 addql #1,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
54820: 4a8a tstl %a2 <== NOT EXECUTED
54822: 671c beqs 54840 <_Objects_Name_to_id_string+0x58><== NOT EXECUTED
continue;
if ( !the_object->name.name_p )
54824: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
54828: 6716 beqs 54840 <_Objects_Name_to_id_string+0x58><== NOT EXECUTED
continue;
if (!strncmp( name, the_object->name.name_p, information->name_length)) {
5482a: 4281 clrl %d1 <== NOT EXECUTED
5482c: 322c 0034 movew %a4@(52),%d1 <== NOT EXECUTED
54830: 2f01 movel %d1,%sp@- <== NOT EXECUTED
54832: 2f00 movel %d0,%sp@- <== NOT EXECUTED
54834: 2f04 movel %d4,%sp@- <== NOT EXECUTED
54836: 4e95 jsr %a5@ <== NOT EXECUTED
54838: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5483c: 4a80 tstl %d0 <== NOT EXECUTED
5483e: 6710 beqs 54850 <_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++ ) {
54840: b682 cmpl %d2,%d3 <== NOT EXECUTED
54842: 64d8 bccs 5481c <_Objects_Name_to_id_string+0x34><== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
}
}
return OBJECTS_INVALID_NAME;
54844: 7001 moveq #1,%d0 <== NOT EXECUTED
}
54846: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
5484c: 4e5e unlk %fp <== NOT EXECUTED
5484e: 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;
54850: 2045 moveal %d5,%a0 <== NOT EXECUTED
54852: 20aa 0008 movel %a2@(8),%a0@ <== NOT EXECUTED
}
}
}
return OBJECTS_INVALID_NAME;
}
54856: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
5485c: 4e5e unlk %fp <== NOT EXECUTED
5485e: 4e75 rts <== NOT EXECUTED
uint32_t index;
/* ASSERT: information->is_string == true */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
54860: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
}
return OBJECTS_INVALID_NAME;
}
54862: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
54868: 4e5e unlk %fp <== NOT EXECUTED
00047f3c <_Objects_Name_to_id_u32>:
Objects_Information *information,
uint32_t name,
uint32_t node,
Objects_Id *id
)
{
47f3c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
47f40: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47f44: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
47f48: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
47f4c: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
47f50: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == false */
if ( !id )
47f54: 4a8a tstl %a2 <== NOT EXECUTED
47f56: 6758 beqs 47fb0 <_Objects_Name_to_id_u32+0x74> <== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( name == 0 )
47f58: 4a81 tstl %d1 <== NOT EXECUTED
47f5a: 6718 beqs 47f74 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
search_local_node = false;
if ( information->maximum != 0 &&
47f5c: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED
47f60: 6712 beqs 47f74 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
47f62: 4a80 tstl %d0 <== NOT EXECUTED
47f64: 6718 beqs 47f7e <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
(node == OBJECTS_SEARCH_ALL_NODES ||
47f66: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED
47f6c: 6710 beqs 47f7e <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
node == OBJECTS_SEARCH_LOCAL_NODE ||
47f6e: 7601 moveq #1,%d3 <== NOT EXECUTED
47f70: b680 cmpl %d0,%d3 <== NOT EXECUTED
47f72: 670a beqs 47f7e <_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;
47f74: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
47f76: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47f7a: 4e5e unlk %fp <== NOT EXECUTED
47f7c: 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(
47f7e: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
47f82: 7001 moveq #1,%d0 <== NOT EXECUTED
47f84: 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++ ) {
47f86: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
47f8c: 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++ ) {
47f8e: 5280 addql #1,%d0 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
47f90: 4a88 tstl %a0 <== NOT EXECUTED
47f92: 6706 beqs 47f9a <_Objects_Name_to_id_u32+0x5e> <== NOT EXECUTED
continue;
if ( name == the_object->name.name_u32 ) {
47f94: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED
47f98: 6708 beqs 47fa2 <_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++ ) {
47f9a: b082 cmpl %d2,%d0 <== NOT EXECUTED
47f9c: 63ee blss 47f8c <_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;
47f9e: 7001 moveq #1,%d0 <== NOT EXECUTED
47fa0: 60d4 bras 47f76 <_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;
47fa2: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
47fa6: 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
}
47fa8: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47fac: 4e5e unlk %fp <== NOT EXECUTED
47fae: 4e75 rts <== NOT EXECUTED
#endif
/* ASSERT: information->is_string == false */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
47fb0: 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
}
47fb2: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47fb6: 4e5e unlk %fp <== NOT EXECUTED
...
00047f0c <_Objects_Namespace_remove>:
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
47f0c: 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 )
47f10: 206e 0008 moveal %fp@(8),%a0
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
47f14: 2f0a movel %a2,%sp@-
47f16: 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 )
47f1a: 4a28 0032 tstb %a0@(50)
47f1e: 6710 beqs 47f30 <_Objects_Namespace_remove+0x24> <== ALWAYS TAKEN
47f20: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
47f24: 670a beqs 47f30 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
47f26: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47f28: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
47f2e: 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;
47f30: 42aa 000c clrl %a2@(12)
}
47f34: 246e fffc moveal %fp@(-4),%a2
47f38: 4e5e unlk %fp <== NOT EXECUTED
00048344 <_Objects_Set_name>:
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
48344: 4280 clrl %d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
48346: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4834a: 48d7 3c00 moveml %a2-%a5,%sp@ <== NOT EXECUTED
4834e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
48352: 302c 0034 movew %a4@(52),%d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
48356: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4835a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
4835c: 2a6e 000c moveal %fp@(12),%a5 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
48360: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48362: 4eb9 0005 0634 jsr 50634 <strnlen> <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
48368: 508f addql #8,%sp <== NOT EXECUTED
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4836a: 2640 moveal %d0,%a3 <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
4836c: 4a2c 0032 tstb %a4@(50) <== NOT EXECUTED
48370: 6662 bnes 483d4 <_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(
48372: 7018 moveq #24,%d0 <== NOT EXECUTED
48374: 1212 moveb %a2@,%d1 <== NOT EXECUTED
48376: 49c1 extbl %d1 <== NOT EXECUTED
48378: e1a9 lsll %d0,%d1 <== NOT EXECUTED
4837a: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
4837e: b08b cmpl %a3,%d0 <== NOT EXECUTED
48380: 643c bccs 483be <_Objects_Set_name+0x7a> <== NOT EXECUTED
48382: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED
48386: 49c0 extbl %d0 <== NOT EXECUTED
48388: 4840 swap %d0 <== NOT EXECUTED
4838a: 4240 clrw %d0 <== NOT EXECUTED
4838c: 8081 orl %d1,%d0 <== NOT EXECUTED
4838e: 7202 moveq #2,%d1 <== NOT EXECUTED
48390: b28b cmpl %a3,%d1 <== NOT EXECUTED
48392: 6730 beqs 483c4 <_Objects_Set_name+0x80> <== NOT EXECUTED
48394: 122a 0002 moveb %a2@(2),%d1 <== NOT EXECUTED
48398: 49c1 extbl %d1 <== NOT EXECUTED
4839a: e189 lsll #8,%d1 <== NOT EXECUTED
4839c: 8081 orl %d1,%d0 <== NOT EXECUTED
4839e: 7203 moveq #3,%d1 <== NOT EXECUTED
483a0: b28b cmpl %a3,%d1 <== NOT EXECUTED
483a2: 6700 0088 beqw 4842c <_Objects_Set_name+0xe8> <== NOT EXECUTED
483a6: 122a 0003 moveb %a2@(3),%d1 <== NOT EXECUTED
483aa: 49c1 extbl %d1 <== NOT EXECUTED
483ac: 8081 orl %d1,%d0 <== NOT EXECUTED
483ae: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
483b2: 7001 moveq #1,%d0 <== NOT EXECUTED
}
483b4: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED
483ba: 4e5e unlk %fp <== NOT EXECUTED
483bc: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
483be: 2001 movel %d1,%d0 <== NOT EXECUTED
483c0: 08c0 0015 bset #21,%d0 <== NOT EXECUTED
483c4: 7220 moveq #32,%d1 <== NOT EXECUTED
483c6: 08c0 000d bset #13,%d0 <== NOT EXECUTED
483ca: 8081 orl %d1,%d0 <== NOT EXECUTED
483cc: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
483d0: 7001 moveq #1,%d0 <== NOT EXECUTED
483d2: 60e0 bras 483b4 <_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 );
483d4: 486b 0001 pea %a3@(1) <== NOT EXECUTED
483d8: 4eb9 0004 9fd2 jsr 49fd2 <_Workspace_Allocate> <== NOT EXECUTED
if ( !d )
483de: 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 );
483e0: 2840 moveal %d0,%a4 <== NOT EXECUTED
if ( !d )
483e2: 4a80 tstl %d0 <== NOT EXECUTED
483e4: 673a beqs 48420 <_Objects_Set_name+0xdc> <== NOT EXECUTED
return false;
if ( the_object->name.name_p ) {
483e6: 202d 000c movel %a5@(12),%d0 <== NOT EXECUTED
483ea: 670e beqs 483fa <_Objects_Set_name+0xb6> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
483ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
483ee: 4eb9 0004 9fee jsr 49fee <_Workspace_Free> <== NOT EXECUTED
the_object->name.name_p = NULL;
483f4: 588f addql #4,%sp <== NOT EXECUTED
483f6: 42ad 000c clrl %a5@(12) <== NOT EXECUTED
}
strncpy( d, name, length );
483fa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
483fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
483fe: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48400: 4eb9 0005 05b0 jsr 505b0 <strncpy> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
48406: 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';
4840a: 4200 clrb %d0 <== NOT EXECUTED
4840c: 1980 b800 moveb %d0,%a4@(00000000,%a3:l) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
48410: 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;
48412: 2b4c 000c movel %a4,%a5@(12) <== NOT EXECUTED
);
}
return true;
}
48416: 4cee 3c00 fff0 moveml %fp@(-16),%a2-%a5 <== NOT EXECUTED
4841c: 4e5e unlk %fp <== NOT EXECUTED
4841e: 4e75 rts <== NOT EXECUTED
48420: 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;
48426: 4200 clrb %d0 <== NOT EXECUTED
);
}
return true;
}
48428: 4e5e unlk %fp <== NOT EXECUTED
4842a: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4842c: 7220 moveq #32,%d1 <== NOT EXECUTED
4842e: 8081 orl %d1,%d0 <== NOT EXECUTED
48430: 2b40 000c movel %d0,%a5@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
48434: 7001 moveq #1,%d0 <== NOT EXECUTED
48436: 6000 ff7c braw 483b4 <_Objects_Set_name+0x70> <== NOT EXECUTED
...
00047fbc <_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) /
47fbc: 4281 clrl %d1 <== NOT EXECUTED
*/
void _Objects_Shrink_information(
Objects_Information *information
)
{
47fbe: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47fc2: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
47fc6: 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 );
47fca: 4283 clrl %d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
47fcc: 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 );
47fce: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
47fd2: 382a 000e movew %a2@(14),%d4 <== NOT EXECUTED
47fd6: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
47fda: 9883 subl %d3,%d4 <== NOT EXECUTED
47fdc: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
47fe0: 6774 beqs 48056 <_Objects_Shrink_information+0x9a><== NOT EXECUTED
if ( information->inactive_per_block[ block ] ==
47fe2: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
47fe6: b290 cmpl %a0@,%d1 <== NOT EXECUTED
47fe8: 677e beqs 48068 <_Objects_Shrink_information+0xac><== NOT EXECUTED
* the_block - the block to remove
*
* Output parameters: NONE
*/
void _Objects_Shrink_information(
47fea: 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++ ) {
47fec: 4280 clrl %d0 <== NOT EXECUTED
47fee: 5280 addql #1,%d0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
47ff0: 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++ ) {
47ff2: b084 cmpl %d4,%d0 <== NOT EXECUTED
47ff4: 6460 bccs 48056 <_Objects_Shrink_information+0x9a><== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
47ff6: 2400 movel %d0,%d2 <== NOT EXECUTED
47ff8: 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 ] ==
47ffa: b298 cmpl %a0@+,%d1 <== NOT EXECUTED
47ffc: 66f0 bnes 47fee <_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 );
47ffe: 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 );
48002: 47f9 0004 6f08 lea 46f08 <_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 );
48008: 4280 clrl %d0 <== NOT EXECUTED
4800a: 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;
4800e: 2810 movel %a0@,%d4 <== NOT EXECUTED
if ((index >= index_base) &&
48010: b680 cmpl %d0,%d3 <== NOT EXECUTED
48012: 620c bhis 48020 <_Objects_Shrink_information+0x64><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
48014: 4281 clrl %d1 <== NOT EXECUTED
48016: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
4801a: 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) &&
4801c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4801e: 6240 bhis 48060 <_Objects_Shrink_information+0xa4><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
48020: 4a84 tstl %d4 <== NOT EXECUTED
48022: 6704 beqs 48028 <_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;
48024: 2044 moveal %d4,%a0 <== NOT EXECUTED
48026: 60e0 bras 48008 <_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 ] );
48028: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
4802c: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED
48030: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
information->object_blocks[ block ] = NULL;
48036: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
4803a: 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;
4803c: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
48040: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
48044: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED
48048: 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;
4804c: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive -= information->allocation_size;
48050: 9081 subl %d1,%d0 <== NOT EXECUTED
48052: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED
return;
}
index_base += information->allocation_size;
}
}
48056: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4805c: 4e5e unlk %fp <== NOT EXECUTED
4805e: 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 );
48060: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48062: 4e93 jsr %a3@ <== NOT EXECUTED
48064: 588f addql #4,%sp <== NOT EXECUTED
48066: 60b8 bras 48020 <_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 );
48068: 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 ] ==
4806c: 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 );
4806e: 47f9 0004 6f08 lea 46f08 <_Chain_Extract>,%a3 <== NOT EXECUTED
48074: 6092 bras 48008 <_Objects_Shrink_information+0x4c><== NOT EXECUTED
...
00048774 <_POSIX_Absolute_timeout_to_ticks>:
*/
POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks(
const struct timespec *abstime,
Watchdog_Interval *ticks_out
)
{
48774: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
48778: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
4877c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
48780: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
*ticks_out = 0;
/*
* Is the absolute time even valid?
*/
if ( !_Timespec_Is_valid(abstime) )
48784: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Make sure there is always a value returned.
*/
*ticks_out = 0;
48786: 4292 clrl %a2@ <== NOT EXECUTED
/*
* Is the absolute time even valid?
*/
if ( !_Timespec_Is_valid(abstime) )
48788: 4eb9 0004 c99c jsr 4c99c <_Timespec_Is_valid> <== NOT EXECUTED
4878e: 588f addql #4,%sp <== NOT EXECUTED
48790: 4a00 tstb %d0 <== NOT EXECUTED
48792: 660c bnes 487a0 <_POSIX_Absolute_timeout_to_ticks+0x2c><== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_INVALID;
48794: 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;
}
48796: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED
4879c: 4e5e unlk %fp <== NOT EXECUTED
4879e: 4e75 rts <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_INVALID;
/*
* Is the absolute time in the past?
*/
_TOD_Get( ¤t_time );
487a0: 260e movel %fp,%d3 <== NOT EXECUTED
487a2: 5183 subql #8,%d3 <== NOT EXECUTED
487a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
487a6: 4eb9 0004 a758 jsr 4a758 <_TOD_Get> <== NOT EXECUTED
if ( _Timespec_Less_than( abstime, ¤t_time ) )
487ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
487ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
487b0: 4eb9 0004 c9c8 jsr 4c9c8 <_Timespec_Less_than> <== NOT EXECUTED
487b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
487ba: 4a00 tstb %d0 <== NOT EXECUTED
487bc: 670c beqs 487ca <_POSIX_Absolute_timeout_to_ticks+0x56><== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;
487be: 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;
}
487c0: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED
487c6: 4e5e unlk %fp <== NOT EXECUTED
487c8: 4e75 rts <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;
/*
* How long until the requested absolute time?
*/
_Timespec_Subtract( ¤t_time, abstime, &difference );
487ca: 280e movel %fp,%d4 <== NOT EXECUTED
487cc: 0684 ffff fff0 addil #-16,%d4 <== NOT EXECUTED
487d2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
487d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
487d6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
487d8: 4eb9 0004 c9fc jsr 4c9fc <_Timespec_Subtract> <== NOT EXECUTED
/*
* Internally the SuperCore uses ticks, so convert to them.
*/
*ticks_out = _Timespec_To_ticks( &difference );
487de: 2f04 movel %d4,%sp@- <== NOT EXECUTED
487e0: 4eb9 0004 ca4c jsr 4ca4c <_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 )
487e6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_NOW;
487ea: 4a80 tstl %d0 <== NOT EXECUTED
487ec: 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 );
487ee: 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;
487f0: 1001 moveb %d1,%d0 <== NOT EXECUTED
487f2: 7202 moveq #2,%d1 <== NOT EXECUTED
487f4: 49c0 extbl %d0 <== NOT EXECUTED
487f6: 9280 subl %d0,%d1 <== NOT EXECUTED
487f8: 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;
}
487fa: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED
48800: 4e5e unlk %fp <== NOT EXECUTED
0004cbe4 <_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];
4cbe4: 41f9 0005 f0a0 lea 5f0a0 <_POSIX_Barrier_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Barrier_Translate_core_barrier_return_code(
CORE_barrier_Status the_barrier_status
)
{
4cbea: 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];
}
4cbee: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4cbf2: 4e5e unlk %fp <== NOT EXECUTED
4cbf4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
000470ec <_POSIX_Condition_variables_Get>:
POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get (
pthread_cond_t *cond,
Objects_Locations *location
)
{
470ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
470f0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
470f2: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
470f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int status;
if ( !cond ) {
470fc: 4a8a tstl %a2 <== NOT EXECUTED
470fe: 6750 beqs 47150 <_POSIX_Condition_variables_Get+0x64><== NOT EXECUTED
*location = OBJECTS_ERROR;
return (POSIX_Condition_variables_Control *) 0;
}
if ( *cond == PTHREAD_COND_INITIALIZER ) {
47100: 2012 movel %a2@,%d0 <== NOT EXECUTED
47102: 72ff moveq #-1,%d1 <== NOT EXECUTED
47104: b280 cmpl %d0,%d1 <== NOT EXECUTED
47106: 6720 beqs 47128 <_POSIX_Condition_variables_Get+0x3c><== NOT EXECUTED
}
/*
* Now call Objects_Get()
*/
return (POSIX_Condition_variables_Control *)_Objects_Get(
47108: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4710a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4710c: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED
47112: 4eb9 0004 9fd0 jsr 49fd0 <_Objects_Get> <== NOT EXECUTED
47118: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
4711c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47120: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
47124: 4e5e unlk %fp <== NOT EXECUTED
47126: 4e75 rts <== NOT EXECUTED
if ( *cond == PTHREAD_COND_INITIALIZER ) {
/*
* Do an "auto-create" here.
*/
status = pthread_cond_init( cond, 0 );
47128: 42a7 clrl %sp@- <== NOT EXECUTED
4712a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4712c: 4eb9 0004 7164 jsr 47164 <pthread_cond_init> <== NOT EXECUTED
if ( status ) {
47132: 508f addql #8,%sp <== NOT EXECUTED
47134: 4a80 tstl %d0 <== NOT EXECUTED
47136: 6618 bnes 47150 <_POSIX_Condition_variables_Get+0x64><== NOT EXECUTED
47138: 2012 movel %a2@,%d0 <== NOT EXECUTED
}
/*
* Now call Objects_Get()
*/
return (POSIX_Condition_variables_Control *)_Objects_Get(
4713a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4713c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4713e: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED
47144: 4eb9 0004 9fd0 jsr 49fd0 <_Objects_Get> <== NOT EXECUTED
4714a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4714e: 60cc bras 4711c <_POSIX_Condition_variables_Get+0x30><== NOT EXECUTED
* Do an "auto-create" here.
*/
status = pthread_cond_init( cond, 0 );
if ( status ) {
*location = OBJECTS_ERROR;
47150: 7001 moveq #1,%d0 <== NOT EXECUTED
47152: 2680 movel %d0,%a3@ <== NOT EXECUTED
return (POSIX_Condition_variables_Control *)_Objects_Get(
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
47154: 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;
47158: 4280 clrl %d0 <== NOT EXECUTED
return (POSIX_Condition_variables_Control *)_Objects_Get(
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
4715a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4715e: 4e5e unlk %fp <== NOT EXECUTED
...
00047238 <_POSIX_Condition_variables_Signal_support>:
int _POSIX_Condition_variables_Signal_support(
pthread_cond_t *cond,
bool is_broadcast
)
{
47238: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4723c: 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 );
47240: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47244: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int _POSIX_Condition_variables_Signal_support(
pthread_cond_t *cond,
bool is_broadcast
)
{
47248: 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 );
4724c: 4eb9 0004 70ec jsr 470ec <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
47252: 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 );
47254: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch ( location ) {
47256: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4725a: 670c beqs 47268 <_POSIX_Condition_variables_Signal_support+0x30><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4725c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4725e: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47264: 4e5e unlk %fp <== NOT EXECUTED
47266: 4e75 rts <== NOT EXECUTED
47268: 2600 movel %d0,%d3 <== NOT EXECUTED
4726a: 0683 0000 0018 addil #24,%d3 <== NOT EXECUTED
47270: 45f9 0004 ae64 lea 4ae64 <_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 );
47276: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47278: 4e92 jsr %a2@ <== NOT EXECUTED
if ( !the_thread )
4727a: 588f addql #4,%sp <== NOT EXECUTED
4727c: 4a80 tstl %d0 <== NOT EXECUTED
4727e: 671a beqs 4729a <_POSIX_Condition_variables_Signal_support+0x62><== NOT EXECUTED
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
} while ( is_broadcast && the_thread );
47280: 4a02 tstb %d2 <== NOT EXECUTED
47282: 6704 beqs 47288 <_POSIX_Condition_variables_Signal_support+0x50><== NOT EXECUTED
47284: 4a80 tstl %d0 <== NOT EXECUTED
47286: 66ee bnes 47276 <_POSIX_Condition_variables_Signal_support+0x3e><== NOT EXECUTED
_Thread_Enable_dispatch();
47288: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4728e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47290: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47296: 4e5e unlk %fp <== NOT EXECUTED
47298: 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;
4729a: 42ab 0014 clrl %a3@(20) <== NOT EXECUTED
4729e: 60e0 bras 47280 <_POSIX_Condition_variables_Signal_support+0x48><== NOT EXECUTED
00047304 <_POSIX_Condition_variables_Wait_support>:
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
47304: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
47308: 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 ) ) {
4730c: 240e movel %fp,%d2 <== NOT EXECUTED
4730e: 5982 subql #4,%d2 <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
47310: 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 ) ) {
47314: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
47316: 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 ) ) {
4731a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
4731c: 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 ) ) {
47320: 4eb9 0004 7484 jsr 47484 <_POSIX_Mutex_Get> <== NOT EXECUTED
47326: 508f addql #8,%sp <== NOT EXECUTED
47328: 4a80 tstl %d0 <== NOT EXECUTED
4732a: 6764 beqs 47390 <_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;
4732c: 2039 0006 26d8 movel 626d8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47332: 5380 subql #1,%d0 <== NOT EXECUTED
return EINVAL;
}
_Thread_Unnest_dispatch();
the_cond = _POSIX_Condition_variables_Get( cond, &location );
47334: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47336: 23c0 0006 26d8 movel %d0,626d8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
4733c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4733e: 4eb9 0004 70ec jsr 470ec <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
47344: 508f addql #8,%sp <== NOT EXECUTED
return EINVAL;
}
_Thread_Unnest_dispatch();
the_cond = _POSIX_Condition_variables_Get( cond, &location );
47346: 2840 moveal %d0,%a4 <== NOT EXECUTED
switch ( location ) {
47348: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4734c: 6642 bnes 47390 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) {
4734e: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED
47352: 6718 beqs 4736c <_POSIX_Condition_variables_Wait_support+0x68><== NOT EXECUTED
47354: b092 cmpl %a2@,%d0 <== NOT EXECUTED
47356: 6714 beqs 4736c <_POSIX_Condition_variables_Wait_support+0x68><== NOT EXECUTED
_Thread_Enable_dispatch();
47358: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EINVAL;
4735e: 7416 moveq #22,%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47360: 2002 movel %d2,%d0 <== NOT EXECUTED
47362: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
47368: 4e5e unlk %fp <== NOT EXECUTED
4736a: 4e75 rts <== NOT EXECUTED
if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) {
_Thread_Enable_dispatch();
return EINVAL;
}
(void) pthread_mutex_unlock( mutex );
4736c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4736e: 4eb9 0004 7754 jsr 47754 <pthread_mutex_unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
*/
if ( !already_timedout ) {
47374: 588f addql #4,%sp <== NOT EXECUTED
47376: 4a03 tstb %d3 <== NOT EXECUTED
47378: 6724 beqs 4739e <_POSIX_Condition_variables_Wait_support+0x9a><== NOT EXECUTED
status = _Thread_Executing->Wait.return_code;
if ( status == EINTR )
status = 0;
} else {
_Thread_Enable_dispatch();
4737a: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED
status = ETIMEDOUT;
47380: 7474 moveq #116,%d2 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
47382: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47384: 4eb9 0004 76b8 jsr 476b8 <pthread_mutex_lock> <== NOT EXECUTED
if ( mutex_status )
4738a: 588f addql #4,%sp <== NOT EXECUTED
4738c: 4a80 tstl %d0 <== NOT EXECUTED
4738e: 67d0 beqs 47360 <_POSIX_Condition_variables_Wait_support+0x5c><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47390: 7416 moveq #22,%d2 <== NOT EXECUTED
}
47392: 2002 movel %d2,%d0 <== NOT EXECUTED
47394: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4739a: 4e5e unlk %fp <== NOT EXECUTED
4739c: 4e75 rts <== NOT EXECUTED
return EINVAL;
}
*/
if ( !already_timedout ) {
the_cond->Mutex = *mutex;
4739e: 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;
473a2: 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;
473a4: 200c movel %a4,%d0 <== NOT EXECUTED
473a6: 0680 0000 0018 addil #24,%d0 <== NOT EXECUTED
473ac: 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;
473b0: 2079 0006 2b62 moveal 62b62 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
473b6: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
_Thread_Executing->Wait.id = *cond;
473ba: 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;
473be: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
_Thread_Executing->Wait.id = *cond;
_Thread_queue_Enqueue( &the_cond->Wait_queue, timeout );
473c2: 4879 0004 b408 pea 4b408 <_Thread_queue_Timeout> <== NOT EXECUTED
473c8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
473cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
473ce: 4eb9 0004 afdc jsr 4afdc <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
473d4: 4eb9 0004 ab02 jsr 4ab02 <_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;
473da: 2079 0006 2b62 moveal 62b62 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
if ( status == EINTR )
status = 0;
473e0: 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 )
473e2: 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;
473e6: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED
if ( status == EINTR )
status = 0;
473ea: b082 cmpl %d2,%d0 <== NOT EXECUTED
473ec: 56c0 sne %d0 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
473ee: 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;
473f0: 49c0 extbl %d0 <== NOT EXECUTED
473f2: c480 andl %d0,%d2 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
473f4: 4eb9 0004 76b8 jsr 476b8 <pthread_mutex_lock> <== NOT EXECUTED
if ( mutex_status )
473fa: 588f addql #4,%sp <== NOT EXECUTED
473fc: 4a80 tstl %d0 <== NOT EXECUTED
473fe: 6700 ff60 beqw 47360 <_POSIX_Condition_variables_Wait_support+0x5c><== NOT EXECUTED
47402: 608c bras 47390 <_POSIX_Condition_variables_Wait_support+0x8c><== NOT EXECUTED
000464fc <_POSIX_Keys_Free_memory>:
#include <rtems/posix/key.h>
void _POSIX_Keys_Free_memory(
POSIX_Keys_Control *the_key
)
{
464fc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
46500: 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(
46504: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
46508: 7403 moveq #3,%d2 <== NOT EXECUTED
4650a: 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 ] );
4650e: 47f9 0004 ac96 lea 4ac96 <_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 ] )
46514: 201a movel %a2@+,%d0 <== NOT EXECUTED
_Workspace_Free( the_key->Values[ the_api ] );
46516: 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 ] )
46518: 4a80 tstl %d0 <== NOT EXECUTED
4651a: 6706 beqs 46522 <_POSIX_Keys_Free_memory+0x26> <== NOT EXECUTED
_Workspace_Free( the_key->Values[ the_api ] );
4651c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4651e: 4e93 jsr %a3@ <== NOT EXECUTED
46520: 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++ )
46522: 4a82 tstl %d2 <== NOT EXECUTED
46524: 66ee bnes 46514 <_POSIX_Keys_Free_memory+0x18> <== NOT EXECUTED
if ( the_key->Values[ the_api ] )
_Workspace_Free( the_key->Values[ the_api ] );
}
46526: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4652c: 4e5e unlk %fp <== NOT EXECUTED
0004dfa8 <_POSIX_Keys_Run_destructors>:
4dfa8: 7218 moveq #24,%d1
*/
void _POSIX_Keys_Run_destructors(
Thread_Control *thread
)
{
4dfaa: 4e56 ffec linkw %fp,#-20
4dfae: 206e 0008 moveal %fp@(8),%a0
4dfb2: 48d7 007c moveml %d2-%d6,%sp@
Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
4dfb6: 2628 0008 movel %a0@(8),%d3
4dfba: 2003 movel %d3,%d0
4dfbc: e2a8 lsrl %d1,%d0
4dfbe: 123c 0007 moveb #7,%d1
4dfc2: 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 ];
4dfc4: 0283 0000 ffff andil #65535,%d3
4dfca: 2c00 movel %d0,%d6
4dfcc: 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;
4dfce: 3039 0005 fff6 movew 5fff6 <_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 ];
4dfd4: e58b lsll #2,%d3
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4dfd6: 4a40 tstw %d0
4dfd8: 660a bnes 4dfe4 <_POSIX_Keys_Run_destructors+0x3c><== NEVER TAKEN
done = false;
}
}
}
}
}
4dfda: 4cee 007c ffec moveml %fp@(-20),%d2-%d6
4dfe0: 4e5e unlk %fp
4dfe2: 4e75 rts
4dfe4: 4285 clrl %d5 <== NOT EXECUTED
4dfe6: 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 ) {
4dfe8: 7401 moveq #1,%d2 <== NOT EXECUTED
4dfea: 7801 moveq #1,%d4 <== NOT EXECUTED
4dfec: 3a00 movew %d0,%d5 <== NOT EXECUTED
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4dfee: 2079 0006 0000 moveal 60000 <_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 ) {
4dff4: 5282 addql #1,%d2 <== NOT EXECUTED
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4dff6: 2070 1c00 moveal %a0@(00000000,%d1:l:4),%a0 <== NOT EXECUTED
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
4dffa: 4a88 tstl %a0 <== NOT EXECUTED
4dffc: 671c beqs 4e01a <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
4dffe: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
4e002: 4a89 tstl %a1 <== NOT EXECUTED
4e004: 6714 beqs 4e01a <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
void *value = key->Values [ thread_api ][ thread_index ];
4e006: 2070 6c00 moveal %a0@(00000000,%d6:l:4),%a0 <== NOT EXECUTED
4e00a: d1c3 addal %d3,%a0 <== NOT EXECUTED
4e00c: 2210 movel %a0@,%d1 <== NOT EXECUTED
if ( value != NULL ) {
4e00e: 670a beqs 4e01a <_POSIX_Keys_Run_destructors+0x72><== NOT EXECUTED
key->Values [ thread_api ][ thread_index ] = NULL;
4e010: 4290 clrl %a0@ <== NOT EXECUTED
(*key->destructor)( value );
done = false;
4e012: 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 );
4e014: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4e016: 4e91 jsr %a1@ <== NOT EXECUTED
4e018: 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 ) {
4e01a: 4281 clrl %d1 <== NOT EXECUTED
4e01c: 3202 movew %d2,%d1 <== NOT EXECUTED
4e01e: b285 cmpl %d5,%d1 <== NOT EXECUTED
4e020: 63cc blss 4dfee <_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 ) {
4e022: 4a04 tstb %d4 <== NOT EXECUTED
4e024: 66b4 bnes 4dfda <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
4e026: 3039 0005 fff6 movew 5fff6 <_POSIX_Keys_Information+0xe>,%d0<== NOT EXECUTED
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4e02c: 67ac beqs 4dfda <_POSIX_Keys_Run_destructors+0x32><== NOT EXECUTED
4e02e: 60b4 bras 4dfe4 <_POSIX_Keys_Run_destructors+0x3c><== NOT EXECUTED
00053164 <_POSIX_Message_queue_Create_support>:
const char *name_arg,
int pshared,
struct mq_attr *attr_ptr,
POSIX_Message_queue_Control **message_queue
)
{
53164: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
53168: 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 );
5316c: 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
)
{
53170: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
53174: 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 );
53178: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5317a: 4eb9 0005 8684 jsr 58684 <strnlen> <== NOT EXECUTED
53180: 2800 movel %d0,%d4 <== NOT EXECUTED
53182: 2039 0006 9a24 movel 69a24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
53188: 5280 addql #1,%d0 <== NOT EXECUTED
5318a: 23c0 0006 9a24 movel %d0,69a24 <_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 ) {
53190: 508f addql #8,%sp <== NOT EXECUTED
53192: 4a8a tstl %a2 <== NOT EXECUTED
53194: 6700 00a4 beqw 5323a <_POSIX_Message_queue_Create_support+0xd6><== NOT EXECUTED
attr.mq_maxmsg = 10;
attr.mq_msgsize = 16;
} else {
if ( attr_ptr->mq_maxmsg <= 0 ){
53198: 2a2a 0004 movel %a2@(4),%d5 <== NOT EXECUTED
5319c: 6f00 00a4 blew 53242 <_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 ){
531a0: 2c2a 0008 movel %a2@(8),%d6 <== NOT EXECUTED
531a4: 6f00 009c blew 53242 <_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 );
531a8: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
531ae: 4eb9 0004 f1a4 jsr 4f1a4 <_Objects_Allocate> <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
531b4: 588f addql #4,%sp <== NOT EXECUTED
531b6: 2440 moveal %d0,%a2 <== NOT EXECUTED
531b8: 4a80 tstl %d0 <== NOT EXECUTED
531ba: 6700 010a beqw 532c6 <_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;
531be: 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);
531c0: 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;
531c2: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED
the_mq->named = true;
531c8: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_mq->open_count = 1;
531cc: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
the_mq->linked = true;
531d0: 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);
531d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
531d6: 4eb9 0005 1536 jsr 51536 <_Workspace_Allocate> <== NOT EXECUTED
if (!name) {
531dc: 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);
531de: 2400 movel %d0,%d2 <== NOT EXECUTED
if (!name) {
531e0: 6700 00b6 beqw 53298 <_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 );
531e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
531e6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
531e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
531ea: 4eb9 0005 8600 jsr 58600 <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;
531f0: 42aa 005a clrl %a2@(90) <== NOT EXECUTED
if ( !_CORE_message_queue_Initialize(
531f4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
531f6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
531f8: 486a 005a pea %a2@(90) <== NOT EXECUTED
531fc: 486a 001a pea %a2@(26) <== NOT EXECUTED
53200: 4eb9 0005 4170 jsr 54170 <_CORE_message_queue_Initialize> <== NOT EXECUTED
53206: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5320a: 4a00 tstb %d0 <== NOT EXECUTED
5320c: 6752 beqs 53260 <_POSIX_Message_queue_Create_support+0xfc><== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
5320e: 4280 clrl %d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
53210: 2079 0006 9ce6 moveal 69ce6 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
53216: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5321a: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Message_queue_Information,
&the_mq->Object,
name
);
*message_queue = the_mq;
5321e: 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;
53222: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
53226: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
53228: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
5322e: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
);
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
53234: 4280 clrl %d0 <== NOT EXECUTED
}
53236: 4e5e unlk %fp <== NOT EXECUTED
53238: 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;
5323a: 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;
5323c: 7a0a moveq #10,%d5 <== NOT EXECUTED
5323e: 6000 ff68 braw 531a8 <_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();
53242: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
53248: 7816 moveq #22,%d4 <== NOT EXECUTED
5324a: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
53250: 2040 moveal %d0,%a0 <== NOT EXECUTED
53252: 70ff moveq #-1,%d0 <== NOT EXECUTED
53254: 2084 movel %d4,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
53256: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
5325c: 4e5e unlk %fp <== NOT EXECUTED
5325e: 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 );
53260: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53262: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
53268: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED
attr.mq_maxmsg,
attr.mq_msgsize
) ) {
_POSIX_Message_queue_Free( the_mq );
_Workspace_Free(name);
5326e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
53270: 4eb9 0005 1552 jsr 51552 <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
53276: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
5327c: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
53282: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
53286: 721c moveq #28,%d1 <== NOT EXECUTED
53288: 2040 moveal %d0,%a0 <== NOT EXECUTED
5328a: 70ff moveq #-1,%d0 <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
5328c: 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 );
53292: 2081 movel %d1,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
53294: 4e5e unlk %fp <== NOT EXECUTED
53296: 4e75 rts <== NOT EXECUTED
53298: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5329a: 4879 0006 9cce pea 69cce <_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 );
532a0: 740c moveq #12,%d2 <== NOT EXECUTED
532a2: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
if (!name) {
_POSIX_Message_queue_Free( the_mq );
_Thread_Enable_dispatch();
532a8: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
532ae: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
532b4: 508f addql #8,%sp <== NOT EXECUTED
532b6: 2040 moveal %d0,%a0 <== NOT EXECUTED
532b8: 70ff moveq #-1,%d0 <== NOT EXECUTED
532ba: 2082 movel %d2,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532bc: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
532c2: 4e5e unlk %fp <== NOT EXECUTED
532c4: 4e75 rts <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
_Thread_Enable_dispatch();
532c6: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
532cc: 7617 moveq #23,%d3 <== NOT EXECUTED
532ce: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
532d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
532d6: 70ff moveq #-1,%d0 <== NOT EXECUTED
532d8: 2083 movel %d3,%a0@ <== NOT EXECUTED
*message_queue = the_mq;
_Thread_Enable_dispatch();
return 0;
}
532da: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
532e0: 4e5e unlk %fp <== NOT EXECUTED
0004bde8 <_POSIX_Message_queue_Delete>:
*/
void _POSIX_Message_queue_Delete(
POSIX_Message_queue_Control *the_mq
)
{
4bde8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4bdec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bdee: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_mq->linked && !the_mq->open_count ) {
4bdf2: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED
4bdf6: 6606 bnes 4bdfe <_POSIX_Message_queue_Delete+0x16><== NOT EXECUTED
4bdf8: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED
4bdfc: 6708 beqs 4be06 <_POSIX_Message_queue_Delete+0x1e><== NOT EXECUTED
);
_POSIX_Message_queue_Free( the_mq );
}
}
4bdfe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4be02: 4e5e unlk %fp <== NOT EXECUTED
4be04: 4e75 rts <== NOT EXECUTED
);
_Workspace_Free( (void *)the_object->name.name_p );
}
#endif
_Objects_Close( &_POSIX_Message_queue_Information, the_object );
4be06: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4be08: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
4be0e: 4eb9 0004 f234 jsr 4f234 <_Objects_Close> <== NOT EXECUTED
_CORE_message_queue_Close(
4be14: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4be18: 42a7 clrl %sp@- <== NOT EXECUTED
4be1a: 486a 001a pea %a2@(26) <== NOT EXECUTED
4be1e: 4eb9 0004 e4f4 jsr 4e4f4 <_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 );
4be24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4be26: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
4be2c: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED
);
_POSIX_Message_queue_Free( the_mq );
}
}
4be32: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4be36: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4be3a: 4e5e unlk %fp <== NOT EXECUTED
...
000532e4 <_POSIX_Message_queue_Name_to_id>:
*/
int _POSIX_Message_queue_Name_to_id(
const char *name,
Objects_Id *id
)
{
532e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
532e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
532ea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
532ee: 4a8a tstl %a2 <== NOT EXECUTED
532f0: 6704 beqs 532f6 <_POSIX_Message_queue_Name_to_id+0x12><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
532f2: 4a12 tstb %a2@ <== NOT EXECUTED
532f4: 660a bnes 53300 <_POSIX_Message_queue_Name_to_id+0x1c><== NOT EXECUTED
return EINVAL;
532f6: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
532f8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
532fc: 4e5e unlk %fp <== NOT EXECUTED
532fe: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( !name[0] )
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
53300: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
53304: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53306: 4eb9 0005 8684 jsr 58684 <strnlen> <== NOT EXECUTED
5330c: 508f addql #8,%sp <== NOT EXECUTED
5330e: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED
53314: 630a blss 53320 <_POSIX_Message_queue_Name_to_id+0x3c><== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
53316: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !name[0] )
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
5331a: 705b moveq #91,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
5331c: 4e5e unlk %fp <== NOT EXECUTED
5331e: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
status = _Objects_Name_to_id_string(
53320: 486e fffc pea %fp@(-4) <== NOT EXECUTED
53324: 2f0a movel %a2,%sp@- <== NOT EXECUTED
53326: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
5332c: 4eb9 0005 47e8 jsr 547e8 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
53332: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
53336: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
5333a: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
5333e: 4a80 tstl %d0 <== NOT EXECUTED
53340: 67b6 beqs 532f8 <_POSIX_Message_queue_Name_to_id+0x14><== NOT EXECUTED
return 0;
return ENOENT;
}
53342: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
*id = the_id;
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
53346: 7002 moveq #2,%d0 <== NOT EXECUTED
}
53348: 4e5e unlk %fp <== NOT EXECUTED
0004bec4 <_POSIX_Message_queue_Notify_handler>:
*/
void _POSIX_Message_queue_Notify_handler(
void *user_data
)
{
4bec4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4bec8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4beca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4bece: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
the_mq = user_data;
kill( getpid(), the_mq->notification.sigev_signo );
4bed0: 242a 0092 movel %a2@(146),%d2 <== NOT EXECUTED
4bed4: 4eb9 0005 29f8 jsr 529f8 <getpid> <== NOT EXECUTED
4beda: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4bedc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bede: 4eb9 0005 314c jsr 5314c <kill> <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
4bee4: 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;
4bee8: 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;
4beea: 42aa 007a clrl %a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4beee: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
4bef2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4bef6: 4e5e unlk %fp <== NOT EXECUTED
0004c1a0 <_POSIX_Message_queue_Receive_support>:
size_t msg_len,
unsigned int *msg_prio,
bool wait,
Watchdog_Interval timeout
)
{
4c1a0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4c1a4: 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(
4c1a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c1ac: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4c1b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c1b2: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4c1b8: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED
4c1bc: 4eb9 0004 f664 jsr 4f664 <_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 ) {
4c1c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c1c6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4c1ca: 671a beqs 4c1e6 <_POSIX_Message_queue_Receive_support+0x46><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c1cc: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c1d2: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c1d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c1d6: 7009 moveq #9,%d0 <== NOT EXECUTED
}
4c1d8: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c1de: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4c1e0: 2001 movel %d1,%d0 <== NOT EXECUTED
4c1e2: 4e5e unlk %fp <== NOT EXECUTED
4c1e4: 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 ) {
4c1e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c1e8: 7803 moveq #3,%d4 <== NOT EXECUTED
4c1ea: 7a01 moveq #1,%d5 <== NOT EXECUTED
4c1ec: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED
4c1f0: c881 andl %d1,%d4 <== NOT EXECUTED
4c1f2: ba84 cmpl %d4,%d5 <== NOT EXECUTED
4c1f4: 6700 00f0 beqw 4c2e6 <_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;
4c1f8: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
4c1fa: 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;
4c1fe: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
4c202: b0a8 0066 cmpl %a0@(102),%d0 <== NOT EXECUTED
4c206: 6500 0094 bcsw 4c29c <_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;
4c20a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c20c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c210: 4a03 tstb %d3 <== NOT EXECUTED
4c212: 6756 beqs 4c26a <_POSIX_Message_queue_Receive_support+0xca><== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c214: 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 )
4c218: 0801 000e btst #14,%d1 <== NOT EXECUTED
4c21c: 57c0 seq %d0 <== NOT EXECUTED
4c21e: 49c0 extbl %d0 <== NOT EXECUTED
4c220: 4480 negl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c222: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c224: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c228: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c22c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c22e: 4868 001a pea %a0@(26) <== NOT EXECUTED
4c232: 4eb9 0004 e5a4 jsr 4e5a4 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
4c238: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
4c23e: 2079 0006 9eae moveal 69eae <_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);
4c244: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED
4c248: 6d4e blts 4c298 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED
do_wait,
timeout
);
_Thread_Enable_dispatch();
*msg_prio =
4c24a: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
4c24e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
do_wait,
timeout
);
_Thread_Enable_dispatch();
*msg_prio =
4c252: 2280 movel %d0,%a1@ <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
4c254: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED
4c258: 6662 bnes 4c2bc <_POSIX_Message_queue_Receive_support+0x11c><== NOT EXECUTED
return length_out;
4c25a: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c25e: 2001 movel %d1,%d0 <== NOT EXECUTED
4c260: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
4c266: 4e5e unlk %fp <== NOT EXECUTED
4c268: 4e75 rts <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c26a: 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 )
4c26e: 4280 clrl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
4c270: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c272: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c276: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c27a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c27c: 4868 001a pea %a0@(26) <== NOT EXECUTED
4c280: 4eb9 0004 e5a4 jsr 4e5a4 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
4c286: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
4c28c: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c292: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED
4c296: 6cb2 bges 4c24a <_POSIX_Message_queue_Receive_support+0xaa><== NOT EXECUTED
4c298: 4480 negl %d0 <== NOT EXECUTED
4c29a: 60ae bras 4c24a <_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();
4c29c: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EMSGSIZE );
4c2a2: 747a moveq #122,%d2 <== NOT EXECUTED
4c2a4: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c2aa: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c2ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2ae: 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 );
4c2b0: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2b2: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
4c2b8: 4e5e unlk %fp <== NOT EXECUTED
4c2ba: 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(
4c2bc: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c2c2: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c2c8: 2440 moveal %d0,%a2 <== NOT EXECUTED
4c2ca: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4c2ce: 4eb9 0004 c59c jsr 4c59c <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4c2d4: 588f addql #4,%sp <== NOT EXECUTED
4c2d6: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c2d8: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2da: 2001 movel %d1,%d0 <== NOT EXECUTED
4c2dc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
4c2e2: 4e5e unlk %fp <== NOT EXECUTED
4c2e4: 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();
4c2e6: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4c2ec: 7609 moveq #9,%d3 <== NOT EXECUTED
4c2ee: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c2f4: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c2f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2f8: 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 );
4c2fa: 2083 movel %d3,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c2fc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
4c302: 4e5e unlk %fp <== NOT EXECUTED
...
0004c32c <_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 )
4c32c: 7020 moveq #32,%d0 <== NOT EXECUTED
size_t msg_len,
uint32_t msg_prio,
bool wait,
Watchdog_Interval timeout
)
{
4c32e: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4c332: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
4c336: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4c33a: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
4c33e: 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 )
4c342: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c344: 6500 00e2 bcsw 4c428 <_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(
4c348: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c34c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c34e: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4c354: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4c35a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c35e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4c362: 6600 00aa bnew 4c40e <_POSIX_Message_queue_Send_support+0xe2><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {
4c366: 2240 moveal %d0,%a1 <== NOT EXECUTED
4c368: 7a03 moveq #3,%d5 <== NOT EXECUTED
4c36a: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED
4c36e: ca81 andl %d1,%d5 <== NOT EXECUTED
4c370: 6700 00d0 beqw 4c442 <_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;
4c374: 2240 moveal %d0,%a1 <== NOT EXECUTED
4c376: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
4c37a: 4a04 tstb %d4 <== NOT EXECUTED
4c37c: 6750 beqs 4c3ce <_POSIX_Message_queue_Send_support+0xa2><== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c37e: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
4c382: 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 )
4c384: 0801 000e btst #14,%d1 <== NOT EXECUTED
4c388: 57c0 seq %d0 <== NOT EXECUTED
4c38a: 49c0 extbl %d0 <== NOT EXECUTED
4c38c: 4480 negl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c38e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c390: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c392: 42a7 clrl %sp@- <== NOT EXECUTED
4c394: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c396: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c39a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c39e: 4868 001a pea %a0@(26) <== NOT EXECUTED
4c3a2: 4eb9 0004 e6dc jsr 4e6dc <_CORE_message_queue_Submit> <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c3a8: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3ac: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c3ae: 4eb9 0005 021e jsr 5021e <_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 )
4c3b4: 7007 moveq #7,%d0 <== NOT EXECUTED
4c3b6: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c3b8: 6748 beqs 4c402 <_POSIX_Message_queue_Send_support+0xd6><== NOT EXECUTED
msg_status = _Thread_Executing->Wait.return_code;
if ( !msg_status )
4c3ba: 4a82 tstl %d2 <== NOT EXECUTED
4c3bc: 6600 00a4 bnew 4c462 <_POSIX_Message_queue_Send_support+0x136><== NOT EXECUTED
return msg_status;
4c3c0: 4281 clrl %d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c3c2: 2001 movel %d1,%d0 <== NOT EXECUTED
4c3c4: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
4c3ca: 4e5e unlk %fp <== NOT EXECUTED
4c3cc: 4e75 rts <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3ce: 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 )
4c3d2: 4280 clrl %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3d4: 4482 negl %d2 <== NOT EXECUTED
4c3d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c3d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c3da: 42a7 clrl %sp@- <== NOT EXECUTED
4c3dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c3de: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c3e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c3e6: 4868 001a pea %a0@(26) <== NOT EXECUTED
4c3ea: 4eb9 0004 e6dc jsr 4e6dc <_CORE_message_queue_Submit> <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c3f0: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
4c3f4: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
4c3f6: 4eb9 0005 021e jsr 5021e <_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 )
4c3fc: 7007 moveq #7,%d0 <== NOT EXECUTED
4c3fe: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c400: 66b8 bnes 4c3ba <_POSIX_Message_queue_Send_support+0x8e><== NOT EXECUTED
msg_status = _Thread_Executing->Wait.return_code;
4c402: 2079 0006 9eae moveal 69eae <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c408: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED
4c40c: 60ac bras 4c3ba <_POSIX_Message_queue_Send_support+0x8e><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c40e: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c414: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c416: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c418: 7009 moveq #9,%d0 <== NOT EXECUTED
}
4c41a: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c420: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4c422: 2001 movel %d1,%d0 <== NOT EXECUTED
4c424: 4e5e unlk %fp <== NOT EXECUTED
4c426: 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 );
4c428: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c42e: 7616 moveq #22,%d3 <== NOT EXECUTED
4c430: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c432: 2040 moveal %d0,%a0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c434: 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 );
4c436: 2083 movel %d3,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c438: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
4c43e: 4e5e unlk %fp <== NOT EXECUTED
4c440: 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();
4c442: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
4c448: 7409 moveq #9,%d2 <== NOT EXECUTED
4c44a: 4eb9 0005 69d4 jsr 569d4 <__errno> <== 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
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 );
4c456: 2082 movel %d2,%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
msg_status = _Thread_Executing->Wait.return_code;
if ( !msg_status )
return msg_status;
rtems_set_errno_and_return_minus_one(
4c462: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c468: 2440 moveal %d0,%a2 <== NOT EXECUTED
4c46a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c46c: 4eb9 0004 c59c jsr 4c59c <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4c472: 588f addql #4,%sp <== NOT EXECUTED
4c474: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c476: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c478: 2001 movel %d1,%d0 <== NOT EXECUTED
4c47a: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
4c480: 4e5e unlk %fp <== NOT EXECUTED
0004c59c <_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];
4c59c: 41f9 0006 6be8 lea 66be8 <_POSIX_Message_queue_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Message_queue_Translate_core_message_queue_return_code(
uint32_t the_message_queue_status
)
{
4c5a2: 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];
}
4c5a6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4c5aa: 4e5e unlk %fp <== NOT EXECUTED
4c5ac: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
000482c0 <_POSIX_Mutex_Get>:
POSIX_Mutex_Control *_POSIX_Mutex_Get (
pthread_mutex_t *mutex,
Objects_Locations *location
)
{
482c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
482c4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
482c6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
482ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
482cc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
___POSIX_Mutex_Get_support_error_check( mutex, location );
482d0: 4a8a tstl %a2 <== NOT EXECUTED
482d2: 6750 beqs 48324 <_POSIX_Mutex_Get+0x64> <== NOT EXECUTED
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
482d4: 2012 movel %a2@,%d0 <== NOT EXECUTED
482d6: 72ff moveq #-1,%d1 <== NOT EXECUTED
482d8: b280 cmpl %d0,%d1 <== NOT EXECUTED
482da: 6720 beqs 482fc <_POSIX_Mutex_Get+0x3c> <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
482dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
482de: 2f00 movel %d0,%sp@- <== NOT EXECUTED
482e0: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED
482e6: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> <== NOT EXECUTED
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
return (POSIX_Mutex_Control *)
482ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
482f0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
482f4: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
482f8: 4e5e unlk %fp <== NOT EXECUTED
482fa: 4e75 rts <== NOT EXECUTED
Objects_Locations *location
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
482fc: 42a7 clrl %sp@- <== NOT EXECUTED
482fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48300: 4eb9 0004 8404 jsr 48404 <pthread_mutex_init> <== NOT EXECUTED
48306: 508f addql #8,%sp <== NOT EXECUTED
48308: 4a80 tstl %d0 <== NOT EXECUTED
4830a: 6618 bnes 48324 <_POSIX_Mutex_Get+0x64> <== NOT EXECUTED
4830c: 2012 movel %a2@,%d0 <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
4830e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48310: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48312: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED
48318: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> <== NOT EXECUTED
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
return (POSIX_Mutex_Control *)
4831e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48322: 60cc bras 482f0 <_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 );
48324: 7001 moveq #1,%d0 <== NOT EXECUTED
48326: 2680 movel %d0,%a3@ <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
48328: 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 );
4832c: 4280 clrl %d0 <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
4832e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
48332: 4e5e unlk %fp <== NOT EXECUTED
00048336 <_POSIX_Mutex_Get_interrupt_disable>:
POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable (
pthread_mutex_t *mutex,
Objects_Locations *location,
ISR_Level *level
)
{
48336: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4833a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4833c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
48340: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48342: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
___POSIX_Mutex_Get_support_error_check( mutex, location );
48346: 4a8a tstl %a2 <== NOT EXECUTED
48348: 6758 beqs 483a2 <_POSIX_Mutex_Get_interrupt_disable+0x6c><== NOT EXECUTED
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
4834a: 2012 movel %a2@,%d0 <== NOT EXECUTED
4834c: 72ff moveq #-1,%d1 <== NOT EXECUTED
4834e: b280 cmpl %d0,%d1 <== NOT EXECUTED
48350: 6724 beqs 48376 <_POSIX_Mutex_Get_interrupt_disable+0x40><== NOT EXECUTED
return (POSIX_Mutex_Control *) _Objects_Get_isr_disable(
48352: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
48356: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48358: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4835a: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED
48360: 4eb9 0004 b1d4 jsr 4b1d4 <_Objects_Get_isr_disable> <== NOT EXECUTED
48366: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&_POSIX_Mutex_Information,
(Objects_Id) *mutex,
location,
level
);
}
4836a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4836e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
48372: 4e5e unlk %fp <== NOT EXECUTED
48374: 4e75 rts <== NOT EXECUTED
ISR_Level *level
)
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
48376: 42a7 clrl %sp@- <== NOT EXECUTED
48378: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4837a: 4eb9 0004 8404 jsr 48404 <pthread_mutex_init> <== NOT EXECUTED
48380: 508f addql #8,%sp <== NOT EXECUTED
48382: 4a80 tstl %d0 <== NOT EXECUTED
48384: 661c bnes 483a2 <_POSIX_Mutex_Get_interrupt_disable+0x6c><== NOT EXECUTED
48386: 2012 movel %a2@,%d0 <== NOT EXECUTED
return (POSIX_Mutex_Control *) _Objects_Get_isr_disable(
48388: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4838c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4838e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48390: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED
48396: 4eb9 0004 b1d4 jsr 4b1d4 <_Objects_Get_isr_disable> <== NOT EXECUTED
4839c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
483a0: 60c8 bras 4836a <_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 );
483a2: 7201 moveq #1,%d1 <== NOT EXECUTED
483a4: 4280 clrl %d0 <== NOT EXECUTED
483a6: 2681 movel %d1,%a3@ <== NOT EXECUTED
&_POSIX_Mutex_Information,
(Objects_Id) *mutex,
location,
level
);
}
483a8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
483ac: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
483b0: 4e5e unlk %fp <== NOT EXECUTED
0004855c <_POSIX_Mutex_Lock_support>:
int _POSIX_Mutex_Lock_support(
pthread_mutex_t *mutex,
bool blocking,
Watchdog_Interval timeout
)
{
4855c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
48560: 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 );
48562: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
48566: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4856a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int _POSIX_Mutex_Lock_support(
pthread_mutex_t *mutex,
bool blocking,
Watchdog_Interval timeout
)
{
4856e: 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 );
48572: 4eb9 0004 8336 jsr 48336 <_POSIX_Mutex_Get_interrupt_disable><== NOT EXECUTED
switch ( location ) {
48578: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4857c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48580: 663c bnes 485be <_POSIX_Mutex_Lock_support+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_mutex_Seize(
48582: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
48586: 2040 moveal %d0,%a0 <== NOT EXECUTED
48588: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4858c: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
48592: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48594: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
48598: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4859c: 4eb9 0004 a504 jsr 4a504 <_CORE_mutex_Seize> <== NOT EXECUTED
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
(CORE_mutex_Status) _Thread_Executing->Wait.return_code
485a2: 2079 0006 5452 moveal 65452 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
the_mutex->Object.id,
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
485a8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
485ac: 4eb9 0004 86f0 jsr 486f0 <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
485b2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
the_mutex->Object.id,
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
485b6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
485ba: 4e5e unlk %fp <== NOT EXECUTED
485bc: 4e75 rts <== NOT EXECUTED
485be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
485c2: 7016 moveq #22,%d0 <== NOT EXECUTED
}
485c4: 4e5e unlk %fp <== NOT EXECUTED
000486f0 <_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];
486f0: 41f9 0006 2678 lea 62678 <_POSIX_Mutex_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Mutex_Translate_core_mutex_return_code(
CORE_mutex_Status the_mutex_status
)
{
486f6: 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];
}
486fa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
486fe: 4e5e unlk %fp <== NOT EXECUTED
48700: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004d0c8 <_POSIX_Priority_Is_valid>:
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
int priority
)
{
4d0c8: 4e56 0000 linkw %fp,#0
4d0cc: 202e 0008 movel %fp@(8),%d0
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4d0d0: 6f12 bles 4d0e4 <_POSIX_Priority_Is_valid+0x1c> <== NEVER TAKEN
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
4d0d2: 4281 clrl %d1
4d0d4: 1239 0005 f846 moveb 5f846 <rtems_maximum_priority>,%d1
}
4d0da: 4e5e unlk %fp
#endif
#include <rtems/system.h>
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
4d0dc: b280 cmpl %d0,%d1
4d0de: 5ec0 sgt %d0
4d0e0: 4480 negl %d0
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
4d0e2: 4e75 rts
4d0e4: 4e5e unlk %fp
bool _POSIX_Priority_Is_valid(
int priority
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4d0e6: 4200 clrb %d0 <== NOT EXECUTED
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
...
000477e4 <_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];
477e4: 41f9 0006 05a8 lea 605a8 <_POSIX_RWLock_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_RWLock_Translate_core_RWLock_return_code(
CORE_RWLock_Status the_rwlock_status
)
{
477ea: 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];
}
477ee: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
477f2: 4e5e unlk %fp <== NOT EXECUTED
477f4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fafc <_POSIX_Semaphore_Create_support>:
const char *name,
int pshared,
unsigned int value,
POSIX_Semaphore_Control **the_sem
)
{
4fafc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4fb00: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fb02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fb04: 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)
4fb08: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
4fb0c: 6600 0112 bnew 4fc20 <_POSIX_Semaphore_Create_support+0x124><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
if ( name ) {
4fb10: 4a82 tstl %d2 <== NOT EXECUTED
4fb12: 6718 beqs 4fb2c <_POSIX_Semaphore_Create_support+0x30><== NOT EXECUTED
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
4fb14: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
4fb18: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fb1a: 4eb9 0005 413c jsr 5413c <strnlen> <== NOT EXECUTED
4fb20: 508f addql #8,%sp <== NOT EXECUTED
4fb22: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED
4fb28: 6200 00dc bhiw 4fc06 <_POSIX_Semaphore_Create_support+0x10a><== NOT EXECUTED
4fb2c: 2039 0006 4f74 movel 64f74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4fb32: 5280 addql #1,%d0 <== NOT EXECUTED
4fb34: 23c0 0006 4f74 movel %d0,64f74 <_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 );
4fb3a: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4fb40: 4eb9 0004 b084 jsr 4b084 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
4fb46: 588f addql #4,%sp <== NOT EXECUTED
4fb48: 2440 moveal %d0,%a2 <== NOT EXECUTED
4fb4a: 4a80 tstl %d0 <== NOT EXECUTED
4fb4c: 6700 00ec beqw 4fc3a <_POSIX_Semaphore_Create_support+0x13e><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
}
the_semaphore->process_shared = pshared;
4fb50: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
if ( name ) {
4fb54: 4a82 tstl %d2 <== NOT EXECUTED
4fb56: 675c beqs 4fbb4 <_POSIX_Semaphore_Create_support+0xb8><== NOT EXECUTED
the_semaphore->named = true;
the_semaphore->open_count = 1;
4fb58: 7001 moveq #1,%d0 <== NOT EXECUTED
4fb5a: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
}
the_semaphore->process_shared = pshared;
if ( name ) {
the_semaphore->named = true;
4fb5e: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 1;
the_semaphore->linked = true;
4fb62: 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;
4fb66: 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;
4fb68: 42aa 005e clrl %a2@(94) <== NOT EXECUTED
/*
* This effectively disables limit checking.
*/
the_sem_attr->maximum_count = 0xFFFFFFFF;
4fb6c: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4fb70: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4fb74: 486a 005a pea %a2@(90) <== NOT EXECUTED
4fb78: 486a 001a pea %a2@(26) <== NOT EXECUTED
4fb7c: 4eb9 0004 aa68 jsr 4aa68 <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fb82: 2079 0006 51c2 moveal 651c2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fb88: 4280 clrl %d0 <== NOT EXECUTED
4fb8a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fb8e: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4fb92: 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;
4fb96: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
4fb9a: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fb9c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4fba2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fba6: 4280 clrl %d0 <== NOT EXECUTED
}
4fba8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4fbac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4fbb0: 4e5e unlk %fp <== NOT EXECUTED
4fbb2: 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;
4fbb4: 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;
4fbb8: 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;
4fbba: 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;
4fbbe: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 0;
the_semaphore->linked = false;
4fbc2: 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;
4fbc6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4fbc8: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4fbcc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4fbd0: 486a 005a pea %a2@(90) <== NOT EXECUTED
4fbd4: 486a 001a pea %a2@(26) <== NOT EXECUTED
4fbd8: 4eb9 0004 aa68 jsr 4aa68 <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fbde: 2079 0006 51c2 moveal 651c2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fbe4: 4280 clrl %d0 <== NOT EXECUTED
4fbe6: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fbea: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4fbee: 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;
4fbf2: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
4fbf6: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fbf8: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4fbfe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fc02: 4280 clrl %d0 <== NOT EXECUTED
4fc04: 60a2 bras 4fba8 <_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 );
4fc06: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
4fc0c: 745b moveq #91,%d2 <== NOT EXECUTED
4fc0e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fc10: 70ff moveq #-1,%d0 <== NOT EXECUTED
4fc12: 2082 movel %d2,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc14: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4fc18: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4fc1c: 4e5e unlk %fp <== NOT EXECUTED
4fc1e: 4e75 rts <== NOT EXECUTED
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 );
4fc20: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc26: 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 );
4fc2a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fc2c: 7258 moveq #88,%d1 <== NOT EXECUTED
4fc2e: 70ff moveq #-1,%d0 <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc30: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4fc34: 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 );
4fc36: 2081 movel %d1,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc38: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
4fc3a: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4fc40: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc46: 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 );
4fc4a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fc4c: 721c moveq #28,%d1 <== NOT EXECUTED
4fc4e: 70ff moveq #-1,%d0 <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
4fc50: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4fc54: 4e5e unlk %fp <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENOSPC );
4fc56: 2081 movel %d1,%a0@ <== NOT EXECUTED
*the_sem = the_semaphore;
_Thread_Enable_dispatch();
return 0;
}
...
0004fc5c <_POSIX_Semaphore_Delete>:
*/
void _POSIX_Semaphore_Delete(
POSIX_Semaphore_Control *the_semaphore
)
{
4fc5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4fc60: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fc62: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_semaphore->linked && !the_semaphore->open_count ) {
4fc66: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED
4fc6a: 6606 bnes 4fc72 <_POSIX_Semaphore_Delete+0x16> <== NOT EXECUTED
4fc6c: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED
4fc70: 6708 beqs 4fc7a <_POSIX_Semaphore_Delete+0x1e> <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4fc72: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4fc76: 4e5e unlk %fp <== NOT EXECUTED
4fc78: 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 );
4fc7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fc7c: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4fc82: 4eb9 0004 b114 jsr 4b114 <_Objects_Close> <== NOT EXECUTED
_CORE_semaphore_Flush(
4fc88: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4fc8c: 42a7 clrl %sp@- <== NOT EXECUTED
4fc8e: 486a 001a pea %a2@(26) <== NOT EXECUTED
4fc92: 4eb9 0004 aa5c jsr 4aa5c <_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 );
4fc98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fc9a: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4fca0: 4eb9 0004 b3d8 jsr 4b3d8 <_Objects_Free> <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4fca6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4fcaa: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4fcae: 4e5e unlk %fp <== NOT EXECUTED
...
0004fcb4 <_POSIX_Semaphore_Name_to_id>:
int _POSIX_Semaphore_Name_to_id(
const char *name,
sem_t *id
)
{
4fcb4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fcb8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
4fcbc: 4a88 tstl %a0 <== NOT EXECUTED
4fcbe: 6704 beqs 4fcc4 <_POSIX_Semaphore_Name_to_id+0x10><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
4fcc0: 4a10 tstb %a0@ <== NOT EXECUTED
4fcc2: 6606 bnes 4fcca <_POSIX_Semaphore_Name_to_id+0x16><== NOT EXECUTED
return EINVAL;
4fcc4: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
}
4fcc6: 4e5e unlk %fp <== NOT EXECUTED
4fcc8: 4e75 rts <== NOT EXECUTED
return EINVAL;
if ( !name[0] )
return EINVAL;
status = _Objects_Name_to_id_string(
4fcca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fcce: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4fcd0: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4fcd6: 4eb9 0005 092c jsr 5092c <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4fcdc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fce0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4fce4: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fce8: 4a80 tstl %d0 <== NOT EXECUTED
4fcea: 67da beqs 4fcc6 <_POSIX_Semaphore_Name_to_id+0x12><== NOT EXECUTED
return 0;
return ENOENT;
4fcec: 7002 moveq #2,%d0 <== NOT EXECUTED
}
4fcee: 4e5e unlk %fp <== NOT EXECUTED
...
00052570 <_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];
52570: 41f9 0006 2a9c lea 62a9c <_POSIX_Semaphore_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Semaphore_Translate_core_semaphore_return_code(
CORE_semaphore_Status the_semaphore_status
)
{
52576: 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];
}
5257a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5257e: 4e5e unlk %fp <== NOT EXECUTED
52580: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fd28 <_POSIX_Semaphore_Wait_support>:
int _POSIX_Semaphore_Wait_support(
sem_t *sem,
bool blocking,
Watchdog_Interval timeout
)
{
4fd28: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fd2c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4fd30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fd32: 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 );
4fd34: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fd38: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4fd3a: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4fd40: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
4fd44: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
4fd4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fd4e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fd52: 671c beqs 4fd70 <_POSIX_Semaphore_Wait_support+0x48><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fd54: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
}
4fd5a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fd5e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fd60: 7016 moveq #22,%d0 <== NOT EXECUTED
4fd62: 72ff moveq #-1,%d1 <== NOT EXECUTED
}
4fd64: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4fd68: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4fd6a: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4fd6c: 2001 movel %d1,%d0 <== NOT EXECUTED
4fd6e: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_CORE_semaphore_Seize(
4fd70: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4fd74: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fd76: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
4fd7c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fd7e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4fd82: 4868 001a pea %a0@(26) <== NOT EXECUTED
4fd86: 4eb9 0005 0448 jsr 50448 <_CORE_semaphore_Seize> <== NOT EXECUTED
&the_semaphore->Semaphore,
the_semaphore->Object.id,
blocking,
timeout
);
_Thread_Enable_dispatch();
4fd8c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !_Thread_Executing->Wait.return_code )
4fd92: 2079 0006 53fe moveal 653fe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4fd98: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4fd9c: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED
4fda0: 6610 bnes 4fdb2 <_POSIX_Semaphore_Wait_support+0x8a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fda2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
timeout
);
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
4fda6: 4281 clrl %d1 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fda8: 2001 movel %d1,%d0 <== NOT EXECUTED
4fdaa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4fdae: 4e5e unlk %fp <== NOT EXECUTED
4fdb0: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
rtems_set_errno_and_return_minus_one(
4fdb2: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
4fdb8: 2079 0006 53fe moveal 653fe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4fdbe: 2440 moveal %d0,%a2 <== NOT EXECUTED
4fdc0: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4fdc4: 4eb9 0005 2570 jsr 52570 <_POSIX_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fdca: 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(
4fdce: 588f addql #4,%sp <== NOT EXECUTED
4fdd0: 72ff moveq #-1,%d1 <== NOT EXECUTED
4fdd2: 2480 movel %d0,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4fdd4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4fdd8: 2001 movel %d1,%d0 <== NOT EXECUTED
4fdda: 4e5e unlk %fp <== NOT EXECUTED
...
00046708 <_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];
46708: 41f9 0005 e5c8 lea 5e5c8 <_POSIX_Spinlock_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Spinlock_Translate_core_spinlock_return_code(
CORE_spinlock_Status the_spinlock_status
)
{
4670e: 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];
}
46712: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46716: 4e5e unlk %fp <== NOT EXECUTED
46718: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>:
#include <rtems/posix/pthread.h>
void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(
Thread_Control *the_thread
)
{
4b95c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b960: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
POSIX_API_Control *thread_support;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4b964: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
4b968: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED
4b96c: 6608 bnes 4b976 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED
4b96e: 7001 moveq #1,%d0 <== NOT EXECUTED
4b970: b0a8 00dc cmpl %a0@(220),%d0 <== NOT EXECUTED
4b974: 6708 beqs 4b97e <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x22><== NOT EXECUTED
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
} else
_Thread_Enable_dispatch();
}
4b976: 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();
4b978: 4ef9 0004 8ca2 jmp 48ca2 <_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 &&
4b97e: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED
4b982: 67f2 beqs 4b976 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x1a><== NOT EXECUTED
thread_support->cancelation_requested ) {
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
4b984: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4b988: 2039 0006 046c movel 6046c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4b98e: 5380 subql #1,%d0 <== NOT EXECUTED
4b990: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4b992: 23c0 0006 046c movel %d0,6046c <_Thread_Dispatch_disable_level><== NOT EXECUTED
4b998: 4eb9 0004 c2ac jsr 4c2ac <_POSIX_Thread_Exit> <== NOT EXECUTED
4b99e: 508f addql #8,%sp <== NOT EXECUTED
} else
_Thread_Enable_dispatch();
}
4b9a0: 4e5e unlk %fp <== NOT EXECUTED
0004e2fc <_POSIX_Thread_Exit>:
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4e2fc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4e300: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4e304: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e308: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4e30c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e310: 4eb9 0004 7ca4 jsr 47ca4 <_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();
4e316: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *value_ptr
)
{
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4e31c: 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();
4e31e: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4e324: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4e32a: 5280 addql #1,%d0 <== NOT EXECUTED
4e32c: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
_Thread_Close( the_information, the_thread );
4e332: 2f0a movel %a2,%sp@- <== NOT EXECUTED
*/
_RTEMS_Lock_allocator();
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
4e334: 2542 0028 movel %d2,%a2@(40) <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
4e338: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e33a: 4eb9 0004 85e8 jsr 485e8 <_Thread_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
4e340: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e342: 4879 0005 fe3a pea 5fe3a <_POSIX_Threads_Information> <== NOT EXECUTED
4e348: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> <== NOT EXECUTED
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
4e34e: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4e354: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
4e35a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4e35e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4e364: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
4e366: 4ef9 0004 893e jmp 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
0004d0ec <_POSIX_Thread_Translate_sched_param>:
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4d0ec: 4e56 ffe8 linkw %fp,#-24
4d0f0: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
4d0f4: 246e 000c moveal %fp@(12),%a2
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4d0f8: 47f9 0004 d0c8 lea 4d0c8 <_POSIX_Priority_Is_valid>,%a3
4d0fe: 2f12 movel %a2@,%sp@-
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4d100: 242e 0008 movel %fp@(8),%d2
4d104: 286e 0010 moveal %fp@(16),%a4
4d108: 2a6e 0014 moveal %fp@(20),%a5
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4d10c: 4e93 jsr %a3@
4d10e: 588f addql #4,%sp
4d110: 4a00 tstb %d0
4d112: 6720 beqs 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NEVER TAKEN
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
4d114: 4294 clrl %a4@
*budget_callout = NULL;
4d116: 4295 clrl %a5@
if ( policy == SCHED_OTHER ) {
4d118: 4a82 tstl %d2
4d11a: 6724 beqs 4d140 <_POSIX_Thread_Translate_sched_param+0x54><== NEVER TAKEN
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
return 0;
}
if ( policy == SCHED_FIFO ) {
4d11c: 7001 moveq #1,%d0
4d11e: b082 cmpl %d2,%d0
4d120: 6700 0086 beqw 4d1a8 <_POSIX_Thread_Translate_sched_param+0xbc>
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
4d124: 103c 0002 moveb #2,%d0
4d128: b082 cmpl %d2,%d0
4d12a: 6700 0088 beqw 4d1b4 <_POSIX_Thread_Translate_sched_param+0xc8><== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
return 0;
}
if ( policy == SCHED_SPORADIC ) {
4d12e: 7004 moveq #4,%d0 <== NOT EXECUTED
4d130: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d132: 671c beqs 4d150 <_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;
4d134: 7016 moveq #22,%d0 <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d136: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4d13c: 4e5e unlk %fp <== NOT EXECUTED
4d13e: 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;
4d140: 7201 moveq #1,%d1 <== NOT EXECUTED
return 0;
4d142: 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;
4d144: 2881 movel %d1,%a4@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d146: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4d14c: 4e5e unlk %fp <== NOT EXECUTED
4d14e: 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) &&
4d150: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4d154: 6606 bnes 4d15c <_POSIX_Thread_Translate_sched_param+0x70><== NOT EXECUTED
4d156: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED
4d15a: 67d8 beqs 4d134 <_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) &&
4d15c: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d160: 6606 bnes 4d168 <_POSIX_Thread_Translate_sched_param+0x7c><== NOT EXECUTED
4d162: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4d166: 67cc beqs 4d134 <_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 ) <
4d168: 486a 0008 pea %a2@(8) <== NOT EXECUTED
4d16c: 243c 0004 a9ac movel #305580,%d2 <== NOT EXECUTED
4d172: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d174: 4e90 jsr %a0@ <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4d176: 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 ) <
4d17a: 2600 movel %d0,%d3 <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4d17c: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d17e: 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 ) <
4d180: 508f addql #8,%sp <== NOT EXECUTED
4d182: b083 cmpl %d3,%d0 <== NOT EXECUTED
4d184: 62ae bhis 4d134 <_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 ) )
4d186: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED
4d18a: 4e93 jsr %a3@ <== NOT EXECUTED
4d18c: 588f addql #4,%sp <== NOT EXECUTED
4d18e: 4a00 tstb %d0 <== NOT EXECUTED
4d190: 67a2 beqs 4d134 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;
4d192: 7003 moveq #3,%d0 <== NOT EXECUTED
4d194: 2880 movel %d0,%a4@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
4d196: 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;
4d198: 2abc 0004 6e54 movel #290388,%a5@ <== NOT EXECUTED
return 0;
}
return EINVAL;
}
4d19e: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4d1a4: 4e5e unlk %fp <== NOT EXECUTED
4d1a6: 4e75 rts <== NOT EXECUTED
return 0;
}
if ( policy == SCHED_FIFO ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
4d1a8: 4280 clrl %d0
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d1aa: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4d1b0: 4e5e unlk %fp
4d1b2: 4e75 rts
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
4d1b4: 2880 movel %d0,%a4@
return 0;
4d1b6: 4200 clrb %d0
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4d1b8: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
4d1be: 4e5e unlk %fp <== NOT EXECUTED
...
0004bc1c <_POSIX_Threads_Create_extension>:
bool _POSIX_Threads_Create_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *created
)
{
4bc1c: 4e56 0000 linkw %fp,#0
4bc20: 2f0b movel %a3,%sp@-
4bc22: 266e 000c moveal %fp@(12),%a3
4bc26: 2f0a movel %a2,%sp@-
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4bc28: 4878 00f0 pea f0 <DBL_MANT_DIG+0xbb>
4bc2c: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
if ( !api )
4bc32: 588f addql #4,%sp
)
{
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4bc34: 2440 moveal %d0,%a2
if ( !api )
4bc36: 4a80 tstl %d0
4bc38: 6700 013c beqw 4bd76 <_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;
4bc3c: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
4bc40: 42a7 clrl %sp@-
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
4bc42: 2740 0102 movel %d0,%a3@(258)
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4bc46: 2f00 movel %d0,%sp@-
4bc48: 4eb9 0004 f200 jsr 4f200 <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
4bc4e: 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;
4bc52: 41ea 008c lea %a2@(140),%a0
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4bc56: 4281 clrl %d1
4bc58: 1239 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d1
4bc5e: 4280 clrl %d0
4bc60: 102b 0008 moveb %a3@(8),%d0
4bc64: 92ab 0014 subl %a3@(20),%d1
4bc68: 20f9 0005 d970 movel 5d970 <_POSIX_Threads_Default_attributes+0x1c>,%a0@+
4bc6e: 20f9 0005 d974 movel 5d974 <_POSIX_Threads_Default_attributes+0x20>,%a0@+
4bc74: 20f9 0005 d978 movel 5d978 <_POSIX_Threads_Default_attributes+0x24>,%a0@+
4bc7a: 20f9 0005 d97c movel 5d97c <_POSIX_Threads_Default_attributes+0x28>,%a0@+
4bc80: 20f9 0005 d980 movel 5d980 <_POSIX_Threads_Default_attributes+0x2c>,%a0@+
4bc86: 20b9 0005 d984 movel 5d984 <_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 );
4bc8c: 41ea 00e8 lea %a2@(232),%a0
4bc90: 2541 0088 movel %d1,%a2@(136)
4bc94: 7207 moveq #7,%d1
4bc96: 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;
4bc98: 123c 0001 moveb #1,%d1
4bc9c: 2541 0010 movel %d1,%a2@(16)
4bca0: 2541 0014 movel %d1,%a2@(20)
4bca4: 123c 0002 moveb #2,%d1
4bca8: 2541 0018 movel %d1,%a2@(24)
4bcac: 123c 0001 moveb #1,%d1
4bcb0: 2548 00e4 movel %a0,%a2@(228)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4bcb4: 41ea 00e4 lea %a2@(228),%a0
4bcb8: 2541 0038 movel %d1,%a2@(56)
4bcbc: 2541 003c movel %d1,%a2@(60)
api->detachstate = _POSIX_Threads_Default_attributes.detachstate;
4bcc0: 2541 0040 movel %d1,%a2@(64)
api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy;
4bcc4: 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
4bcc8: 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;
4bccc: 24bc 0000 0001 movel #1,%a2@
4bcd2: 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;
4bcd6: 42aa 00e0 clrl %a2@(224)
api->cancelability_state = PTHREAD_CANCEL_ENABLE;
4bcda: 42aa 00d8 clrl %a2@(216)
api->cancelability_type = PTHREAD_CANCEL_DEFERRED;
4bcde: 42aa 00dc clrl %a2@(220)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4bce2: 42aa 00e8 clrl %a2@(232)
*
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
4bce6: 42aa 00d4 clrl %a2@(212)
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4bcea: b280 cmpl %d0,%d1
4bcec: 6744 beqs 4bd32 <_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;
4bcee: 70ff moveq #-1,%d0
4bcf0: 2540 00d0 movel %d0,%a2@(208)
}
_Thread_queue_Initialize(
4bcf4: 42a7 clrl %sp@-
4bcf6: 4878 1000 pea 1000 <D_MAX_EXP+0x801>
4bcfa: 42a7 clrl %sp@-
4bcfc: 486a 0044 pea %a2@(68)
4bd00: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4bd06: 222b 0008 movel %a3@(8),%d1
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4bd0a: 41f9 0004 bd84 lea 4bd84 <_POSIX_Threads_Sporadic_budget_TSR>,%a0
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4bd10: 4fef 0010 lea %sp@(16),%sp
4bd14: 7001 moveq #1,%d0
4bd16: 2548 00c4 movel %a0,%a2@(196)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4bd1a: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine;
the_watchdog->id = id;
4bd1e: 2541 00c8 movel %d1,%a2@(200)
the_watchdog->user_data = user_data;
4bd22: 254b 00cc movel %a3,%a2@(204)
}
4bd26: 246e fff8 moveal %fp@(-8),%a2
4bd2a: 266e fffc moveal %fp@(-4),%a3
4bd2e: 4e5e unlk %fp
4bd30: 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 ];
4bd32: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
api->signals_blocked = executing_api->signals_blocked;
4bd38: 2068 0102 moveal %a0@(258),%a0
4bd3c: 2568 00d0 00d0 movel %a0@(208),%a2@(208)
} else {
api->signals_blocked = 0xffffffff;
}
_Thread_queue_Initialize(
4bd42: 42a7 clrl %sp@-
4bd44: 4878 1000 pea 1000 <D_MAX_EXP+0x801>
4bd48: 42a7 clrl %sp@-
4bd4a: 486a 0044 pea %a2@(68)
4bd4e: 4eb9 0004 90d0 jsr 490d0 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4bd54: 222b 0008 movel %a3@(8),%d1
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4bd58: 41f9 0004 bd84 lea 4bd84 <_POSIX_Threads_Sporadic_budget_TSR>,%a0
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4bd5e: 4fef 0010 lea %sp@(16),%sp
4bd62: 2548 00c4 movel %a0,%a2@(196)
4bd66: 7001 moveq #1,%d0
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4bd68: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine;
the_watchdog->id = id;
4bd6c: 2541 00c8 movel %d1,%a2@(200)
the_watchdog->user_data = user_data;
4bd70: 254b 00cc movel %a3,%a2@(204)
4bd74: 60b0 bras 4bd26 <_POSIX_Threads_Create_extension+0x10a>
}
4bd76: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4bd7a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4bd7e: 4e5e unlk %fp <== NOT EXECUTED
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
4bd80: 4200 clrb %d0 <== NOT EXECUTED
created->Object.id,
created
);
return true;
}
0004bb8a <_POSIX_Threads_Delete_extension>:
*/
void _POSIX_Threads_Delete_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *deleted
)
{
4bb8a: 4e56 ffec linkw %fp,#-20
4bb8e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
4bb92: 266e 000c moveal %fp@(12),%a3
4bb96: 45f9 0004 8ca0 lea 48ca0 <_Thread_queue_Dequeue>,%a2
api = deleted->API_Extensions[ THREAD_API_POSIX ];
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4bb9c: 2f0b movel %a3,%sp@-
{
Thread_Control *the_thread;
POSIX_API_Control *api;
void **value_ptr;
api = deleted->API_Extensions[ THREAD_API_POSIX ];
4bb9e: 286b 0102 moveal %a3@(258),%a4
4bba2: 240c movel %a4,%d2
4bba4: 0682 0000 0044 addil #68,%d2
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4bbaa: 4eb9 0004 df3c jsr 4df3c <_POSIX_Threads_cancel_run>
/*
* Run all the key destructors
*/
_POSIX_Keys_Run_destructors( deleted );
4bbb0: 2f0b movel %a3,%sp@-
4bbb2: 4eb9 0004 dfa8 jsr 4dfa8 <_POSIX_Keys_Run_destructors>
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
4bbb8: 262b 0028 movel %a3@(40),%d3
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4bbbc: 508f addql #8,%sp
4bbbe: 2f02 movel %d2,%sp@-
4bbc0: 4e92 jsr %a2@
4bbc2: 588f addql #4,%sp
4bbc4: 4a80 tstl %d0
4bbc6: 6712 beqs 4bbda <_POSIX_Threads_Delete_extension+0x50><== ALWAYS TAKEN
*(void **)the_thread->Wait.return_argument = value_ptr;
4bbc8: 2240 moveal %d0,%a1 <== NOT EXECUTED
4bbca: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED
4bbce: 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 )) )
4bbd0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4bbd2: 4e92 jsr %a2@ <== NOT EXECUTED
4bbd4: 588f addql #4,%sp <== NOT EXECUTED
4bbd6: 4a80 tstl %d0 <== NOT EXECUTED
4bbd8: 66ee bnes 4bbc8 <_POSIX_Threads_Delete_extension+0x3e><== NOT EXECUTED
*(void **)the_thread->Wait.return_argument = value_ptr;
if ( api->schedpolicy == SCHED_SPORADIC )
4bbda: 103c 0004 moveb #4,%d0
4bbde: b0ac 0084 cmpl %a4@(132),%d0
4bbe2: 6716 beqs 4bbfa <_POSIX_Threads_Delete_extension+0x70><== NEVER TAKEN
(void) _Watchdog_Remove( &api->Sporadic_timer );
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4bbe4: 42ab 0102 clrl %a3@(258)
(void) _Workspace_Free( api );
4bbe8: 2d4c 0008 movel %a4,%fp@(8)
}
4bbec: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4bbf2: 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 );
4bbf4: 4ef9 0004 9b6e jmp 49b6e <_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 );
4bbfa: 486c 00a8 pea %a4@(168) <== NOT EXECUTED
4bbfe: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
4bc04: 588f addql #4,%sp <== NOT EXECUTED
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4bc06: 42ab 0102 clrl %a3@(258) <== NOT EXECUTED
(void) _Workspace_Free( api );
4bc0a: 2d4c 0008 movel %a4,%fp@(8) <== NOT EXECUTED
}
4bc0e: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4bc14: 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 );
4bc16: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> <== NOT EXECUTED
0004bb5e <_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);
4bb5e: 4280 clrl %d0
4bb60: 7207 moveq #7,%d1
* This method is invoked each time a thread exits.
*/
void _POSIX_Threads_Exitted_extension(
Thread_Control *executing
)
{
4bb62: 4e56 0000 linkw %fp,#0
4bb66: 206e 0008 moveal %fp@(8),%a0
4bb6a: 1028 0008 moveb %a0@(8),%d0
4bb6e: 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 )
4bb70: 123c 0003 moveb #3,%d1
4bb74: b280 cmpl %d0,%d1
4bb76: 6704 beqs 4bb7c <_POSIX_Threads_Exitted_extension+0x1e><== NEVER TAKEN
pthread_exit( executing->Wait.return_argument );
}
4bb78: 4e5e unlk %fp
4bb7a: 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 );
4bb7c: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED
}
4bb82: 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 );
4bb84: 4ef9 0004 e36c jmp 4e36c <pthread_exit> <== NOT EXECUTED
00046ae4 <_POSIX_Threads_Initialize_user_threads_body>:
*
* Output parameters: NONE
*/
void _POSIX_Threads_Initialize_user_threads_body(void)
{
46ae4: 4e56 ff98 linkw %fp,#-104
46ae8: 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;
46aec: 2479 0005 f83e moveal 5f83e <Configuration_POSIX_API+0x34>,%a2
maximum = Configuration_POSIX_API.number_of_initialization_threads;
46af2: 2839 0005 f83a movel 5f83a <Configuration_POSIX_API+0x30>,%d4
if ( !user_threads || maximum == 0 )
46af8: 4a8a tstl %a2
46afa: 675a beqs 46b56 <_POSIX_Threads_Initialize_user_threads_body+0x72><== NEVER TAKEN
46afc: 4a84 tstl %d4
46afe: 6756 beqs 46b56 <_POSIX_Threads_Initialize_user_threads_body+0x72><== NEVER TAKEN
46b00: 240e movel %fp,%d2
46b02: 2a0e movel %fp,%d5
46b04: 4283 clrl %d3
46b06: 0682 ffff ffbc addil #-68,%d2
46b0c: 2c3c 0004 d1c4 movel #315844,%d6
46b12: 4bf9 0004 d1f0 lea 4d1f0 <pthread_attr_setinheritsched>,%a5
46b18: 49f9 0004 d230 lea 4d230 <pthread_attr_setstacksize>,%a4
46b1e: 5985 subql #4,%d5
46b20: 47f9 0004 6730 lea 46730 <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 );
46b26: 2f02 movel %d2,%sp@-
46b28: 2046 moveal %d6,%a0
46b2a: 4e90 jsr %a0@
(void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
46b2c: 4878 0002 pea 2 <DOUBLE_FLOAT>
46b30: 2f02 movel %d2,%sp@-
46b32: 4e95 jsr %a5@
(void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
46b34: 2f2a 0004 movel %a2@(4),%sp@-
46b38: 2f02 movel %d2,%sp@-
46b3a: 4e94 jsr %a4@
status = pthread_create(
46b3c: 42a7 clrl %sp@-
46b3e: 2f12 movel %a2@,%sp@-
46b40: 2f02 movel %d2,%sp@-
46b42: 2f05 movel %d5,%sp@-
46b44: 4e93 jsr %a3@
&thread_id,
&attr,
user_threads[ index ].thread_entry,
NULL
);
if ( status )
46b46: 4fef 0024 lea %sp@(36),%sp
46b4a: 4a80 tstl %d0
46b4c: 6612 bnes 46b60 <_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++ ) {
46b4e: 5283 addql #1,%d3
46b50: 508a addql #8,%a2
46b52: b684 cmpl %d4,%d3
46b54: 65d0 bcss 46b26 <_POSIX_Threads_Initialize_user_threads_body+0x42><== NEVER TAKEN
NULL
);
if ( status )
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
}
}
46b56: 4cee 3c7c ff98 moveml %fp@(-104),%d2-%d6/%a2-%a5
46b5c: 4e5e unlk %fp
46b5e: 4e75 rts
&attr,
user_threads[ index ].thread_entry,
NULL
);
if ( status )
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
46b60: 2f00 movel %d0,%sp@-
46b62: 4878 0001 pea 1 <ADD>
46b66: 4878 0002 pea 2 <DOUBLE_FLOAT>
46b6a: 4eb9 0004 8c3c jsr 48c3c <_Internal_error_Occurred>
0004bd84 <_POSIX_Threads_Sporadic_budget_TSR>:
*/
void _POSIX_Threads_Sporadic_budget_TSR(
Objects_Id id __attribute__((unused)),
void *argument
)
{
4bd84: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4bd88: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
4bd8c: 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 );
4bd90: 49f9 0004 cd24 lea 4cd24 <_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 ];
4bd96: 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 );
4bd9a: 486a 0098 pea %a2@(152) <== NOT EXECUTED
4bd9e: 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 ) {
4bda0: 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);
4bda2: 4281 clrl %d1 <== NOT EXECUTED
4bda4: 1239 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
4bdaa: 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;
4bdae: 2740 0076 movel %d0,%a3@(118) <== NOT EXECUTED
new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
the_thread->real_priority = new_priority;
4bdb2: 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 ) {
4bdb6: 4aab 001c tstl %a3@(28) <== NOT EXECUTED
4bdba: 6606 bnes 4bdc2 <_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 ) {
4bdbc: b2ab 0014 cmpl %a3@(20),%d1 <== NOT EXECUTED
4bdc0: 652c bcss 4bdee <_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 );
4bdc2: 486a 0090 pea %a2@(144) <== NOT EXECUTED
4bdc6: 4e94 jsr %a4@ <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4bdc8: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4bdca: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4bdce: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4bdd2: 203c 0005 fd58 movel #392536,%d0 <== NOT EXECUTED
4bdd8: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
4bddc: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED
4bde2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
4bde6: 4e5e unlk %fp <== NOT EXECUTED
4bde8: 4ef9 0004 987c jmp 4987c <_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 );
4bdee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4bdf2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4bdf4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4bdf6: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED
4bdfc: 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 );
4be00: 486a 0090 pea %a2@(144) <== NOT EXECUTED
4be04: 4e94 jsr %a4@ <== NOT EXECUTED
4be06: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4be08: 2540 00b4 movel %d0,%a2@(180) <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4be0c: 45ea 00a8 lea %a2@(168),%a2 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4be10: 203c 0005 fd58 movel #392536,%d0 <== NOT EXECUTED
4be16: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
4be1a: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED
4be20: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
4be24: 4e5e unlk %fp <== NOT EXECUTED
4be26: 4ef9 0004 987c jmp 4987c <_Watchdog_Insert> <== NOT EXECUTED
0004be2c <_POSIX_Threads_Sporadic_budget_callout>:
4be2c: 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 */
4be2e: 72ff moveq #-1,%d1 <== NOT EXECUTED
* _POSIX_Threads_Sporadic_budget_callout
*/
void _POSIX_Threads_Sporadic_budget_callout(
Thread_Control *the_thread
)
{
4be30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4be34: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4be38: 1039 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
POSIX_API_Control *api;
uint32_t new_priority;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4be3e: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED
4be42: 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 */
4be46: 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;
4be4a: 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 ) {
4be4e: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED
4be52: 6606 bnes 4be5a <_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 ) {
4be54: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
4be58: 6204 bhis 4be5e <_POSIX_Threads_Sporadic_budget_callout+0x32><== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4be5a: 4e5e unlk %fp <== NOT EXECUTED
4be5c: 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 );
4be5e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4be62: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4be64: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4be66: 4eb9 0004 8448 jsr 48448 <_Thread_Change_priority> <== NOT EXECUTED
4be6c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4be70: 4e5e unlk %fp <== NOT EXECUTED
0004df3c <_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;
4df3c: 7001 moveq #1,%d0
#include <rtems/posix/threadsup.h>
void _POSIX_Threads_cancel_run(
Thread_Control *the_thread
)
{
4df3e: 4e56 ffec linkw %fp,#-20
4df42: 206e 0008 moveal %fp@(8),%a0
4df46: 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 ];
4df4a: 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 );
4df4e: 240a movel %a2,%d2
4df50: 0682 0000 00e8 addil #232,%d2
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
4df56: 2540 00d8 movel %d0,%a2@(216)
while ( !_Chain_Is_empty( handler_stack ) ) {
4df5a: b4aa 00e4 cmpl %a2@(228),%d2
4df5e: 673c beqs 4df9c <_POSIX_Threads_cancel_run+0x60> <== ALWAYS TAKEN
4df60: 47f9 0004 9b6e lea 49b6e <_Workspace_Free>,%a3 <== NOT EXECUTED
_ISR_Disable( level );
4df66: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
4df6c: 2003 movel %d3,%d0 <== NOT EXECUTED
4df6e: 40c1 movew %sr,%d1 <== NOT EXECUTED
4df70: 8081 orl %d1,%d0 <== NOT EXECUTED
4df72: 46c0 movew %d0,%sr <== NOT EXECUTED
handler = (POSIX_Cancel_Handler_control *)
4df74: 286a 00ec moveal %a2@(236),%a4 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4df78: 2254 moveal %a4@,%a1 <== NOT EXECUTED
previous = the_node->previous;
4df7a: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4df7e: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4df82: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
4df84: 46c1 movew %d1,%sr <== NOT EXECUTED
(*handler->routine)( handler->arg );
4df86: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
4df8a: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED
4df8e: 4e90 jsr %a0@ <== NOT EXECUTED
_Workspace_Free( handler );
4df90: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4df92: 4e93 jsr %a3@ <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
while ( !_Chain_Is_empty( handler_stack ) ) {
4df94: 508f addql #8,%sp <== NOT EXECUTED
4df96: b4aa 00e4 cmpl %a2@(228),%d2 <== NOT EXECUTED
4df9a: 66d0 bnes 4df6c <_POSIX_Threads_cancel_run+0x30> <== NOT EXECUTED
(*handler->routine)( handler->arg );
_Workspace_Free( handler );
}
}
4df9c: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4dfa2: 4e5e unlk %fp
...
0004c91c <_POSIX_Timer_Insert_helper>:
Watchdog_Interval ticks,
Objects_Id id,
Watchdog_Service_routine_entry TSR,
void *arg
)
{
4c91c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c920: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c922: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4c926: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
(void) _Watchdog_Remove( timer );
4c928: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c92a: 4eb9 0004 a2c4 jsr 4a2c4 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
4c930: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4c936: 40c2 movew %sr,%d2 <== NOT EXECUTED
4c938: 8082 orl %d2,%d0 <== NOT EXECUTED
4c93a: 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 ) {
4c93c: 588f addql #4,%sp <== NOT EXECUTED
4c93e: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4c942: 6710 beqs 4c954 <_POSIX_Timer_Insert_helper+0x38><== NOT EXECUTED
_ISR_Enable( level );
4c944: 46c2 movew %d2,%sr <== NOT EXECUTED
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
}
4c946: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4c94a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c94e: 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;
4c950: 4200 clrb %d0 <== NOT EXECUTED
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
return true;
}
4c952: 4e75 rts <== NOT EXECUTED
4c954: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c956: 4879 0006 0aa8 pea 60aa8 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4c95c: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED
the_watchdog->id = id;
4c962: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED
the_watchdog->user_data = user_data;
4c968: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4c96e: 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;
4c974: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4c978: 4eb9 0004 a170 jsr 4a170 <_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 );
4c97e: 46c2 movew %d2,%sr <== NOT EXECUTED
return true;
4c980: 508f addql #8,%sp <== NOT EXECUTED
}
4c982: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4c986: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c98a: 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;
4c98c: 7001 moveq #1,%d0 <== NOT EXECUTED
}
00046400 <_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)
{
46400: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46404: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46406: 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;
4640a: 52aa 0066 addql #1,%a2@(102) <== NOT EXECUTED
/* The timer must be reprogrammed */
if ( ( ptimer->timer_data.it_interval.tv_sec != 0 ) ||
4640e: 4aaa 0052 tstl %a2@(82) <== NOT EXECUTED
46412: 6606 bnes 4641a <_POSIX_Timer_TSR+0x1a> <== NOT EXECUTED
46414: 4aaa 0056 tstl %a2@(86) <== NOT EXECUTED
46418: 672a beqs 46444 <_POSIX_Timer_TSR+0x44> <== NOT EXECUTED
( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) {
activated = _POSIX_Timer_Insert_helper(
4641a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4641c: 4879 0004 6400 pea 46400 <_POSIX_Timer_TSR> <== NOT EXECUTED
46422: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
46426: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED
4642a: 486a 0010 pea %a2@(16) <== NOT EXECUTED
4642e: 4eb9 0004 c91c jsr 4c91c <_POSIX_Timer_Insert_helper> <== NOT EXECUTED
ptimer->ticks,
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated )
46434: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46438: 4a00 tstb %d0 <== NOT EXECUTED
4643a: 662a bnes 46466 <_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;
}
4643c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46440: 4e5e unlk %fp <== NOT EXECUTED
46442: 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;
46444: 7004 moveq #4,%d0 <== NOT EXECUTED
46446: 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 ) ) {
4644a: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED
4644e: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED
46452: 4eb9 0004 c43c jsr 4c43c <pthread_kill> <== NOT EXECUTED
}
/* After the signal handler returns, the count of expirations of the
* timer must be set to 0.
*/
ptimer->overrun = 0;
46458: 508f addql #8,%sp <== NOT EXECUTED
4645a: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED
}
4645e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46462: 4e5e unlk %fp <== NOT EXECUTED
46464: 4e75 rts <== NOT EXECUTED
);
if ( !activated )
return;
/* Store the time when the timer was started again */
_TOD_Get( &ptimer->time );
46466: 486a 006a pea %a2@(106) <== NOT EXECUTED
4646a: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED
/* The state really did not change but just to be safe */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
46470: 588f addql #4,%sp <== NOT EXECUTED
46472: 7003 moveq #3,%d0 <== NOT EXECUTED
46474: 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 ) ) {
46478: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED
4647c: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED
46480: 4eb9 0004 c43c jsr 4c43c <pthread_kill> <== NOT EXECUTED
}
/* After the signal handler returns, the count of expirations of the
* timer must be set to 0.
*/
ptimer->overrun = 0;
46486: 508f addql #8,%sp <== NOT EXECUTED
46488: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED
4648c: 60d0 bras 4645e <_POSIX_Timer_TSR+0x5e> <== NOT EXECUTED
...
0004b788 <_POSIX_signals_Abnormal_termination_handler>:
sigset_t _POSIX_signals_Pending;
void _POSIX_signals_Abnormal_termination_handler(
int signo __attribute__((unused)) )
{
4b788: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
exit( 1 );
4b78c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b790: 4eb9 0004 e8f4 jsr 4e8f4 <exit> <== NOT EXECUTED
000483f0 <_POSIX_signals_Alarm_TSR>:
void _POSIX_signals_Alarm_TSR(
Objects_Id id __attribute__((unused)),
void *argument __attribute__((unused))
)
{
483f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
int status;
status = kill( getpid(), SIGALRM );
483f4: 4eb9 0004 544c jsr 4544c <getpid> <== NOT EXECUTED
483fa: 720e moveq #14,%d1 <== NOT EXECUTED
483fc: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
48400: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
/* XXX can't print from an ISR, should this be fatal? */
}
48404: 4e5e unlk %fp <== NOT EXECUTED
void *argument __attribute__((unused))
)
{
int status;
status = kill( getpid(), SIGALRM );
48406: 4ef9 0004 852c jmp 4852c <kill> <== NOT EXECUTED
0004e030 <_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,
4e030: 4280 clrl %d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e032: 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,
4e036: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e03a: 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,
4e03e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4e042: 260e movel %fp,%d3 <== NOT EXECUTED
4e044: 0683 ffff fff4 addil #-12,%d3 <== NOT EXECUTED
4e04a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e04c: 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,
4e050: 2f03 movel %d3,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4e052: 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,
4e056: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e058: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e05a: 4eb9 0004 e1d4 jsr 4e1d4 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
4e060: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4e064: 4a00 tstb %d0 <== NOT EXECUTED
4e066: 6700 015e beqw 4e1c6 <_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 )
4e06a: 2202 movel %d2,%d1 <== NOT EXECUTED
4e06c: 2002 movel %d2,%d0 <== NOT EXECUTED
4e06e: e589 lsll #2,%d1 <== NOT EXECUTED
4e070: e988 lsll #4,%d0 <== NOT EXECUTED
4e072: 9081 subl %d1,%d0 <== NOT EXECUTED
4e074: 2240 moveal %d0,%a1 <== NOT EXECUTED
4e076: d3fc 0006 0134 addal #393524,%a1 <== NOT EXECUTED
4e07c: 7201 moveq #1,%d1 <== NOT EXECUTED
4e07e: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
4e082: 2d48 ffc8 movel %a0,%fp@(-56) <== NOT EXECUTED
4e086: b288 cmpl %a0,%d1 <== NOT EXECUTED
4e088: 6700 013c beqw 4e1c6 <_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,
4e08c: 2e0e movel %fp,%d7 <== NOT EXECUTED
4e08e: 0687 ffff ffd0 addil #-48,%d7 <== NOT EXECUTED
4e094: 2647 moveal %d7,%a3 <== NOT EXECUTED
4e096: 2c0e movel %fp,%d6 <== NOT EXECUTED
4e098: 0686 ffff ffd4 addil #-44,%d6 <== NOT EXECUTED
4e09e: 2a0e movel %fp,%d5 <== NOT EXECUTED
4e0a0: 0685 ffff ffd8 addil #-40,%d5 <== NOT EXECUTED
4e0a6: 280e movel %fp,%d4 <== NOT EXECUTED
4e0a8: 0684 ffff ffdc addil #-36,%d4 <== NOT EXECUTED
4e0ae: 4bee ffe0 lea %fp@(-32),%a5 <== NOT EXECUTED
4e0b2: 49ee ffe4 lea %fp@(-28),%a4 <== NOT EXECUTED
4e0b6: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4e0bc: 26a8 0024 movel %a0@(36),%a3@ <== NOT EXECUTED
4e0c0: 2646 moveal %d6,%a3 <== NOT EXECUTED
4e0c2: 26a8 0028 movel %a0@(40),%a3@ <== NOT EXECUTED
4e0c6: 2645 moveal %d5,%a3 <== NOT EXECUTED
4e0c8: 26a8 002c movel %a0@(44),%a3@ <== NOT EXECUTED
4e0cc: 2644 moveal %d4,%a3 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4e0ce: 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,
4e0d2: 2d68 0020 ffcc movel %a0@(32),%fp@(-52) <== NOT EXECUTED
4e0d8: 26a8 0030 movel %a0@(48),%a3@ <== NOT EXECUTED
4e0dc: 2aa8 0034 movel %a0@(52),%a5@ <== NOT EXECUTED
4e0e0: 28a8 0038 movel %a0@(56),%a4@ <== NOT EXECUTED
4e0e4: 2d68 003c ffe8 movel %a0@(60),%fp@(-24) <== NOT EXECUTED
4e0ea: 2d68 0040 ffec movel %a0@(64),%fp@(-20) <== NOT EXECUTED
4e0f0: 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 ) {
4e0f6: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4e0fc: 2d41 ffc4 movel %d1,%fp@(-60) <== NOT EXECUTED
api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;
4e100: 82a9 0004 orl %a1@(4),%d1 <== NOT EXECUTED
4e104: 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 ) {
4e108: 7202 moveq #2,%d1 <== NOT EXECUTED
4e10a: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED
4e10e: 675c beqs 4e16c <_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 );
4e110: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e112: 226e ffc8 moveal %fp@(-56),%a1 <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e116: 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 );
4e118: 4e91 jsr %a1@ <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e11a: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4e120: 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;
4e122: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e124: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED
4e12a: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED
4e12e: 2645 moveal %d5,%a3 <== NOT EXECUTED
4e130: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED
4e134: 2244 moveal %d4,%a1 <== NOT EXECUTED
4e136: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED
4e13a: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED
4e13e: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED
4e142: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED
4e146: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED
4e14c: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED
4e152: 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;
4e158: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED
return true;
4e15c: 7001 moveq #1,%d0 <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
4e15e: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
return true;
}
4e162: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4e168: 4e5e unlk %fp <== NOT EXECUTED
4e16a: 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)(
4e16c: 42a7 clrl %sp@- <== NOT EXECUTED
4e16e: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e172: 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)(
4e174: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e176: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e178: 4e90 jsr %a0@ <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e17a: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4e180: 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;
4e182: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4e186: 216e ffcc 0020 movel %fp@(-52),%a0@(32) <== NOT EXECUTED
4e18c: 2153 0024 movel %a3@,%a0@(36) <== NOT EXECUTED
4e190: 2645 moveal %d5,%a3 <== NOT EXECUTED
4e192: 2151 0028 movel %a1@,%a0@(40) <== NOT EXECUTED
4e196: 2244 moveal %d4,%a1 <== NOT EXECUTED
4e198: 2153 002c movel %a3@,%a0@(44) <== NOT EXECUTED
4e19c: 2151 0030 movel %a1@,%a0@(48) <== NOT EXECUTED
4e1a0: 2155 0034 movel %a5@,%a0@(52) <== NOT EXECUTED
4e1a4: 2154 0038 movel %a4@,%a0@(56) <== NOT EXECUTED
4e1a8: 216e ffe8 003c movel %fp@(-24),%a0@(60) <== NOT EXECUTED
4e1ae: 216e ffec 0040 movel %fp@(-20),%a0@(64) <== NOT EXECUTED
4e1b4: 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;
4e1ba: 222e ffc4 movel %fp@(-60),%d1 <== NOT EXECUTED
4e1be: 2541 00d0 movel %d1,%a2@(208) <== NOT EXECUTED
return true;
4e1c2: 7001 moveq #1,%d0 <== NOT EXECUTED
4e1c4: 609c bras 4e162 <_POSIX_signals_Check_signal+0x132><== NOT EXECUTED
}
4e1c6: 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;
4e1cc: 4200 clrb %d0 <== NOT EXECUTED
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
return true;
}
4e1ce: 4e5e unlk %fp <== NOT EXECUTED
...
0004e84c <_POSIX_signals_Clear_process_signals>:
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4e84c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Clear_process_signals(
int signo
)
{
4e852: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4e856: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
4e85a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e85c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4e85e: 40c2 movew %sr,%d2 <== NOT EXECUTED
4e860: 8082 orl %d2,%d0 <== NOT EXECUTED
4e862: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4e864: 2601 movel %d1,%d3 <== NOT EXECUTED
4e866: 2001 movel %d1,%d0 <== NOT EXECUTED
4e868: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
4e86e: e58b lsll #2,%d3 <== NOT EXECUTED
4e870: e988 lsll #4,%d0 <== NOT EXECUTED
4e872: 9083 subl %d3,%d0 <== NOT EXECUTED
4e874: 7602 moveq #2,%d3 <== NOT EXECUTED
4e876: b6b0 0800 cmpl %a0@(00000000,%d0:l),%d3 <== NOT EXECUTED
4e87a: 6718 beqs 4e894 <_POSIX_signals_Clear_process_signals+0x48><== NOT EXECUTED
4e87c: 5381 subql #1,%d1 <== NOT EXECUTED
4e87e: 7001 moveq #1,%d0 <== NOT EXECUTED
4e880: e3a8 lsll %d1,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
4e882: 4680 notl %d0 <== NOT EXECUTED
4e884: c1b9 0006 0328 andl %d0,60328 <_POSIX_signals_Pending> <== NOT EXECUTED
}
_ISR_Enable( level );
4e88a: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4e88c: 241f movel %sp@+,%d2 <== NOT EXECUTED
4e88e: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e890: 4e5e unlk %fp <== NOT EXECUTED
4e892: 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 );
4e894: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e896: d1fc 0006 0330 addal #394032,%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 ] ) )
4e89c: 43f9 0006 032c lea 6032c <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED
4e8a2: b1f1 0800 cmpal %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED
4e8a6: 67d4 beqs 4e87c <_POSIX_signals_Clear_process_signals+0x30><== NOT EXECUTED
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
}
_ISR_Enable( level );
4e8a8: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4e8aa: 241f movel %sp@+,%d2 <== NOT EXECUTED
4e8ac: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e8ae: 4e5e unlk %fp <== NOT EXECUTED
...
0004e1d4 <_POSIX_signals_Clear_signals>:
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
4e1d4: 7001 moveq #1,%d0 <== NOT EXECUTED
int signo,
siginfo_t *info,
bool is_global,
bool check_blocked
)
{
4e1d6: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4e1da: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4e1de: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
4e1e2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4e1e6: 2202 movel %d2,%d1 <== NOT EXECUTED
4e1e8: 5381 subql #1,%d1 <== NOT EXECUTED
4e1ea: 1a2e 0017 moveb %fp@(23),%d5 <== NOT EXECUTED
4e1ee: 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 )
4e1f0: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED
4e1f4: 6752 beqs 4e248 <_POSIX_signals_Clear_signals+0x74><== NOT EXECUTED
signals_blocked = ~api->signals_blocked;
4e1f6: 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 );
4e1fa: 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;
4e200: 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 );
4e202: 40c3 movew %sr,%d3 <== NOT EXECUTED
4e204: 8283 orl %d3,%d1 <== NOT EXECUTED
4e206: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4e208: 4a05 tstb %d5 <== NOT EXECUTED
4e20a: 674e beqs 4e25a <_POSIX_signals_Clear_signals+0x86><== NOT EXECUTED
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
4e20c: c0b9 0006 0328 andl 60328 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
4e212: c084 andl %d4,%d0 <== NOT EXECUTED
4e214: 6768 beqs 4e27e <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4e216: 2202 movel %d2,%d1 <== NOT EXECUTED
4e218: 2002 movel %d2,%d0 <== NOT EXECUTED
4e21a: 47f9 0004 e84c lea 4e84c <_POSIX_signals_Clear_process_signals>,%a3<== NOT EXECUTED
4e220: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
4e226: e589 lsll #2,%d1 <== NOT EXECUTED
4e228: e988 lsll #4,%d0 <== NOT EXECUTED
4e22a: 9081 subl %d1,%d0 <== NOT EXECUTED
4e22c: 7202 moveq #2,%d1 <== NOT EXECUTED
4e22e: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED
4e232: 6758 beqs 4e28c <_POSIX_signals_Clear_signals+0xb8><== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e234: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e236: 4e93 jsr %a3@ <== NOT EXECUTED
4e238: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e23a: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4e23c: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout;
}
4e23e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4e244: 4e5e unlk %fp <== NOT EXECUTED
4e246: 4e75 rts <== NOT EXECUTED
*/
if ( check_blocked )
signals_blocked = ~api->signals_blocked;
else
signals_blocked = SIGNAL_ALL_MASK;
4e248: 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 );
4e24a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
4e250: 40c3 movew %sr,%d3 <== NOT EXECUTED
4e252: 8283 orl %d3,%d1 <== NOT EXECUTED
4e254: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4e256: 4a05 tstb %d5 <== NOT EXECUTED
4e258: 66b2 bnes 4e20c <_POSIX_signals_Clear_signals+0x38><== NOT EXECUTED
}
_POSIX_signals_Clear_process_signals( signo );
do_callout = true;
}
} else {
if ( mask & (api->signals_pending & signals_blocked) ) {
4e25a: 2428 00d4 movel %a0@(212),%d2 <== NOT EXECUTED
4e25e: 2200 movel %d0,%d1 <== NOT EXECUTED
4e260: c282 andl %d2,%d1 <== NOT EXECUTED
4e262: c284 andl %d4,%d1 <== NOT EXECUTED
4e264: 6718 beqs 4e27e <_POSIX_signals_Clear_signals+0xaa><== NOT EXECUTED
api->signals_pending &= ~mask;
4e266: 2200 movel %d0,%d1 <== NOT EXECUTED
4e268: 4681 notl %d1 <== NOT EXECUTED
4e26a: c282 andl %d2,%d1 <== NOT EXECUTED
do_callout = true;
4e26c: 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;
4e26e: 2141 00d4 movel %d1,%a0@(212) <== NOT EXECUTED
do_callout = true;
}
}
_ISR_Enable( level );
4e272: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout;
}
4e274: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4e27a: 4e5e unlk %fp <== NOT EXECUTED
4e27c: 4e75 rts <== NOT EXECUTED
bool do_callout;
POSIX_signals_Siginfo_node *psiginfo;
mask = signo_to_mask( signo );
do_callout = false;
4e27e: 4200 clrb %d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4e280: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout;
}
4e282: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4e288: 4e5e unlk %fp <== NOT EXECUTED
4e28a: 4e75 rts <== NOT EXECUTED
4e28c: 41f9 0006 032c lea 6032c <_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 );
4e292: 2200 movel %d0,%d1 <== NOT EXECUTED
4e294: 0681 0006 0330 addil #394032,%d1 <== NOT EXECUTED
4e29a: 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))
4e29e: b28a cmpl %a2,%d1 <== NOT EXECUTED
4e2a0: 6748 beqs 4e2ea <_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;
4e2a2: 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 );
4e2a4: 2200 movel %d0,%d1 <== NOT EXECUTED
4e2a6: d288 addl %a0,%d1 <== NOT EXECUTED
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
4e2a8: 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 );
4e2ac: 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 );
4e2b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e2b2: 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;
4e2b4: 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;
4e2b8: 588f addql #4,%sp <== NOT EXECUTED
4e2ba: 20ea 0008 movel %a2@(8),%a0@+ <== NOT EXECUTED
4e2be: 20ea 000c movel %a2@(12),%a0@+ <== NOT EXECUTED
4e2c2: 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;
4e2c6: 2079 0006 02bc moveal 602bc <_POSIX_signals_Inactive_siginfo+0x8>,%a0<== NOT EXECUTED
the_node->next = tail;
4e2cc: 24bc 0006 02b8 movel #393912,%a2@ <== NOT EXECUTED
tail->previous = the_node;
4e2d2: 23ca 0006 02bc movel %a2,602bc <_POSIX_signals_Inactive_siginfo+0x8><== NOT EXECUTED
old_last->next = the_node;
4e2d8: 208a movel %a2,%a0@ <== NOT EXECUTED
the_node->previous = old_last;
4e2da: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e2de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e2e0: 4e93 jsr %a3@ <== NOT EXECUTED
4e2e2: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e2e4: 7001 moveq #1,%d0 <== NOT EXECUTED
4e2e6: 6000 ff54 braw 4e23c <_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 );
4e2ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e2ec: 4e93 jsr %a3@ <== NOT EXECUTED
4e2ee: 588f addql #4,%sp <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4e2f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e2f2: 4e93 jsr %a3@ <== NOT EXECUTED
4e2f4: 588f addql #4,%sp <== NOT EXECUTED
do_callout = true;
4e2f6: 7001 moveq #1,%d0 <== NOT EXECUTED
4e2f8: 6000 ff42 braw 4e23c <_POSIX_signals_Clear_signals+0x68><== NOT EXECUTED
000471d8 <_POSIX_signals_Get_lowest>:
sigset_t set
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
471d8: 701b moveq #27,%d0 <== NOT EXECUTED
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
sigset_t set
)
{
471da: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
471de: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
471e2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
471e6: 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(
471e8: 2200 movel %d0,%d1 <== NOT EXECUTED
471ea: 5381 subql #1,%d1 <== NOT EXECUTED
471ec: 2803 movel %d3,%d4 <== NOT EXECUTED
471ee: e3ac lsll %d1,%d4 <== NOT EXECUTED
471f0: 2204 movel %d4,%d1 <== NOT EXECUTED
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
if ( set & signo_to_mask( signo ) ) {
471f2: c282 andl %d2,%d1 <== NOT EXECUTED
471f4: 6626 bnes 4721c <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED
sigset_t set
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
471f6: 5280 addql #1,%d0 <== NOT EXECUTED
471f8: 123c 0020 moveb #32,%d1 <== NOT EXECUTED
471fc: b280 cmpl %d0,%d1 <== NOT EXECUTED
471fe: 66e8 bnes 471e8 <_POSIX_signals_Get_lowest+0x10> <== NOT EXECUTED
47200: 7001 moveq #1,%d0 <== NOT EXECUTED
47202: 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(
47204: 2200 movel %d0,%d1 <== NOT EXECUTED
47206: 5381 subql #1,%d1 <== NOT EXECUTED
47208: 2803 movel %d3,%d4 <== NOT EXECUTED
4720a: e3ac lsll %d1,%d4 <== NOT EXECUTED
4720c: 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 ) ) {
4720e: c282 andl %d2,%d1 <== NOT EXECUTED
47210: 660a bnes 4721c <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED
*/
#if (SIGHUP != 1)
#error "Assumption that SIGHUP==1 violated!!"
#endif
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
47212: 5280 addql #1,%d0 <== NOT EXECUTED
47214: 123c 001b moveb #27,%d1 <== NOT EXECUTED
47218: b280 cmpl %d0,%d1 <== NOT EXECUTED
4721a: 66e8 bnes 47204 <_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;
}
4721c: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
47220: 4e5e unlk %fp <== NOT EXECUTED
0004b796 <_POSIX_signals_Post_switch_extension>:
*/
void _POSIX_signals_Post_switch_extension(
Thread_Control *the_thread
)
{
4b796: 4e56 fff0 linkw %fp,#-16
4b79a: 206e 0008 moveal %fp@(8),%a0
4b79e: 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 ];
4b7a2: 2468 0102 moveal %a0@(258),%a2
/*
* api may be NULL in case of a thread close in progress
*/
if ( !api )
4b7a6: 4a8a tstl %a2
4b7a8: 6700 008e beqw 4b838 <_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 );
4b7ac: 263c 0000 0700 movel #1792,%d3
4b7b2: 47f9 0004 e030 lea 4e030 <_POSIX_signals_Check_signal>,%a3
4b7b8: 2003 movel %d3,%d0
4b7ba: 40c1 movew %sr,%d1
4b7bc: 8081 orl %d1,%d0
4b7be: 46c0 movew %d0,%sr
if ( !(~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending)) ) {
4b7c0: 2039 0006 0328 movel 60328 <_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 &
4b7c6: 242a 00d0 movel %a2@(208),%d2
4b7ca: 4682 notl %d2
(api->signals_pending | _POSIX_signals_Pending)) ) {
4b7cc: 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 &
4b7d0: c082 andl %d2,%d0
4b7d2: 6762 beqs 4b836 <_POSIX_signals_Post_switch_extension+0xa0><== ALWAYS TAKEN
(api->signals_pending | _POSIX_signals_Pending)) ) {
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
4b7d4: 46c1 movew %d1,%sr <== NOT EXECUTED
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b7d6: 741b moveq #27,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
4b7d8: 42a7 clrl %sp@- <== NOT EXECUTED
4b7da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b7dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b7de: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b7e0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b7e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b7e6: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b7e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b7ea: 4e93 jsr %a3@ <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4b7ec: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b7f0: 7020 moveq #32,%d0 <== NOT EXECUTED
4b7f2: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b7f4: 66e2 bnes 4b7d8 <_POSIX_signals_Post_switch_extension+0x42><== NOT EXECUTED
4b7f6: 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 );
4b7f8: 42a7 clrl %sp@- <== NOT EXECUTED
4b7fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b7fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b7fe: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b800: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b804: 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++ ) {
4b806: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b808: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b80a: 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++ ) {
4b80c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b810: 701b moveq #27,%d0 <== NOT EXECUTED
4b812: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b814: 67a2 beqs 4b7b8 <_POSIX_signals_Post_switch_extension+0x22><== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
4b816: 42a7 clrl %sp@- <== NOT EXECUTED
4b818: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b81a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b81c: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
4b81e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b822: 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++ ) {
4b824: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
4b826: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b828: 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++ ) {
4b82a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b82e: 701b moveq #27,%d0 <== NOT EXECUTED
4b830: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b832: 66c4 bnes 4b7f8 <_POSIX_signals_Post_switch_extension+0x62><== NOT EXECUTED
4b834: 6082 bras 4b7b8 <_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 );
4b836: 46c1 movew %d1,%sr
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
}
}
4b838: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4b83e: 4e5e unlk %fp <== NOT EXECUTED
0005c3bc <_POSIX_signals_Set_process_signals>:
sigset_t mask
)
{
ISR_Level level;
_ISR_Disable( level );
5c3bc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Set_process_signals(
sigset_t mask
)
{
5c3c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
5c3c6: 40c1 movew %sr,%d1 <== NOT EXECUTED
5c3c8: 8081 orl %d1,%d0 <== NOT EXECUTED
5c3ca: 46c0 movew %d0,%sr <== NOT EXECUTED
_POSIX_signals_Pending |= mask;
5c3cc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5c3d0: 81b9 0006 0328 orl %d0,60328 <_POSIX_signals_Pending> <== NOT EXECUTED
_ISR_Enable( level );
5c3d6: 46c1 movew %d1,%sr <== NOT EXECUTED
}
5c3d8: 4e5e unlk %fp <== NOT EXECUTED
000461c4 <_POSIX_signals_Ualarm_TSR>:
void _POSIX_signals_Ualarm_TSR(
Objects_Id id __attribute__((unused)),
void *argument __attribute__((unused))
)
{
461c4: 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 );
461c8: 4eb9 0004 2fa4 jsr 42fa4 <getpid> <== NOT EXECUTED
461ce: 4878 000e pea e <OPER1+0x2> <== NOT EXECUTED
461d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461d4: 4eb9 0004 5fbc jsr 45fbc <kill> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Reset(
Watchdog_Control *the_watchdog
)
{
(void) _Watchdog_Remove( the_watchdog );
461da: 4879 0006 1ebc pea 61ebc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED
461e0: 4eb9 0004 a038 jsr 4a038 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
461e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
461ea: 203c 0006 1ebc movel #401084,%d0 <== NOT EXECUTED
461f0: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
461f4: 203c 0006 1768 movel #399208,%d0 <== NOT EXECUTED
461fa: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
/*
* If the reset interval is non-zero, reschedule ourselves.
*/
_Watchdog_Reset( &_POSIX_signals_Ualarm_timer );
}
461fe: 4e5e unlk %fp <== NOT EXECUTED
46200: 4ef9 0004 9ee4 jmp 49ee4 <_Watchdog_Insert> <== NOT EXECUTED
0005c3dc <_POSIX_signals_Unblock_thread>:
5c3dc: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5c3de: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5c3e2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5c3e6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
5c3ea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5c3ee: 2608 movel %a0,%d3 <== NOT EXECUTED
5c3f0: 5383 subql #1,%d3 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5c3f2: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED
5c3f6: 2401 movel %d1,%d2 <== NOT EXECUTED
5c3f8: 0282 1000 8000 andil #268468224,%d2 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5c3fe: 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 ];
5c402: 226a 0102 moveal %a2@(258),%a1 <== NOT EXECUTED
5c406: e7a8 lsll %d3,%d0 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5c408: 0c82 1000 8000 cmpil #268468224,%d2 <== NOT EXECUTED
5c40e: 6770 beqs 5c480 <_POSIX_signals_Unblock_thread+0xa4><== NOT EXECUTED
}
/*
* Thread is not waiting due to a sigwait.
*/
if ( ~api->signals_blocked & mask ) {
5c410: 2429 00d0 movel %a1@(208),%d2 <== NOT EXECUTED
5c414: 4682 notl %d2 <== NOT EXECUTED
5c416: c082 andl %d2,%d0 <== NOT EXECUTED
5c418: 675a beqs 5c474 <_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 ) ) {
5c41a: 0801 001c btst #28,%d1 <== NOT EXECUTED
5c41e: 673e beqs 5c45e <_POSIX_signals_Unblock_thread+0x82><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c420: 7004 moveq #4,%d0 <== NOT EXECUTED
5c422: 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);
5c426: 2001 movel %d1,%d0 <== NOT EXECUTED
5c428: 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) )
5c42e: 6600 00a0 bnew 5c4d0 <_POSIX_signals_Unblock_thread+0xf4><== NOT EXECUTED
_Thread_queue_Extract_with_proxy( the_thread );
else if ( _States_Is_delaying(the_thread->current_state) ) {
5c432: 44c1 movew %d1,%ccr <== NOT EXECUTED
5c434: 6a3e bpls 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
5c436: 486a 0048 pea %a2@(72) <== NOT EXECUTED
5c43a: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
5c440: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
5c446: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c448: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
5c44e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c452: 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;
5c458: 4200 clrb %d0 <== NOT EXECUTED
}
5c45a: 4e5e unlk %fp <== NOT EXECUTED
5c45c: 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 ) {
5c45e: 4a81 tstl %d1 <== NOT EXECUTED
5c460: 6612 bnes 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5c462: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8> <== NOT EXECUTED
5c468: 670a beqs 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
5c46a: b5f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
5c470: 6700 0090 beqw 5c502 <_POSIX_signals_Unblock_thread+0x126><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c474: 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;
5c47a: 4200 clrb %d0 <== NOT EXECUTED
}
5c47c: 4e5e unlk %fp <== NOT EXECUTED
5c47e: 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) ) {
5c480: 2200 movel %d0,%d1 <== NOT EXECUTED
5c482: c2aa 0030 andl %a2@(48),%d1 <== NOT EXECUTED
5c486: 672e beqs 5c4b6 <_POSIX_signals_Unblock_thread+0xda><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c488: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5c48a: 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;
5c48e: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5c492: 4a84 tstl %d4 <== NOT EXECUTED
5c494: 6750 beqs 5c4e6 <_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;
5c496: 2244 moveal %d4,%a1 <== NOT EXECUTED
5c498: 204b moveal %a3,%a0 <== NOT EXECUTED
5c49a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
5c49c: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
5c49e: 2091 movel %a1@,%a0@ <== NOT EXECUTED
}
_Thread_queue_Extract_with_proxy( the_thread );
5c4a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c4a2: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5c4a8: 588f addql #4,%sp <== NOT EXECUTED
5c4aa: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c4ac: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5c4b2: 4e5e unlk %fp <== NOT EXECUTED
5c4b4: 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) ) {
5c4b6: 2229 00d0 movel %a1@(208),%d1 <== NOT EXECUTED
5c4ba: 4681 notl %d1 <== NOT EXECUTED
5c4bc: c081 andl %d1,%d0 <== NOT EXECUTED
5c4be: 67b4 beqs 5c474 <_POSIX_signals_Unblock_thread+0x98><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5c4c0: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5c4c2: 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;
5c4c6: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5c4ca: 4a84 tstl %d4 <== NOT EXECUTED
5c4cc: 66c8 bnes 5c496 <_POSIX_signals_Unblock_thread+0xba><== NOT EXECUTED
5c4ce: 6016 bras 5c4e6 <_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 );
5c4d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c4d2: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
5c4d8: 588f addql #4,%sp <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
}
}
return false;
}
5c4da: 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;
5c4e0: 4200 clrb %d0 <== NOT EXECUTED
}
5c4e2: 4e5e unlk %fp <== NOT EXECUTED
5c4e4: 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;
5c4e6: 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;
5c4ea: 2688 movel %a0,%a3@ <== NOT EXECUTED
the_info->si_code = SI_USER;
5c4ec: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
the_info->si_value.sival_int = 0;
5c4f0: 42ab 0008 clrl %a3@(8) <== NOT EXECUTED
} else {
*the_info = *info;
}
_Thread_queue_Extract_with_proxy( the_thread );
5c4f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c4f6: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5c4fc: 588f addql #4,%sp <== NOT EXECUTED
5c4fe: 7001 moveq #1,%d0 <== NOT EXECUTED
5c500: 60aa bras 5c4ac <_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;
5c502: 7001 moveq #1,%d0 <== NOT EXECUTED
}
}
return false;
}
5c504: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
5c50a: 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;
5c50c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
}
return false;
5c512: 4200 clrb %d0 <== NOT EXECUTED
}
...
00048384 <_Protected_heap_Extend>:
bool _Protected_heap_Extend(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
48384: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
bool extend_ok;
uintptr_t amount_extended;
_RTEMS_Lock_allocator();
48388: 2f39 0006 0404 movel 60404 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4838e: 4eb9 0004 7188 jsr 47188 <_API_Mutex_Lock> <== NOT EXECUTED
extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended);
48394: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48398: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4839c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
483a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
483a4: 4eb9 0004 cab0 jsr 4cab0 <_Heap_Extend> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
483aa: 2f39 0006 0404 movel 60404 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
483b0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
483b4: 4eb9 0004 71e8 jsr 471e8 <_API_Mutex_Unlock> <== NOT EXECUTED
return extend_ok;
}
483ba: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
483be: 4e5e unlk %fp <== NOT EXECUTED
...
0004cf98 <_Protected_heap_Get_free_information>:
bool _Protected_heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4cf98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* TBD: _Heap_Get_free_information does not error check or return status.
*/
_RTEMS_Lock_allocator();
4cf9c: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4cfa2: 4eb9 0004 b2a4 jsr 4b2a4 <_API_Mutex_Lock> <== NOT EXECUTED
_Heap_Get_free_information( the_heap, info );
4cfa8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4cfac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cfb0: 4eb9 0005 18fc jsr 518fc <_Heap_Get_free_information> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4cfb6: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4cfbc: 4eb9 0004 b304 jsr 4b304 <_API_Mutex_Unlock> <== NOT EXECUTED
return true;
}
4cfc2: 7001 moveq #1,%d0 <== NOT EXECUTED
4cfc4: 4e5e unlk %fp <== NOT EXECUTED
0004886c <_Protected_heap_Get_information>:
bool _Protected_heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
4886c: 4e56 0000 linkw %fp,#0
48870: 2f03 movel %d3,%sp@-
48872: 262e 000c movel %fp@(12),%d3
48876: 2f02 movel %d2,%sp@-
48878: 242e 0008 movel %fp@(8),%d2
if ( !the_heap )
4887c: 6738 beqs 488b6 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
if ( !the_info )
4887e: 4a83 tstl %d3
48880: 6734 beqs 488b6 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
_RTEMS_Lock_allocator();
48882: 2f39 0006 07c8 movel 607c8 <_RTEMS_Allocator_Mutex>,%sp@-
48888: 4eb9 0004 7638 jsr 47638 <_API_Mutex_Lock>
_Heap_Get_information( the_heap, the_info );
4888e: 2f03 movel %d3,%sp@-
48890: 2f02 movel %d2,%sp@-
48892: 4eb9 0004 d3f8 jsr 4d3f8 <_Heap_Get_information>
_RTEMS_Unlock_allocator();
48898: 2f39 0006 07c8 movel 607c8 <_RTEMS_Allocator_Mutex>,%sp@-
4889e: 4eb9 0004 7698 jsr 47698 <_API_Mutex_Unlock>
return true;
}
488a4: 242e fff8 movel %fp@(-8),%d2
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
488a8: 4fef 0010 lea %sp@(16),%sp
}
488ac: 262e fffc movel %fp@(-4),%d3
488b0: 4e5e unlk %fp
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
488b2: 7001 moveq #1,%d0
}
488b4: 4e75 rts
488b6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
488ba: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
488be: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !the_heap )
return false;
if ( !the_info )
return false;
488c0: 4200 clrb %d0 <== NOT EXECUTED
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
}
0005c640 <_Protected_heap_Resize_block>:
bool _Protected_heap_Resize_block(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
5c640: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
5c644: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
5c646: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5c64c: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Resize_block(
5c652: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
5c656: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5c65a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5c65e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5c662: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c666: 4eb9 0005 c68c jsr 5c68c <_Heap_Resize_block> <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5c66c: 2f39 0005 fd38 movel 5fd38 <_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(
5c672: 2400 movel %d0,%d2 <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5c674: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED
return (status == HEAP_RESIZE_SUCCESSFUL);
5c67a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5c67e: 4a82 tstl %d2 <== NOT EXECUTED
5c680: 57c0 seq %d0 <== NOT EXECUTED
}
5c682: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5c686: 4480 negl %d0 <== NOT EXECUTED
5c688: 4e5e unlk %fp <== NOT EXECUTED
0004d07c <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d07c: 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 ) {
4d080: 2039 0006 60b4 movel 660b4 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d086: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4d08a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d08e: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4d092: 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 ) {
4d096: 4a80 tstl %d0 <== NOT EXECUTED
4d098: 6720 beqs 4d0ba <_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 );
4d09a: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED
4d09e: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
4d0a4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
4d0a8: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
}
return status;
}
4d0ac: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4d0b2: 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 );
4d0b4: 4ef9 0004 c166 jmp 4c166 <_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();
4d0ba: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d0c0: 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();
4d0c6: 4eb9 0004 b2a4 jsr 4b2a4 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d0cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d0ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d0d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d0d2: 4eb9 0004 c166 jsr 4c166 <_Heap_Walk> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4d0d8: 2f39 0006 6174 movel 66174 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4d0de: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d0e2: 4eb9 0004 b304 jsr 4b304 <_API_Mutex_Unlock> <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d0e8: 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();
4d0ec: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d0f0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4d0f6: 4e5e unlk %fp <== NOT EXECUTED
...
0004c300 <_RTEMS_Tasks_Invoke_task_variable_dtor>:
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4c300: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
4c304: 2039 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4c30a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c30c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
4c310: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
if (_Thread_Is_executing(the_thread)) {
4c314: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
4c318: 671e beqs 4c338 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x38><== NOT EXECUTED
value = *tvp->ptr;
*tvp->ptr = tvp->gval;
} else {
value = tvp->tval;
4c31a: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
}
if ( dtor )
4c31e: 4a88 tstl %a0 <== NOT EXECUTED
4c320: 6706 beqs 4c328 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x28><== NOT EXECUTED
(*dtor)(value);
4c322: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c324: 4e90 jsr %a0@ <== NOT EXECUTED
4c326: 588f addql #4,%sp <== NOT EXECUTED
_Workspace_Free(tvp);
4c328: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4c32c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c330: 4e5e unlk %fp <== NOT EXECUTED
}
if ( dtor )
(*dtor)(value);
_Workspace_Free(tvp);
4c332: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free> <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
value = *tvp->ptr;
4c338: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
4c33c: 2011 movel %a1@,%d0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4c33e: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED
4c342: 60da bras 4c31e <_RTEMS_Tasks_Invoke_task_variable_dtor+0x1e><== NOT EXECUTED
0004c22e <_RTEMS_tasks_Create_extension>:
bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4c22e: 4e56 0000 linkw %fp,#0
4c232: 2f0a movel %a2,%sp@-
4c234: 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() )
4c238: 4a39 0005 e394 tstb 5e394 <Configuration_RTEMS_API+0x4>
4c23e: 6758 beqs 4c298 <_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 );
4c240: 705e moveq #94,%d0
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4c242: 2f00 movel %d0,%sp@-
4c244: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
if ( !api )
4c24a: 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 );
4c24c: 2040 moveal %d0,%a0
if ( !api )
4c24e: 4a80 tstl %d0
4c250: 6758 beqs 4c2aa <_RTEMS_tasks_Create_extension+0x7c><== NEVER TAKEN
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4c252: 2540 00fe movel %d0,%a2@(254)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4c256: 4200 clrb %d0
api->pending_events = EVENT_SETS_NONE_PENDING;
4c258: 4290 clrl %a0@
4c25a: 1140 0008 moveb %d0,%a0@(8)
api->event_condition = 0;
4c25e: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4c262: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4c266: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4c26a: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4c26e: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4c272: 42a8 001a clrl %a0@(26)
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
4c276: 42aa 010a clrl %a2@(266)
if ( rtems_configuration_get_notepads_enabled() ) {
4c27a: 4a39 0005 e394 tstb 5e394 <Configuration_RTEMS_API+0x4>
4c280: 670c beqs 4c28e <_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(
4c282: 41e8 001e lea %a0@(30),%a0
4c286: 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;
4c288: 4298 clrl %a0@+
4c28a: 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++)
4c28c: 66fa bnes 4c288 <_RTEMS_tasks_Create_extension+0x5a>
api->Notepads[i] = 0;
}
return true;
}
4c28e: 246e fffc moveal %fp@(-4),%a2
4c292: 4e5e unlk %fp
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4c294: 7001 moveq #1,%d0
}
4c296: 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));
4c298: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4c29a: 2f00 movel %d0,%sp@-
4c29c: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
if ( !api )
4c2a2: 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 );
4c2a4: 2040 moveal %d0,%a0
if ( !api )
4c2a6: 4a80 tstl %d0
4c2a8: 66a8 bnes 4c252 <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
4c2aa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c2ae: 4e5e unlk %fp <== NOT EXECUTED
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4c2b0: 4200 clrb %d0 <== NOT EXECUTED
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
0004c1d8 <_RTEMS_tasks_Delete_extension>:
void _RTEMS_tasks_Delete_extension(
Thread_Control *executing,
Thread_Control *deleted
)
{
4c1d8: 4e56 fff4 linkw %fp,#-12
4c1dc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4c1e0: 246e 000c moveal %fp@(12),%a2
4c1e4: 47f9 0004 c300 lea 4c300 <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3
/*
* Free per task variable memory
*/
tvp = deleted->task_variables;
4c1ea: 206a 010a moveal %a2@(266),%a0
deleted->task_variables = NULL;
4c1ee: 42aa 010a clrl %a2@(266)
while (tvp) {
4c1f2: 4a88 tstl %a0
4c1f4: 671e beqs 4c214 <_RTEMS_tasks_Delete_extension+0x3c><== ALWAYS TAKEN
next = (rtems_task_variable_t *)tvp->next;
4c1f6: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4c1f8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c1fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c1fc: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4c1fe: 508f addql #8,%sp <== NOT EXECUTED
4c200: 4a82 tstl %d2 <== NOT EXECUTED
4c202: 6710 beqs 4c214 <_RTEMS_tasks_Delete_extension+0x3c><== NOT EXECUTED
next = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
tvp = next;
4c204: 2042 moveal %d2,%a0 <== NOT EXECUTED
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
next = (rtems_task_variable_t *)tvp->next;
4c206: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4c208: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c20a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c20c: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4c20e: 508f addql #8,%sp <== NOT EXECUTED
4c210: 4a82 tstl %d2 <== NOT EXECUTED
4c212: 66f0 bnes 4c204 <_RTEMS_tasks_Delete_extension+0x2c><== NOT EXECUTED
/*
* Free API specific memory
*/
(void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] );
4c214: 2f2a 00fe movel %a2@(254),%sp@-
4c218: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free>
deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL;
4c21e: 588f addql #4,%sp
4c220: 42aa 00fe clrl %a2@(254)
}
4c224: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4c22a: 4e5e unlk %fp <== NOT EXECUTED
0004687c <_RTEMS_tasks_Initialize_user_tasks_body>:
*
* Output parameters: NONE
*/
void _RTEMS_tasks_Initialize_user_tasks_body( void )
{
4687c: 4e56 ffe4 linkw %fp,#-28
46880: 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;
46884: 2479 0005 e3ba moveal 5e3ba <Configuration_RTEMS_API+0x2a>,%a2
maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
4688a: 2639 0005 e3b6 movel 5e3b6 <Configuration_RTEMS_API+0x26>,%d3
/*
* Verify that we have a set of user tasks to iterate
*/
if ( !user_tasks )
46890: 4a8a tstl %a2
46892: 6754 beqs 468e8 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
46894: 4a83 tstl %d3
46896: 6750 beqs 468e8 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c><== NEVER TAKEN
46898: 280e movel %fp,%d4
4689a: 4282 clrl %d2
4689c: 5984 subql #4,%d4
4689e: 47f9 0004 6654 lea 46654 <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(
468a4: 49f9 0004 6904 lea 46904 <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(
468aa: 2f04 movel %d4,%sp@-
468ac: 2f2a 000c movel %a2@(12),%sp@-
468b0: 2f2a 0014 movel %a2@(20),%sp@-
468b4: 2f2a 0004 movel %a2@(4),%sp@-
468b8: 2f2a 0008 movel %a2@(8),%sp@-
468bc: 2f12 movel %a2@,%sp@-
468be: 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 ) )
468c0: 4fef 0018 lea %sp@(24),%sp
468c4: 4a80 tstl %d0
468c6: 662a bnes 468f2 <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
return_value = rtems_task_start(
468c8: 2f2a 0018 movel %a2@(24),%sp@-
468cc: 2f2a 0010 movel %a2@(16),%sp@-
468d0: 2f2e fffc movel %fp@(-4),%sp@-
468d4: 4e94 jsr %a4@
id,
user_tasks[ index ].entry_point,
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
468d6: 4fef 000c lea %sp@(12),%sp
468da: 4a80 tstl %d0
468dc: 6614 bnes 468f2 <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
468de: 5282 addql #1,%d2
468e0: 45ea 001c lea %a2@(28),%a2
468e4: b483 cmpl %d3,%d2
468e6: 65c2 bcss 468aa <_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 );
}
}
468e8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4
468ee: 4e5e unlk %fp
468f0: 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 );
468f2: 2f00 movel %d0,%sp@-
468f4: 4878 0001 pea 1 <ADD>
468f8: 4878 0001 pea 1 <ADD>
468fc: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
0004c15c <_RTEMS_tasks_Post_switch_extension>:
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4c15c: 4e56 ffec linkw %fp,#-20
4c160: 206e 0008 moveal %fp@(8),%a0
4c164: 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 ];
4c168: 2468 00fe moveal %a0@(254),%a2
if ( !api )
4c16c: 4a8a tstl %a2
4c16e: 671a beqs 4c18a <_RTEMS_tasks_Post_switch_extension+0x2e><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
4c170: 203c 0000 0700 movel #1792,%d0
4c176: 40c1 movew %sr,%d1
4c178: 8081 orl %d1,%d0
4c17a: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
4c17c: 242a 0012 movel %a2@(18),%d2
asr->signals_posted = 0;
4c180: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
4c184: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
4c186: 4a82 tstl %d2
4c188: 660a bnes 4c194 <_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 );
}
4c18a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4c190: 4e5e unlk %fp
4c192: 4e75 rts
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
return;
asr->nest_level += 1;
4c194: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
4c198: 260e movel %fp,%d3 <== NOT EXECUTED
4c19a: 5983 subql #4,%d3 <== NOT EXECUTED
4c19c: 47f9 0004 e388 lea 4e388 <rtems_task_mode>,%a3 <== NOT EXECUTED
4c1a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c1a4: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4c1aa: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED
4c1ae: 4e93 jsr %a3@ <== NOT EXECUTED
(*asr->handler)( signal_set );
4c1b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c1b2: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
4c1b6: 4e90 jsr %a0@ <== NOT EXECUTED
asr->nest_level -= 1;
4c1b8: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4c1bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c1be: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4c1c4: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4c1c8: 4e93 jsr %a3@ <== NOT EXECUTED
4c1ca: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4c1ce: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4c1d4: 4e5e unlk %fp <== NOT EXECUTED
0004c102 <_RTEMS_tasks_Switch_extension>:
void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4c102: 4e56 0000 linkw %fp,#0
4c106: 206e 0008 moveal %fp@(8),%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4c10a: 2068 010a moveal %a0@(266),%a0
while (tvp) {
4c10e: 4a88 tstl %a0
4c110: 6712 beqs 4c124 <_RTEMS_tasks_Switch_extension+0x22><== ALWAYS TAKEN
tvp->tval = *tvp->ptr;
4c112: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4c116: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4c11a: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4c11e: 2050 moveal %a0@,%a0 <== NOT EXECUTED
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4c120: 4a88 tstl %a0 <== NOT EXECUTED
4c122: 66ee bnes 4c112 <_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;
4c124: 206e 000c moveal %fp@(12),%a0
4c128: 2068 010a moveal %a0@(266),%a0
while (tvp) {
4c12c: 4a88 tstl %a0
4c12e: 6712 beqs 4c142 <_RTEMS_tasks_Switch_extension+0x40><== ALWAYS TAKEN
tvp->gval = *tvp->ptr;
4c130: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4c134: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED
*tvp->ptr = tvp->tval;
4c138: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4c13c: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4c13e: 4a88 tstl %a0 <== NOT EXECUTED
4c140: 66ee bnes 4c130 <_RTEMS_tasks_Switch_extension+0x2e><== NOT EXECUTED
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4c142: 4e5e unlk %fp <== NOT EXECUTED
000472a0 <_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
)
{
472a0: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
472a4: 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 );
472a8: 280e movel %fp,%d4 <== NOT EXECUTED
472aa: 5184 subql #8,%d4 <== NOT EXECUTED
_Timestamp_Subtract(
472ac: 45f9 0004 b1a8 lea 4b1a8 <_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
)
{
472b2: 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 );
472b6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
)
{
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
#endif
Thread_Control *owning_thread = the_period->owner;
472b8: 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 );
472bc: 4eb9 0004 8d80 jsr 48d80 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract(
472c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
472c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
472c8: 486b 004c pea %a3@(76) <== NOT EXECUTED
472cc: 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) {
472ce: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#endif
/*
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
472d2: 202c 0082 movel %a4@(130),%d0 <== NOT EXECUTED
472d6: 222c 0086 movel %a4@(134),%d1 <== NOT EXECUTED
472da: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
472de: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
472e2: b9f9 0006 226c cmpal 6226c <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED
472e8: 670c beqs 472f6 <_Rate_monotonic_Get_status+0x56><== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
472ea: 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;
472f0: 7001 moveq #1,%d0 <== NOT EXECUTED
}
472f2: 4e5e unlk %fp <== NOT EXECUTED
472f4: 4e75 rts <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
472f6: 49ee ffe8 lea %fp@(-24),%a4 <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
472fa: 240e movel %fp,%d2 <== NOT EXECUTED
472fc: 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))
47302: 260b movel %a3,%d3 <== NOT EXECUTED
47304: 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(
4730a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4730c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4730e: 4879 0006 1eae pea 61eae <_Thread_Time_of_last_context_switch><== NOT EXECUTED
47314: 4e92 jsr %a2@ <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
47316: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47318: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4731a: 4eb9 0004 b068 jsr 4b068 <_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))
47320: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47322: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47324: 4eb9 0004 b174 jsr 4b174 <_Timespec_Less_than> <== NOT EXECUTED
4732a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4732e: 4a00 tstb %d0 <== NOT EXECUTED
47330: 670c beqs 4733e <_Rate_monotonic_Get_status+0x9e><== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
47332: 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;
47338: 4200 clrb %d0 <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4733a: 4e5e unlk %fp <== NOT EXECUTED
4733c: 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(
4733e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
47342: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47344: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47346: 4e92 jsr %a2@ <== NOT EXECUTED
47348: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4734c: 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;
47352: 7001 moveq #1,%d0 <== NOT EXECUTED
}
47354: 4e5e unlk %fp <== NOT EXECUTED
00047358 <_Rate_monotonic_Initiate_statistics>:
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
47358: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4735c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
47360: 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 );
47364: 240e movel %fp,%d2 <== NOT EXECUTED
47366: 5182 subql #8,%d2 <== NOT EXECUTED
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
Thread_Control *owning_thread = the_period->owner;
47368: 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 );
4736c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4736e: 4eb9 0004 8d80 jsr 48d80 <_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) {
47374: 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;
47376: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4737a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4737e: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
47382: 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;
47386: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED
4738a: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED
4738e: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
47392: 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) {
47396: b7f9 0006 226c cmpal 6226c <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
4739c: 670a beqs 473a8 <_Rate_monotonic_Initiate_statistics+0x50><== NOT EXECUTED
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
}
#endif
}
4739e: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED
473a4: 4e5e unlk %fp <== NOT EXECUTED
473a6: 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
473a8: 47ee fff0 lea %fp@(-16),%a3 <== NOT EXECUTED
/*
* Adjust the CPU time used to account for the time since last
* context switch.
*/
_Timespec_Subtract(
473ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED
473ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
473b0: 4879 0006 1eae pea 61eae <_Thread_Time_of_last_context_switch><== NOT EXECUTED
473b6: 4eb9 0004 b1a8 jsr 4b1a8 <_Timespec_Subtract> <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
473bc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
473be: 486a 0044 pea %a2@(68) <== NOT EXECUTED
473c2: 4eb9 0004 b068 jsr 4b068 <_Timespec_Add_to> <== NOT EXECUTED
473c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
#endif
}
473cc: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED
473d2: 4e5e unlk %fp <== NOT EXECUTED
00047974 <_Rate_monotonic_Timeout>:
void _Rate_monotonic_Timeout(
Objects_Id id,
void *ignored
)
{
47974: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47978: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4797a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4797e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47982: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
47988: 4eb9 0004 98c8 jsr 498c8 <_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 ) {
4798e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47992: 2440 moveal %d0,%a2 <== NOT EXECUTED
47994: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47998: 6636 bnes 479d0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_thread = the_period->owner;
4799a: 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);
4799e: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
479a2: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
479a8: 670a beqs 479b4 <_Rate_monotonic_Timeout+0x40> <== NOT EXECUTED
479aa: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
479ae: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED
479b2: 675e beqs 47a12 <_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 ) {
479b4: 7001 moveq #1,%d0 <== NOT EXECUTED
479b6: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
479ba: 671c beqs 479d8 <_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;
479bc: 7004 moveq #4,%d0 <== NOT EXECUTED
479be: 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;
479c2: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
479c8: 5380 subql #1,%d0 <== NOT EXECUTED
479ca: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
479d0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
479d4: 4e5e unlk %fp <== NOT EXECUTED
479d6: 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;
479d8: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
479dc: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
479e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
479e2: 4eb9 0004 7358 jsr 47358 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
479e8: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
479ee: 486a 0010 pea %a2@(16) <== NOT EXECUTED
479f2: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED
479f8: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED
479fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47a02: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47a08: 5380 subql #1,%d0 <== NOT EXECUTED
47a0a: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED
47a10: 60be bras 479d0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
47a12: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
47a18: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47a1a: 4eb9 0004 a0c4 jsr 4a0c4 <_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 );
47a20: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47a22: 4eb9 0004 7358 jsr 47358 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
47a28: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
47a2e: 486a 0010 pea %a2@(16) <== NOT EXECUTED
47a32: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47a38: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
47a3e: 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;
47a42: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47a48: 5380 subql #1,%d0 <== NOT EXECUTED
47a4a: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED
47a50: 6000 ff7e braw 479d0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
000473d6 <_Rate_monotonic_Update_statistics>:
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
473d6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
void _Rate_monotonic_Update_statistics(
Rate_monotonic_Control *the_period
)
{
473d8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
473dc: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
473e0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
473e4: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
473e8: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
473ec: 6700 00c6 beqw 474b4 <_Rate_monotonic_Update_statistics+0xde><== NOT EXECUTED
/*
* Grab status for time statistics.
*/
valid_status =
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
473f0: 260e movel %fp,%d3 <== NOT EXECUTED
473f2: 5183 subql #8,%d3 <== NOT EXECUTED
473f4: 240e movel %fp,%d2 <== NOT EXECUTED
473f6: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
473fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
473fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47400: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47402: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
47408: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4740c: 4a00 tstb %d0 <== NOT EXECUTED
4740e: 660a bnes 4741a <_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
}
47410: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED
47416: 4e5e unlk %fp <== NOT EXECUTED
47418: 4e75 rts <== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4741a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4741c: 486a 006c pea %a2@(108) <== NOT EXECUTED
47420: 4bf9 0004 b068 lea 4b068 <_Timespec_Add_to>,%a5 <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
47426: 49f9 0004 b174 lea 4b174 <_Timespec_Less_than>,%a4 <== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4742c: 4e95 jsr %a5@ <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
4742e: 486a 005c pea %a2@(92) <== NOT EXECUTED
47432: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47434: 4e94 jsr %a4@ <== NOT EXECUTED
47436: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4743a: 4a00 tstb %d0 <== NOT EXECUTED
4743c: 6710 beqs 4744e <_Rate_monotonic_Update_statistics+0x78><== NOT EXECUTED
stats->min_cpu_time = executed;
4743e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47442: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
47446: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
4744a: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED
if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) )
4744e: 486a 0064 pea %a2@(100) <== NOT EXECUTED
47452: 47f9 0004 b140 lea 4b140 <_Timespec_Greater_than>,%a3 <== NOT EXECUTED
47458: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4745a: 4e93 jsr %a3@ <== NOT EXECUTED
4745c: 508f addql #8,%sp <== NOT EXECUTED
4745e: 4a00 tstb %d0 <== NOT EXECUTED
47460: 6710 beqs 47472 <_Rate_monotonic_Update_statistics+0x9c><== NOT EXECUTED
stats->max_cpu_time = executed;
47462: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47466: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4746a: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED
4746e: 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 );
47472: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47474: 486a 0084 pea %a2@(132) <== NOT EXECUTED
47478: 4e95 jsr %a5@ <== NOT EXECUTED
if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
4747a: 486a 0074 pea %a2@(116) <== NOT EXECUTED
4747e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47480: 4e94 jsr %a4@ <== NOT EXECUTED
47482: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47486: 4a00 tstb %d0 <== NOT EXECUTED
47488: 6654 bnes 474de <_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 ) )
4748a: 486a 007c pea %a2@(124) <== NOT EXECUTED
4748e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47490: 4e93 jsr %a3@ <== NOT EXECUTED
47492: 508f addql #8,%sp <== NOT EXECUTED
47494: 4a00 tstb %d0 <== NOT EXECUTED
47496: 6700 ff78 beqw 47410 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED
stats->max_wall_time = since_last_period;
4749a: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
4749e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
474a2: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED
474a6: 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
}
474aa: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED
474b0: 4e5e unlk %fp <== NOT EXECUTED
474b2: 4e75 rts <== NOT EXECUTED
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
stats->missed_count++;
474b4: 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 );
474b8: 260e movel %fp,%d3 <== NOT EXECUTED
474ba: 5183 subql #8,%d3 <== NOT EXECUTED
474bc: 240e movel %fp,%d2 <== NOT EXECUTED
474be: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
474c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
474c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
474ca: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
474d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
474d4: 4a00 tstb %d0 <== NOT EXECUTED
474d6: 6700 ff38 beqw 47410 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED
474da: 6000 ff3e braw 4741a <_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;
474de: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
474e2: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
474e6: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
474ea: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED
474ee: 609a bras 4748a <_Rate_monotonic_Update_statistics+0xb4><== NOT EXECUTED
0005fe98 <_Region_Process_queue>:
*/
void _Region_Process_queue(
Region_Control *the_region
)
{
5fe98: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5fe9c: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5fea2: 5280 addql #1,%d0 <== NOT EXECUTED
5fea4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5fea8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
5feac: 23c0 0007 eaec movel %d0,7eaec <_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();
5feb2: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5feb8: 240b movel %a3,%d2 <== NOT EXECUTED
5feba: 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 );
5fec0: 260b movel %a3,%d3 <== NOT EXECUTED
5fec2: 49f9 0006 07ec lea 607ec <_Thread_queue_First>,%a4 <== NOT EXECUTED
5fec8: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED
5fece: 4bf9 0005 a7d4 lea 5a7d4 <_Heap_Allocate_aligned_with_boundary>,%a5<== NOT EXECUTED
5fed4: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
5feda: 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 );
5fedc: 283c 0006 06c4 movel #394948,%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 );
5fee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5fee4: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5fee6: 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 );
5fee8: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5feea: 4a80 tstl %d0 <== NOT EXECUTED
5feec: 6738 beqs 5ff26 <_Region_Process_queue+0x8e> <== NOT EXECUTED
5feee: 42a7 clrl %sp@- <== NOT EXECUTED
5fef0: 42a7 clrl %sp@- <== NOT EXECUTED
5fef2: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
5fef6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5fef8: 4e95 jsr %a5@ <== NOT EXECUTED
the_segment = (void **) _Region_Allocate_segment(
the_region,
the_thread->Wait.count
);
if ( the_segment == NULL )
5fefa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5fefe: 4a80 tstl %d0 <== NOT EXECUTED
5ff00: 6724 beqs 5ff26 <_Region_Process_queue+0x8e> <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
5ff02: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
5ff06: 2080 movel %d0,%a0@ <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
5ff08: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
5ff0c: 2044 moveal %d4,%a0 <== NOT EXECUTED
5ff0e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ff10: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ff12: 4e90 jsr %a0@ <== NOT EXECUTED
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
5ff14: 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;
5ff16: 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 );
5ff1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ff1c: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5ff1e: 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 );
5ff20: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5ff22: 4a80 tstl %d0 <== NOT EXECUTED
5ff24: 66c8 bnes 5feee <_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();
}
5ff26: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
5ff2c: 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();
5ff2e: 4ef9 0005 c49a jmp 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
0004c924 <_Scheduler_priority_Block>:
void _Scheduler_priority_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
4c924: 4e56 0000 linkw %fp,#0
4c928: 206e 000c moveal %fp@(12),%a0
4c92c: 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;
4c92e: 2268 008a moveal %a0@(138),%a1
4c932: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
4c934: 2029 0008 movel %a1@(8),%d0
4c938: b091 cmpl %a1@,%d0
4c93a: 677e beqs 4c9ba <_Scheduler_priority_Block+0x96>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4c93c: 2450 moveal %a0@,%a2
previous = the_node->previous;
4c93e: 2268 0004 moveal %a0@(4),%a1
next->previous = previous;
4c942: 2549 0004 movel %a1,%a2@(4)
previous->next = next;
4c946: 228a movel %a2,%a1@
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4c948: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0
4c94e: 671c beqs 4c96c <_Scheduler_priority_Block+0x48>
_Scheduler_priority_Schedule_body(the_scheduler);
if ( _Thread_Is_executing( the_thread ) )
4c950: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0
4c956: 6706 beqs 4c95e <_Scheduler_priority_Block+0x3a>
_Scheduler_priority_Block_body(the_scheduler, the_thread);
}
4c958: 245f moveal %sp@+,%a2
4c95a: 4e5e unlk %fp
4c95c: 4e75 rts
4c95e: 245f moveal %sp@+,%a2
4c960: 4e5e unlk %fp
_Thread_Dispatch_necessary = true;
4c962: 7001 moveq #1,%d0
4c964: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18>
4c96a: 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 );
4c96c: 3039 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d0
4c972: 4840 swap %d0
4c974: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4c976: 43f9 0006 0114 lea 60114 <_Priority_Bit_map>,%a1
4c97c: 0280 0000 ffff andil #65535,%d0
4c982: 3231 0a00 movew %a1@(00000000,%d0:l:2),%d1
4c986: 4841 swap %d1
4c988: 04c1 ff1 %d1
4c98a: 226e 0008 moveal %fp@(8),%a1
return (_Priority_Bits_index( major ) << 4) +
4c98e: 0281 0000 ffff andil #65535,%d1
4c994: e988 lsll #4,%d0
4c996: 2251 moveal %a1@,%a1
4c998: 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 ] ) )
4c99a: 2200 movel %d0,%d1
4c99c: e988 lsll #4,%d0
4c99e: e589 lsll #2,%d1
4c9a0: 9081 subl %d1,%d0
4c9a2: d3c0 addal %d0,%a1
4c9a4: 2019 movel %a1@+,%d0
4c9a6: b3c0 cmpal %d0,%a1
4c9a8: 6754 beqs 4c9fe <_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(
4c9aa: 23c0 0006 0106 movel %d0,60106 <_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 ) )
4c9b0: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0
4c9b6: 66a0 bnes 4c958 <_Scheduler_priority_Block+0x34> <== NEVER TAKEN
4c9b8: 60a4 bras 4c95e <_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 );
4c9ba: 2009 movel %a1,%d0
4c9bc: 5880 addql #4,%d0
head->next = tail;
head->previous = NULL;
4c9be: 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 );
4c9c2: 2280 movel %d0,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4c9c4: 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 );
4c9c8: 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;
4c9cc: 2469 0004 moveal %a1@(4),%a2
4c9d0: 3029 000e movew %a1@(14),%d0
4c9d4: 3212 movew %a2@,%d1
4c9d6: c081 andl %d1,%d0
4c9d8: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
4c9da: 6600 ff6c bnew 4c948 <_Scheduler_priority_Block+0x24>
_Priority_Major_bit_map &= the_priority_map->block_major;
4c9de: 3239 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d1
4c9e4: 3029 000c movew %a1@(12),%d0
4c9e8: c081 andl %d1,%d0
4c9ea: 33c0 0006 0110 movew %d0,60110 <_Priority_Major_bit_map>
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4c9f0: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0
4c9f6: 6600 ff58 bnew 4c950 <_Scheduler_priority_Block+0x2c>
4c9fa: 6000 ff70 braw 4c96c <_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;
4c9fe: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4ca00: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10> <== NOT EXECUTED
4ca06: 60a8 bras 4c9b0 <_Scheduler_priority_Block+0x8c> <== NOT EXECUTED
000481d8 <_Scheduler_priority_Schedule>:
*/
void _Scheduler_priority_Schedule(
Scheduler_Control *the_scheduler
)
{
481d8: 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 );
481dc: 3039 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d0
481e2: 4840 swap %d0
481e4: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
481e6: 41f9 0006 0114 lea 60114 <_Priority_Bit_map>,%a0
481ec: 0280 0000 ffff andil #65535,%d0
481f2: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1
481f6: 4841 swap %d1
481f8: 04c1 ff1 %d1
_Scheduler_priority_Schedule_body( the_scheduler );
}
481fa: 206e 0008 moveal %fp@(8),%a0
return (_Priority_Bits_index( major ) << 4) +
481fe: 0281 0000 ffff andil #65535,%d1
48204: e988 lsll #4,%d0
48206: 2050 moveal %a0@,%a0
48208: 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 ] ) )
4820a: 2200 movel %d0,%d1
4820c: e988 lsll #4,%d0
4820e: e589 lsll #2,%d1
48210: 9081 subl %d1,%d0
48212: d1c0 addal %d0,%a0
48214: 2018 movel %a0@+,%d0
48216: b1c0 cmpal %d0,%a0
48218: 670a beqs 48224 <_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(
4821a: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10>
48220: 4e5e unlk %fp
48222: 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;
48224: 4280 clrl %d0
48226: 4e5e unlk %fp
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
48228: 23c0 0006 0106 movel %d0,60106 <_Per_CPU_Information+0x10> <== NOT EXECUTED
0004824c <_Scheduler_priority_Thread_scheduler_free>:
void _Scheduler_priority_Thread_scheduler_free (
Scheduler_Control *the_scheduler __attribute__((unused)),
Thread_Control *the_thread
)
{
4824c: 4e56 0000 linkw %fp,#0
48250: 206e 000c moveal %fp@(12),%a0
_Workspace_Free( the_thread->scheduler.priority );
48254: 2d68 008a 0008 movel %a0@(138),%fp@(8)
}
4825a: 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 );
4825c: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free>
...
000482d0 <_Scheduler_priority_Unblock>:
void _Scheduler_priority_Unblock (
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
482d0: 4e56 0000 linkw %fp,#0
482d4: 206e 000c moveal %fp@(12),%a0
482d8: 2f0b movel %a3,%sp@-
482da: 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 );
482dc: 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;
482e0: 2669 0004 moveal %a1@(4),%a3
482e4: 3029 000a movew %a1@(10),%d0
482e8: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
482ea: 2451 moveal %a1@,%a2
482ec: 8081 orl %d1,%d0
482ee: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
482f0: 3029 0008 movew %a1@(8),%d0
482f4: 3239 0006 0110 movew 60110 <_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;
482fa: 226a 0008 moveal %a2@(8),%a1
482fe: 8280 orl %d0,%d1
the_node->next = tail;
tail->previous = the_node;
48300: 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 );
48304: 588a addql #4,%a2
48306: 33c1 0006 0110 movew %d1,60110 <_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 ) {
4830c: 2028 0014 movel %a0@(20),%d0
48310: 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;
48312: 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;
48316: 2288 movel %a0,%a1@
48318: 2279 0006 0106 moveal 60106 <_Per_CPU_Information+0x10>,%a1
4831e: b0a9 0014 cmpl %a1@(20),%d0
48322: 641a bccs 4833e <_Scheduler_priority_Unblock+0x6e>
_Thread_Heir = the_thread;
48324: 23c8 0006 0106 movel %a0,60106 <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
4832a: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
48330: 4a28 0074 tstb %a0@(116)
48334: 6710 beqs 48346 <_Scheduler_priority_Unblock+0x76>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
48336: 7001 moveq #1,%d0
48338: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18>
_Scheduler_priority_Unblock_body(the_scheduler, the_thread);
}
4833e: 245f moveal %sp@+,%a2
48340: 265f moveal %sp@+,%a3
48342: 4e5e unlk %fp
48344: 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 ||
48346: 4a80 tstl %d0
48348: 66f4 bnes 4833e <_Scheduler_priority_Unblock+0x6e><== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
4834a: 7001 moveq #1,%d0 <== NOT EXECUTED
4834c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED
48352: 60ea bras 4833e <_Scheduler_priority_Unblock+0x6e><== NOT EXECUTED
00048354 <_Scheduler_priority_Yield>:
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
48354: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
48358: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
4835e: 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 );
48362: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
48368: 2002 movel %d2,%d0 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
4836a: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED
4836e: 2251 moveal %a1@,%a1 <== NOT EXECUTED
_ISR_Disable( level );
48370: 40c1 movew %sr,%d1 <== NOT EXECUTED
48372: 8081 orl %d1,%d0 <== NOT EXECUTED
48374: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( !_Chain_Has_only_one_node( ready ) ) {
48376: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED
4837a: b091 cmpl %a1@,%d0 <== NOT EXECUTED
4837c: 6750 beqs 483ce <_Scheduler_priority_Yield+0x7a> <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4837e: 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 );
48380: 2009 movel %a1,%d0 <== NOT EXECUTED
48382: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
48384: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
48388: 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;
4838c: 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;
48390: 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;
48392: 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 );
48396: 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;
48398: 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;
4839c: 2488 movel %a0,%a2@ <== NOT EXECUTED
_Chain_Extract_unprotected( &executing->Object.Node );
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
4839e: 46c1 movew %d1,%sr <== NOT EXECUTED
483a0: 8481 orl %d1,%d2 <== NOT EXECUTED
483a2: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
483a4: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
483aa: 6712 beqs 483be <_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;
483ac: 7001 moveq #1,%d0 <== NOT EXECUTED
483ae: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED
_ISR_Enable( level );
483b4: 46c1 movew %d1,%sr <== NOT EXECUTED
}
483b6: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED
483ba: 4e5e unlk %fp <== NOT EXECUTED
483bc: 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 );
483be: 23d1 0006 0106 movel %a1@,60106 <_Per_CPU_Information+0x10><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
483c4: 7001 moveq #1,%d0 <== NOT EXECUTED
483c6: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED
483cc: 60e6 bras 483b4 <_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 ) )
483ce: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
483d4: 67de beqs 483b4 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
483d6: 7001 moveq #1,%d0 <== NOT EXECUTED
483d8: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED
483de: 60d4 bras 483b4 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
0004663e <_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];
4663e: 41f9 0005 d47e lea 5d47e <_Semaphore_Translate_core_semaphore_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Semaphore_Translate_core_semaphore_return_code (
uint32_t status
)
{
46644: 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];
}
46648: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4664c: 4e5e unlk %fp <== NOT EXECUTED
4664e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00047778 <_TOD_Get_uptime_as_timespec>:
*/
void _TOD_Get_uptime_as_timespec(
struct timespec *uptime
)
{
47778: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
4777c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
47780: 4eb9 0004 ca30 jsr 4ca30 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_To_timespec( &uptime_ts, uptime );
47786: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4778a: 588f addql #4,%sp <== NOT EXECUTED
4778c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47790: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
}
47794: 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 );
47796: 2080 movel %d0,%a0@ <== NOT EXECUTED
47798: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
}
...
00048cec <_TOD_Set>:
*/
void _TOD_Set(
const struct timespec *time
)
{
48cec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48cf0: 2039 0006 a218 movel 6a218 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
48cf6: 5280 addql #1,%d0 <== NOT EXECUTED
48cf8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48cfa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
48cfe: 23c0 0006 a218 movel %d0,6a218 <_Thread_Dispatch_disable_level><== NOT EXECUTED
long seconds;
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds = _TOD_Seconds_since_epoch();
48d04: 2039 0006 a2c2 movel 6a2c2 <_TOD_Now>,%d0 <== NOT EXECUTED
if ( time->tv_sec < seconds )
48d0a: 2212 movel %a2@,%d1 <== NOT EXECUTED
48d0c: b280 cmpl %d0,%d1 <== NOT EXECUTED
48d0e: 6d38 blts 48d48 <_TOD_Set+0x5c> <== NOT EXECUTED
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
48d10: 9280 subl %d0,%d1 <== NOT EXECUTED
48d12: 2f01 movel %d1,%sp@- <== NOT EXECUTED
48d14: 42a7 clrl %sp@- <== NOT EXECUTED
48d16: 4879 0006 a2ec pea 6a2ec <_Watchdog_Seconds_chain> <== NOT EXECUTED
48d1c: 4eb9 0004 b478 jsr 4b478 <_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 );
48d22: 23d2 0006 a2c2 movel %a2@,6a2c2 <_TOD_Now> <== NOT EXECUTED
48d28: 588a addql #4,%a2 <== NOT EXECUTED
48d2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48d2e: 23d2 0006 a2c6 movel %a2@,6a2c6 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48d34: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d38: 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;
48d3a: 7001 moveq #1,%d0 <== NOT EXECUTED
48d3c: 13c0 0006 a228 moveb %d0,6a228 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48d42: 4ef9 0004 a3c2 jmp 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
48d48: 9081 subl %d1,%d0 <== NOT EXECUTED
48d4a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48d4c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48d50: 4879 0006 a2ec pea 6a2ec <_Watchdog_Seconds_chain> <== NOT EXECUTED
48d56: 4eb9 0004 b478 jsr 4b478 <_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 );
48d5c: 23d2 0006 a2c2 movel %a2@,6a2c2 <_TOD_Now> <== NOT EXECUTED
48d62: 588a addql #4,%a2 <== NOT EXECUTED
48d64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48d68: 23d2 0006 a2c6 movel %a2@,6a2c6 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48d6e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d72: 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;
48d74: 7001 moveq #1,%d0 <== NOT EXECUTED
48d76: 13c0 0006 a228 moveb %d0,6a228 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48d7c: 4ef9 0004 a3c2 jmp 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
...
000473dc <_TOD_Tickle_ticks>:
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
473dc: 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() );
473e0: 2239 0005 e3d0 movel 5e3d0 <Configuration+0xc>,%d1
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
473e6: 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 );
473ea: 240e movel %fp,%d2
473ec: 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() );
473ee: 263c 0000 03e8 movel #1000,%d3
473f4: 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 );
473f8: 45f9 0004 952c lea 4952c <_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;
473fe: 2039 0005 fda2 movel 5fda2 <_Watchdog_Ticks_since_boot>,%d0
47404: 5280 addql #1,%d0
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47406: 2f02 movel %d2,%sp@-
47408: 4879 0005 fcf2 pea 5fcf2 <_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() );
4740e: 2d41 fffc movel %d1,%fp@(-4)
47412: 42ae fff8 clrl %fp@(-8)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
47416: 23c0 0005 fda2 movel %d0,5fda2 <_Watchdog_Ticks_since_boot>
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
4741c: 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 );
4741e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47420: 4879 0005 fd22 pea 5fd22 <_TOD_Now> <== NOT EXECUTED
47426: 4e92 jsr %a2@ <== NOT EXECUTED
while ( seconds ) {
47428: 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 );
4742c: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( seconds ) {
4742e: 6716 beqs 47446 <_TOD_Tickle_ticks+0x6a> <== NOT EXECUTED
47430: 45f9 0004 9a70 lea 49a70 <_Watchdog_Tickle>,%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
47436: 4879 0005 fd4c pea 5fd4c <_Watchdog_Seconds_chain> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
4743c: 5382 subql #1,%d2 <== NOT EXECUTED
4743e: 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 ) {
47440: 588f addql #4,%sp <== NOT EXECUTED
47442: 4a82 tstl %d2 <== NOT EXECUTED
47444: 66f0 bnes 47436 <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
}
}
47446: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4744c: 4e5e unlk %fp <== NOT EXECUTED
00047268 <_TOD_To_seconds>:
*/
uint32_t _TOD_To_seconds(
const rtems_time_of_day *the_tod
)
{
47268: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4726c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47270: 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;
47274: 2610 movel %a0@,%d3 <== NOT EXECUTED
47276: 7403 moveq #3,%d2 <== NOT EXECUTED
)
{
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
47278: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
4727c: 5380 subql #1,%d0 <== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
4727e: c483 andl %d3,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
47280: 6774 beqs 472f6 <_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 ];
47282: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
47286: 43f9 0005 fb2a lea 5fb2a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
4728c: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
47292: 45f9 0005 fb5e lea 5fb5e <_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 ];
47298: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED
4729c: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
472a2: 2241 moveal %d1,%a1 <== NOT EXECUTED
472a4: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472a6: 2003 movel %d3,%d0 <== NOT EXECUTED
472a8: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED
472ae: e488 lsrl #2,%d0 <== NOT EXECUTED
472b0: 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)
472b4: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
472b8: 2601 movel %d1,%d3 <== NOT EXECUTED
472ba: ed89 lsll #6,%d1 <== NOT EXECUTED
472bc: e58b lsll #2,%d3 <== NOT EXECUTED
472be: 9283 subl %d3,%d1 <== NOT EXECUTED
472c0: 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 ];
472c4: 4283 clrl %d3 <== NOT EXECUTED
472c6: 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;
472ca: 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 ) *
472cc: 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;
472ce: 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 ];
472d4: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
472d6: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
472da: e58a lsll #2,%d2 <== NOT EXECUTED
472dc: 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)
472de: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
472e2: 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)
472e4: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
472ea: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
472ec: d081 addl %d1,%d0 <== NOT EXECUTED
472ee: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED
472f2: 4e5e unlk %fp <== NOT EXECUTED
472f4: 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 ];
472f6: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
472fa: 43f9 0005 fb2a lea 5fb2a <_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 ];
47300: 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 ) *
47306: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
4730c: 45f9 0005 fb5e lea 5fb5e <_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 ];
47312: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED
47316: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
4731c: 2241 moveal %d1,%a1 <== NOT EXECUTED
4731e: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47320: 2003 movel %d3,%d0 <== NOT EXECUTED
47322: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED
47328: e488 lsrl #2,%d0 <== NOT EXECUTED
4732a: 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)
4732e: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
47332: 2601 movel %d1,%d3 <== NOT EXECUTED
47334: ed89 lsll #6,%d1 <== NOT EXECUTED
47336: e58b lsll #2,%d3 <== NOT EXECUTED
47338: 9283 subl %d3,%d1 <== NOT EXECUTED
4733a: 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 ];
4733e: 4283 clrl %d3 <== NOT EXECUTED
47340: 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;
47344: 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 ) *
47346: 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;
47348: 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 ];
4734e: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
47350: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
47354: e58a lsll #2,%d2 <== NOT EXECUTED
47356: 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)
47358: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
4735c: 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)
4735e: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
47364: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
47366: d081 addl %d1,%d0 <== NOT EXECUTED
47368: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED
4736c: 4e5e unlk %fp <== NOT EXECUTED
00047370 <_TOD_Validate>:
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
47370: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47374: 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();
47378: 2039 0006 0bb0 movel 60bb0 <Configuration+0xc>,%d0 <== NOT EXECUTED
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
4737e: 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) ||
47380: 4a88 tstl %a0 <== NOT EXECUTED
47382: 6762 beqs 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
)
{
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
47384: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
4738a: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
4738e: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED
47392: 6352 blss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->ticks >= ticks_per_second) ||
47394: 703b moveq #59,%d0 <== NOT EXECUTED
47396: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
4739a: 654a bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
4739c: b0a8 0010 cmpl %a0@(16),%d0 <== NOT EXECUTED
473a0: 6544 bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
473a2: 7217 moveq #23,%d1 <== NOT EXECUTED
473a4: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED
473a8: 653c bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
473aa: 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) ||
473ae: 6736 beqs 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month == 0) ||
473b0: 740c moveq #12,%d2 <== NOT EXECUTED
473b2: b480 cmpl %d0,%d2 <== NOT EXECUTED
473b4: 6530 bcss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
473b6: 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) ||
473b8: 0c81 0000 07c3 cmpil #1987,%d1 <== NOT EXECUTED
473be: 6326 blss 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
473c0: 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) ||
473c4: 4a88 tstl %a0 <== NOT EXECUTED
473c6: 671e beqs 473e6 <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
473c8: 143c 0003 moveb #3,%d2 <== NOT EXECUTED
473cc: c282 andl %d2,%d1 <== NOT EXECUTED
473ce: 661e bnes 473ee <_TOD_Validate+0x7e> <== NOT EXECUTED
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
473d0: 43f9 0005 fb66 lea 5fb66 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED
473d6: 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(
473da: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
473dc: 53c0 sls %d0 <== NOT EXECUTED
473de: 4480 negl %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473e0: 241f movel %sp@+,%d2 <== NOT EXECUTED
473e2: 4e5e unlk %fp <== NOT EXECUTED
473e4: 4e75 rts <== NOT EXECUTED
473e6: 241f movel %sp@+,%d2 <== NOT EXECUTED
473e8: 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;
473ea: 4200 clrb %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473ec: 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 ];
473ee: 43f9 0005 fb66 lea 5fb66 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED
473f4: 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(
473f8: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
473fa: 53c0 sls %d0 <== NOT EXECUTED
473fc: 4480 negl %d0 <== NOT EXECUTED
473fe: 60e0 bras 473e0 <_TOD_Validate+0x70> <== NOT EXECUTED
00048448 <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
48448: 4e56 ffec linkw %fp,#-20
4844c: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
48450: 246e 0008 moveal %fp@(8),%a2
*/
/*
* Save original state
*/
original_state = the_thread->current_state;
48454: 262a 0010 movel %a2@(16),%d3
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
48458: 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 );
4845c: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
4845e: 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 );
48462: 4eb9 0004 928c jsr 4928c <_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 )
48468: 588f addql #4,%sp
4846a: b4aa 0014 cmpl %a2@(20),%d2
4846e: 670c beqs 4847c <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
48470: 2f02 movel %d2,%sp@-
48472: 2f0a movel %a2,%sp@-
48474: 4eb9 0004 9214 jsr 49214 <_Thread_Set_priority>
4847a: 508f addql #8,%sp
_ISR_Disable( level );
4847c: 203c 0000 0700 movel #1792,%d0
48482: 40c2 movew %sr,%d2
48484: 8082 orl %d2,%d0
48486: 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;
48488: 202a 0010 movel %a2@(16),%d0
if ( state != STATES_TRANSIENT ) {
4848c: 7204 moveq #4,%d1
4848e: b280 cmpl %d0,%d1
48490: 6738 beqs 484ca <_Thread_Change_priority+0x82>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
48492: 44c3 movew %d3,%ccr
48494: 6708 beqs 4849e <_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);
48496: 72fb moveq #-5,%d1
48498: c280 andl %d0,%d1
4849a: 2541 0010 movel %d1,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
4849e: 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);
484a0: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
484a6: 660a bnes 484b2 <_Thread_Change_priority+0x6a>
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
484a8: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
484ae: 4e5e unlk %fp
484b0: 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 );
484b2: 2d4a 000c movel %a2,%fp@(12)
484b6: 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 );
}
484bc: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
484c2: 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 );
484c4: 4ef9 0004 9168 jmp 49168 <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
484ca: 44c3 movew %d3,%ccr
484cc: 673c beqs 4850a <_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 );
484ce: 42aa 0010 clrl %a2@(16)
if ( prepend_it )
484d2: 4a04 tstb %d4
484d4: 6778 beqs 4854e <_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 );
484d6: 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;
484da: 2668 0004 moveal %a0@(4),%a3
484de: 3028 000a movew %a0@(10),%d0
484e2: 3213 movew %a3@,%d1
_Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain,
484e4: 2250 moveal %a0@,%a1
484e6: 8081 orl %d1,%d0
484e8: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
484ea: 3028 0008 movew %a0@(8),%d0
484ee: 3239 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d1
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
484f4: 2051 moveal %a1@,%a0
484f6: 8081 orl %d1,%d0
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
484f8: 2549 0004 movel %a1,%a2@(4)
484fc: 33c0 0006 0110 movew %d0,60110 <_Priority_Major_bit_map>
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
before_node->previous = the_node;
48502: 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;
48506: 228a movel %a2,%a1@
the_node->next = before_node;
48508: 2488 movel %a0,%a2@
_Scheduler_priority_Ready_queue_enqueue_first( the_thread );
else
_Scheduler_priority_Ready_queue_enqueue( the_thread );
}
_ISR_Flash( level );
4850a: 203c 0000 0700 movel #1792,%d0
48510: 46c2 movew %d2,%sr
48512: 8082 orl %d2,%d0
48514: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule(
Scheduler_Control *the_scheduler
)
{
the_scheduler->Operations.schedule( the_scheduler );
48516: 4879 0005 fcfe pea 5fcfe <_Scheduler>
4851c: 2079 0005 fd02 moveal 5fd02 <_Scheduler+0x4>,%a0
48522: 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 );
48524: 2079 0006 0102 moveal 60102 <_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() &&
4852a: 588f addql #4,%sp
4852c: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0
48532: 670e beqs 48542 <_Thread_Change_priority+0xfa>
48534: 4a28 0074 tstb %a0@(116)
48538: 6708 beqs 48542 <_Thread_Change_priority+0xfa> <== NEVER TAKEN
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
4853a: 7001 moveq #1,%d0
4853c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18>
_ISR_Enable( level );
48542: 46c2 movew %d2,%sr
}
48544: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4854a: 4e5e unlk %fp
4854c: 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 );
4854e: 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;
48552: 2668 0004 moveal %a0@(4),%a3
48556: 3028 000a movew %a0@(10),%d0
4855a: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
4855c: 2250 moveal %a0@,%a1
4855e: 8081 orl %d1,%d0
48560: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
48562: 3028 0008 movew %a0@(8),%d0
48566: 3239 0006 0110 movew 60110 <_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;
4856c: 2069 0008 moveal %a1@(8),%a0
48570: 8081 orl %d1,%d0
the_node->next = tail;
tail->previous = the_node;
48572: 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 );
48576: 5889 addql #4,%a1
48578: 33c0 0006 0110 movew %d0,60110 <_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;
4857e: 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 );
48582: 2489 movel %a1,%a2@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
48584: 208a movel %a2,%a0@
48586: 6082 bras 4850a <_Thread_Change_priority+0xc2>
00048588 <_Thread_Clear_state>:
)
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
48588: 203c 0000 0700 movel #1792,%d0
void _Thread_Clear_state(
Thread_Control *the_thread,
States_Control state
)
{
4858e: 4e56 0000 linkw %fp,#0
48592: 206e 0008 moveal %fp@(8),%a0
48596: 2f03 movel %d3,%sp@-
48598: 2f02 movel %d2,%sp@-
4859a: 242e 000c movel %fp@(12),%d2
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4859e: 40c3 movew %sr,%d3
485a0: 8083 orl %d3,%d0
485a2: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
485a4: 2228 0010 movel %a0@(16),%d1
if ( current_state & state ) {
485a8: 2002 movel %d2,%d0
485aa: c081 andl %d1,%d0
485ac: 670c beqs 485ba <_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);
485ae: 2002 movel %d2,%d0
485b0: 4680 notl %d0
485b2: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear( state, current_state );
485b4: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
485b8: 670e beqs 485c8 <_Thread_Clear_state+0x40> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
485ba: 46c3 movew %d3,%sr <== NOT EXECUTED
}
485bc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
485c0: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
485c4: 4e5e unlk %fp <== NOT EXECUTED
485c6: 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 );
485c8: 2f08 movel %a0,%sp@-
485ca: 4879 0005 fcfe pea 5fcfe <_Scheduler>
485d0: 2079 0005 fd0e moveal 5fd0e <_Scheduler+0x10>,%a0
485d6: 4e90 jsr %a0@
485d8: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
485da: 46c3 movew %d3,%sr
}
485dc: 242e fff8 movel %fp@(-8),%d2
485e0: 262e fffc movel %fp@(-4),%d3
485e4: 4e5e unlk %fp <== NOT EXECUTED
000485e8 <_Thread_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
485e8: 4280 clrl %d0
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
485ea: 4e56 0000 linkw %fp,#0
485ee: 2f0b movel %a3,%sp@-
485f0: 266e 0008 moveal %fp@(8),%a3
485f4: 2f0a movel %a2,%sp@-
485f6: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
485fa: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
485fe: 302a 000a movew %a2@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48602: 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;
48606: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
4860c: 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 );
4860e: 2f0a movel %a2,%sp@-
48610: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level>
48616: 4eb9 0004 97b0 jsr 497b0 <_User_extensions_Thread_delete>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4861c: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
48622: 5280 addql #1,%d0
48624: 23c0 0005 fc78 movel %d0,5fc78 <_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 );
4862a: 2f0a movel %a2,%sp@-
4862c: 2f0b movel %a3,%sp@-
4862e: 4eb9 0004 795c jsr 4795c <_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 );
48634: 4878 0001 pea 1 <ADD>
48638: 2f0a movel %a2,%sp@-
4863a: 4eb9 0004 923c jsr 4923c <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
48640: 2f0a movel %a2,%sp@-
48642: 4eb9 0004 9064 jsr 49064 <_Thread_queue_Extract_with_proxy>
48648: 4fef 0018 lea %sp@(24),%sp
4864c: 4a00 tstb %d0
4864e: 6608 bnes 48658 <_Thread_Close+0x70> <== NEVER TAKEN
if ( _Watchdog_Is_active( &the_thread->Timer ) )
48650: 7002 moveq #2,%d0
48652: b0aa 0050 cmpl %a2@(80),%d0
48656: 6768 beqs 486c0 <_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 );
48658: 2f0a movel %a2,%sp@-
4865a: 4879 0005 fcfe pea 5fcfe <_Scheduler>
48660: 2079 0005 fd16 moveal 5fd16 <_Scheduler+0x18>,%a0
48666: 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 ) )
48668: 508f addql #8,%sp
4866a: b5f9 0005 fcfa cmpal 5fcfa <_Thread_Allocated_fp>,%a2
48670: 6746 beqs 486b8 <_Thread_Close+0xd0> <== NEVER TAKEN
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
if ( the_thread->Start.fp_context )
48672: 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;
48676: 42aa 00f6 clrl %a2@(246)
if ( the_thread->Start.fp_context )
4867a: 4a80 tstl %d0
4867c: 670a beqs 48688 <_Thread_Close+0xa0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->Start.fp_context );
4867e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48680: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48686: 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 );
48688: 2f0a movel %a2,%sp@-
4868a: 4eb9 0004 9374 jsr 49374 <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
if ( the_thread->extensions )
48690: 202a 0106 movel %a2@(262),%d0
48694: 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;
48696: 42aa 00be clrl %a2@(190)
if ( the_thread->extensions )
4869a: 4a80 tstl %d0
4869c: 670a beqs 486a8 <_Thread_Close+0xc0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->extensions );
4869e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
486a0: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
486a6: 588f addql #4,%sp <== NOT EXECUTED
the_thread->extensions = NULL;
486a8: 42aa 0106 clrl %a2@(262)
}
486ac: 246e fff8 moveal %fp@(-8),%a2
486b0: 266e fffc moveal %fp@(-4),%a3
486b4: 4e5e unlk %fp
486b6: 4e75 rts
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
486b8: 42b9 0005 fcfa clrl 5fcfa <_Thread_Allocated_fp> <== NOT EXECUTED
486be: 60b2 bras 48672 <_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 );
486c0: 486a 0048 pea %a2@(72) <== NOT EXECUTED
486c4: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
486ca: 588f addql #4,%sp <== NOT EXECUTED
486cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
486ce: 4879 0005 fcfe pea 5fcfe <_Scheduler> <== NOT EXECUTED
486d4: 2079 0005 fd16 moveal 5fd16 <_Scheduler+0x18>,%a0 <== NOT EXECUTED
486da: 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 ) )
486dc: 508f addql #8,%sp <== NOT EXECUTED
486de: b5f9 0005 fcfa cmpal 5fcfa <_Thread_Allocated_fp>,%a2 <== NOT EXECUTED
486e4: 668c bnes 48672 <_Thread_Close+0x8a> <== NOT EXECUTED
486e6: 60d0 bras 486b8 <_Thread_Close+0xd0> <== NOT EXECUTED
00048798 <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
48798: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
4879c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
487a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
487a4: 4eb9 0004 8964 jsr 48964 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
487aa: 508f addql #8,%sp <== NOT EXECUTED
487ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
487b0: 661e bnes 487d0 <_Thread_Delay_ended+0x38> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
487b2: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED
487b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
487ba: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
487c0: 508f addql #8,%sp <== NOT EXECUTED
487c2: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
487c8: 5380 subql #1,%d0 <== NOT EXECUTED
487ca: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
487d0: 4e5e unlk %fp <== NOT EXECUTED
000487d4 <_Thread_Dispatch>:
* dispatch thread
* no dispatch thread
*/
void _Thread_Dispatch( void )
{
487d4: 4e56 ffc8 linkw %fp,#-56
487d8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
487dc: 283c 0000 0700 movel #1792,%d4
487e2: 2004 movel %d4,%d0
{
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
487e4: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
487ea: 40c1 movew %sr,%d1
487ec: 8081 orl %d1,%d0
487ee: 46c0 movew %d0,%sr
while ( _Thread_Dispatch_necessary == true ) {
487f0: 1039 0006 010e moveb 6010e <_Per_CPU_Information+0x18>,%d0
487f6: 6700 0120 beqw 48918 <_Thread_Dispatch+0x144>
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
487fa: 7001 moveq #1,%d0
487fc: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level>
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
48802: 2679 0006 0106 moveal 60106 <_Per_CPU_Information+0x10>,%a3
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
48808: 4200 clrb %d0
_Thread_Executing = heir;
4880a: 23cb 0006 0102 movel %a3,60102 <_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;
48810: 13c0 0006 010e moveb %d0,6010e <_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 )
48816: b7ca cmpal %a2,%a3
48818: 6700 00fe beqw 48918 <_Thread_Dispatch+0x144>
4881c: 260e movel %fp,%d3
4881e: 240e movel %fp,%d2
48820: 5183 subql #8,%d3
48822: 2e3c 0004 c590 movel #312720,%d7
48828: 0682 ffff fff0 addil #-16,%d2
4882e: 2c3c 0004 9574 movel #300404,%d6
48834: 2a3c 0004 952c movel #300332,%d5
4883a: 4bf9 0004 983c lea 4983c <_User_extensions_Thread_switch>,%a5
48840: 49f9 0004 9bbc lea 49bbc <_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 )
48846: 7001 moveq #1,%d0
48848: b0ab 007a cmpl %a3@(122),%d0
4884c: 6700 00e2 beqw 48930 <_Thread_Dispatch+0x15c>
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
48850: 46c1 movew %d1,%sr
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
48852: 2f03 movel %d3,%sp@-
48854: 2047 moveal %d7,%a0
48856: 4e90 jsr %a0@
_Timestamp_Subtract(
48858: 2046 moveal %d6,%a0
4885a: 2f02 movel %d2,%sp@-
4885c: 2f03 movel %d3,%sp@-
4885e: 4879 0005 fd44 pea 5fd44 <_Thread_Time_of_last_context_switch>
48864: 4e90 jsr %a0@
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
48866: 2045 moveal %d5,%a0
48868: 2f02 movel %d2,%sp@-
4886a: 486a 0082 pea %a2@(130)
4886e: 4e90 jsr %a0@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
48870: 2079 0005 fd1e moveal 5fd1e <_Thread_libc_reent>,%a0
48876: 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;
4887a: 202e fff8 movel %fp@(-8),%d0
4887e: 222e fffc movel %fp@(-4),%d1
48882: 23c0 0005 fd44 movel %d0,5fd44 <_Thread_Time_of_last_context_switch>
48888: 23c1 0005 fd48 movel %d1,5fd48 <_Thread_Time_of_last_context_switch+0x4>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
4888e: 4a88 tstl %a0
48890: 6708 beqs 4889a <_Thread_Dispatch+0xc6> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
48892: 2550 00fa movel %a0@,%a2@(250)
*_Thread_libc_reent = heir->libc_reent;
48896: 20ab 00fa movel %a3@(250),%a0@
}
_User_extensions_Thread_switch( executing, heir );
4889a: 2f0b movel %a3,%sp@-
4889c: 2f0a movel %a2,%sp@-
4889e: 4e95 jsr %a5@
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
488a0: 486b 00c2 pea %a3@(194)
488a4: 486a 00c2 pea %a2@(194)
488a8: 4e94 jsr %a4@
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
488aa: 4fef 0010 lea %sp@(16),%sp
488ae: 4aaa 00f6 tstl %a2@(246)
488b2: 672c beqs 488e0 <_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 );
488b4: 2079 0005 fcfa moveal 5fcfa <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED
488ba: b1ca cmpal %a2,%a0 <== NOT EXECUTED
488bc: 6722 beqs 488e0 <_Thread_Dispatch+0x10c> <== NOT EXECUTED
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
488be: 4a88 tstl %a0 <== NOT EXECUTED
488c0: 670c beqs 488ce <_Thread_Dispatch+0xfa> <== NOT EXECUTED
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
488c2: 4868 00f6 pea %a0@(246) <== NOT EXECUTED
488c6: 4eb9 0004 9ce2 jsr 49ce2 <_CPU_Context_save_fp> <== NOT EXECUTED
488cc: 588f addql #4,%sp <== NOT EXECUTED
_Context_Restore_fp( &executing->fp_context );
488ce: 486a 00f6 pea %a2@(246) <== NOT EXECUTED
488d2: 4eb9 0004 9d1a jsr 49d1a <_CPU_Context_restore_fp> <== NOT EXECUTED
_Thread_Allocated_fp = executing;
488d8: 588f addql #4,%sp <== NOT EXECUTED
488da: 23ca 0005 fcfa movel %a2,5fcfa <_Thread_Allocated_fp> <== NOT EXECUTED
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
488e0: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
488e6: 2004 movel %d4,%d0
488e8: 40c1 movew %sr,%d1
488ea: 8081 orl %d1,%d0
488ec: 46c0 movew %d0,%sr
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
488ee: 1039 0006 010e moveb 6010e <_Per_CPU_Information+0x18>,%d0
488f4: 6722 beqs 48918 <_Thread_Dispatch+0x144> <== ALWAYS TAKEN
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
488f6: 7001 moveq #1,%d0 <== NOT EXECUTED
488f8: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
488fe: 2679 0006 0106 moveal 60106 <_Per_CPU_Information+0x10>,%a3<== NOT EXECUTED
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
48904: 4200 clrb %d0 <== NOT EXECUTED
_Thread_Executing = heir;
48906: 23cb 0006 0102 movel %a3,60102 <_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;
4890c: 13c0 0006 010e moveb %d0,6010e <_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 )
48912: b5cb cmpal %a3,%a2 <== NOT EXECUTED
48914: 6600 ff30 bnew 48846 <_Thread_Dispatch+0x72> <== NOT EXECUTED
_ISR_Disable( level );
}
post_switch:
_Thread_Dispatch_disable_level = 0;
48918: 42b9 0005 fc78 clrl 5fc78 <_Thread_Dispatch_disable_level>
_ISR_Enable( level );
4891e: 46c1 movew %d1,%sr
_API_extensions_Run_postswitch();
48920: 4eb9 0004 6da2 jsr 46da2 <_API_extensions_Run_postswitch>
}
48926: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
4892c: 4e5e unlk %fp
4892e: 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;
48930: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
48936: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED
4893a: 6000 ff14 braw 48850 <_Thread_Dispatch+0x7c> <== NOT EXECUTED
00048964 <_Thread_Get>:
*/
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
48964: 4e56 0000 linkw %fp,#0
48968: 202e 0008 movel %fp@(8),%d0
4896c: 2f03 movel %d3,%sp@-
4896e: 206e 000c moveal %fp@(12),%a0
48972: 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 ) ) {
48974: 4a80 tstl %d0
48976: 6762 beqs 489da <_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);
48978: 7418 moveq #24,%d2
4897a: 2200 movel %d0,%d1
4897c: e4a9 lsrl %d2,%d1
4897e: 7607 moveq #7,%d3
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
48980: 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);
48984: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
48986: 2241 moveal %d1,%a1
48988: 5389 subql #1,%a1
4898a: b489 cmpl %a1,%d2
4898c: 653a bcss 489c8 <_Thread_Get+0x64> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
4898e: 761b moveq #27,%d3
48990: 2400 movel %d0,%d2
48992: e6aa lsrl %d3,%d2
*location = OBJECTS_ERROR;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class != 1 ) { /* threads are always first class :) */
48994: 163c 0001 moveb #1,%d3
48998: b682 cmpl %d2,%d3
4899a: 662c bnes 489c8 <_Thread_Get+0x64> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
api_information = _Objects_Information_table[ the_api ];
4899c: 43f9 0005 fc34 lea 5fc34 <_Objects_Information_table>,%a1
*location = OBJECTS_ERROR;
goto done;
}
#endif
information = api_information[ the_class ];
489a2: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1
489a6: 2229 0004 movel %a1@(4),%d1
if ( !information ) {
489aa: 671c beqs 489c8 <_Thread_Get+0x64> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
489ac: 2f08 movel %a0,%sp@-
489ae: 2f00 movel %d0,%sp@-
489b0: 2f01 movel %d1,%sp@-
489b2: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get>
done:
return tp;
}
489b8: 242e fff8 movel %fp@(-8),%d2
if ( !information ) {
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
489bc: 4fef 000c lea %sp@(12),%sp
done:
return tp;
}
489c0: 262e fffc movel %fp@(-4),%d3
489c4: 4e5e unlk %fp
489c6: 4e75 rts
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
489c8: 7001 moveq #1,%d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
489ca: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
489ce: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
489d2: 4e5e unlk %fp <== NOT EXECUTED
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
489d4: 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;
489d6: 4280 clrl %d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
489d8: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
489da: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
489e0: 5280 addql #1,%d0
489e2: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level>
489e8: 242e fff8 movel %fp@(-8),%d2
489ec: 262e fffc movel %fp@(-4),%d3
489f0: 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;
489f2: 2039 0006 0102 movel 60102 <_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;
489f8: 4290 clrl %a0@ <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
0004e688 <_Thread_Handler>:
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4e688: 4e56 0000 linkw %fp,#0
4e68c: 2f0a movel %a2,%sp@-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
4e68e: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4e694: 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;
4e696: 222a 00a8 movel %a2@(168),%d1
_ISR_Set_level(level);
4e69a: 40c0 movew %sr,%d0
4e69c: e189 lsll #8,%d1
4e69e: 0280 0000 f8ff andil #63743,%d0
4e6a4: 8081 orl %d1,%d0
4e6a6: 46c0 movew %d0,%sr
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
doneConstructors = 1;
4e6a8: 7001 moveq #1,%d0
level = executing->Start.isr_level;
_ISR_Set_level(level);
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
4e6aa: 1439 0005 f438 moveb 5f438 <doneConstructors.3368>,%d2
doneConstructors = 1;
4e6b0: 13c0 0005 f438 moveb %d0,5f438 <doneConstructors.3368>
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4e6b6: 4aaa 00f6 tstl %a2@(246)
4e6ba: 6720 beqs 4e6dc <_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 );
4e6bc: 2079 0005 fcfa moveal 5fcfa <_Thread_Allocated_fp>,%a0
4e6c2: b1ca cmpal %a2,%a0
4e6c4: 6716 beqs 4e6dc <_Thread_Handler+0x54> <== NEVER TAKEN
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4e6c6: 4a88 tstl %a0
4e6c8: 670c beqs 4e6d6 <_Thread_Handler+0x4e> <== ALWAYS TAKEN
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4e6ca: 4868 00f6 pea %a0@(246) <== NOT EXECUTED
4e6ce: 4eb9 0004 9ce2 jsr 49ce2 <_CPU_Context_save_fp> <== NOT EXECUTED
4e6d4: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4e6d6: 23ca 0005 fcfa movel %a2,5fcfa <_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 );
4e6dc: 2f0a movel %a2,%sp@-
4e6de: 4eb9 0004 9688 jsr 49688 <_User_extensions_Thread_begin>
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4e6e4: 4eb9 0004 893e jsr 4893e <_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) */ {
4e6ea: 588f addql #4,%sp
4e6ec: 4a02 tstb %d2
4e6ee: 6724 beqs 4e714 <_Thread_Handler+0x8c>
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e6f0: 202a 0092 movel %a2@(146),%d0
4e6f4: 672a beqs 4e720 <_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 ) {
4e6f6: 7201 moveq #1,%d1
4e6f8: b280 cmpl %d0,%d1
4e6fa: 674c beqs 4e748 <_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 );
4e6fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e6fe: 4eb9 0004 96c6 jsr 496c6 <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4e704: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4e708: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4e70c: 42a7 clrl %sp@- <== NOT EXECUTED
4e70e: 4eb9 0004 7810 jsr 47810 <_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 ();
4e714: 4eb9 0005 c870 jsr 5c870 <_init>
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4e71a: 202a 0092 movel %a2@(146),%d0
4e71e: 66d6 bnes 4e6f6 <_Thread_Handler+0x6e>
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4e720: 2f2a 009a movel %a2@(154),%sp@-
4e724: 206a 008e moveal %a2@(142),%a0
4e728: 4e90 jsr %a0@
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
4e72a: 588f addql #4,%sp
4e72c: 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 );
4e730: 2f0a movel %a2,%sp@-
4e732: 4eb9 0004 96c6 jsr 496c6 <_User_extensions_Thread_exitted>
_Internal_error_Occurred(
4e738: 4878 0005 pea 5 <COMPARE>
4e73c: 4878 0001 pea 1 <ADD>
4e740: 42a7 clrl %sp@-
4e742: 4eb9 0004 7810 jsr 47810 <_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)(
4e748: 2f2a 0096 movel %a2@(150),%sp@-
4e74c: 206a 008e moveal %a2@(142),%a0
4e750: 4e90 jsr %a0@
executing->Start.numeric_argument
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
executing->Wait.return_argument =
4e752: 588f addql #4,%sp <== NOT EXECUTED
4e754: 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 );
4e758: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e75a: 4eb9 0004 96c6 jsr 496c6 <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4e760: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4e764: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4e768: 42a7 clrl %sp@- <== NOT EXECUTED
4e76a: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED
00048c14 <_Thread_Handler_initialization>:
*
* Output parameters: NONE
*/
void _Thread_Handler_initialization(void)
{
48c14: 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) ) )
48c18: 4ab9 0005 e3ec tstl 5e3ec <Configuration+0x28>
48c1e: 57c1 seq %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48c20: 4ab9 0005 e3e8 tstl 5e3e8 <Configuration+0x24>
48c26: 57c0 seq %d0
== (!Configuration.stack_free_hook) ) )
48c28: 4481 negl %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48c2a: 4480 negl %d0
48c2c: b380 eorl %d1,%d0
uint32_t maximum_extensions;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t maximum_proxies;
#endif
ticks_per_timeslice = Configuration.ticks_per_timeslice;
48c2e: 2239 0005 e3d4 movel 5e3d4 <Configuration+0x10>,%d1
maximum_extensions = Configuration.maximum_extensions;
48c34: 2079 0005 e3cc moveal 5e3cc <Configuration+0x8>,%a0
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48c3a: 4a00 tstb %d0
48c3c: 6650 bnes 48c8e <_Thread_Handler_initialization+0x7a>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c3e: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48c42: 4200 clrb %d0
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c44: 42a7 clrl %sp@-
48c46: 4878 010e pea 10e <DBL_MANT_DIG+0xd9>
48c4a: 4878 0001 pea 1 <ADD>
48c4e: 4878 0001 pea 1 <ADD>
48c52: 4878 0001 pea 1 <ADD>
48c56: 4879 0005 fdaa pea 5fdaa <_Thread_Internal_information>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48c5c: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18>
_Thread_Executing = NULL;
48c62: 42b9 0006 0102 clrl 60102 <_Per_CPU_Information+0xc>
_Thread_Heir = NULL;
48c68: 42b9 0006 0106 clrl 60106 <_Per_CPU_Information+0x10>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
_Thread_Allocated_fp = NULL;
48c6e: 42b9 0005 fcfa clrl 5fcfa <_Thread_Allocated_fp>
#endif
_Thread_Maximum_extensions = maximum_extensions;
48c74: 23c8 0005 fd2a movel %a0,5fd2a <_Thread_Maximum_extensions>
_Thread_Ticks_per_timeslice = ticks_per_timeslice;
48c7a: 23c1 0005 fc30 movel %d1,5fc30 <_Thread_Ticks_per_timeslice>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c80: 4eb9 0004 7df8 jsr 47df8 <_Objects_Initialize_information>
48c86: 4fef 001c lea %sp@(28),%sp
false, /* true if this is a global object class */
NULL /* Proxy extraction support callout */
#endif
);
}
48c8a: 4e5e unlk %fp
48c8c: 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(
48c8e: 4878 000e pea e <OPER1+0x2>
48c92: 4878 0001 pea 1 <ADD>
48c96: 42a7 clrl %sp@-
48c98: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
000489fc <_Thread_Initialize>:
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
489fc: 4e56 ffe4 linkw %fp,#-28
48a00: 202e 0010 movel %fp@(16),%d0
48a04: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@
48a08: 246e 000c moveal %fp@(12),%a2
48a0c: 282e 0014 movel %fp@(20),%d4
48a10: 242e 001c movel %fp@(28),%d2
48a14: 262e 0024 movel %fp@(36),%d3
48a18: 1a2e 001b moveb %fp@(27),%d5
48a1c: 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;
48a20: 42aa 00fe clrl %a2@(254)
48a24: 42aa 0102 clrl %a2@(258)
extensions_area = NULL;
the_thread->libc_reent = NULL;
48a28: 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 ) {
48a2c: 4a80 tstl %d0
48a2e: 6700 01ae beqw 48bde <_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;
48a32: 2204 movel %d4,%d1 <== NOT EXECUTED
48a34: 4204 clrb %d4 <== NOT EXECUTED
48a36: 1544 00b0 moveb %d4,%a2@(176) <== NOT EXECUTED
Stack_Control *the_stack,
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
48a3a: 2540 00b6 movel %d0,%a2@(182)
the_stack->size = size;
48a3e: 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 ) {
48a42: 4a05 tstb %d5
48a44: 6600 013c bnew 48b82 <_Thread_Initialize+0x186>
48a48: 4280 clrl %d0
extensions_area = NULL;
the_thread->libc_reent = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
fp_area = NULL;
48a4a: 4284 clrl %d4
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48a4c: 2239 0005 fd2a movel 5fd2a <_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;
48a52: 2540 00f6 movel %d0,%a2@(246)
the_thread->Start.fp_context = fp_area;
48a56: 2540 00ba movel %d0,%a2@(186)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48a5a: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
48a5e: 42aa 0064 clrl %a2@(100)
the_watchdog->id = id;
48a62: 42aa 0068 clrl %a2@(104)
the_watchdog->user_data = user_data;
48a66: 42aa 006c clrl %a2@(108)
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48a6a: 4a81 tstl %d1
48a6c: 6600 012e bnew 48b9c <_Thread_Initialize+0x1a0>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48a70: 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;
48a74: 97cb subal %a3,%a3
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
the_thread->Start.budget_algorithm = budget_algorithm;
48a76: 2543 00a0 movel %d3,%a2@(160)
the_thread->Start.budget_callout = budget_callout;
switch ( budget_algorithm ) {
48a7a: 7002 moveq #2,%d0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
48a7c: 1546 009e moveb %d6,%a2@(158)
the_thread->Start.budget_algorithm = budget_algorithm;
the_thread->Start.budget_callout = budget_callout;
48a80: 256e 0028 00a4 movel %fp@(40),%a2@(164)
switch ( budget_algorithm ) {
48a86: b083 cmpl %d3,%d0
48a88: 6700 00de beqw 48b68 <_Thread_Initialize+0x16c>
RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return
48a8c: 2f0a movel %a2,%sp@-
48a8e: 4879 0005 fcfe pea 5fcfe <_Scheduler>
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48a94: 7001 moveq #1,%d0
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
48a96: 256e 002c 00a8 movel %fp@(44),%a2@(168)
48a9c: 2079 0005 fd12 moveal 5fd12 <_Scheduler+0x14>,%a0
the_thread->current_state = STATES_DORMANT;
48aa2: 2540 0010 movel %d0,%a2@(16)
the_thread->Wait.queue = NULL;
48aa6: 42aa 0044 clrl %a2@(68)
the_thread->resource_count = 0;
48aaa: 42aa 001c clrl %a2@(28)
the_thread->real_priority = priority;
48aae: 2542 0018 movel %d2,%a2@(24)
the_thread->Start.initial_priority = priority;
48ab2: 2542 00ac movel %d2,%a2@(172)
48ab6: 4e90 jsr %a0@
sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread );
if ( !sched )
48ab8: 508f addql #8,%sp
48aba: 2600 movel %d0,%d3
48abc: 673a beqs 48af8 <_Thread_Initialize+0xfc> <== NEVER TAKEN
goto failed;
_Thread_Set_priority( the_thread, priority );
48abe: 2f02 movel %d2,%sp@-
48ac0: 2f0a movel %a2,%sp@-
48ac2: 4eb9 0004 9214 jsr 49214 <_Thread_Set_priority>
_Thread_Stack_Free( the_thread );
return false;
}
48ac8: 206e 0008 moveal %fp@(8),%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
48acc: 4280 clrl %d0
48ace: 2068 0018 moveal %a0@(24),%a0
48ad2: 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 );
48ad6: 42aa 0082 clrl %a2@(130)
48ada: 42aa 0086 clrl %a2@(134)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48ade: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48ae2: 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 );
48ae8: 2f0a movel %a2,%sp@-
48aea: 4eb9 0004 9758 jsr 49758 <_User_extensions_Thread_create>
if ( extension_status )
48af0: 4fef 000c lea %sp@(12),%sp
48af4: 4a00 tstb %d0
48af6: 667e bnes 48b76 <_Thread_Initialize+0x17a> <== ALWAYS TAKEN
return true;
failed:
if ( the_thread->libc_reent )
48af8: 202a 00fa movel %a2@(250),%d0 <== NOT EXECUTED
48afc: 670a beqs 48b08 <_Thread_Initialize+0x10c> <== NOT EXECUTED
_Workspace_Free( the_thread->libc_reent );
48afe: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48b00: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48b06: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
48b08: 202a 00fe movel %a2@(254),%d0 <== NOT EXECUTED
48b0c: 670a beqs 48b18 <_Thread_Initialize+0x11c> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48b0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48b10: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48b16: 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] )
48b18: 202a 0102 movel %a2@(258),%d0 <== NOT EXECUTED
48b1c: 670a beqs 48b28 <_Thread_Initialize+0x12c> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48b1e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48b20: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48b26: 588f addql #4,%sp <== NOT EXECUTED
if ( extensions_area )
48b28: 4a8b tstl %a3 <== NOT EXECUTED
48b2a: 670a beqs 48b36 <_Thread_Initialize+0x13a> <== NOT EXECUTED
(void) _Workspace_Free( extensions_area );
48b2c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48b2e: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48b34: 588f addql #4,%sp <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( fp_area )
48b36: 4a84 tstl %d4 <== NOT EXECUTED
48b38: 670a beqs 48b44 <_Thread_Initialize+0x148> <== NOT EXECUTED
(void) _Workspace_Free( fp_area );
48b3a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
48b3c: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48b42: 588f addql #4,%sp <== NOT EXECUTED
#endif
if ( sched )
48b44: 4a83 tstl %d3 <== NOT EXECUTED
48b46: 670a beqs 48b52 <_Thread_Initialize+0x156> <== NOT EXECUTED
(void) _Workspace_Free( sched );
48b48: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48b4a: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free> <== NOT EXECUTED
48b50: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
48b52: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48b54: 4eb9 0004 9374 jsr 49374 <_Thread_Stack_Free> <== NOT EXECUTED
return false;
48b5a: 588f addql #4,%sp <== NOT EXECUTED
}
48b5c: 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;
48b62: 4200 clrb %d0 <== NOT EXECUTED
}
48b64: 4e5e unlk %fp <== NOT EXECUTED
48b66: 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;
48b68: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
48b6e: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
break;
48b72: 6000 ff18 braw 48a8c <_Thread_Initialize+0x90> <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
return false;
}
48b76: 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;
48b7c: 7001 moveq #1,%d0
_Thread_Stack_Free( the_thread );
return false;
}
48b7e: 4e5e unlk %fp
48b80: 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 );
48b82: 4878 001c pea 1c <OPER2+0x8>
48b86: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
if ( !fp_area )
48b8c: 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 );
48b8e: 2800 movel %d0,%d4
if ( !fp_area )
48b90: 6600 feba bnew 48a4c <_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;
48b94: 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;
48b96: 4283 clrl %d3 <== NOT EXECUTED
48b98: 6000 ff5e braw 48af8 <_Thread_Initialize+0xfc> <== NOT EXECUTED
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48b9c: e589 lsll #2,%d1
48b9e: 2041 moveal %d1,%a0
48ba0: 4868 0004 pea %a0@(4)
48ba4: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48baa: 588f addql #4,%sp
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48bac: 2640 moveal %d0,%a3
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48bae: 4a80 tstl %d0
48bb0: 675a beqs 48c0c <_Thread_Initialize+0x210> <== NEVER TAKEN
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48bb2: 2079 0005 fd2a moveal 5fd2a <_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++ )
48bb8: 4281 clrl %d1
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48bba: 4280 clrl %d0
48bbc: 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;
48bc0: 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++ )
48bc4: 5280 addql #1,%d0
48bc6: 2200 movel %d0,%d1
48bc8: b088 cmpl %a0,%d0
48bca: 6200 feaa bhiw 48a76 <_Thread_Initialize+0x7a>
the_thread->extensions[i] = NULL;
48bce: 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++ )
48bd2: 5280 addql #1,%d0
48bd4: 2200 movel %d0,%d1
48bd6: b088 cmpl %a0,%d0
48bd8: 63e6 blss 48bc0 <_Thread_Initialize+0x1c4>
48bda: 6000 fe9a braw 48a76 <_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 );
48bde: 2f04 movel %d4,%sp@-
48be0: 2f0a movel %a2,%sp@-
48be2: 4eb9 0004 9310 jsr 49310 <_Thread_Stack_Allocate>
if ( !actual_stack_size || actual_stack_size < stack_size )
48be8: 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 );
48bea: 2200 movel %d0,%d1
if ( !actual_stack_size || actual_stack_size < stack_size )
48bec: 6712 beqs 48c00 <_Thread_Initialize+0x204>
48bee: b084 cmpl %d4,%d0
48bf0: 650e bcss 48c00 <_Thread_Initialize+0x204> <== NEVER TAKEN
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
48bf2: 202a 00be movel %a2@(190),%d0
the_thread->Start.core_allocated_stack = true;
48bf6: 7801 moveq #1,%d4
48bf8: 1544 00b0 moveb %d4,%a2@(176)
48bfc: 6000 fe3c braw 48a3a <_Thread_Initialize+0x3e>
_Thread_Stack_Free( the_thread );
return false;
}
48c00: 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 */
48c06: 4200 clrb %d0
_Thread_Stack_Free( the_thread );
return false;
}
48c08: 4e5e unlk %fp
48c0a: 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;
48c0c: 4283 clrl %d3 <== NOT EXECUTED
48c0e: 6000 fee8 braw 48af8 <_Thread_Initialize+0xfc> <== NOT EXECUTED
...
0004da0c <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4da0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4da10: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4da12: 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;
4da16: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = the_thread->Start.budget_callout;
4da1c: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED
the_thread->Start.pointer_argument = pointer_argument;
4da22: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
4da28: 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;
4da2e: 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;
4da34: 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 ) ) {
4da38: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4da3a: 4eb9 0004 9c78 jsr 49c78 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
4da40: 588f addql #4,%sp <== NOT EXECUTED
4da42: 4a00 tstb %d0 <== NOT EXECUTED
4da44: 6608 bnes 4da4e <_Thread_Reset+0x42> <== NOT EXECUTED
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4da46: 7002 moveq #2,%d0 <== NOT EXECUTED
4da48: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4da4c: 672a beqs 4da78 <_Thread_Reset+0x6c> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4da4e: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED
4da52: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4da56: 6718 beqs 4da70 <_Thread_Reset+0x64> <== NOT EXECUTED
the_thread->real_priority = the_thread->Start.initial_priority;
4da58: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4da5c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4da60: 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 );
4da64: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
4da68: 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 );
4da6a: 4ef9 0004 9eb8 jmp 49eb8 <_Thread_Set_priority> <== NOT EXECUTED
}
}
4da70: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4da74: 4e5e unlk %fp <== NOT EXECUTED
4da76: 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 );
4da78: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4da7c: 4eb9 0004 a6b8 jsr 4a6b8 <_Watchdog_Remove> <== NOT EXECUTED
4da82: 588f addql #4,%sp <== NOT EXECUTED
4da84: 60c8 bras 4da4e <_Thread_Reset+0x42> <== NOT EXECUTED
...
00049e28 <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49e28: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
49e2a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49e2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e30: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
49e34: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
if ( !_States_Is_dormant( the_thread->current_state ) ) {
49e38: 670a beqs 49e44 <_Thread_Restart+0x1c> <== NOT EXECUTED
return true;
}
return false;
}
49e3a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49e3e: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Restart_self();
return true;
}
return false;
49e40: 4200 clrb %d0 <== NOT EXECUTED
}
49e42: 4e75 rts <== NOT EXECUTED
Thread_Entry_numeric_type numeric_argument
)
{
if ( !_States_Is_dormant( the_thread->current_state ) ) {
_Thread_Set_transient( the_thread );
49e44: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e46: 4eb9 0004 9f30 jsr 49f30 <_Thread_Set_transient> <== NOT EXECUTED
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
49e4c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49e50: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49e54: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e56: 4eb9 0004 da0c jsr 4da0c <_Thread_Reset> <== NOT EXECUTED
_Thread_Load_environment( the_thread );
49e5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e5e: 4eb9 0004 d6f0 jsr 4d6f0 <_Thread_Load_environment> <== NOT EXECUTED
_Thread_Ready( the_thread );
49e64: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e66: 4eb9 0004 d9d4 jsr 4d9d4 <_Thread_Ready> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
49e6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e6e: 4eb9 0004 a49c jsr 4a49c <_User_extensions_Thread_restart> <== NOT EXECUTED
if ( _Thread_Is_executing ( the_thread ) )
49e74: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
49e78: b5f9 0006 10aa cmpal 610aa <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
49e7e: 670a beqs 49e8a <_Thread_Restart+0x62> <== NOT EXECUTED
return true;
}
return false;
}
49e80: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49e84: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49e86: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
49e88: 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 )
49e8a: 4aaa 00f6 tstl %a2@(246) <== NOT EXECUTED
49e8e: 6712 beqs 49ea2 <_Thread_Restart+0x7a> <== NOT EXECUTED
_Context_Restore_fp( &_Thread_Executing->fp_context );
49e90: 486a 00f6 pea %a2@(246) <== NOT EXECUTED
49e94: 4eb9 0004 aa02 jsr 4aa02 <_CPU_Context_restore_fp> <== NOT EXECUTED
49e9a: 2479 0006 10aa moveal 610aa <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
49ea0: 588f addql #4,%sp <== NOT EXECUTED
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
49ea2: 486a 00c2 pea %a2@(194) <== NOT EXECUTED
49ea6: 4eb9 0004 a8ba jsr 4a8ba <_CPU_Context_Restart_self> <== NOT EXECUTED
49eac: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49eb0: 588f addql #4,%sp <== NOT EXECUTED
49eb2: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49eb4: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
0004c8c0 <_Thread_Resume>:
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c8c0: 203c 0000 0700 movel #1792,%d0
void _Thread_Resume(
Thread_Control *the_thread,
bool force
)
{
4c8c6: 4e56 0000 linkw %fp,#0
4c8ca: 206e 0008 moveal %fp@(8),%a0
4c8ce: 2f02 movel %d2,%sp@-
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c8d0: 40c2 movew %sr,%d2
4c8d2: 8082 orl %d2,%d0
4c8d4: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4c8d6: 2028 0010 movel %a0@(16),%d0
if ( current_state & STATES_SUSPENDED ) {
4c8da: 0800 0001 btst #1,%d0
4c8de: 670a beqs 4c8ea <_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);
4c8e0: 72fd moveq #-3,%d1
4c8e2: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
4c8e4: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4c8e8: 670a beqs 4c8f4 <_Thread_Resume+0x34> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c8ea: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4c8ec: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4c8f0: 4e5e unlk %fp <== NOT EXECUTED
4c8f2: 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 );
4c8f4: 2f08 movel %a0,%sp@-
4c8f6: 4879 0006 3a56 pea 63a56 <_Scheduler>
4c8fc: 2079 0006 3a66 moveal 63a66 <_Scheduler+0x10>,%a0
4c902: 4e90 jsr %a0@
4c904: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c906: 46c2 movew %d2,%sr
}
4c908: 242e fffc movel %fp@(-4),%d2
4c90c: 4e5e unlk %fp <== NOT EXECUTED
00049214 <_Thread_Set_priority>:
void _Thread_Set_priority(
Thread_Control *the_thread,
Priority_Control new_priority
)
{
49214: 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 );
49218: 203c 0005 fcfe movel #392446,%d0
4921e: 206e 0008 moveal %fp@(8),%a0
the_thread->current_priority = new_priority;
49222: 216e 000c 0014 movel %fp@(12),%a0@(20)
49228: 2279 0005 fd1a moveal 5fd1a <_Scheduler+0x1c>,%a1
4922e: 2d40 0008 movel %d0,%fp@(8)
49232: 2d48 000c movel %a0,%fp@(12)
_Scheduler_Thread_scheduler_update(&_Scheduler, the_thread);
}
49236: 4e5e unlk %fp
49238: 4ed1 jmp %a1@
...
0004923c <_Thread_Set_state>:
States_Control state
)
{
ISR_Level level;
_ISR_Disable( level );
4923c: 203c 0000 0700 movel #1792,%d0
void _Thread_Set_state(
Thread_Control *the_thread,
States_Control state
)
{
49242: 4e56 0000 linkw %fp,#0
49246: 206e 0008 moveal %fp@(8),%a0
4924a: 2f02 movel %d2,%sp@-
4924c: 222e 000c movel %fp@(12),%d1
ISR_Level level;
_ISR_Disable( level );
49250: 40c2 movew %sr,%d2
49252: 8082 orl %d2,%d0
49254: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
49256: 2028 0010 movel %a0@(16),%d0
4925a: 6710 beqs 4926c <_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);
4925c: 8280 orl %d0,%d1 <== NOT EXECUTED
4925e: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
49262: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = state;
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
}
49264: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
49268: 4e5e unlk %fp <== NOT EXECUTED
4926a: 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 );
4926c: 2f08 movel %a0,%sp@-
4926e: 4879 0005 fcfe pea 5fcfe <_Scheduler>
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = state;
49274: 2141 0010 movel %d1,%a0@(16)
49278: 2079 0005 fd0a moveal 5fd0a <_Scheduler+0xc>,%a0
4927e: 4e90 jsr %a0@
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
49280: 46c2 movew %d2,%sr
49282: 508f addql #8,%sp
}
49284: 242e fffc movel %fp@(-4),%d2
49288: 4e5e unlk %fp <== NOT EXECUTED
0004928c <_Thread_Set_transient>:
)
{
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
4928c: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
49292: 4e56 0000 linkw %fp,#0
49296: 206e 0008 moveal %fp@(8),%a0
4929a: 2f02 movel %d2,%sp@-
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
4929c: 40c1 movew %sr,%d1
4929e: 8081 orl %d1,%d0
492a0: 46c0 movew %d0,%sr
old_state = the_thread->current_state;
492a2: 2028 0010 movel %a0@(16),%d0
492a6: 7404 moveq #4,%d2
492a8: 8480 orl %d0,%d2
492aa: 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 ) ) {
492ae: 4a80 tstl %d0
492b0: 661a bnes 492cc <_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;
492b2: 2268 008a moveal %a0@(138),%a1
492b6: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
492b8: 2029 0008 movel %a1@(8),%d0
492bc: b091 cmpl %a1@,%d0
492be: 6714 beqs 492d4 <_Thread_Set_transient+0x48> <== ALWAYS TAKEN
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
492c0: 2250 moveal %a0@,%a1 <== NOT EXECUTED
previous = the_node->previous;
492c2: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
next->previous = previous;
492c6: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
492ca: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
492cc: 46c1 movew %d1,%sr
}
492ce: 241f movel %sp@+,%d2
492d0: 4e5e unlk %fp
492d2: 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 );
492d4: 2409 movel %a1,%d2
492d6: 5882 addql #4,%d2
head->next = tail;
head->previous = NULL;
492d8: 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 );
492dc: 2282 movel %d2,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
492de: 2349 0008 movel %a1,%a1@(8)
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
492e2: 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;
492e6: 2268 0004 moveal %a0@(4),%a1
492ea: 3028 000e movew %a0@(14),%d0
492ee: 3411 movew %a1@,%d2
492f0: c082 andl %d2,%d0
492f2: 3280 movew %d0,%a1@
if ( *the_priority_map->minor == 0 )
492f4: 66d6 bnes 492cc <_Thread_Set_transient+0x40>
_Priority_Major_bit_map &= the_priority_map->block_major;
492f6: 3439 0006 0110 movew 60110 <_Priority_Major_bit_map>,%d2
492fc: 3028 000c movew %a0@(12),%d0
49300: c082 andl %d2,%d0
49302: 33c0 0006 0110 movew %d0,60110 <_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 );
49308: 46c1 movew %d1,%sr
}
4930a: 241f movel %sp@+,%d2
4930c: 4e5e unlk %fp <== NOT EXECUTED
00049374 <_Thread_Stack_Free>:
*/
void _Thread_Stack_Free(
Thread_Control *the_thread
)
{
49374: 4e56 0000 linkw %fp,#0
49378: 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 )
4937c: 4a28 00b0 tstb %a0@(176)
49380: 6714 beqs 49396 <_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 )
49382: 2279 0005 e3ec moveal 5e3ec <Configuration+0x28>,%a1
49388: 4a89 tstl %a1
4938a: 670e beqs 4939a <_Thread_Stack_Free+0x26> <== ALWAYS TAKEN
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
4938c: 2d68 00b6 0008 movel %a0@(182),%fp@(8) <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
49392: 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 );
49394: 4ed1 jmp %a1@ <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
49396: 4e5e unlk %fp <== NOT EXECUTED
49398: 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 );
4939a: 2d68 00b6 0008 movel %a0@(182),%fp@(8)
}
493a0: 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 );
493a2: 4ef9 0004 9b6e jmp 49b6e <_Workspace_Free>
000493f8 <_Thread_Start>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
493f8: 7001 moveq #1,%d0
Thread_Start_types the_prototype,
void *entry_point,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
493fa: 4e56 0000 linkw %fp,#0
493fe: 2f0a movel %a2,%sp@-
49400: 246e 0008 moveal %fp@(8),%a2
49404: c0aa 0010 andl %a2@(16),%d0
if ( _States_Is_dormant( the_thread->current_state ) ) {
49408: 660a bnes 49414 <_Thread_Start+0x1c> <== ALWAYS TAKEN
return true;
}
return false;
}
4940a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4940e: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_start( the_thread );
return true;
}
return false;
49410: 4200 clrb %d0 <== NOT EXECUTED
}
49412: 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 );
49414: 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;
49416: 256e 0010 008e movel %fp@(16),%a2@(142)
the_thread->Start.prototype = the_prototype;
4941c: 256e 000c 0092 movel %fp@(12),%a2@(146)
the_thread->Start.pointer_argument = pointer_argument;
49422: 256e 0014 0096 movel %fp@(20),%a2@(150)
the_thread->Start.numeric_argument = numeric_argument;
49428: 256e 0018 009a movel %fp@(24),%a2@(154)
_Thread_Load_environment( the_thread );
4942e: 4eb9 0004 ca08 jsr 4ca08 <_Thread_Load_environment>
_Thread_Ready( the_thread );
49434: 2f0a movel %a2,%sp@-
49436: 4eb9 0004 ccec jsr 4ccec <_Thread_Ready>
_User_extensions_Thread_start( the_thread );
4943c: 2f0a movel %a2,%sp@-
4943e: 4eb9 0004 97f8 jsr 497f8 <_User_extensions_Thread_start>
return true;
}
return false;
}
49444: 246e fffc moveal %fp@(-4),%a2
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
49448: 4fef 000c lea %sp@(12),%sp
}
return false;
}
4944c: 4e5e unlk %fp
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
4944e: 7001 moveq #1,%d0
}
return false;
}
...
00049454 <_Thread_Suspend>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
49454: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Suspend(
Thread_Control *the_thread
)
{
4945a: 4e56 0000 linkw %fp,#0
4945e: 206e 0008 moveal %fp@(8),%a0
49462: 2f02 movel %d2,%sp@-
ISR_Level level;
_ISR_Disable( level );
49464: 40c2 movew %sr,%d2
49466: 8082 orl %d2,%d0
49468: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
4946a: 2028 0010 movel %a0@(16),%d0
4946e: 6712 beqs 49482 <_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);
49470: 7202 moveq #2,%d1 <== NOT EXECUTED
49472: 8280 orl %d0,%d1 <== NOT EXECUTED
49474: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
49478: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = STATES_SUSPENDED;
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
}
4947a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4947e: 4e5e unlk %fp <== NOT EXECUTED
49480: 4e75 rts <== NOT EXECUTED
49482: 2f08 movel %a0,%sp@-
49484: 4879 0005 fcfe pea 5fcfe <_Scheduler>
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = STATES_SUSPENDED;
4948a: 7002 moveq #2,%d0
4948c: 2140 0010 movel %d0,%a0@(16)
49490: 2079 0005 fd0a moveal 5fd0a <_Scheduler+0xc>,%a0
49496: 4e90 jsr %a0@
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
49498: 46c2 movew %d2,%sr
4949a: 508f addql #8,%sp
}
4949c: 242e fffc movel %fp@(-4),%d2
494a0: 4e5e unlk %fp <== NOT EXECUTED
000494a4 <_Thread_Tickle_timeslice>:
*
* Output parameters: NONE
*/
void _Thread_Tickle_timeslice( void )
{
494a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
494a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Thread_Control *executing;
executing = _Thread_Executing;
494aa: 2479 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
/*
* If the thread is not preemptible or is not ready, then
* just return.
*/
if ( !executing->is_preemptible )
494b0: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED
494b4: 6720 beqs 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
return;
if ( !_States_Is_ready( executing->current_state ) )
494b6: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
494ba: 661a bnes 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
/*
* The cpu budget algorithm determines what happens next.
*/
switch ( executing->budget_algorithm ) {
494bc: 202a 007a movel %a2@(122),%d0 <== NOT EXECUTED
494c0: 7201 moveq #1,%d1 <== NOT EXECUTED
494c2: b280 cmpl %d0,%d1 <== NOT EXECUTED
494c4: 6210 bhis 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
494c6: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
494ca: b280 cmpl %d0,%d1 <== NOT EXECUTED
494cc: 642e bccs 494fc <_Thread_Tickle_timeslice+0x58> <== NOT EXECUTED
494ce: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
494d2: b280 cmpl %d0,%d1 <== NOT EXECUTED
494d4: 6708 beqs 494de <_Thread_Tickle_timeslice+0x3a> <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
494d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
494da: 4e5e unlk %fp <== NOT EXECUTED
494dc: 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 )
494de: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED
494e2: 5380 subql #1,%d0 <== NOT EXECUTED
494e4: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
494e8: 66ec bnes 494d6 <_Thread_Tickle_timeslice+0x32> <== NOT EXECUTED
(*executing->budget_callout)( executing );
494ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED
494ec: 206a 007e moveal %a2@(126),%a0 <== NOT EXECUTED
494f0: 4e90 jsr %a0@ <== NOT EXECUTED
break;
#endif
}
}
494f2: 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 );
494f6: 588f addql #4,%sp <== NOT EXECUTED
break;
#endif
}
}
494f8: 4e5e unlk %fp <== NOT EXECUTED
494fa: 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 ) {
494fc: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED
49500: 5380 subql #1,%d0 <== NOT EXECUTED
49502: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
49506: 6ece bgts 494d6 <_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 );
49508: 4879 0005 fcfe pea 5fcfe <_Scheduler> <== NOT EXECUTED
4950e: 2079 0005 fd06 moveal 5fd06 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
49514: 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;
49516: 588f addql #4,%sp <== NOT EXECUTED
49518: 41f9 0005 fc30 lea 5fc30 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
4951e: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
49522: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49526: 4e5e unlk %fp <== NOT EXECUTED
...
000483e0 <_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 ) ) {
483e0: 7202 moveq #2,%d1 <== NOT EXECUTED
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
483e2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
483e6: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
483ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED
483ec: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
483f0: 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 ) ) {
483f4: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
483f8: 671c beqs 48416 <_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 );
483fa: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
483fc: 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
}
48400: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48404: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4840a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4840e: 4e5e unlk %fp <== NOT EXECUTED
48410: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48416: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
4841a: 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 );
4841e: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48420: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48424: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
4842a: 588f addql #4,%sp <== NOT EXECUTED
4842c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
48432: 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
}
48436: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4843a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4843e: 4e5e unlk %fp <== NOT EXECUTED
48440: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED
...
00048ca0 <_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;
48ca0: 41f9 0004 ca84 lea 4ca84 <_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 )
48ca6: 7001 moveq #1,%d0
*/
Thread_Control *_Thread_queue_Dequeue(
Thread_queue_Control *the_thread_queue
)
{
48ca8: 4e56 fff4 linkw %fp,#-12
48cac: 48d7 040c moveml %d2-%d3/%a2,%sp@
48cb0: 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 )
48cb4: b0aa 0034 cmpl %a2@(52),%d0
48cb8: 6722 beqs 48cdc <_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 );
48cba: 2f0a movel %a2,%sp@-
48cbc: 4e90 jsr %a0@
_ISR_Disable( level );
48cbe: 223c 0000 0700 movel #1792,%d1
48cc4: 40c2 movew %sr,%d2
48cc6: 8282 orl %d2,%d1
48cc8: 46c1 movew %d1,%sr
if ( !the_thread ) {
48cca: 588f addql #4,%sp
48ccc: 4a80 tstl %d0
48cce: 6728 beqs 48cf8 <_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 );
48cd0: 46c2 movew %d2,%sr
return the_thread;
}
48cd2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
48cd8: 4e5e unlk %fp
48cda: 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 );
48cdc: 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;
48cde: 41f9 0004 8d1c lea 48d1c <_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 );
48ce4: 4e90 jsr %a0@
_ISR_Disable( level );
48ce6: 223c 0000 0700 movel #1792,%d1
48cec: 40c2 movew %sr,%d2
48cee: 8282 orl %d2,%d1
48cf0: 46c1 movew %d1,%sr
if ( !the_thread ) {
48cf2: 588f addql #4,%sp
48cf4: 4a80 tstl %d0
48cf6: 66d8 bnes 48cd0 <_Thread_queue_Dequeue+0x30>
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
48cf8: 222a 0030 movel %a2@(48),%d1
48cfc: 7601 moveq #1,%d3
48cfe: 5381 subql #1,%d1
48d00: b681 cmpl %d1,%d3
48d02: 65cc bcss 48cd0 <_Thread_queue_Dequeue+0x30> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48d04: 7203 moveq #3,%d1 <== NOT EXECUTED
the_thread = _Thread_Executing;
48d06: 2039 0006 0102 movel 60102 <_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;
48d0c: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48d10: 46c2 movew %d2,%sr <== NOT EXECUTED
return the_thread;
}
48d12: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48d18: 4e5e unlk %fp <== NOT EXECUTED
0004ca84 <_Thread_queue_Dequeue_fifo>:
)
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4ca84: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_fifo(
Thread_queue_Control *the_thread_queue
)
{
4ca8a: 4e56 0000 linkw %fp,#0
4ca8e: 226e 0008 moveal %fp@(8),%a1
4ca92: 2f0b movel %a3,%sp@-
4ca94: 2f0a movel %a2,%sp@-
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4ca96: 40c1 movew %sr,%d1
4ca98: 8081 orl %d1,%d0
4ca9a: 46c0 movew %d0,%sr
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4ca9c: 2049 moveal %a1,%a0
4ca9e: 2458 moveal %a0@+,%a2
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
4caa0: b1ca cmpal %a2,%a0
4caa2: 6768 beqs 4cb0c <_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;
4caa4: 2052 moveal %a2@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)
4caa6: 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 ) ) {
4caa8: 7002 moveq #2,%d0 <== NOT EXECUTED
head->next = new_first;
4caaa: 2288 movel %a0,%a1@ <== NOT EXECUTED
new_first->previous = head;
4caac: 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;
4cab0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4cab4: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4cab8: 6720 beqs 4cada <_Thread_queue_Dequeue_fifo+0x56><== NOT EXECUTED
_ISR_Enable( level );
4caba: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4cabc: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4cac2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cac4: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4caca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4cace: 200b movel %a3,%d0 <== NOT EXECUTED
4cad0: 508f addql #8,%sp <== NOT EXECUTED
4cad2: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4cad6: 4e5e unlk %fp <== NOT EXECUTED
4cad8: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4cada: 7003 moveq #3,%d0 <== NOT EXECUTED
4cadc: 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 );
4cae0: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4cae2: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4cae6: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
4caec: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4caf2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4caf4: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4cafa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4cafe: 200b movel %a3,%d0 <== NOT EXECUTED
4cb00: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cb04: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4cb08: 4e5e unlk %fp <== NOT EXECUTED
4cb0a: 4e75 rts <== NOT EXECUTED
#endif
return the_thread;
}
_ISR_Enable( level );
4cb0c: 46c1 movew %d1,%sr
return NULL;
4cb0e: 97cb subal %a3,%a3
}
4cb10: 200b movel %a3,%d0
4cb12: 246e fff8 moveal %fp@(-8),%a2
4cb16: 266e fffc moveal %fp@(-4),%a3
4cb1a: 4e5e unlk %fp
...
00048d1c <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48d1c: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
48d22: 4e56 ffe8 linkw %fp,#-24
48d26: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
48d2a: 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 );
48d2e: 40c3 movew %sr,%d3
48d30: 8083 orl %d3,%d0
48d32: 46c0 movew %d0,%sr
for( index=0 ;
48d34: 4280 clrl %d0
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48d36: 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 );
48d38: 2400 movel %d0,%d2
48d3a: 2200 movel %d0,%d1
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48d3c: 5280 addql #1,%d0
48d3e: e58a lsll #2,%d2
48d40: 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 );
}
48d42: 2450 moveal %a0@,%a2
48d44: 9282 subl %d2,%d1
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48d46: 41e8 000c lea %a0@(12),%a0
48d4a: 43f3 1804 lea %a3@(00000004,%d1:l),%a1
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
48d4e: b3ca cmpal %a2,%a1
48d50: 6616 bnes 48d68 <_Thread_queue_Dequeue_priority+0x4c>
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
48d52: 7204 moveq #4,%d1
48d54: b280 cmpl %d0,%d1
48d56: 66e0 bnes 48d38 <_Thread_queue_Dequeue_priority+0x1c>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
48d58: 46c3 movew %d3,%sr
return NULL;
48d5a: 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 );
}
48d5c: 2002 movel %d2,%d0
48d5e: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
48d64: 4e5e unlk %fp
48d66: 4e75 rts
48d68: 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(
48d6a: 240a movel %a2,%d2
48d6c: 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 );
}
48d72: 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;
48d76: 2252 moveal %a2@,%a1
previous_node = the_thread->Object.Node.previous;
48d78: 266a 0004 moveal %a2@(4),%a3
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
48d7c: 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 ) ) {
48d80: b088 cmpl %a0,%d0
48d82: 6700 008a beqw 48e0e <_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 );
}
48d86: 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;
48d8a: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
48d8c: 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;
48d90: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
48d92: 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;
48d96: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
48d98: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED
48d9c: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED
48da0: 6716 beqs 48db8 <_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;
48da2: 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 );
48da6: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED
48daa: 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 );
48dac: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
48db0: 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;
48db4: 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 ) ) {
48db8: 7002 moveq #2,%d0
48dba: b0aa 0050 cmpl %a2@(80),%d0
48dbe: 671e beqs 48dde <_Thread_queue_Dequeue_priority+0xc2><== NEVER TAKEN
_ISR_Enable( level );
48dc0: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48dc2: 2f3c 1003 fff8 movel #268697592,%sp@-
48dc8: 2f0a movel %a2,%sp@-
48dca: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state>
48dd0: 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 );
}
48dd2: 2002 movel %d2,%d0
48dd4: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
48dda: 4e5e unlk %fp
48ddc: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48dde: 7203 moveq #3,%d1 <== NOT EXECUTED
48de0: 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 );
48de4: 46c3 movew %d3,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48de6: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48dea: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
48df0: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
48df6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48df8: 4eb9 0004 8588 jsr 48588 <_Thread_Clear_state> <== NOT EXECUTED
48dfe: 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 );
}
48e02: 2002 movel %d2,%d0 <== NOT EXECUTED
48e04: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
48e0a: 4e5e unlk %fp <== NOT EXECUTED
48e0c: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
48e0e: 2689 movel %a1,%a3@
next_node->previous = previous_node;
48e10: 234b 0004 movel %a3,%a1@(4)
48e14: 60a2 bras 48db8 <_Thread_queue_Dequeue_priority+0x9c>
...
0004cb20 <_Thread_queue_Enqueue_fifo>:
)
{
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4cb20: 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
)
{
4cb26: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cb2a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4cb2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cb30: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4cb34: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4cb36: 40c1 movew %sr,%d1 <== NOT EXECUTED
4cb38: 8081 orl %d1,%d0 <== NOT EXECUTED
4cb3a: 46c0 movew %d0,%sr <== NOT EXECUTED
sync_state = the_thread_queue->sync_state;
4cb3c: 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) {
4cb40: 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;
4cb42: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4cb46: b480 cmpl %d0,%d2 <== NOT EXECUTED
4cb48: 670e beqs 4cb58 <_Thread_queue_Enqueue_fifo+0x38><== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return sync_state;
}
4cb4a: 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;
4cb4c: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
return sync_state;
}
4cb50: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4cb52: 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;
4cb54: 2081 movel %d1,%a0@ <== NOT EXECUTED
return sync_state;
}
4cb56: 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 );
4cb58: 2408 movel %a0,%d2 <== NOT EXECUTED
4cb5a: 5882 addql #4,%d2 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
4cb5c: 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 );
4cb60: 2282 movel %d2,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4cb62: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
old_last->next = the_node;
4cb66: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
4cb68: 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;
4cb6c: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
_ISR_Enable( level );
4cb70: 46c1 movew %d1,%sr <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return sync_state;
}
4cb72: 241f movel %sp@+,%d2 <== NOT EXECUTED
4cb74: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4cb76: 4e5e unlk %fp <== NOT EXECUTED
...
00048ec0 <_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
)
{
48ec0: 4e56 ffe0 linkw %fp,#-32
48ec4: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
48ec8: 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 );
48ecc: 41ea 003c lea %a2@(60),%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48ed0: 49ea 0038 lea %a2@(56),%a4
48ed4: 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;
48ed8: 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);
48edc: 2a01 movel %d1,%d5
48ede: 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;
48ee0: 242b 0038 movel %a3@(56),%d2
Chain_Node *tail = _Chain_Tail( the_chain );
48ee4: 2548 0038 movel %a0,%a2@(56)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48ee8: 254c 0040 movel %a4,%a2@(64)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48eec: 42aa 003c clrl %a2@(60)
if ( _Thread_queue_Is_reverse_search( priority ) )
48ef0: 0801 0005 btst #5,%d1
48ef4: 665e bnes 48f54 <_Thread_queue_Enqueue_priority+0x94>
48ef6: 700c moveq #12,%d0
48ef8: 4c00 5800 mulsl %d0,%d5
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48efc: 2c3c 0000 0700 movel #1792,%d6
48f02: 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));
48f04: 49f3 5804 lea %a3@(00000004,%d5:l),%a4
48f08: 40c3 movew %sr,%d3
48f0a: 8083 orl %d3,%d0
48f0c: 46c0 movew %d0,%sr
48f0e: 2803 movel %d3,%d4
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f10: 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 ) ) {
48f14: b9c8 cmpal %a0,%a4
48f16: 6700 013a beqw 49052 <_Thread_queue_Enqueue_priority+0x192>
search_priority = search_thread->current_priority;
48f1a: 2268 0014 moveal %a0@(20),%a1
if ( priority <= search_priority )
48f1e: b3c1 cmpal %d1,%a1
48f20: 6418 bccs 48f3a <_Thread_queue_Enqueue_priority+0x7a>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
48f22: 2006 movel %d6,%d0
48f24: 46c3 movew %d3,%sr
48f26: 8083 orl %d3,%d0
48f28: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
48f2a: 2002 movel %d2,%d0
48f2c: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48f30: 6700 00be beqw 48ff0 <_Thread_queue_Enqueue_priority+0x130>
_ISR_Enable( level );
goto restart_forward_search;
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
48f34: 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 ) ) {
48f36: b9c8 cmpal %a0,%a4
48f38: 66e0 bnes 48f1a <_Thread_queue_Enqueue_priority+0x5a>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48f3a: 202b 0030 movel %a3@(48),%d0
48f3e: 7401 moveq #1,%d2
48f40: b480 cmpl %d0,%d2
48f42: 6700 00c4 beqw 49008 <_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;
48f46: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
48f4a: 2084 movel %d4,%a0@ <== NOT EXECUTED
return the_thread_queue->sync_state;
}
48f4c: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED
48f50: 4e5e unlk %fp <== NOT EXECUTED
48f52: 4e75 rts <== NOT EXECUTED
48f54: 700c moveq #12,%d0
48f56: 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;
48f5a: 4283 clrl %d3
48f5c: 1639 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d3
_ISR_Disable( level );
48f62: 2c3c 0000 0700 movel #1792,%d6
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f68: da8b addl %a3,%d5
48f6a: 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;
48f6c: 2243 moveal %d3,%a1
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f6e: 508c addql #8,%a4
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
48f70: 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;
48f72: 5289 addql #1,%a1
_ISR_Disable( level );
48f74: 40c3 movew %sr,%d3
48f76: 8083 orl %d3,%d0
48f78: 46c0 movew %d0,%sr
48f7a: 2803 movel %d3,%d4
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f7c: 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 ) ) {
48f7e: ba88 cmpl %a0,%d5
48f80: 6720 beqs 48fa2 <_Thread_queue_Enqueue_priority+0xe2>
search_priority = search_thread->current_priority;
48f82: 2268 0014 moveal %a0@(20),%a1
if ( priority >= search_priority )
48f86: b3c1 cmpal %d1,%a1
48f88: 6318 blss 48fa2 <_Thread_queue_Enqueue_priority+0xe2><== ALWAYS TAKEN
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
48f8a: 2006 movel %d6,%d0 <== NOT EXECUTED
48f8c: 46c3 movew %d3,%sr <== NOT EXECUTED
48f8e: 8083 orl %d3,%d0 <== NOT EXECUTED
48f90: 46c0 movew %d0,%sr <== NOT EXECUTED
48f92: 2002 movel %d2,%d0 <== NOT EXECUTED
48f94: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48f98: 6736 beqs 48fd0 <_Thread_queue_Enqueue_priority+0x110><== NOT EXECUTED
_ISR_Enable( level );
goto restart_reverse_search;
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
48f9a: 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 ) ) {
48f9e: ba88 cmpl %a0,%d5 <== NOT EXECUTED
48fa0: 66e0 bnes 48f82 <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
48fa2: 202b 0030 movel %a3@(48),%d0
48fa6: 7401 moveq #1,%d2
48fa8: b480 cmpl %d0,%d2
48faa: 669a bnes 48f46 <_Thread_queue_Enqueue_priority+0x86><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48fac: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48fb0: b3c1 cmpal %d1,%a1
48fb2: 677a beqs 4902e <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
48fb4: 2250 moveal %a0@,%a1
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
48fb6: 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;
48fba: 2489 movel %a1,%a2@
the_node->previous = search_node;
search_node->next = the_node;
next_node->previous = the_node;
48fbc: 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;
48fc0: 208a movel %a2,%a0@
next_node->previous = the_node;
the_thread->Wait.queue = the_thread_queue;
48fc2: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48fc6: 46c3 movew %d3,%sr
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48fc8: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
48fcc: 4e5e unlk %fp
48fce: 4e75 rts
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
48fd0: 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;
48fd2: 4283 clrl %d3 <== NOT EXECUTED
48fd4: 1639 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d3 <== NOT EXECUTED
_ISR_Disable( level );
48fda: 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;
48fdc: 2243 moveal %d3,%a1 <== NOT EXECUTED
48fde: 5289 addql #1,%a1 <== NOT EXECUTED
_ISR_Disable( level );
48fe0: 40c3 movew %sr,%d3 <== NOT EXECUTED
48fe2: 8083 orl %d3,%d0 <== NOT EXECUTED
48fe4: 46c0 movew %d0,%sr <== NOT EXECUTED
48fe6: 2803 movel %d3,%d4 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48fe8: 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 ) ) {
48fea: ba88 cmpl %a0,%d5 <== NOT EXECUTED
48fec: 6694 bnes 48f82 <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
48fee: 60b2 bras 48fa2 <_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 );
48ff0: 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 );
48ff2: 2006 movel %d6,%d0 <== NOT EXECUTED
48ff4: 40c3 movew %sr,%d3 <== NOT EXECUTED
48ff6: 8083 orl %d3,%d0 <== NOT EXECUTED
48ff8: 46c0 movew %d0,%sr <== NOT EXECUTED
48ffa: 2803 movel %d3,%d4 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48ffc: 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 ) ) {
49000: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
49002: 6600 ff16 bnew 48f1a <_Thread_queue_Enqueue_priority+0x5a><== NOT EXECUTED
49006: 604a bras 49052 <_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;
49008: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
4900c: b3c1 cmpal %d1,%a1
4900e: 671e beqs 4902e <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
49010: 2268 0004 moveal %a0@(4),%a1
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
49014: 2488 movel %a0,%a2@
the_node->previous = previous_node;
49016: 2549 0004 movel %a1,%a2@(4)
previous_node->next = the_node;
4901a: 228a movel %a2,%a1@
search_node->previous = the_node;
4901c: 214a 0004 movel %a2,%a0@(4)
the_thread->Wait.queue = the_thread_queue;
49020: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
49024: 46c3 movew %d3,%sr
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
49026: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
4902a: 4e5e unlk %fp
4902c: 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 );
4902e: 49e8 003c lea %a0@(60),%a4 <== NOT EXECUTED
previous_node = search_node->previous;
49032: 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 );
49036: 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;
49038: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous_node->next = the_node;
4903c: 228a movel %a2,%a1@ <== NOT EXECUTED
search_node->previous = the_node;
4903e: 214a 0040 movel %a2,%a0@(64) <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
49042: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
49046: 46c4 movew %d4,%sr <== NOT EXECUTED
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
49048: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
4904a: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED
4904e: 4e5e unlk %fp <== NOT EXECUTED
49050: 4e75 rts <== NOT EXECUTED
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
49052: 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;
49056: 327c ffff moveaw #-1,%a1
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
4905a: 7401 moveq #1,%d2
4905c: b480 cmpl %d0,%d2
4905e: 6600 fee6 bnew 48f46 <_Thread_queue_Enqueue_priority+0x86>
49062: 60a4 bras 49008 <_Thread_queue_Enqueue_priority+0x148>
00048e18 <_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
)
{
48e18: 4e56 fff0 linkw %fp,#-16
48e1c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
48e20: 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 );
48e24: 2f2b 0038 movel %a3@(56),%sp@-
Thread_queue_Control *,
Thread_Control *,
ISR_Level *
);
the_thread = _Thread_Executing;
48e28: 2479 0006 0102 moveal 60102 <_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
)
{
48e2e: 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 );
48e32: 2f0a movel %a2,%sp@-
48e34: 4eb9 0004 923c jsr 4923c <_Thread_Set_state>
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
48e3a: 508f addql #8,%sp
48e3c: 4a82 tstl %d2
48e3e: 663e bnes 48e7e <_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;
48e40: 41f9 0004 cb20 lea 4cb20 <_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 )
48e46: 7001 moveq #1,%d0
48e48: b0ab 0034 cmpl %a3@(52),%d0
48e4c: 676a beqs 48eb8 <_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 );
48e4e: 486e fffc pea %fp@(-4)
48e52: 2f0a movel %a2,%sp@-
48e54: 2f0b movel %a3,%sp@-
48e56: 4e90 jsr %a0@
if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
48e58: 4fef 000c lea %sp@(12),%sp
48e5c: 7201 moveq #1,%d1
48e5e: b280 cmpl %d0,%d1
48e60: 6712 beqs 48e74 <_Thread_queue_Enqueue_with_handler+0x5c><== ALWAYS TAKEN
_Thread_blocking_operation_Cancel( sync_state, the_thread, level );
48e62: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
48e66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48e68: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48e6a: 4eb9 0004 83e0 jsr 483e0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
48e70: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
48e74: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
48e7a: 4e5e unlk %fp
48e7c: 4e75 rts
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
_Watchdog_Initialize(
48e7e: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
48e82: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED
the_watchdog->id = id;
48e88: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48e8c: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
48e90: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48e94: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
48e98: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48e9c: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain> <== NOT EXECUTED
48ea2: 4eb9 0004 987c jsr 4987c <_Watchdog_Insert> <== NOT EXECUTED
48ea8: 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;
48eaa: 41f9 0004 cb20 lea 4cb20 <_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 )
48eb0: 7001 moveq #1,%d0 <== NOT EXECUTED
48eb2: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED
48eb6: 6696 bnes 48e4e <_Thread_queue_Enqueue_with_handler+0x36><== NOT EXECUTED
enqueue_p = _Thread_queue_Enqueue_priority;
48eb8: 41f9 0004 8ec0 lea 48ec0 <_Thread_queue_Enqueue_priority>,%a0
48ebe: 608e bras 48e4e <_Thread_queue_Enqueue_with_handler+0x36>
0004cb7c <_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 )
4cb7c: 7201 moveq #1,%d1 <== NOT EXECUTED
void _Thread_queue_Extract(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4cb7e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cb82: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4cb86: 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 )
4cb8a: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED
4cb8e: 6710 beqs 4cba0 <_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 );
4cb90: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4cb94: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4cb98: 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 );
4cb9a: 4ef9 0004 e770 jmp 4e770 <_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 );
4cba0: 42a7 clrl %sp@- <== NOT EXECUTED
4cba2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cba4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4cba6: 4eb9 0004 cbb4 jsr 4cbb4 <_Thread_queue_Extract_priority_helper><== NOT EXECUTED
4cbac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
}
4cbb0: 4e5e unlk %fp <== NOT EXECUTED
0004e770 <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4e770: 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
)
{
4e776: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4e77a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e77c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4e780: 40c1 movew %sr,%d1 <== NOT EXECUTED
4e782: 8081 orl %d1,%d0 <== NOT EXECUTED
4e784: 46c0 movew %d0,%sr <== NOT EXECUTED
4e786: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4e78a: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4e790: 6734 beqs 4e7c6 <_Thread_queue_Extract_fifo+0x56><== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4e792: 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 ) ) {
4e794: 7002 moveq #2,%d0 <== NOT EXECUTED
previous = the_node->previous;
4e796: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4e79a: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4e79e: 2089 movel %a1,%a0@ <== NOT EXECUTED
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4e7a0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4e7a4: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4e7a8: 6726 beqs 4e7d0 <_Thread_queue_Extract_fifo+0x60><== NOT EXECUTED
_ISR_Enable( level );
4e7aa: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4e7ac: 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
}
4e7b0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4e7b4: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4e7ba: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4e7be: 4e5e unlk %fp <== NOT EXECUTED
4e7c0: 4ef9 0004 8588 jmp 48588 <_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 );
4e7c6: 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
}
4e7c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4e7cc: 4e5e unlk %fp <== NOT EXECUTED
4e7ce: 4e75 rts <== NOT EXECUTED
4e7d0: 7003 moveq #3,%d0 <== NOT EXECUTED
4e7d2: 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 );
4e7d6: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4e7d8: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4e7dc: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
4e7e2: 588f addql #4,%sp <== NOT EXECUTED
4e7e4: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4e7ea: 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
}
4e7ee: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4e7f2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4e7f6: 4e5e unlk %fp <== NOT EXECUTED
4e7f8: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED
...
0004cbb4 <_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 );
4cbb4: 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
)
{
4cbba: 4e56 ffec linkw %fp,#-20
4cbbe: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4cbc2: 246e 000c moveal %fp@(12),%a2
4cbc6: 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 );
4cbca: 40c1 movew %sr,%d1
4cbcc: 8081 orl %d1,%d0
4cbce: 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);
4cbd0: 202a 0010 movel %a2@(16),%d0
4cbd4: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4cbda: 677e beqs 4cc5a <_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 );
4cbdc: 200a movel %a2,%d0
4cbde: 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;
4cbe4: 2252 moveal %a2@,%a1
previous_node = the_node->previous;
4cbe6: 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
}
4cbea: 206a 0038 moveal %a2@(56),%a0
*/
next_node = the_node->next;
previous_node = the_node->previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4cbee: b088 cmpl %a0,%d0
4cbf0: 6774 beqs 4cc66 <_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
}
4cbf2: 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;
4cbf6: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4cbf8: 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;
4cbfc: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4cbfe: 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;
4cc02: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4cc04: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED
4cc08: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
4cc0c: 6716 beqs 4cc24 <_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;
4cc0e: 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 );
4cc12: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED
4cc16: 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 );
4cc18: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
4cc1c: 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;
4cc20: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4cc24: 4a02 tstb %d2 <== NOT EXECUTED
4cc26: 6626 bnes 4cc4e <_Thread_queue_Extract_priority_helper+0x9a><== NOT EXECUTED
_ISR_Enable( level );
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4cc28: 7002 moveq #2,%d0 <== NOT EXECUTED
4cc2a: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4cc2e: 6742 beqs 4cc72 <_Thread_queue_Extract_priority_helper+0xbe><== NOT EXECUTED
_ISR_Enable( level );
4cc30: 46c1 movew %d1,%sr <== NOT EXECUTED
4cc32: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
4cc36: 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
}
4cc3c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4cc42: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4cc46: 4e5e unlk %fp <== NOT EXECUTED
4cc48: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
_ISR_Enable( level );
4cc4e: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4cc50: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4cc56: 4e5e unlk %fp
4cc58: 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 );
4cc5a: 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
}
4cc5c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4cc62: 4e5e unlk %fp <== NOT EXECUTED
4cc64: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4cc66: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4cc68: 234b 0004 movel %a3,%a1@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4cc6c: 4a02 tstb %d2
4cc6e: 67b8 beqs 4cc28 <_Thread_queue_Extract_priority_helper+0x74><== NEVER TAKEN
4cc70: 60dc bras 4cc4e <_Thread_queue_Extract_priority_helper+0x9a>
4cc72: 7003 moveq #3,%d0 <== NOT EXECUTED
4cc74: 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 );
4cc78: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4cc7a: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4cc7e: 4eb9 0004 99d0 jsr 499d0 <_Watchdog_Remove> <== NOT EXECUTED
4cc84: 588f addql #4,%sp <== NOT EXECUTED
4cc86: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED
4cc8c: 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
}
4cc90: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4cc96: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4cc9a: 4e5e unlk %fp <== NOT EXECUTED
4cc9c: 4ef9 0004 8588 jmp 48588 <_Thread_Clear_state> <== NOT EXECUTED
...
00049064 <_Thread_queue_Extract_with_proxy>:
*/
bool _Thread_queue_Extract_with_proxy(
Thread_Control *the_thread
)
{
49064: 4e56 0000 linkw %fp,#0
49068: 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);
4906c: 2028 0010 movel %a0@(16),%d0
49070: 0280 0003 bee0 andil #245472,%d0
States_Control state;
state = the_thread->current_state;
if ( _States_Is_waiting_on_thread_queue( state ) ) {
49076: 6606 bnes 4907e <_Thread_queue_Extract_with_proxy+0x1a><== NEVER TAKEN
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
}
49078: 4e5e unlk %fp
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
4907a: 4200 clrb %d0
}
4907c: 4e75 rts
if ( proxy_extract_callout )
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4907e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
49080: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED
49084: 4eb9 0004 cb7c jsr 4cb7c <_Thread_queue_Extract> <== NOT EXECUTED
return true;
4908a: 508f addql #8,%sp <== NOT EXECUTED
}
return false;
}
4908c: 4e5e unlk %fp <== NOT EXECUTED
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
4908e: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
...
0004b258 <_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;
4b258: 43f9 0004 eee8 lea 4eee8 <_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 )
4b25e: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First(
Thread_queue_Control *the_thread_queue
)
{
4b260: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b264: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
4b268: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
4b26c: 6708 beqs 4b276 <_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 );
4b26e: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b272: 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 );
4b274: 4ed1 jmp %a1@ <== NOT EXECUTED
4b276: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b27a: 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;
4b27c: 43f9 0004 b284 lea 4b284 <_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 );
4b282: 4ed1 jmp %a1@ <== NOT EXECUTED
0004eee8 <_Thread_queue_First_fifo>:
*/
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
4eee8: 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;
}
4eeec: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4eef0: 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 ) )
4eef2: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
4eef4: 6704 beqs 4eefa <_Thread_queue_First_fifo+0x12> <== NOT EXECUTED
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
}
4eef6: 4e5e unlk %fp <== NOT EXECUTED
4eef8: 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;
4eefa: 4280 clrl %d0 <== NOT EXECUTED
}
4eefc: 4e5e unlk %fp <== NOT EXECUTED
0004b284 <_Thread_queue_First_priority>:
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
4b284: 4281 clrl %d1 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
4b286: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b28a: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4b28e: 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;
4b292: 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 );
4b294: 2601 movel %d1,%d3 <== NOT EXECUTED
4b296: 2401 movel %d1,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
4b298: 5281 addql #1,%d1 <== NOT EXECUTED
4b29a: e58b lsll #2,%d3 <== NOT EXECUTED
4b29c: e98a lsll #4,%d2 <== NOT EXECUTED
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
}
4b29e: 2010 movel %a0@,%d0 <== NOT EXECUTED
4b2a0: 9483 subl %d3,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
4b2a2: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
4b2a6: 43f2 2804 lea %a2@(00000004,%d2:l),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
4b2aa: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
4b2ac: 6608 bnes 4b2b6 <_Thread_queue_First_priority+0x32><== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
4b2ae: 7004 moveq #4,%d0 <== NOT EXECUTED
4b2b0: b081 cmpl %d1,%d0 <== NOT EXECUTED
4b2b2: 66e0 bnes 4b294 <_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;
4b2b4: 4200 clrb %d0 <== NOT EXECUTED
}
4b2b6: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
4b2ba: 4e5e unlk %fp <== NOT EXECUTED
...
000490d0 <_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 ) {
490d0: 7201 moveq #1,%d1
Thread_queue_Control *the_thread_queue,
Thread_queue_Disciplines the_discipline,
States_Control state,
uint32_t timeout_status
)
{
490d2: 4e56 0000 linkw %fp,#0
490d6: 206e 0008 moveal %fp@(8),%a0
490da: 2f0a movel %a2,%sp@-
490dc: 202e 000c movel %fp@(12),%d0
490e0: 2f02 movel %d2,%sp@-
the_thread_queue->state = state;
490e2: 216e 0010 0038 movel %fp@(16),%a0@(56)
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
490e8: 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;
490ee: 2140 0034 movel %d0,%a0@(52)
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
490f2: 42a8 0030 clrl %a0@(48)
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
490f6: b280 cmpl %d0,%d1
490f8: 6716 beqs 49110 <_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 );
490fa: 2448 moveal %a0,%a2
490fc: 588a addql #4,%a2
head->next = tail;
head->previous = NULL;
490fe: 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 );
49102: 208a movel %a2,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
49104: 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 );
}
}
49108: 241f movel %sp@+,%d2
4910a: 245f moveal %sp@+,%a2
4910c: 4e5e unlk %fp
4910e: 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 ) {
49110: 2248 moveal %a0,%a1
49112: 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 );
49114: 2400 movel %d0,%d2
49116: 2200 movel %d0,%d1
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49118: 5280 addql #1,%d0
4911a: e58a lsll #2,%d2
4911c: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
4911e: 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 );
49122: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
49124: 45f0 1800 lea %a0@(00000000,%d1:l),%a2
49128: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
4912c: 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 ;
49130: 7204 moveq #4,%d1
49132: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49134: 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 ;
49138: b280 cmpl %d0,%d1
4913a: 67cc beqs 49108 <_Thread_queue_Initialize+0x38> <== NEVER TAKEN
4913c: 2400 movel %d0,%d2
4913e: 2200 movel %d0,%d1
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49140: 5280 addql #1,%d0
49142: e58a lsll #2,%d2
49144: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
49146: 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 );
4914a: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4914c: 45f0 1800 lea %a0@(00000000,%d1:l),%a2
49150: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
49154: 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 ;
49158: 7204 moveq #4,%d1
4915a: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
4915c: 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 ;
49160: b280 cmpl %d0,%d1
49162: 66b0 bnes 49114 <_Thread_queue_Initialize+0x44>
49164: 60a2 bras 49108 <_Thread_queue_Initialize+0x38>
...
0004cca4 <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4cca4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cca8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4ccac: 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 &&
4ccb0: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED
4ccb4: 6708 beqs 4ccbe <_Thread_queue_Process_timeout+0x1a><== NOT EXECUTED
4ccb6: b1f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4ccbc: 6716 beqs 4ccd4 <_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;
4ccbe: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4ccc4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4ccc6: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4ccc8: 4eb9 0004 cb7c jsr 4cb7c <_Thread_queue_Extract> <== NOT EXECUTED
4ccce: 508f addql #8,%sp <== NOT EXECUTED
}
}
4ccd0: 4e5e unlk %fp <== NOT EXECUTED
4ccd2: 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 ) {
4ccd4: 7203 moveq #3,%d1 <== NOT EXECUTED
4ccd6: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ccd8: 67f6 beqs 4ccd0 <_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;
4ccda: 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 );
}
}
4ccdc: 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;
4ccde: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4cce4: 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 );
}
}
...
00049168 <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
49168: 4e56 fff0 linkw %fp,#-16
4916c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
49170: 246e 0008 moveal %fp@(8),%a2
49174: 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 )
49178: 4a8a tstl %a2
4917a: 6708 beqs 49184 <_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 ) {
4917c: 7001 moveq #1,%d0
4917e: b0aa 0034 cmpl %a2@(52),%d0
49182: 670a beqs 4918e <_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 );
}
}
49184: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4918a: 4e5e unlk %fp <== NOT EXECUTED
4918c: 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 );
4918e: 303c 0700 movew #1792,%d0
49192: 40c2 movew %sr,%d2
49194: 8082 orl %d2,%d0
49196: 46c0 movew %d0,%sr
49198: 202b 0010 movel %a3@(16),%d0
4919c: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
491a2: 660c bnes 491b0 <_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 );
491a4: 46c2 movew %d2,%sr <== NOT EXECUTED
}
}
491a6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
491ac: 4e5e unlk %fp
491ae: 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 );
491b0: 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;
491b4: 7001 moveq #1,%d0
491b6: 2f0b movel %a3,%sp@-
491b8: 2540 0030 movel %d0,%a2@(48)
491bc: 2f0a movel %a2,%sp@-
491be: 4eb9 0004 cbb4 jsr 4cbb4 <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
491c4: 486e fffc pea %fp@(-4)
491c8: 2f0b movel %a3,%sp@-
491ca: 2f0a movel %a2,%sp@-
491cc: 4eb9 0004 8ec0 jsr 48ec0 <_Thread_queue_Enqueue_priority>
491d2: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
491d6: 46c2 movew %d2,%sr
491d8: 60cc bras 491a6 <_Thread_queue_Requeue+0x3e>
...
000491dc <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
491dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
491e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
491e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
491e8: 4eb9 0004 8964 jsr 48964 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
491ee: 508f addql #8,%sp <== NOT EXECUTED
491f0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
491f4: 6618 bnes 4920e <_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 );
491f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
491f8: 4eb9 0004 cca4 jsr 4cca4 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
491fe: 588f addql #4,%sp <== NOT EXECUTED
49200: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
49206: 5380 subql #1,%d0 <== NOT EXECUTED
49208: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
4920e: 4e5e unlk %fp <== NOT EXECUTED
...
00059070 <_Timer_server_Body>:
* @a arg points to the corresponding timer server control block.
*/
static rtems_task _Timer_server_Body(
rtems_task_argument arg
)
{
59070: 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;
59074: 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;
59078: 200e movel %fp,%d0 <== NOT EXECUTED
5907a: 5180 subql #8,%d0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
5907c: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
59080: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED
59084: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
59088: 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;
5908c: 260e movel %fp,%d3 <== NOT EXECUTED
5908e: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
59094: 240a movel %a2,%d2 <== NOT EXECUTED
59096: 2a0a movel %a2,%d5 <== NOT EXECUTED
59098: 4bf9 0005 d5f8 lea 5d5f8 <_Watchdog_Adjust_to_chain>,%a5 <== NOT EXECUTED
5909e: 0682 0000 0030 addil #48,%d2 <== NOT EXECUTED
590a4: 0685 0000 0068 addil #104,%d5 <== NOT EXECUTED
590aa: 47f9 0005 9c8c lea 59c8c <_Chain_Get>,%a3 <== NOT EXECUTED
590b0: 49f9 0005 d680 lea 5d680 <_Watchdog_Insert>,%a4 <== NOT EXECUTED
590b6: 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 );
590b8: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED
590be: 2d48 ffd8 movel %a0,%fp@(-40) <== NOT EXECUTED
590c2: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED
590c6: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED
590ca: 41ea 0040 lea %a2@(64),%a0 <== NOT EXECUTED
590ce: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED
590d2: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED
590d6: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED
head->previous = NULL;
590da: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
590de: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED
tail->previous = head;
590e2: 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;
590e6: 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;
590ea: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED
590ee: 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;
590f2: 2039 0007 ec16 movel 7ec16 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
590f8: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
590fc: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
59100: 9081 subl %d1,%d0 <== NOT EXECUTED
59102: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59104: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59106: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59108: 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();
5910a: 2039 0007 eb96 movel 7eb96 <_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 ) {
59110: 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;
59114: 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 ) {
59118: b280 cmpl %d0,%d1 <== NOT EXECUTED
5911a: 6500 0148 bcsw 59264 <_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 ) {
5911e: 6200 00be bhiw 591de <_Timer_server_Body+0x16e> <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
59122: 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 );
59126: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
5912a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5912c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
5912e: 588f addql #4,%sp <== NOT EXECUTED
59130: 4a80 tstl %d0 <== NOT EXECUTED
59132: 672e beqs 59162 <_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 ) {
59134: 2040 moveal %d0,%a0 <== NOT EXECUTED
59136: 7c01 moveq #1,%d6 <== NOT EXECUTED
59138: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
5913c: bc81 cmpl %d1,%d6 <== NOT EXECUTED
5913e: 6700 00c2 beqw 59202 <_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 ) {
59142: 7c03 moveq #3,%d6 <== NOT EXECUTED
59144: bc81 cmpl %d1,%d6 <== NOT EXECUTED
59146: 66de bnes 59126 <_Timer_server_Body+0xb6> <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59148: 2040 moveal %d0,%a0 <== NOT EXECUTED
5914a: 4868 0010 pea %a0@(16) <== NOT EXECUTED
5914e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
59150: 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 );
59152: 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 );
59156: 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 );
59158: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5915a: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
5915c: 588f addql #4,%sp <== NOT EXECUTED
5915e: 4a80 tstl %d0 <== NOT EXECUTED
59160: 66d2 bnes 59134 <_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 );
59162: 2004 movel %d4,%d0 <== NOT EXECUTED
59164: 40c1 movew %sr,%d1 <== NOT EXECUTED
59166: 8081 orl %d1,%d0 <== NOT EXECUTED
59168: 46c0 movew %d0,%sr <== NOT EXECUTED
tmp = ts->insert_chain;
5916a: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
if ( _Chain_Is_empty( insert_chain ) ) {
5916e: beae fff4 cmpl %fp@(-12),%d7 <== NOT EXECUTED
59172: 6700 0114 beqw 59288 <_Timer_server_Body+0x218> <== NOT EXECUTED
59176: 7001 moveq #1,%d0 <== NOT EXECUTED
ts->insert_chain = NULL;
do_loop = false;
}
_ISR_Enable( level );
59178: 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 ) {
5917a: 4a00 tstb %d0 <== NOT EXECUTED
5917c: 6600 ff74 bnew 590f2 <_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 ) ) {
59180: 202e ffd8 movel %fp@(-40),%d0 <== NOT EXECUTED
59184: b0ae ffe8 cmpl %fp@(-24),%d0 <== NOT EXECUTED
59188: 6700 0086 beqw 59210 <_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 );
5918c: 2204 movel %d4,%d1 <== NOT EXECUTED
5918e: 40c0 movew %sr,%d0 <== NOT EXECUTED
59190: 8280 orl %d0,%d1 <== NOT EXECUTED
59192: 46c1 movew %d1,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59194: 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))
59198: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED
5919c: 6732 beqs 591d0 <_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;
5919e: 2250 moveal %a0@,%a1 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
591a0: 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;
591a4: 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;
591a8: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED
_ISR_Enable( level );
591ac: 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 );
591ae: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED
591b2: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED
591b6: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
591ba: 4e90 jsr %a0@ <== NOT EXECUTED
}
591bc: 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 );
591be: 2204 movel %d4,%d1 <== NOT EXECUTED
591c0: 40c0 movew %sr,%d0 <== NOT EXECUTED
591c2: 8280 orl %d0,%d1 <== NOT EXECUTED
591c4: 46c1 movew %d1,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
591c6: 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))
591ca: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED
591ce: 66ce bnes 5919e <_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 );
591d0: 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;
591d2: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED
591d6: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED
591da: 6000 ff16 braw 590f2 <_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 );
591de: 9280 subl %d0,%d1 <== NOT EXECUTED
591e0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
591e2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
591e6: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
591ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED
591ec: 4eb9 0005 d564 jsr 5d564 <_Watchdog_Adjust> <== NOT EXECUTED
591f2: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
591f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
watchdogs->last_snapshot = snapshot;
591fa: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
591fe: 6000 ff26 braw 59126 <_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 );
59202: 4868 0010 pea %a0@(16) <== NOT EXECUTED
59206: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59208: 4e94 jsr %a4@ <== NOT EXECUTED
5920a: 508f addql #8,%sp <== NOT EXECUTED
5920c: 6000 ff18 braw 59126 <_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;
59210: 4206 clrb %d6 <== NOT EXECUTED
59212: 1546 007c moveb %d6,%a2@(124) <== NOT EXECUTED
59216: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5921c: 5280 addql #1,%d0 <== NOT EXECUTED
5921e: 23c0 0007 eaec movel %d0,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
_Thread_Set_state( ts->thread, STATES_DELAYING );
59224: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
59228: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5922a: 4eb9 0005 ce78 jsr 5ce78 <_Thread_Set_state> <== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
59230: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59232: 4eba fd64 jsr %pc@(58f98 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59236: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59238: 4eba fdc8 jsr %pc@(59002 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
_Thread_Enable_dispatch();
5923c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
ts->active = true;
59242: 7001 moveq #1,%d0 <== NOT EXECUTED
59244: 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 );
59248: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED
5924c: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
59252: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
59256: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
5925c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
59260: 6000 fe88 braw 590ea <_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 );
59264: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59266: 2c00 movel %d0,%d6 <== NOT EXECUTED
59268: 9c81 subl %d1,%d6 <== NOT EXECUTED
5926a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5926c: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
59270: 2f05 movel %d5,%sp@- <== NOT EXECUTED
59272: 4eb9 0005 d5f8 jsr 5d5f8 <_Watchdog_Adjust_to_chain> <== NOT EXECUTED
59278: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
5927c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
59280: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
59284: 6000 fea0 braw 59126 <_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;
59288: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED
do_loop = false;
5928c: 4200 clrb %d0 <== NOT EXECUTED
}
_ISR_Enable( level );
5928e: 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 ) {
59290: 4a00 tstb %d0 <== NOT EXECUTED
59292: 6600 fe5e bnew 590f2 <_Timer_server_Body+0x82> <== NOT EXECUTED
59296: 6000 fee8 braw 59180 <_Timer_server_Body+0x110> <== NOT EXECUTED
00058f98 <_Timer_server_Reset_interval_system_watchdog>:
}
static void _Timer_server_Reset_interval_system_watchdog(
Timer_server_Control *ts
)
{
58f98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
58f9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58f9e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
58fa2: 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 );
58fa4: 240a movel %a2,%d2 <== NOT EXECUTED
58fa6: 5082 addql #8,%d2 <== NOT EXECUTED
58fa8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58faa: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
58fb0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
58fb6: 40c1 movew %sr,%d1 <== NOT EXECUTED
58fb8: 8081 orl %d1,%d0 <== NOT EXECUTED
58fba: 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 );
58fbc: 200a movel %a2,%d0 <== NOT EXECUTED
58fbe: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
58fc4: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
58fc6: 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 ) ) {
58fca: b088 cmpl %a0,%d0 <== NOT EXECUTED
58fcc: 6726 beqs 58ff4 <_Timer_server_Reset_interval_system_watchdog+0x5c><== NOT EXECUTED
Watchdog_Interval delta_interval =
58fce: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
58fd2: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
58fd4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58fd6: 4879 0007 ebcc pea 7ebcc <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
58fdc: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
58fe0: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
58fe6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
58fea: 508f addql #8,%sp <== NOT EXECUTED
58fec: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
58ff0: 4e5e unlk %fp <== NOT EXECUTED
58ff2: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_ticks(
&ts->Interval_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
58ff4: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
58ff6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
58ffa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
58ffe: 4e5e unlk %fp <== NOT EXECUTED
00059002 <_Timer_server_Reset_tod_system_watchdog>:
}
static void _Timer_server_Reset_tod_system_watchdog(
Timer_server_Control *ts
)
{
59002: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59006: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59008: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5900c: 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 );
5900e: 240a movel %a2,%d2 <== NOT EXECUTED
59010: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED
59016: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59018: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
5901e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
59024: 40c1 movew %sr,%d1 <== NOT EXECUTED
59026: 8081 orl %d1,%d0 <== NOT EXECUTED
59028: 46c0 movew %d0,%sr <== NOT EXECUTED
5902a: 200a movel %a2,%d0 <== NOT EXECUTED
5902c: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
59032: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59034: 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 ) ) {
59038: b088 cmpl %a0,%d0 <== NOT EXECUTED
5903a: 6726 beqs 59062 <_Timer_server_Reset_tod_system_watchdog+0x60><== NOT EXECUTED
Watchdog_Interval delta_interval =
5903c: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
59040: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
59042: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59044: 4879 0007 ebc0 pea 7ebc0 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5904a: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
5904e: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
59054: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
59058: 508f addql #8,%sp <== NOT EXECUTED
5905a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5905e: 4e5e unlk %fp <== NOT EXECUTED
59060: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_seconds(
&ts->TOD_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
59062: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
59064: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
59068: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5906c: 4e5e unlk %fp <== NOT EXECUTED
0005929a <_Timer_server_Schedule_operation_method>:
static void _Timer_server_Schedule_operation_method(
Timer_server_Control *ts,
Timer_Control *timer
)
{
5929a: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
5929e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
592a2: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
592a6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( ts->insert_chain == NULL ) {
592aa: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
592ae: 671a beqs 592ca <_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 );
592b0: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
592b4: 2d48 000c movel %a0,%fp@(12) <== NOT EXECUTED
}
}
592b8: 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 );
592be: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
592c2: 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 );
592c4: 4ef9 0005 9c2c jmp 59c2c <_Chain_Append> <== NOT EXECUTED
592ca: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
592d0: 5280 addql #1,%d0 <== NOT EXECUTED
592d2: 23c0 0007 eaec movel %d0,7eaec <_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 ) {
592d8: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
592dc: 7201 moveq #1,%d1 <== NOT EXECUTED
592de: b280 cmpl %d0,%d1 <== NOT EXECUTED
592e0: 6700 008a beqw 5936c <_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 ) {
592e4: 7803 moveq #3,%d4 <== NOT EXECUTED
592e6: b880 cmpl %d0,%d4 <== NOT EXECUTED
592e8: 670e beqs 592f8 <_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 );
}
}
592ea: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
592f0: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
592f2: 4ef9 0005 c49a jmp 5c49a <_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 );
592f8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
592fe: 40c2 movew %sr,%d2 <== NOT EXECUTED
59300: 8082 orl %d2,%d0 <== NOT EXECUTED
59302: 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 );
59304: 260a movel %a2,%d3 <== NOT EXECUTED
59306: 0683 0000 006c addil #108,%d3 <== NOT EXECUTED
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5930c: 2039 0007 eb96 movel 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED
last_snapshot = ts->TOD_watchdogs.last_snapshot;
59312: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59316: 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 ) ) {
5931a: b689 cmpl %a1,%d3 <== NOT EXECUTED
5931c: 671c beqs 5933a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
delta_interval = first_watchdog->delta_interval;
5931e: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED
if ( snapshot > last_snapshot ) {
59322: b280 cmpl %d0,%d1 <== NOT EXECUTED
59324: 6400 00ba bccw 593e0 <_Timer_server_Schedule_operation_method+0x146><== NOT EXECUTED
/*
* We advanced in time.
*/
delta = snapshot - last_snapshot;
59328: 2800 movel %d0,%d4 <== NOT EXECUTED
5932a: 9881 subl %d1,%d4 <== NOT EXECUTED
if (delta_interval > delta) {
5932c: b883 cmpl %d3,%d4 <== NOT EXECUTED
5932e: 6400 00bc bccw 593ec <_Timer_server_Schedule_operation_method+0x152><== NOT EXECUTED
delta_interval -= delta;
59332: 9684 subl %d4,%d3 <== NOT EXECUTED
59334: 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;
59336: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
}
ts->TOD_watchdogs.last_snapshot = snapshot;
5933a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
_ISR_Enable( level );
5933e: 46c2 movew %d2,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59340: 4868 0010 pea %a0@(16) <== NOT EXECUTED
59344: 486a 0068 pea %a2@(104) <== NOT EXECUTED
59348: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
5934e: 508f addql #8,%sp <== NOT EXECUTED
59350: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED
59354: 6694 bnes 592ea <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59356: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59358: 4eba fca8 jsr %pc@(59002 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
5935c: 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 );
}
}
5935e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
59364: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
59366: 4ef9 0005 c49a jmp 5c49a <_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 );
5936c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
59372: 40c3 movew %sr,%d3 <== NOT EXECUTED
59374: 8083 orl %d3,%d0 <== NOT EXECUTED
59376: 46c0 movew %d0,%sr <== NOT EXECUTED
snapshot = _Watchdog_Ticks_since_boot;
59378: 2039 0007 ec16 movel 7ec16 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
5937e: 220a movel %a2,%d1 <== NOT EXECUTED
59380: 0681 0000 0034 addil #52,%d1 <== NOT EXECUTED
last_snapshot = ts->Interval_watchdogs.last_snapshot;
59386: 282a 003c movel %a2@(60),%d4 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
5938a: 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 ) ) {
5938e: b289 cmpl %a1,%d1 <== NOT EXECUTED
59390: 6712 beqs 593a4 <_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;
59392: 2200 movel %d0,%d1 <== NOT EXECUTED
59394: 9284 subl %d4,%d1 <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
59396: 2429 0010 movel %a1@(16),%d2 <== NOT EXECUTED
if (delta_interval > delta) {
5939a: b481 cmpl %d1,%d2 <== NOT EXECUTED
5939c: 633a blss 593d8 <_Timer_server_Schedule_operation_method+0x13e><== NOT EXECUTED
delta_interval -= delta;
5939e: 9481 subl %d1,%d2 <== NOT EXECUTED
} else {
delta_interval = 0;
}
first_watchdog->delta_interval = delta_interval;
593a0: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED
}
ts->Interval_watchdogs.last_snapshot = snapshot;
593a4: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_ISR_Enable( level );
593a8: 46c3 movew %d3,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
593aa: 4868 0010 pea %a0@(16) <== NOT EXECUTED
593ae: 486a 0030 pea %a2@(48) <== NOT EXECUTED
593b2: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
593b8: 508f addql #8,%sp <== NOT EXECUTED
593ba: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED
593be: 6600 ff2a bnew 592ea <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
593c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
593c4: 4eba fbd2 jsr %pc@(58f98 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
593c8: 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 );
}
}
593ca: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
593d0: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
593d2: 4ef9 0005 c49a jmp 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
593d8: 4282 clrl %d2 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
593da: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED
593de: 60c4 bras 593a4 <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED
}
} else {
/*
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
593e0: d283 addl %d3,%d1 <== NOT EXECUTED
delta_interval += delta;
593e2: 9280 subl %d0,%d1 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
593e4: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
593e8: 6000 ff50 braw 5933a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
*/
delta = snapshot - last_snapshot;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
593ec: 4281 clrl %d1 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
593ee: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
593f2: 6000 ff46 braw 5933a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
0004952c <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
4952c: 4e56 0000 linkw %fp,#0
49530: 226e 0008 moveal %fp@(8),%a1
49534: 2f0a movel %a2,%sp@-
49536: 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;
4953a: 206a 0004 moveal %a2@(4),%a0
4953e: d1e9 0004 addal %a1@(4),%a0
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
49542: 2208 movel %a0,%d1
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
uint32_t seconds = add->tv_sec;
49544: 2012 movel %a2@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
49546: d191 addl %d0,%a1@
time->tv_nsec += add->tv_nsec;
49548: 2348 0004 movel %a0,%a1@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4954c: b1fc 3b9a c9ff cmpal #999999999,%a0
49552: 631a blss 4956e <_Timespec_Add_to+0x42> <== ALWAYS TAKEN
49554: 2051 moveal %a1@,%a0 <== NOT EXECUTED
*
* This routines adds two timespecs. The second argument is added
* to the first.
*/
uint32_t _Timespec_Add_to(
49556: 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;
49558: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED
time->tv_sec++;
seconds++;
4955e: 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 ) {
49560: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED
49566: 62ee bhis 49556 <_Timespec_Add_to+0x2a> <== NOT EXECUTED
49568: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
4956c: 2288 movel %a0,%a1@ <== NOT EXECUTED
time->tv_sec++;
seconds++;
}
return seconds;
}
4956e: 245f moveal %sp@+,%a2
49570: 4e5e unlk %fp <== NOT EXECUTED
0004b048 <_Timespec_Divide>:
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b048: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
4b04c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b050: 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;
4b054: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b05a: 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;
4b05e: 45f9 0005 c7b0 lea 5c7b0 <__muldi3>,%a2 <== NOT EXECUTED
4b064: 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;
4b066: 2a10 movel %a0@,%d5 <== NOT EXECUTED
left += lhs->tv_nsec;
4b068: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b06c: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4b06e: 5bc0 smi %d0 <== NOT EXECUTED
4b070: 49c0 extbl %d0 <== NOT EXECUTED
4b072: 2f00 movel %d0,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b074: 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;
4b078: 4e92 jsr %a2@ <== NOT EXECUTED
4b07a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b07e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b080: 2241 moveal %d1,%a1 <== NOT EXECUTED
right += rhs->tv_nsec;
4b082: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED
4b086: 5bc2 smi %d2 <== NOT EXECUTED
4b088: 49c2 extbl %d2 <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b08a: 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;
4b08e: 2208 movel %a0,%d1 <== NOT EXECUTED
4b090: d689 addl %a1,%d3 <== NOT EXECUTED
4b092: d581 addxl %d1,%d2 <== NOT EXECUTED
if ( right == 0 ) {
4b094: 6700 0086 beqw 4b11c <_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;
4b098: 4bf9 0005 cffc lea 5cffc <__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;
4b09e: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
4b0a4: 42a7 clrl %sp@- <== NOT EXECUTED
4b0a6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b0a8: 5bc1 smi %d1 <== NOT EXECUTED
4b0aa: 49c1 extbl %d1 <== NOT EXECUTED
4b0ac: 2f01 movel %d1,%sp@- <== NOT EXECUTED
left += lhs->tv_nsec;
4b0ae: 2a04 movel %d4,%d5 <== NOT EXECUTED
4b0b0: 5bc4 smi %d4 <== NOT EXECUTED
4b0b2: 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;
4b0b4: 4e92 jsr %a2@ <== NOT EXECUTED
4b0b6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b0ba: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b0bc: 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;
4b0be: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED
4b0c4: 2008 movel %a0,%d0 <== NOT EXECUTED
4b0c6: 2209 movel %a1,%d1 <== NOT EXECUTED
4b0c8: 42a7 clrl %sp@- <== NOT EXECUTED
4b0ca: d285 addl %d5,%d1 <== NOT EXECUTED
4b0cc: d184 addxl %d4,%d0 <== NOT EXECUTED
4b0ce: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b0d0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b0d2: 4e92 jsr %a2@ <== NOT EXECUTED
4b0d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b0d8: 2e83 movel %d3,%sp@ <== NOT EXECUTED
4b0da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0dc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b0de: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b0e0: 4e95 jsr %a5@ <== NOT EXECUTED
4b0e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b0e6: 2400 movel %d0,%d2 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b0e8: 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;
4b0ec: 2601 movel %d1,%d3 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b0ee: 42a7 clrl %sp@- <== NOT EXECUTED
4b0f0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b0f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0f4: 4e95 jsr %a5@ <== NOT EXECUTED
4b0f6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b0fa: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED
4b0fe: 42a7 clrl %sp@- <== NOT EXECUTED
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
4b100: 2881 movel %d1,%a4@ <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b102: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b104: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b106: 4eb9 0005 d388 jsr 5d388 <__umoddi3> <== NOT EXECUTED
4b10c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b110: 2681 movel %d1,%a3@ <== NOT EXECUTED
}
4b112: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b118: 4e5e unlk %fp <== NOT EXECUTED
4b11a: 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;
4b11c: 4294 clrl %a4@ <== NOT EXECUTED
*fval_percentage = 0;
4b11e: 4293 clrl %a3@ <== NOT EXECUTED
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
*fval_percentage = answer % 1000;
}
4b120: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b126: 4e5e unlk %fp <== NOT EXECUTED
...
0004b0b0 <_Timespec_Divide_by_integer>:
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b0b0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b0b4: 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;
4b0b8: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b0be: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b0c2: 47f9 0005 cb08 lea 5cb08 <__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;
4b0c8: 42a7 clrl %sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b0ca: 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;
4b0ce: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
4b0d0: 5bc0 smi %d0 <== NOT EXECUTED
4b0d2: 49c0 extbl %d0 <== NOT EXECUTED
4b0d4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b0d6: 4eb9 0005 c2bc jsr 5c2bc <__muldi3> <== NOT EXECUTED
4b0dc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b0e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b0e2: 2241 moveal %d1,%a1 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b0e4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b0e8: 2408 movel %a0,%d2 <== NOT EXECUTED
4b0ea: 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;
4b0ec: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
4b0f0: 5bc0 smi %d0 <== NOT EXECUTED
4b0f2: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b0f4: 42a7 clrl %sp@- <== NOT EXECUTED
4b0f6: d681 addl %d1,%d3 <== NOT EXECUTED
4b0f8: d580 addxl %d0,%d2 <== NOT EXECUTED
4b0fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b0fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0fe: 4e93 jsr %a3@ <== NOT EXECUTED
4b100: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b104: 2400 movel %d0,%d2 <== NOT EXECUTED
4b106: 2601 movel %d1,%d3 <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b108: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
4b10e: 42a7 clrl %sp@- <== NOT EXECUTED
4b110: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b112: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b114: 4e93 jsr %a3@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b116: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b11a: 2ebc 3b9a ca00 movel #1000000000,%sp@ <== NOT EXECUTED
4b120: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b122: 2481 movel %d1,%a2@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b124: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b126: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b128: 4eb9 0005 ce94 jsr 5ce94 <__umoddi3> <== NOT EXECUTED
4b12e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b132: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
4b136: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4b13c: 4e5e unlk %fp <== NOT EXECUTED
0005cc4c <_Timespec_From_ticks>:
struct timespec *time
)
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5cc4c: 43f9 0005 f2d0 lea 5f2d0 <Configuration+0xc>,%a1 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cc52: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5cc56: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5cc5a: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cc5e: 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;
5cc60: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5cc66: 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;
5cc6a: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED
5cc6e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
TOD_NANOSECONDS_PER_MICROSECOND;
}
5cc72: 241f movel %sp@+,%d2 <== NOT EXECUTED
5cc74: 4e5e unlk %fp <== NOT EXECUTED
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
5cc76: 2080 movel %d0,%a0@ <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
5cc78: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
5cc7e: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
5cc82: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
TOD_NANOSECONDS_PER_MICROSECOND;
}
00049da8 <_Timespec_Greater_than>:
bool _Timespec_Greater_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
49da8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49dac: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
49db0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
49db4: 2211 movel %a1@,%d1 <== NOT EXECUTED
49db6: 2010 movel %a0@,%d0 <== NOT EXECUTED
49db8: b081 cmpl %d1,%d0 <== NOT EXECUTED
49dba: 6d18 blts 49dd4 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec < rhs->tv_sec )
49dbc: 6e10 bgts 49dce <_Timespec_Greater_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
49dbe: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
49dc2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
49dc6: 5dc0 slt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49dc8: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
49dca: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49dcc: 4e75 rts <== NOT EXECUTED
49dce: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
if ( lhs->tv_sec < rhs->tv_sec )
return false;
49dd0: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
49dd2: 4e75 rts <== NOT EXECUTED
49dd4: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
49dd6: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
...
0005cc88 <_Timespec_Is_valid>:
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
const struct timespec *time
)
{
5cc88: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5cc8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !time )
5cc90: 4a88 tstl %a0 <== NOT EXECUTED
5cc92: 6718 beqs 5ccac <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_sec < 0 )
5cc94: 4a90 tstl %a0@ <== NOT EXECUTED
5cc96: 6d14 blts 5ccac <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_nsec < 0 )
5cc98: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
5cc9c: 6d0e blts 5ccac <_Timespec_Is_valid+0x24> <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5cc9e: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
5cca0: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
5cca6: 53c0 sls %d0 <== NOT EXECUTED
5cca8: 4480 negl %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5ccaa: 4e75 rts <== NOT EXECUTED
5ccac: 4e5e unlk %fp <== NOT EXECUTED
if ( time->tv_sec < 0 )
return false;
if ( time->tv_nsec < 0 )
return false;
5ccae: 4200 clrb %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
...
0004c9c8 <_Timespec_Less_than>:
bool _Timespec_Less_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4c9c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c9cc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4c9d0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
4c9d4: 2211 movel %a1@,%d1 <== NOT EXECUTED
4c9d6: 2010 movel %a0@,%d0 <== NOT EXECUTED
4c9d8: b081 cmpl %d1,%d0 <== NOT EXECUTED
4c9da: 6e18 bgts 4c9f4 <_Timespec_Less_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec > rhs->tv_sec )
4c9dc: 6d10 blts 4c9ee <_Timespec_Less_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4c9de: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4c9e2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
4c9e6: 5ec0 sgt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4c9e8: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4c9ea: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4c9ec: 4e75 rts <== NOT EXECUTED
4c9ee: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
if ( lhs->tv_sec > rhs->tv_sec )
return false;
4c9f0: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4c9f2: 4e75 rts <== NOT EXECUTED
4c9f4: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
4c9f6: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
...
00049574 <_Timespec_Subtract>:
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
49574: 4e56 0000 linkw %fp,#0
49578: 226e 0008 moveal %fp@(8),%a1
4957c: 2f0a movel %a2,%sp@-
4957e: 246e 000c moveal %fp@(12),%a2
49582: 206e 0010 moveal %fp@(16),%a0
if (end->tv_nsec < start->tv_nsec) {
49586: 222a 0004 movel %a2@(4),%d1
4958a: 2029 0004 movel %a1@(4),%d0
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
4958e: 2f02 movel %d2,%sp@-
if (end->tv_nsec < start->tv_nsec) {
49590: b081 cmpl %d1,%d0
49592: 6e14 bgts 495a8 <_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;
49594: 2412 movel %a2@,%d2
49596: 9491 subl %a1@,%d2
result->tv_nsec = end->tv_nsec - start->tv_nsec;
49598: 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;
4959a: 2082 movel %d2,%a0@
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
4959c: 241f movel %sp@+,%d2
4959e: 245f moveal %sp@+,%a2
495a0: 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;
495a2: 2141 0004 movel %d1,%a0@(4)
}
}
495a6: 4e75 rts
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
495a8: 2452 moveal %a2@,%a2 <== NOT EXECUTED
495aa: 538a subql #1,%a2 <== NOT EXECUTED
495ac: 95d1 subal %a1@,%a2 <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
495ae: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED
495b4: 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;
}
}
495b6: 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;
495b8: 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;
}
}
495ba: 245f moveal %sp@+,%a2 <== NOT EXECUTED
495bc: 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;
495be: 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;
}
}
0004cd24 <_Timespec_To_ticks>:
*/
uint32_t _Timespec_To_ticks(
const struct timespec *time
)
{
4cd24: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4cd28: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4cd2c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
4cd30: 2412 movel %a2@,%d2 <== NOT EXECUTED
4cd32: 6606 bnes 4cd3a <_Timespec_To_ticks+0x16> <== NOT EXECUTED
4cd34: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
4cd38: 673e beqs 4cd78 <_Timespec_To_ticks+0x54> <== NOT EXECUTED
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4cd3a: 4eb9 0004 e670 jsr 4e670 <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4cd40: 2239 0005 e3d0 movel 5e3d0 <Configuration+0xc>,%d1 <== NOT EXECUTED
4cd46: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
4cd4c: 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;
4cd50: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4cd54: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
4cd58: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED
4cd5c: d083 addl %d3,%d0 <== NOT EXECUTED
if (ticks)
4cd5e: 670a beqs 4cd6a <_Timespec_To_ticks+0x46> <== NOT EXECUTED
return ticks;
return 1;
}
4cd60: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4cd66: 4e5e unlk %fp <== NOT EXECUTED
4cd68: 4e75 rts <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
if (ticks)
return ticks;
return 1;
4cd6a: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
}
4cd6e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4cd74: 4e5e unlk %fp <== NOT EXECUTED
4cd76: 4e75 rts <== NOT EXECUTED
)
{
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
4cd78: 4280 clrl %d0 <== NOT EXECUTED
if (ticks)
return ticks;
return 1;
}
4cd7a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4cd80: 4e5e unlk %fp <== NOT EXECUTED
00049706 <_User_extensions_Fatal>:
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
49706: 4e56 fff0 linkw %fp,#-16
4970a: 48d7 041c moveml %d2-%d4/%a2,%sp@
4970e: 242e 0008 movel %fp@(8),%d2
49712: 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 );
}
}
49716: 2479 0005 fdf0 moveal 5fdf0 <_User_extensions_List+0x8>,%a2
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4971c: 182e 000f moveb %fp@(15),%d4
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49720: b5fc 0005 fde8 cmpal #392680,%a2
49726: 6726 beqs 4974e <_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 );
49728: 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 )
4972e: 206a 0030 moveal %a2@(48),%a0
49732: 4a88 tstl %a0
49734: 670c beqs 49742 <_User_extensions_Fatal+0x3c>
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
49736: 2f03 movel %d3,%sp@-
49738: 2f04 movel %d4,%sp@-
4973a: 2f02 movel %d2,%sp@-
4973c: 4e90 jsr %a0@
4973e: 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 ) {
49742: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49746: b5fc 0005 fde8 cmpal #392680,%a2
4974c: 66e0 bnes 4972e <_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 );
}
}
4974e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
49754: 4e5e unlk %fp <== NOT EXECUTED
000495c4 <_User_extensions_Handler_initialization>:
#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _User_extensions_Handler_initialization(void)
{
495c4: 4e56 ffec linkw %fp,#-20
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
495c8: 203c 0005 fdec movel #392684,%d0
495ce: 23c0 0005 fde8 movel %d0,5fde8 <_User_extensions_List>
head->previous = NULL;
tail->previous = head;
495d4: 203c 0005 fde8 movel #392680,%d0
495da: 23c0 0005 fdf0 movel %d0,5fdf0 <_User_extensions_List+0x8>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
495e0: 203c 0005 fc80 movel #392320,%d0
495e6: 23c0 0005 fc7c movel %d0,5fc7c <_User_extensions_Switches_list>
head->previous = NULL;
tail->previous = head;
495ec: 203c 0005 fc7c movel #392316,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
495f2: 42b9 0005 fdec clrl 5fdec <_User_extensions_List+0x4>
495f8: 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;
495fc: 2439 0005 e3fe movel 5e3fe <Configuration+0x3a>,%d2
initial_extensions = Configuration.User_extension_table;
49602: 2639 0005 e402 movel 5e402 <Configuration+0x3e>,%d3
49608: 42b9 0005 fc80 clrl 5fc80 <_User_extensions_Switches_list+0x4>
tail->previous = head;
4960e: 23c0 0005 fc84 movel %d0,5fc84 <_User_extensions_Switches_list+0x8>
_Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list );
if ( initial_extensions ) {
49614: 4a83 tstl %d3
49616: 6764 beqs 4967c <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
49618: 7834 moveq #52,%d4
4961a: 4c02 4800 mulsl %d2,%d4
4961e: 2f04 movel %d4,%sp@-
49620: 4eb9 0004 9b86 jsr 49b86 <_Workspace_Allocate_or_fatal_error>
49626: 2440 moveal %d0,%a2
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
49628: 2f04 movel %d4,%sp@-
4962a: 42a7 clrl %sp@-
4962c: 2f00 movel %d0,%sp@-
4962e: 4eb9 0004 f200 jsr 4f200 <memset>
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
49634: 4fef 0010 lea %sp@(16),%sp
49638: 4a82 tstl %d2
4963a: 6740 beqs 4967c <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
4963c: 4284 clrl %d4
4963e: 47f9 0004 cd84 lea 4cd84 <_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;
49644: 2043 moveal %d3,%a0
49646: 5284 addql #1,%d4
49648: 0683 0000 0020 addil #32,%d3
4964e: 2558 0014 movel %a0@+,%a2@(20)
49652: 2558 0018 movel %a0@+,%a2@(24)
49656: 2558 001c movel %a0@+,%a2@(28)
4965a: 2558 0020 movel %a0@+,%a2@(32)
4965e: 2558 0024 movel %a0@+,%a2@(36)
49662: 2558 0028 movel %a0@+,%a2@(40)
49666: 2558 002c movel %a0@+,%a2@(44)
4966a: 2550 0030 movel %a0@,%a2@(48)
_User_extensions_Add_set( extension );
4966e: 2f0a movel %a2,%sp@-
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
49670: 45ea 0034 lea %a2@(52),%a2
49674: 4e93 jsr %a3@
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
49676: 588f addql #4,%sp
49678: b882 cmpl %d2,%d4
4967a: 65c8 bcss 49644 <_User_extensions_Handler_initialization+0x80>
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
}
}
}
4967c: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
49682: 4e5e unlk %fp
...
0004ae24 <_User_extensions_Remove_set>:
#include <rtems/score/userext.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
4ae24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ae28: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ae2a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
_Chain_Extract( &the_extension->Node );
4ae2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ae30: 4eb9 0004 85f8 jsr 485f8 <_Chain_Extract> <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
4ae36: 588f addql #4,%sp <== NOT EXECUTED
4ae38: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED
4ae3c: 6712 beqs 4ae50 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED
_Chain_Extract( &the_extension->Switch.Node );
4ae3e: 508a addql #8,%a2 <== NOT EXECUTED
4ae40: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4ae44: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ae48: 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 );
4ae4a: 4ef9 0004 85f8 jmp 485f8 <_Chain_Extract> <== NOT EXECUTED
}
4ae50: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ae54: 4e5e unlk %fp <== NOT EXECUTED
00049688 <_User_extensions_Thread_begin>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
49688: 4e56 0000 linkw %fp,#0
4968c: 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 );
}
}
4968e: 2479 0005 fde8 moveal 5fde8 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
49694: 2f02 movel %d2,%sp@-
49696: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4969a: b5fc 0005 fdec cmpal #392684,%a2
496a0: 6718 beqs 496ba <_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 )
496a2: 206a 0028 moveal %a2@(40),%a0
496a6: 4a88 tstl %a0
496a8: 6706 beqs 496b0 <_User_extensions_Thread_begin+0x28>
(*the_extension->Callouts.thread_begin)( executing );
496aa: 2f02 movel %d2,%sp@-
496ac: 4e90 jsr %a0@
496ae: 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 ) {
496b0: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
496b2: b5fc 0005 fdec cmpal #392684,%a2
496b8: 66e8 bnes 496a2 <_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 );
}
}
496ba: 242e fff8 movel %fp@(-8),%d2
496be: 246e fffc moveal %fp@(-4),%a2
496c2: 4e5e unlk %fp <== NOT EXECUTED
00049758 <_User_extensions_Thread_create>:
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
49758: 4e56 0000 linkw %fp,#0
4975c: 2f0a movel %a2,%sp@-
return false;
}
}
return true;
}
4975e: 2479 0005 fde8 moveal 5fde8 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
49764: 2f02 movel %d2,%sp@-
49766: 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 );
4976a: b5fc 0005 fdec cmpal #392684,%a2
49770: 6722 beqs 49794 <_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 ) {
49772: 206a 0014 moveal %a2@(20),%a0
49776: 4a88 tstl %a0
49778: 6710 beqs 4978a <_User_extensions_Thread_create+0x32>
status = (*the_extension->Callouts.thread_create)(
4977a: 2f02 movel %d2,%sp@-
4977c: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-
49782: 4e90 jsr %a0@
_Thread_Executing,
the_thread
);
if ( !status )
49784: 508f addql #8,%sp
49786: 4a00 tstb %d0
49788: 6718 beqs 497a2 <_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 ) {
4978a: 2452 moveal %a2@,%a2
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
4978c: b5fc 0005 fdec cmpal #392684,%a2
49792: 66de bnes 49772 <_User_extensions_Thread_create+0x1a>
return false;
}
}
return true;
}
49794: 242e fff8 movel %fp@(-8),%d2
49798: 246e fffc moveal %fp@(-4),%a2
4979c: 4e5e unlk %fp
if ( !status )
return false;
}
}
return true;
4979e: 7001 moveq #1,%d0
}
497a0: 4e75 rts
497a2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
497a6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
497aa: 4e5e unlk %fp <== NOT EXECUTED
status = (*the_extension->Callouts.thread_create)(
_Thread_Executing,
the_thread
);
if ( !status )
return false;
497ac: 4200 clrb %d0 <== NOT EXECUTED
}
}
return true;
}
000497b0 <_User_extensions_Thread_delete>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
497b0: 4e56 0000 linkw %fp,#0
497b4: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
497b6: 2479 0005 fdf0 moveal 5fdf0 <_User_extensions_List+0x8>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
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;
for ( the_node = _Chain_Last( &_User_extensions_List );
497c2: b5fc 0005 fde8 cmpal #392680,%a2
497c8: 6720 beqs 497ea <_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 )
497ca: 206a 0020 moveal %a2@(32),%a0
497ce: 4a88 tstl %a0
497d0: 670c beqs 497de <_User_extensions_Thread_delete+0x2e><== NEVER TAKEN
(*the_extension->Callouts.thread_delete)(
497d2: 2f02 movel %d2,%sp@-
497d4: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-
497da: 4e90 jsr %a0@
497dc: 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 ) {
497de: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
497e2: b5fc 0005 fde8 cmpal #392680,%a2
497e8: 66e0 bnes 497ca <_User_extensions_Thread_delete+0x1a>
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
497ea: 242e fff8 movel %fp@(-8),%d2
497ee: 246e fffc moveal %fp@(-4),%a2
497f2: 4e5e unlk %fp
...
000496c6 <_User_extensions_Thread_exitted>:
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
496c6: 4e56 0000 linkw %fp,#0
496ca: 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 );
}
}
496cc: 2479 0005 fdf0 moveal 5fdf0 <_User_extensions_List+0x8>,%a2
}
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
496d2: 2f02 movel %d2,%sp@-
496d4: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
496d8: b5fc 0005 fde8 cmpal #392680,%a2
496de: 671a beqs 496fa <_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 )
496e0: 206a 002c moveal %a2@(44),%a0
496e4: 4a88 tstl %a0
496e6: 6706 beqs 496ee <_User_extensions_Thread_exitted+0x28>
(*the_extension->Callouts.thread_exitted)( executing );
496e8: 2f02 movel %d2,%sp@-
496ea: 4e90 jsr %a0@
496ec: 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 ) {
496ee: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
496f2: b5fc 0005 fde8 cmpal #392680,%a2
496f8: 66e6 bnes 496e0 <_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 );
}
}
496fa: 242e fff8 movel %fp@(-8),%d2
496fe: 246e fffc moveal %fp@(-4),%a2
49702: 4e5e unlk %fp <== NOT EXECUTED
0004a49c <_User_extensions_Thread_restart>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a49c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a4a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a4a2: 2479 0006 0d90 moveal 60d90 <_User_extensions_List>,%a2 <== NOT EXECUTED
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a4a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a4aa: 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 );
4a4ae: b5fc 0006 0d94 cmpal #396692,%a2 <== NOT EXECUTED
4a4b4: 671e beqs 4a4d4 <_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 )
4a4b6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
4a4ba: 4a88 tstl %a0 <== NOT EXECUTED
4a4bc: 670c beqs 4a4ca <_User_extensions_Thread_restart+0x2e><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
4a4be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a4c0: 2f39 0006 10aa movel 610aa <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4a4c6: 4e90 jsr %a0@ <== NOT EXECUTED
4a4c8: 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 ) {
4a4ca: 2452 moveal %a2@,%a2 <== NOT EXECUTED
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4a4cc: b5fc 0006 0d94 cmpal #396692,%a2 <== NOT EXECUTED
4a4d2: 66e2 bnes 4a4b6 <_User_extensions_Thread_restart+0x1a><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a4d4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a4d8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a4dc: 4e5e unlk %fp <== NOT EXECUTED
000497f8 <_User_extensions_Thread_start>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
497f8: 4e56 0000 linkw %fp,#0
497fc: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
497fe: 2479 0005 fde8 moveal 5fde8 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49804: 2f02 movel %d2,%sp@-
49806: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4980a: b5fc 0005 fdec cmpal #392684,%a2
49810: 671e beqs 49830 <_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 )
49812: 206a 0018 moveal %a2@(24),%a0
49816: 4a88 tstl %a0
49818: 670c beqs 49826 <_User_extensions_Thread_start+0x2e>
(*the_extension->Callouts.thread_start)(
4981a: 2f02 movel %d2,%sp@-
4981c: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-
49822: 4e90 jsr %a0@
49824: 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 ) {
49826: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
49828: b5fc 0005 fdec cmpal #392684,%a2
4982e: 66e2 bnes 49812 <_User_extensions_Thread_start+0x1a>
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
49830: 242e fff8 movel %fp@(-8),%d2
49834: 246e fffc moveal %fp@(-4),%a2
49838: 4e5e unlk %fp <== NOT EXECUTED
0004983c <_User_extensions_Thread_switch>:
void _User_extensions_Thread_switch (
Thread_Control *executing,
Thread_Control *heir
)
{
4983c: 4e56 fff4 linkw %fp,#-12
49840: 48d7 040c moveml %d2-%d3/%a2,%sp@
49844: 262e 0008 movel %fp@(8),%d3
49848: 242e 000c movel %fp@(12),%d2
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
4984c: 2479 0005 fc7c moveal 5fc7c <_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 );
49852: b5fc 0005 fc80 cmpal #392320,%a2
49858: 6716 beqs 49870 <_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 );
4985a: 2f02 movel %d2,%sp@-
4985c: 2f03 movel %d3,%sp@-
4985e: 206a 0008 moveal %a2@(8),%a0
49862: 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 ) {
49864: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
49866: 508f addql #8,%sp
49868: b5fc 0005 fc80 cmpal #392320,%a2
4986e: 66ea bnes 4985a <_User_extensions_Thread_switch+0x1e><== NEVER TAKEN
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
49870: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
49876: 4e5e unlk %fp
...
0004b478 <_Watchdog_Adjust>:
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b478: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4b47c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4b480: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b484: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED
4b48a: 2004 movel %d4,%d0 <== NOT EXECUTED
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b48c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
4b490: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b494: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b496: 8081 orl %d1,%d0 <== NOT EXECUTED
4b498: 46c0 movew %d0,%sr <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b49a: 244b moveal %a3,%a2 <== NOT EXECUTED
4b49c: 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 ) ) {
4b49e: b5c8 cmpal %a0,%a2 <== NOT EXECUTED
4b4a0: 6748 beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
4b4a2: 4a89 tstl %a1 <== NOT EXECUTED
4b4a4: 6650 bnes 4b4f6 <_Watchdog_Adjust+0x7e> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b4a6: 4a82 tstl %d2 <== NOT EXECUTED
4b4a8: 6740 beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b4aa: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
4b4ae: 49f9 0004 b700 lea 4b700 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED
4b4b4: b682 cmpl %d2,%d3 <== NOT EXECUTED
4b4b6: 622c bhis 4b4e4 <_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;
4b4b8: 7001 moveq #1,%d0 <== NOT EXECUTED
4b4ba: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
_ISR_Enable( level );
4b4be: 46c1 movew %d1,%sr <== NOT EXECUTED
_Watchdog_Tickle( header );
4b4c0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b4c2: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
4b4c4: 2004 movel %d4,%d0 <== NOT EXECUTED
4b4c6: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b4c8: 8081 orl %d1,%d0 <== NOT EXECUTED
4b4ca: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
4b4cc: 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;
4b4ce: 9483 subl %d3,%d2 <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b4d0: 2013 movel %a3@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
4b4d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
_Watchdog_Tickle( header );
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
4b4d4: b08a cmpl %a2,%d0 <== NOT EXECUTED
4b4d6: 6712 beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b4d8: 4a82 tstl %d2 <== NOT EXECUTED
4b4da: 670e beqs 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b4dc: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
4b4e0: b483 cmpl %d3,%d2 <== NOT EXECUTED
4b4e2: 64d4 bccs 4b4b8 <_Watchdog_Adjust+0x40> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
4b4e4: 9682 subl %d2,%d3 <== NOT EXECUTED
4b4e6: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b4ea: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b4ec: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4b4f2: 4e5e unlk %fp <== NOT EXECUTED
4b4f4: 4e75 rts <== NOT EXECUTED
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
switch ( direction ) {
4b4f6: 7001 moveq #1,%d0 <== NOT EXECUTED
4b4f8: b089 cmpl %a1,%d0 <== NOT EXECUTED
4b4fa: 66ee bnes 4b4ea <_Watchdog_Adjust+0x72> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
4b4fc: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b500: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b502: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4b508: 4e5e unlk %fp <== NOT EXECUTED
0005d5f8 <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5d5f8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5d5fc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
5d600: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5d604: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
5d608: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
if ( units <= 0 ) {
5d60c: 6760 beqs 5d66e <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
return;
}
_ISR_Disable( level );
5d60e: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
5d614: 2003 movel %d3,%d0 <== NOT EXECUTED
5d616: 40c2 movew %sr,%d2 <== NOT EXECUTED
5d618: 8082 orl %d2,%d0 <== NOT EXECUTED
5d61a: 46c0 movew %d0,%sr <== NOT EXECUTED
5d61c: 2a41 moveal %d1,%a5 <== NOT EXECUTED
5d61e: 205d moveal %a5@+,%a0 <== NOT EXECUTED
while ( 1 ) {
if ( units <= 0 ) {
break;
}
if ( _Chain_Is_empty( header ) ) {
5d620: bbc8 cmpal %a0,%a5 <== NOT EXECUTED
5d622: 6748 beqs 5d66c <_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 ) {
5d624: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
5d628: b880 cmpl %d0,%d4 <== NOT EXECUTED
5d62a: 654a bcss 5d676 <_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;
5d62c: 9880 subl %d0,%d4 <== NOT EXECUTED
first->delta_interval = 0;
5d62e: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
5d632: 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 );
5d634: 2009 movel %a1,%d0 <== NOT EXECUTED
5d636: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
5d638: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
5d63c: 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;
5d640: 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;
5d644: 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;
5d646: 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 );
5d64a: 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;
5d64c: 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;
5d650: 2488 movel %a0,%a2@ <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
5d652: 2003 movel %d3,%d0 <== NOT EXECUTED
5d654: 46c2 movew %d2,%sr <== NOT EXECUTED
5d656: 8082 orl %d2,%d0 <== NOT EXECUTED
5d658: 46c0 movew %d0,%sr <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
}
5d65a: 2441 moveal %d1,%a2 <== NOT EXECUTED
5d65c: 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 ) )
5d65e: b1cd cmpal %a5,%a0 <== NOT EXECUTED
5d660: 6706 beqs 5d668 <_Watchdog_Adjust_to_chain+0x70> <== NOT EXECUTED
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
5d662: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED
5d666: 67ca beqs 5d632 <_Watchdog_Adjust_to_chain+0x3a> <== NOT EXECUTED
}
_ISR_Disable( level );
while ( 1 ) {
if ( units <= 0 ) {
5d668: 4a84 tstl %d4 <== NOT EXECUTED
5d66a: 66b4 bnes 5d620 <_Watchdog_Adjust_to_chain+0x28> <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d66c: 46c2 movew %d2,%sr <== NOT EXECUTED
}
5d66e: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5 <== NOT EXECUTED
5d672: 4e5e unlk %fp <== NOT EXECUTED
5d674: 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;
5d676: 9084 subl %d4,%d0 <== NOT EXECUTED
5d678: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d67c: 46c2 movew %d2,%sr <== NOT EXECUTED
5d67e: 60ee bras 5d66e <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
0004987c <_Watchdog_Insert>:
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
4987c: 4e56 ffec linkw %fp,#-20
49880: 226e 000c moveal %fp@(12),%a1
49884: 48d7 043c moveml %d2-%d5/%a2,%sp@
49888: 246e 0008 moveal %fp@(8),%a2
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
4988c: 2a3c 0000 0700 movel #1792,%d5
49892: 2005 movel %d5,%d0
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
49894: 2839 0006 00fe movel 600fe <_Per_CPU_Information+0x8>,%d4
_ISR_Disable( level );
4989a: 40c3 movew %sr,%d3
4989c: 8083 orl %d3,%d0
4989e: 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 ) {
498a0: 4aa9 0008 tstl %a1@(8)
498a4: 6600 00c6 bnew 4996c <_Watchdog_Insert+0xf0>
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
_Watchdog_Sync_count++;
498a8: 2039 0005 fd9e movel 5fd9e <_Watchdog_Sync_count>,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
498ae: 7201 moveq #1,%d1
_Watchdog_Sync_count++;
498b0: 5280 addql #1,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
498b2: 2341 0008 movel %d1,%a1@(8)
_Watchdog_Sync_count++;
498b6: 23c0 0005 fd9e movel %d0,5fd9e <_Watchdog_Sync_count>
restart:
delta_interval = the_watchdog->initial;
498bc: 2029 000c movel %a1@(12),%d0
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
498c0: 2052 moveal %a2@,%a0
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
498c2: 6764 beqs 49928 <_Watchdog_Insert+0xac> <== NEVER TAKEN
498c4: 4a90 tstl %a0@
498c6: 6760 beqs 49928 <_Watchdog_Insert+0xac> <== ALWAYS TAKEN
break;
if ( delta_interval < after->delta_interval ) {
498c8: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
498cc: b280 cmpl %d0,%d1 <== NOT EXECUTED
498ce: 6252 bhis 49922 <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
498d0: 2405 movel %d5,%d2 <== NOT EXECUTED
498d2: 46c3 movew %d3,%sr <== NOT EXECUTED
498d4: 8483 orl %d3,%d2 <== NOT EXECUTED
498d6: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
498d8: 7401 moveq #1,%d2 <== NOT EXECUTED
498da: b4a9 0008 cmpl %a1@(8),%d2 <== NOT EXECUTED
498de: 666e bnes 4994e <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
498e0: 2439 0005 fd3c movel 5fd3c <_Watchdog_Sync_level>,%d2 <== NOT EXECUTED
498e6: b484 cmpl %d4,%d2 <== NOT EXECUTED
498e8: 6230 bhis 4991a <_Watchdog_Insert+0x9e> <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
498ea: 9081 subl %d1,%d0 <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
498ec: 2050 moveal %a0@,%a0 <== NOT EXECUTED
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
498ee: 4a80 tstl %d0 <== NOT EXECUTED
498f0: 6736 beqs 49928 <_Watchdog_Insert+0xac> <== NOT EXECUTED
498f2: 4a90 tstl %a0@ <== NOT EXECUTED
498f4: 6732 beqs 49928 <_Watchdog_Insert+0xac> <== NOT EXECUTED
break;
if ( delta_interval < after->delta_interval ) {
498f6: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
498fa: b081 cmpl %d1,%d0 <== NOT EXECUTED
498fc: 6524 bcss 49922 <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
498fe: 2405 movel %d5,%d2 <== NOT EXECUTED
49900: 46c3 movew %d3,%sr <== NOT EXECUTED
49902: 8483 orl %d3,%d2 <== NOT EXECUTED
49904: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
49906: 9081 subl %d1,%d0 <== NOT EXECUTED
_ISR_Flash( level );
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49908: 7201 moveq #1,%d1 <== NOT EXECUTED
4990a: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED
4990e: 663e bnes 4994e <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49910: 2239 0005 fd3c movel 5fd3c <_Watchdog_Sync_level>,%d1 <== NOT EXECUTED
49916: b284 cmpl %d4,%d1 <== NOT EXECUTED
49918: 63d2 blss 498ec <_Watchdog_Insert+0x70> <== NOT EXECUTED
_Watchdog_Sync_level = insert_isr_nest_level;
4991a: 23c4 0005 fd3c movel %d4,5fd3c <_Watchdog_Sync_level> <== NOT EXECUTED
goto restart;
49920: 609a bras 498bc <_Watchdog_Insert+0x40> <== NOT EXECUTED
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
break;
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
49922: 9280 subl %d0,%d1 <== NOT EXECUTED
49924: 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 );
49928: 2068 0004 moveal %a0@(4),%a0
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
4992c: 7402 moveq #2,%d2
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4992e: 2450 moveal %a0@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
49930: 2340 0010 movel %d0,%a1@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
49934: 2039 0005 fda2 movel 5fda2 <_Watchdog_Ticks_since_boot>,%d0
4993a: 2342 0008 movel %d2,%a1@(8)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4993e: 2348 0004 movel %a0,%a1@(4)
before_node = after_node->next;
after_node->next = the_node;
49942: 2089 movel %a1,%a0@
the_node->next = before_node;
before_node->previous = the_node;
49944: 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;
49948: 228a movel %a2,%a1@
4994a: 2340 0014 movel %d0,%a1@(20)
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
4994e: 23c4 0005 fd3c movel %d4,5fd3c <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
49954: 2039 0005 fd9e movel 5fd9e <_Watchdog_Sync_count>,%d0
4995a: 5380 subql #1,%d0
4995c: 23c0 0005 fd9e movel %d0,5fd9e <_Watchdog_Sync_count>
_ISR_Enable( level );
49962: 46c3 movew %d3,%sr
}
49964: 4cd7 043c moveml %sp@,%d2-%d5/%a2
49968: 4e5e unlk %fp
4996a: 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 );
4996c: 46c3 movew %d3,%sr <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
4996e: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
49972: 4e5e unlk %fp <== NOT EXECUTED
...
000499d0 <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
499d0: 203c 0000 0700 movel #1792,%d0
*/
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
499d6: 4e56 0000 linkw %fp,#0
499da: 206e 0008 moveal %fp@(8),%a0
499de: 2f0a movel %a2,%sp@-
499e0: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
499e2: 40c1 movew %sr,%d1
499e4: 8081 orl %d1,%d0
499e6: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
499e8: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
499ec: 7401 moveq #1,%d2
499ee: b480 cmpl %d0,%d2
499f0: 6764 beqs 49a56 <_Watchdog_Remove+0x86> <== NEVER TAKEN
499f2: 6314 blss 49a08 <_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;
499f4: 2279 0005 fda2 moveal 5fda2 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED
499fa: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
499fe: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state );
}
49a00: 241f movel %sp@+,%d2 <== NOT EXECUTED
49a02: 245f moveal %sp@+,%a2 <== NOT EXECUTED
49a04: 4e5e unlk %fp <== NOT EXECUTED
49a06: 4e75 rts <== NOT EXECUTED
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
previous_state = the_watchdog->state;
switch ( previous_state ) {
49a08: 143c 0003 moveb #3,%d2
49a0c: b480 cmpl %d0,%d2
49a0e: 65e4 bcss 499f4 <_Watchdog_Remove+0x24> <== NEVER TAKEN
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
49a10: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
49a12: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
49a16: 4a91 tstl %a1@
49a18: 6708 beqs 49a22 <_Watchdog_Remove+0x52> <== ALWAYS TAKEN
next_watchdog->delta_interval += the_watchdog->delta_interval;
49a1a: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED
49a1e: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED
if ( _Watchdog_Sync_count )
49a22: 2479 0005 fd9e moveal 5fd9e <_Watchdog_Sync_count>,%a2
49a28: 4a8a tstl %a2
49a2a: 670c beqs 49a38 <_Watchdog_Remove+0x68> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
49a2c: 45f9 0006 00fe lea 600fe <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED
49a32: 23d2 0005 fd3c movel %a2@,5fd3c <_Watchdog_Sync_level> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
49a38: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
49a3c: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
49a40: 2489 movel %a1,%a2@
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49a42: 2279 0005 fda2 moveal 5fda2 <_Watchdog_Ticks_since_boot>,%a1
49a48: 2149 0018 movel %a1,%a0@(24)
_ISR_Enable( level );
49a4c: 46c1 movew %d1,%sr
return( previous_state );
}
49a4e: 241f movel %sp@+,%d2
49a50: 245f moveal %sp@+,%a2
49a52: 4e5e unlk %fp
49a54: 4e75 rts
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49a56: 2279 0005 fda2 moveal 5fda2 <_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;
49a5c: 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;
49a60: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
49a64: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state );
}
49a66: 241f movel %sp@+,%d2 <== NOT EXECUTED
49a68: 245f moveal %sp@+,%a2 <== NOT EXECUTED
49a6a: 4e5e unlk %fp <== NOT EXECUTED
...
0004aee8 <_Watchdog_Report>:
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4aee8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
printk(
4aeec: 223c 0005 f3ad movel #390061,%d1 <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4aef2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4aef6: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
4aefa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
printk(
4aefe: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED
4af02: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED
4af06: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED
4af0a: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
4af0e: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
4af12: 4a80 tstl %d0 <== NOT EXECUTED
4af14: 672a beqs 4af40 <_Watchdog_Report+0x58> <== NOT EXECUTED
4af16: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4af18: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4af1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4af1c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4af1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4af20: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4af22: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4af24: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4af26: 4879 0005 f52e pea 5f52e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED
4af2c: 4eb9 0004 4878 jsr 44878 <printk> <== NOT EXECUTED
4af32: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4af36: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
4af3c: 4e5e unlk %fp <== NOT EXECUTED
4af3e: 4e75 rts <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
printk(
4af40: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4af42: 223c 0005 f3b2 movel #390066,%d1 <== NOT EXECUTED
4af48: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4af4a: 2001 movel %d1,%d0 <== NOT EXECUTED
4af4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4af4e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4af50: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4af52: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4af54: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4af56: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4af58: 4879 0005 f52e pea 5f52e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED
4af5e: 4eb9 0004 4878 jsr 44878 <printk> <== NOT EXECUTED
4af64: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4af68: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
4af6e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ae6c <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4ae6c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4ae72: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4ae76: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
4ae7a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4ae7e: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4ae82: 40c3 movew %sr,%d3 <== NOT EXECUTED
4ae84: 8083 orl %d3,%d0 <== NOT EXECUTED
4ae86: 46c0 movew %d0,%sr <== NOT EXECUTED
printk( "Watchdog Chain: %s %p\n", name, header );
4ae88: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ae8a: 4bf9 0004 4878 lea 44878 <printk>,%a5 <== NOT EXECUTED
4ae90: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ae92: 4879 0005 f4f8 pea 5f4f8 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED
4ae98: 4e95 jsr %a5@ <== NOT EXECUTED
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
}
4ae9a: 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 ) ) {
4ae9c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4aea0: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4aea2: 672c beqs 4aed0 <_Watchdog_Report_chain+0x64> <== NOT EXECUTED
4aea4: 49f9 0004 aee8 lea 4aee8 <_Watchdog_Report>,%a4 <== NOT EXECUTED
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4aeaa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4aeac: 42a7 clrl %sp@- <== NOT EXECUTED
4aeae: 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 )
4aeb0: 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 ) ;
4aeb2: 508f addql #8,%sp <== NOT EXECUTED
4aeb4: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4aeb6: 66f2 bnes 4aeaa <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
4aeb8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4aeba: 4879 0005 f50f pea 5f50f <_Status_Object_name_errors_to_status+0x2b><== NOT EXECUTED
4aec0: 4e95 jsr %a5@ <== NOT EXECUTED
4aec2: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
4aec4: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4aec6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4aecc: 4e5e unlk %fp <== NOT EXECUTED
4aece: 4e75 rts <== NOT EXECUTED
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
4aed0: 4879 0005 f51e pea 5f51e <_Status_Object_name_errors_to_status+0x3a><== NOT EXECUTED
4aed6: 4e95 jsr %a5@ <== NOT EXECUTED
4aed8: 588f addql #4,%sp <== NOT EXECUTED
}
_ISR_Enable( level );
4aeda: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4aedc: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4aee2: 4e5e unlk %fp <== NOT EXECUTED
...
00049a70 <_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 );
49a70: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _Watchdog_Tickle(
Chain_Control *header
)
{
49a76: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
49a7a: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
49a7e: 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 );
49a82: 40c2 movew %sr,%d2 <== NOT EXECUTED
49a84: 8082 orl %d2,%d0 <== NOT EXECUTED
49a86: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49a88: 264c moveal %a4,%a3 <== NOT EXECUTED
49a8a: 245b moveal %a3@+,%a2 <== NOT EXECUTED
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
49a8c: b7ca cmpal %a2,%a3 <== NOT EXECUTED
49a8e: 673e beqs 49ace <_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) {
49a90: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
49a94: 4bf9 0004 99d0 lea 499d0 <_Watchdog_Remove>,%a5 <== NOT EXECUTED
49a9a: 6708 beqs 49aa4 <_Watchdog_Tickle+0x34> <== NOT EXECUTED
the_watchdog->delta_interval--;
49a9c: 5380 subql #1,%d0 <== NOT EXECUTED
49a9e: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
49aa2: 662a bnes 49ace <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49aa4: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
49aaa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49aac: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
49aae: 46c2 movew %d2,%sr <== NOT EXECUTED
switch( watchdog_state ) {
49ab0: 7202 moveq #2,%d1 <== NOT EXECUTED
49ab2: 588f addql #4,%sp <== NOT EXECUTED
49ab4: b280 cmpl %d0,%d1 <== NOT EXECUTED
49ab6: 6722 beqs 49ada <_Watchdog_Tickle+0x6a> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49ab8: 2003 movel %d3,%d0 <== NOT EXECUTED
49aba: 40c2 movew %sr,%d2 <== NOT EXECUTED
49abc: 8082 orl %d2,%d0 <== NOT EXECUTED
49abe: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49ac0: 2014 movel %a4@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
49ac2: 2440 moveal %d0,%a2 <== NOT EXECUTED
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
49ac4: b7c0 cmpal %d0,%a3 <== NOT EXECUTED
49ac6: 6706 beqs 49ace <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
49ac8: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
49acc: 67dc beqs 49aaa <_Watchdog_Tickle+0x3a> <== NOT EXECUTED
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
49ace: 46c2 movew %d2,%sr <== NOT EXECUTED
}
49ad0: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
49ad6: 4e5e unlk %fp <== NOT EXECUTED
49ad8: 4e75 rts <== NOT EXECUTED
_ISR_Enable( level );
switch( watchdog_state ) {
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
49ada: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
49ade: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
49ae2: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
49ae6: 4e90 jsr %a0@ <== NOT EXECUTED
the_watchdog->id,
the_watchdog->user_data
);
break;
49ae8: 508f addql #8,%sp <== NOT EXECUTED
49aea: 60cc bras 49ab8 <_Watchdog_Tickle+0x48> <== NOT EXECUTED
00049b86 <_Workspace_Allocate_or_fatal_error>:
* _Workspace_Allocate_or_fatal_error
*/
void *_Workspace_Allocate_or_fatal_error(
size_t size
)
{
49b86: 4e56 0000 linkw %fp,#0
49b8a: 42a7 clrl %sp@-
49b8c: 42a7 clrl %sp@-
49b8e: 2f2e 0008 movel %fp@(8),%sp@-
49b92: 4879 0005 fc96 pea 5fc96 <_Workspace_Area>
49b98: 4eb9 0004 c5f4 jsr 4c5f4 <_Heap_Allocate_aligned_with_boundary>
__builtin_return_address( 1 ),
memory
);
#endif
if ( memory == NULL )
49b9e: 4fef 0010 lea %sp@(16),%sp
49ba2: 4a80 tstl %d0
49ba4: 6704 beqs 49baa <_Workspace_Allocate_or_fatal_error+0x24>
true,
INTERNAL_ERROR_WORKSPACE_ALLOCATION
);
return memory;
}
49ba6: 4e5e unlk %fp
49ba8: 4e75 rts
memory
);
#endif
if ( memory == NULL )
_Internal_error_Occurred(
49baa: 4878 0003 pea 3 <DIVIDE>
49bae: 4878 0001 pea 1 <ADD>
49bb2: 42a7 clrl %sp@-
49bb4: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
00057e7c <__env_lock>:
57e7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
57e80: 4e5e unlk %fp <== NOT EXECUTED
00057e84 <__env_unlock>:
57e84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
57e88: 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
0005bb68 <_calloc_r>:
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
5bb68: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5bb6c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return calloc( elements, size );
5bb70: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
5bb76: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bb7a: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
return calloc( elements, size );
5bb7c: 4ef9 0004 28f0 jmp 428f0 <calloc> <== NOT EXECUTED
...
0004463c <_chown_helper>:
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
4463c: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
44640: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
44644: 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 ) )
44648: 260e movel %fp,%d3 <== NOT EXECUTED
4464a: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
44650: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44652: 4eb9 0005 2cb4 jsr 52cb4 <strlen> <== NOT EXECUTED
44658: 2eae 0014 movel %fp@(20),%sp@ <== NOT EXECUTED
4465c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
4465e: 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 ) )
44662: 42a7 clrl %sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
44664: 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 ) )
44668: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4466a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4466c: 4eb9 0004 49a8 jsr 449a8 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
44672: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
44676: 4a80 tstl %d0 <== NOT EXECUTED
44678: 670c beqs 44686 <_chown_helper+0x4a> <== NOT EXECUTED
return -1;
4467a: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->chown_h)( &loc, owner, group );
rtems_filesystem_freenode( &loc );
return result;
}
4467c: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED
44682: 4e5e unlk %fp <== NOT EXECUTED
44684: 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 );
44686: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
4468a: 3f05 movew %d5,%sp@- <== NOT EXECUTED
4468c: 4267 clrw %sp@- <== NOT EXECUTED
4468e: 3f04 movew %d4,%sp@- <== NOT EXECUTED
44690: 4267 clrw %sp@- <== NOT EXECUTED
44692: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44694: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
44698: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4469a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4469c: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
446a0: 4eb9 0004 4a8c jsr 44a8c <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
446a6: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
446aa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
446ae: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED
446b4: 4e5e unlk %fp <== NOT EXECUTED
0005ce3c <_execve>:
int _execve(
const char *path __attribute__((unused)),
char *const argv[] __attribute__((unused)),
char *const envp[] __attribute__((unused))
)
{
5ce3c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
5ce40: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
5ce46: 7258 moveq #88,%d1 <== NOT EXECUTED
5ce48: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
5ce4a: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ce4c: 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 );
5ce4e: 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
0005bb84 <_free_r>:
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
5bb84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free( ptr );
5bb88: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
5bb8e: 4e5e unlk %fp <== NOT EXECUTED
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
free( ptr );
5bb90: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
...
0005bc34 <_fstat_r>:
int _fstat_r(
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
5bc34: 4e56 0000 linkw %fp,#0
5bc38: 202e 000c movel %fp@(12),%d0
return fstat( fd, buf );
5bc3c: 2d6e 0010 000c movel %fp@(16),%fp@(12)
5bc42: 2d40 0008 movel %d0,%fp@(8)
}
5bc46: 4e5e unlk %fp
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
return fstat( fd, buf );
5bc48: 4ef9 0005 bb98 jmp 5bb98 <fstat>
...
0005bc5a <_getpid_r>:
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
return getpid();
}
5bc5a: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
5bc5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid();
}
5bc60: 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
0005bc64 <_isatty_r>:
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
5bc64: 4e56 0000 linkw %fp,#0
return isatty( fd );
5bc68: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5bc6e: 4e5e unlk %fp
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return isatty( fd );
5bc70: 4ef9 0005 c7dc jmp 5c7dc <isatty>
...
0005bf2c <_kill_r>:
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
5bf2c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
5bf30: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
5bf36: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
5bf3a: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED
5bf3e: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
5bf42: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr,
pid_t pid,
int sig
)
{
return killinfo( pid, sig, NULL );
5bf44: 4ef9 0005 c11c jmp 5c11c <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
0005bdd4 <_lseek_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
off_t offset,
int whence
)
{
5bdd4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5bdd8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5bddc: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
5bde0: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
return lseek( fd, offset, whence );
5bde4: 2d6e 0018 0014 movel %fp@(24),%fp@(20) <== NOT EXECUTED
5bdea: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
5bdee: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
5bdf2: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5bdf6: 4e5e unlk %fp <== NOT EXECUTED
int fd,
off_t offset,
int whence
)
{
return lseek( fd, offset, whence );
5bdf8: 4ef9 0005 bc78 jmp 5bc78 <lseek> <== NOT EXECUTED
...
00045114 <_lstat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
45114: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45118: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
4511c: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
45122: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45126: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
45128: 4ef9 0004 507c jmp 4507c <lstat> <== NOT EXECUTED
...
0005be00 <_malloc_r>:
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
5be00: 4e56 0000 linkw %fp,#0
return malloc( size );
5be04: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5be0a: 4e5e unlk %fp
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
return malloc( size );
5be0c: 4ef9 0004 302c jmp 4302c <malloc>
...
00043b7e <_open_r>:
struct _reent *ptr __attribute__((unused)),
const char *buf,
int flags,
int mode
)
{
43b7e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43b82: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
43b86: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return open( buf, flags, mode );
43b8a: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED
43b90: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
43b94: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43b98: 4e5e unlk %fp <== NOT EXECUTED
const char *buf,
int flags,
int mode
)
{
return open( buf, flags, mode );
43b9a: 4ef9 0004 3918 jmp 43918 <open> <== NOT EXECUTED
0005beca <_read_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
void *buf,
size_t nbytes
)
{
5beca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5bece: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
5bed2: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return read( fd, buf, nbytes );
5bed6: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED
5bedc: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
5bee0: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5bee4: 4e5e unlk %fp <== NOT EXECUTED
int fd,
void *buf,
size_t nbytes
)
{
return read( fd, buf, nbytes );
5bee6: 4ef9 0005 be14 jmp 5be14 <read> <== NOT EXECUTED
0005beec <_realloc_r>:
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
5beec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5bef0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return realloc( ptr, size );
5bef4: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
5befa: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5befe: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
return realloc( ptr, size );
5bf00: 4ef9 0005 bf4c jmp 5bf4c <realloc> <== NOT EXECUTED
...
00047508 <_rename_r>:
int _rename_r(
struct _reent *ptr __attribute__((unused)),
const char *old,
const char *new
)
{
47508: 4e56 ffa4 linkw %fp,#-92 <== NOT EXECUTED
4750c: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
47510: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
47514: 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 );
47518: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4751a: 4eb9 0004 5d00 jsr 45d00 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( old_parent_pathlen == 0 )
47520: 588f addql #4,%sp <== NOT EXECUTED
47522: 4a80 tstl %d0 <== NOT EXECUTED
47524: 6600 017c bnew 476a2 <_rename_r+0x19a> <== NOT EXECUTED
rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );
47528: 45ee ffd0 lea %fp@(-48),%a2 <== NOT EXECUTED
4752c: 4282 clrl %d2 <== NOT EXECUTED
4752e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47530: 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;
47534: 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 );
47536: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47538: 4eb9 0004 7924 jsr 47924 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
4753e: 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;
47542: 2d52 ffe4 movel %a2@,%fp@(-28) <== NOT EXECUTED
name = old + old_parent_pathlen;
47546: d483 addl %d3,%d2 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
47548: 47f9 0005 58c4 lea 558c4 <strlen>,%a3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4754e: 260e movel %fp,%d3 <== NOT EXECUTED
47550: 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;
47556: 2d6e ffd4 ffe8 movel %fp@(-44),%fp@(-24) <== NOT EXECUTED
4755c: 2d6e ffd8 ffec movel %fp@(-40),%fp@(-20) <== NOT EXECUTED
47562: 2d6e ffdc fff0 movel %fp@(-36),%fp@(-16) <== NOT EXECUTED
47568: 2d6e ffe0 fff4 movel %fp@(-32),%fp@(-12) <== NOT EXECUTED
name = old + old_parent_pathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
4756e: 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;
47570: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
47574: 4e93 jsr %a3@ <== NOT EXECUTED
47576: 2e80 movel %d0,%sp@ <== NOT EXECUTED
47578: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4757a: 4eb9 0004 5d42 jsr 45d42 <rtems_filesystem_prefix_separators><== NOT EXECUTED
47580: d480 addl %d0,%d2 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
47582: 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 ) );
47584: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
47588: 4e93 jsr %a3@ <== NOT EXECUTED
4758a: 4297 clrl %sp@ <== NOT EXECUTED
4758c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4758e: 42a7 clrl %sp@- <== NOT EXECUTED
47590: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47592: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47594: 4eb9 0004 5c44 jsr 45c44 <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &old_loc, false );
if ( result != 0 ) {
4759a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4759e: 4a80 tstl %d0 <== NOT EXECUTED
475a0: 6600 00d6 bnew 47678 <_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 );
475a4: 240e movel %fp,%d2 <== NOT EXECUTED
475a6: 0682 ffff ffbc addil #-68,%d2 <== NOT EXECUTED
475ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
475ae: 486e fffc pea %fp@(-4) <== NOT EXECUTED
475b2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
475b4: 4eb9 0004 7924 jsr 47924 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
475ba: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
475be: d8ae fffc addl %fp@(-4),%d4 <== NOT EXECUTED
475c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
475c4: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
475c8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
475ca: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
475ce: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 ) {
475d0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
475d4: 4a80 tstl %d0 <== NOT EXECUTED
475d6: 6600 00f0 bnew 476c8 <_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 ) {
475da: 202e ffcc movel %fp@(-52),%d0 <== NOT EXECUTED
475de: b0ae ffe0 cmpl %fp@(-32),%d0 <== NOT EXECUTED
475e2: 6648 bnes 4762c <_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 );
475e4: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
475e8: 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 );
475ee: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
475f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
475f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
475f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
475f8: 2068 0040 moveal %a0@(64),%a0 <== NOT EXECUTED
475fc: 4e90 jsr %a0@ <== NOT EXECUTED
475fe: 2800 movel %d0,%d4 <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
47600: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47602: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_old_parentloc )
47604: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
47608: 4a05 tstb %d5 <== NOT EXECUTED
4760a: 6612 bnes 4761e <_rename_r+0x116> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
4760c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4760e: 4e93 jsr %a3@ <== NOT EXECUTED
return result;
47610: 588f addql #4,%sp <== NOT EXECUTED
}
47612: 2004 movel %d4,%d0 <== NOT EXECUTED
47614: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4761a: 4e5e unlk %fp <== NOT EXECUTED
4761c: 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 );
4761e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47620: 4e93 jsr %a3@ <== NOT EXECUTED
47622: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
47624: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47626: 4e93 jsr %a3@ <== NOT EXECUTED
return result;
47628: 588f addql #4,%sp <== NOT EXECUTED
4762a: 60e6 bras 47612 <_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 );
4762c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4762e: 47f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
47634: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_old_parentloc )
47636: 588f addql #4,%sp <== NOT EXECUTED
47638: 4a05 tstb %d5 <== NOT EXECUTED
4763a: 6620 bnes 4765c <_rename_r+0x154> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
4763c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
4763e: 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 );
47640: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
47642: 4eb9 0005 2898 jsr 52898 <__errno> <== NOT EXECUTED
47648: 588f addql #4,%sp <== NOT EXECUTED
4764a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4764c: 7012 moveq #18,%d0 <== NOT EXECUTED
4764e: 2080 movel %d0,%a0@ <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
47650: 2004 movel %d4,%d0 <== NOT EXECUTED
47652: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED
47658: 4e5e unlk %fp <== NOT EXECUTED
4765a: 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 );
4765c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
rtems_set_errno_and_return_minus_one( EXDEV );
4765e: 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 );
47660: 4e93 jsr %a3@ <== NOT EXECUTED
47662: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
47664: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47666: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
47668: 4eb9 0005 2898 jsr 52898 <__errno> <== NOT EXECUTED
4766e: 588f addql #4,%sp <== NOT EXECUTED
47670: 2040 moveal %d0,%a0 <== NOT EXECUTED
47672: 7012 moveq #18,%d0 <== NOT EXECUTED
47674: 2080 movel %d0,%a0@ <== NOT EXECUTED
47676: 60d8 bras 47650 <_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 )
47678: 4a05 tstb %d5 <== NOT EXECUTED
4767a: 660e bnes 4768a <_rename_r+0x182> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
return -1;
4767c: 78ff moveq #-1,%d4 <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
4767e: 2004 movel %d4,%d0 <== NOT EXECUTED
47680: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED
47686: 4e5e unlk %fp <== NOT EXECUTED
47688: 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 );
4768a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return -1;
4768c: 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 );
4768e: 4eb9 0004 5fc8 jsr 45fc8 <rtems_filesystem_freenode> <== NOT EXECUTED
47694: 588f addql #4,%sp <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
47696: 2004 movel %d4,%d0 <== NOT EXECUTED
47698: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4769e: 4e5e unlk %fp <== NOT EXECUTED
476a0: 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,
476a2: 42a7 clrl %sp@- <== NOT EXECUTED
476a4: 45ee ffd0 lea %fp@(-48),%a2 <== NOT EXECUTED
476a8: 2400 movel %d0,%d2 <== NOT EXECUTED
476aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
476ac: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
476b0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
476b2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
476b4: 4eb9 0004 5cb4 jsr 45cb4 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&old_parent_loc,
false );
if ( result != 0 )
476ba: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
476be: 4a80 tstl %d0 <== NOT EXECUTED
476c0: 66ba bnes 4767c <_rename_r+0x174> <== NOT EXECUTED
return -1;
free_old_parentloc = true;
476c2: 7a01 moveq #1,%d5 <== NOT EXECUTED
476c4: 6000 fe7c braw 47542 <_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 );
476c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
476ca: 47f9 0004 5fc8 lea 45fc8 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
476d0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_old_parentloc )
476d2: 588f addql #4,%sp <== NOT EXECUTED
476d4: 4a05 tstb %d5 <== NOT EXECUTED
476d6: 6614 bnes 476ec <_rename_r+0x1e4> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
476d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
return -1;
476da: 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 );
476dc: 4e93 jsr %a3@ <== NOT EXECUTED
return -1;
476de: 588f addql #4,%sp <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
476e0: 2004 movel %d4,%d0 <== NOT EXECUTED
476e2: 4cee 0c3c ffa4 moveml %fp@(-92),%d2-%d5/%a2-%a3 <== NOT EXECUTED
476e8: 4e5e unlk %fp <== NOT EXECUTED
476ea: 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 );
476ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
return -1;
476ee: 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 );
476f0: 4e93 jsr %a3@ <== NOT EXECUTED
476f2: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
476f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
476f6: 4e93 jsr %a3@ <== NOT EXECUTED
return -1;
476f8: 588f addql #4,%sp <== NOT EXECUTED
476fa: 60e4 bras 476e0 <_rename_r+0x1d8> <== NOT EXECUTED
00043aba <_stat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
43aba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43abe: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
43ac2: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
43ac8: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43acc: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
43ace: 4ef9 0004 3a20 jmp 43a20 <stat> <== NOT EXECUTED
00045c60 <_times>:
#endif
clock_t _times(
struct tms *ptms
)
{
45c60: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
45c64: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
45c68: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_interval ticks;
if ( !ptms )
45c6c: 4a8a tstl %a2 <== NOT EXECUTED
45c6e: 6772 beqs 45ce2 <_times+0x82> <== NOT EXECUTED
/*
* This call does not depend on TOD being initialized and can't fail.
*/
ticks = rtems_clock_get_ticks_since_boot();
45c70: 4eb9 0004 6090 jsr 46090 <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45c76: 2239 0005 e7f0 movel 5e7f0 <Configuration+0xc>,%d1 <== NOT EXECUTED
/*
* This call does not depend on TOD being initialized and can't fail.
*/
ticks = rtems_clock_get_ticks_since_boot();
45c7c: 2400 movel %d0,%d2 <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45c7e: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45c84: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45c88: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
45c8c: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45c92: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45c96: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
45c9a: 2079 0006 0522 moveal 60522 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
45ca0: 41e8 0082 lea %a0@(130),%a0 <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45ca4: 4c44 1001 remul %d4,%d1,%d1 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45ca8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
45caa: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED
45cae: 223c 3b9a ca00 movel #1000000000,%d1 <== NOT EXECUTED
45cb4: 4c41 0003 remul %d1,%d3,%d0 <== NOT EXECUTED
45cb8: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
45cbc: 4eb9 0004 9800 jsr 49800 <_Timespec_Divide> <== NOT EXECUTED
&_Thread_Executing->cpu_time_used,
&per_tick,
&ticks,
&fractional_ticks
);
ptms->tms_utime = ticks;
45cc2: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
#endif
ptms->tms_stime = ticks;
ptms->tms_cutime = 0;
ptms->tms_cstime = 0;
return ticks;
45cc6: 2002 movel %d2,%d0 <== NOT EXECUTED
45cc8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
ptms->tms_utime = ticks;
}
#else
ptms->tms_utime = _Thread_Executing->cpu_time_used;
#endif
ptms->tms_stime = ticks;
45ccc: 2542 0004 movel %d2,%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 ffe0 moveml %fp@(-32),%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 ec54 jsr 4ec54 <__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 ffe0 moveml %fp@(-32),%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 5c60 jmp 45c60 <_times> <== NOT EXECUTED
00046de4 <_unlink_r>:
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
46de4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return unlink( path );
46de8: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
46dee: 4e5e unlk %fp <== NOT EXECUTED
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
return unlink( path );
46df0: 4ef9 0004 6c70 jmp 46c70 <unlink> <== NOT EXECUTED
...
0005bf08 <_write_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
5bf08: 4e56 0000 linkw %fp,#0
5bf0c: 222e 0010 movel %fp@(16),%d1
5bf10: 202e 000c movel %fp@(12),%d0
return write( fd, buf, nbytes );
5bf14: 2d6e 0014 0010 movel %fp@(20),%fp@(16)
5bf1a: 2d41 000c movel %d1,%fp@(12)
5bf1e: 2d40 0008 movel %d0,%fp@(8)
}
5bf22: 4e5e unlk %fp
int fd,
const void *buf,
size_t nbytes
)
{
return write( fd, buf, nbytes );
5bf24: 4ef9 0005 c068 jmp 5c068 <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 67c8 jsr 467c8 <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
}
...
00046500 <adjtime>:
int adjtime(
struct timeval *delta,
struct timeval *olddelta
)
{
46500: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
46504: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
46508: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4650c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
long adjustment;
/*
* Simple validations
*/
if ( !delta )
46510: 4a8a tstl %a2 <== NOT EXECUTED
46512: 6700 00ec beqw 46600 <adjtime+0x100> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )
46516: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4651a: 0c80 000f 423f cmpil #999999,%d0 <== NOT EXECUTED
46520: 6200 00de bhiw 46600 <adjtime+0x100> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( olddelta ) {
46524: 4a8b tstl %a3 <== NOT EXECUTED
46526: 670a beqs 46532 <adjtime+0x32> <== NOT EXECUTED
olddelta->tv_sec = 0;
olddelta->tv_usec = 0;
46528: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED
4652c: 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;
46530: 4293 clrl %a3@ <== NOT EXECUTED
olddelta->tv_usec = 0;
}
/* convert delta to microseconds */
adjustment = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);
46532: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED
46538: 4c12 1800 mulsl %a2@,%d1 <== NOT EXECUTED
adjustment += delta->tv_usec;
4653c: d081 addl %d1,%d0 <== NOT EXECUTED
/* too small to account for */
if ( adjustment < rtems_configuration_get_microseconds_per_tick() )
4653e: b0b9 0005 fb20 cmpl 5fb20 <Configuration+0xc>,%d0 <== NOT EXECUTED
46544: 640c bccs 46552 <adjtime+0x52> <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
return 0;
46546: 4280 clrl %d0 <== NOT EXECUTED
}
46548: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
4654e: 4e5e unlk %fp <== NOT EXECUTED
46550: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46552: 2039 0006 14f0 movel 614f0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46558: 5280 addql #1,%d0 <== NOT EXECUTED
4655a: 23c0 0006 14f0 movel %d0,614f0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* This prevents context switches while we are adjusting the TOD
*/
_Thread_Disable_dispatch();
_TOD_Get( &ts );
46560: 240e movel %fp,%d2 <== NOT EXECUTED
46562: 5182 subql #8,%d2 <== NOT EXECUTED
46564: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46566: 4eb9 0004 7ee0 jsr 47ee0 <_TOD_Get> <== NOT EXECUTED
ts.tv_sec += delta->tv_sec;
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
4656c: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
46570: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
46576: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4657a: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Get( &ts );
ts.tv_sec += delta->tv_sec;
4657c: 2212 movel %a2@,%d1 <== NOT EXECUTED
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
4657e: d0ae fffc addl %fp@(-4),%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Get( &ts );
ts.tv_sec += delta->tv_sec;
46582: d3ae fff8 addl %d1,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
46586: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4658a: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
46590: 631c blss 465ae <adjtime+0xae> <== NOT EXECUTED
46592: 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(
46596: 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;
46598: 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 ) {
4659e: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
465a4: 62f0 bhis 46596 <adjtime+0x96> <== NOT EXECUTED
465a6: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
465aa: 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) ) {
465ae: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED
465b4: 621c bhis 465d2 <adjtime+0xd2> <== NOT EXECUTED
465b6: 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(
465ba: 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;
465bc: 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) ) {
465c2: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED
465c8: 63f0 blss 465ba <adjtime+0xba> <== NOT EXECUTED
465ca: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
465ce: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec--;
}
_TOD_Set( &ts );
465d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465d4: 4eb9 0004 7f74 jsr 47f74 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
465da: 4eb9 0004 94ee jsr 494ee <_Thread_Enable_dispatch> <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
465e0: 588f addql #4,%sp <== NOT EXECUTED
465e2: 4a8b tstl %a3 <== NOT EXECUTED
465e4: 6700 ff60 beqw 46546 <adjtime+0x46> <== NOT EXECUTED
*olddelta = *delta;
return 0;
465e8: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
465ea: 2212 movel %a2@,%d1 <== NOT EXECUTED
465ec: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED
465f0: 2681 movel %d1,%a3@ <== NOT EXECUTED
465f2: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
return 0;
}
465f6: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
465fc: 4e5e unlk %fp <== NOT EXECUTED
465fe: 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 );
46600: 4eb9 0004 f5cc jsr 4f5cc <__errno> <== NOT EXECUTED
46606: 7216 moveq #22,%d1 <== NOT EXECUTED
46608: 2040 moveal %d0,%a0 <== NOT EXECUTED
4660a: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
return 0;
}
4660c: 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 );
46612: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
*olddelta = *delta;
return 0;
}
46614: 4e5e unlk %fp <== NOT EXECUTED
00046d8c <aio_cancel>:
* operation(s) cannot be canceled
*/
int aio_cancel(int fildes, struct aiocb *aiocbp)
{
46d8c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
46d90: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_aio_request_chain *r_chain;
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
46d94: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
46d9a: 47f9 0004 80d8 lea 480d8 <pthread_mutex_lock>,%a3 <== NOT EXECUTED
* operation(s) cannot be canceled
*/
int aio_cancel(int fildes, struct aiocb *aiocbp)
{
46da0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
46da4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_aio_request_chain *r_chain;
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
46da8: 4e93 jsr %a3@ <== NOT EXECUTED
if (fcntl (fildes, F_GETFD) < 0) {
46daa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46dae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46db0: 4eb9 0004 dfdc jsr 4dfdc <fcntl> <== NOT EXECUTED
46db6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46dba: 4a80 tstl %d0 <== NOT EXECUTED
46dbc: 6d00 0198 bltw 46f56 <aio_cancel+0x1ca> <== NOT EXECUTED
pthread_mutex_unlock(&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EBADF);
}
/* if aiocbp is NULL remove all request for given file descriptor */
if (aiocbp == NULL) {
46dc0: 4a8a tstl %a2 <== NOT EXECUTED
46dc2: 6700 0084 beqw 46e48 <aio_cancel+0xbc> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
} else {
AIO_printf ("Cancel request\n");
if (aiocbp->aio_fildes != fildes) {
46dc6: 2612 movel %a2@,%d3 <== NOT EXECUTED
46dc8: b483 cmpl %d3,%d2 <== NOT EXECUTED
46dca: 6600 0162 bnew 46f2e <aio_cancel+0x1a2> <== 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, fildes, 0);
46dce: 42a7 clrl %sp@- <== NOT EXECUTED
46dd0: 47f9 0004 71d6 lea 471d6 <rtems_aio_search_fd>,%a3 <== NOT EXECUTED
46dd6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46dd8: 4879 0006 2de0 pea 62de0 <aio_request_queue+0x48> <== NOT EXECUTED
46dde: 4e93 jsr %a3@ <== NOT EXECUTED
if (r_chain == NULL) {
46de0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46de4: 4a80 tstl %d0 <== NOT EXECUTED
46de6: 670e beqs 46df6 <aio_cancel+0x6a> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
46de8: 7402 moveq #2,%d2 <== NOT EXECUTED
}
46dea: 2002 movel %d2,%d0 <== NOT EXECUTED
46dec: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46df2: 4e5e unlk %fp <== NOT EXECUTED
46df4: 4e75 rts <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
}
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)) {
46df6: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED
46dfc: b0b9 0006 2dec cmpl 62dec <aio_request_queue+0x54>,%d0 <== NOT EXECUTED
46e02: 6700 009e beqw 46ea2 <aio_cancel+0x116> <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
46e06: 42a7 clrl %sp@- <== NOT EXECUTED
46e08: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46e0a: 4879 0006 2dec pea 62dec <aio_request_queue+0x54> <== NOT EXECUTED
46e10: 4e93 jsr %a3@ <== NOT EXECUTED
if (r_chain == NULL) {
46e12: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46e16: 4a80 tstl %d0 <== NOT EXECUTED
46e18: 6700 0114 beqw 46f2e <aio_cancel+0x1a2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
}
AIO_printf ("Request on [IQ]\n");
result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);
46e1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46e1e: 2040 moveal %d0,%a0 <== NOT EXECUTED
46e20: 4868 0008 pea %a0@(8) <== NOT EXECUTED
46e24: 4eb9 0004 75f2 jsr 475f2 <rtems_aio_remove_req> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46e2a: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
}
AIO_printf ("Request on [IQ]\n");
result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);
46e30: 2400 movel %d0,%d2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46e32: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
return result;
46e38: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46e3c: 2002 movel %d2,%d0 <== NOT EXECUTED
46e3e: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46e44: 4e5e unlk %fp <== NOT EXECUTED
46e46: 4e75 rts <== NOT EXECUTED
/* if aiocbp is NULL remove all request for given file descriptor */
if (aiocbp == NULL) {
AIO_printf ("Cancel all requests\n");
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
46e48: 42a7 clrl %sp@- <== NOT EXECUTED
46e4a: 45f9 0004 71d6 lea 471d6 <rtems_aio_search_fd>,%a2 <== NOT EXECUTED
46e50: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46e52: 4879 0006 2de0 pea 62de0 <aio_request_queue+0x48> <== NOT EXECUTED
46e58: 4e92 jsr %a2@ <== NOT EXECUTED
if (r_chain == NULL) {
46e5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/* if aiocbp is NULL remove all request for given file descriptor */
if (aiocbp == NULL) {
AIO_printf ("Cancel all requests\n");
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
46e5e: 2600 movel %d0,%d3 <== NOT EXECUTED
if (r_chain == NULL) {
46e60: 675c beqs 46ebe <aio_cancel+0x132> <== NOT EXECUTED
return AIO_ALLDONE;
}
AIO_printf ("Request chain on [WQ]\n");
pthread_mutex_lock (&r_chain->mutex);
46e62: 2800 movel %d0,%d4 <== NOT EXECUTED
46e64: 0684 0000 001c addil #28,%d4 <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
pthread_mutex_unlock (&r_chain->mutex);
46e6a: 45f9 0004 8174 lea 48174 <pthread_mutex_unlock>,%a2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
46e70: 4282 clrl %d2 <== NOT EXECUTED
return AIO_ALLDONE;
}
AIO_printf ("Request chain on [WQ]\n");
pthread_mutex_lock (&r_chain->mutex);
46e72: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46e74: 4e93 jsr %a3@ <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
46e76: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46e78: 4eb9 0004 9d28 jsr 49d28 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
46e7e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46e80: 4eb9 0004 759a jsr 4759a <rtems_aio_remove_fd> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
46e86: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46e88: 4e92 jsr %a2@ <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46e8a: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
46e90: 4e92 jsr %a2@ <== NOT EXECUTED
return AIO_CANCELED;
46e92: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46e96: 2002 movel %d2,%d0 <== NOT EXECUTED
46e98: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46e9e: 4e5e unlk %fp <== NOT EXECUTED
46ea0: 4e75 rts <== NOT EXECUTED
result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
} else {
pthread_mutex_unlock (&aio_request_queue.mutex);
46ea2: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
return AIO_ALLDONE;
46ea8: 7402 moveq #2,%d2 <== NOT EXECUTED
result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
} else {
pthread_mutex_unlock (&aio_request_queue.mutex);
46eaa: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
return AIO_ALLDONE;
46eb0: 588f addql #4,%sp <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46eb2: 2002 movel %d2,%d0 <== NOT EXECUTED
46eb4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46eba: 4e5e unlk %fp <== NOT EXECUTED
46ebc: 4e75 rts <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
if (r_chain == NULL) {
AIO_printf ("Request chain not on [WQ]\n");
if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {
46ebe: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED
46ec4: b0b9 0006 2dec cmpl 62dec <aio_request_queue+0x54>,%d0 <== NOT EXECUTED
46eca: 67d6 beqs 46ea2 <aio_cancel+0x116> <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
46ecc: 42a7 clrl %sp@- <== NOT EXECUTED
46ece: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46ed0: 4879 0006 2dec pea 62dec <aio_request_queue+0x54> <== NOT EXECUTED
46ed6: 4e92 jsr %a2@ <== NOT EXECUTED
if (r_chain == NULL) {
46ed8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
if (r_chain == NULL) {
AIO_printf ("Request chain not on [WQ]\n");
if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
46edc: 2600 movel %d0,%d3 <== NOT EXECUTED
if (r_chain == NULL) {
46ede: 67c2 beqs 46ea2 <aio_cancel+0x116> <== NOT EXECUTED
46ee0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
AIO_printf ("Request chain on [IQ]\n");
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
pthread_mutex_destroy (&r_chain->mutex);
46ee2: 2800 movel %d0,%d4 <== NOT EXECUTED
46ee4: 0684 0000 001c addil #28,%d4 <== NOT EXECUTED
pthread_cond_destroy (&r_chain->mutex);
free (r_chain);
pthread_mutex_unlock (&aio_request_queue.mutex);
return AIO_CANCELED;
46eea: 4282 clrl %d2 <== NOT EXECUTED
46eec: 4eb9 0004 9d28 jsr 49d28 <_Chain_Extract> <== NOT EXECUTED
}
AIO_printf ("Request chain on [IQ]\n");
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
46ef2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46ef4: 4eb9 0004 759a jsr 4759a <rtems_aio_remove_fd> <== NOT EXECUTED
pthread_mutex_destroy (&r_chain->mutex);
46efa: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46efc: 4eb9 0004 7e24 jsr 47e24 <pthread_mutex_destroy> <== NOT EXECUTED
pthread_cond_destroy (&r_chain->mutex);
46f02: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46f04: 4eb9 0004 7ab0 jsr 47ab0 <pthread_cond_destroy> <== NOT EXECUTED
free (r_chain);
46f0a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46f0c: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
46f12: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
46f18: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
return AIO_CANCELED;
46f1e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46f22: 2002 movel %d2,%d0 <== NOT EXECUTED
46f24: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46f2a: 4e5e unlk %fp <== NOT EXECUTED
46f2c: 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)) {
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
if (r_chain == NULL) {
pthread_mutex_unlock (&aio_request_queue.mutex);
46f2e: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
46f34: 74ff moveq #-1,%d2 <== 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)) {
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
if (r_chain == NULL) {
pthread_mutex_unlock (&aio_request_queue.mutex);
46f36: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
46f3c: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
46f42: 588f addql #4,%sp <== NOT EXECUTED
46f44: 2040 moveal %d0,%a0 <== NOT EXECUTED
46f46: 7016 moveq #22,%d0 <== NOT EXECUTED
46f48: 2080 movel %d0,%a0@ <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46f4a: 2002 movel %d2,%d0 <== NOT EXECUTED
46f4c: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46f52: 4e5e unlk %fp <== NOT EXECUTED
46f54: 4e75 rts <== NOT EXECUTED
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
if (fcntl (fildes, F_GETFD) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
46f56: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EBADF);
46f5c: 74ff moveq #-1,%d2 <== NOT EXECUTED
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
if (fcntl (fildes, F_GETFD) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
46f5e: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EBADF);
46f64: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
46f6a: 588f addql #4,%sp <== NOT EXECUTED
46f6c: 7209 moveq #9,%d1 <== NOT EXECUTED
46f6e: 2040 moveal %d0,%a0 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46f70: 2002 movel %d2,%d0 <== NOT EXECUTED
46f72: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
if (fcntl (fildes, F_GETFD) < 0) {
pthread_mutex_unlock(&aio_request_queue.mutex);
rtems_set_errno_and_return_minus_one (EBADF);
46f78: 2081 movel %d1,%a0@ <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
}
46f7a: 4e5e unlk %fp <== NOT EXECUTED
...
00046f80 <aio_error>:
*/
int
aio_error (const struct aiocb *aiocbp)
{
46f80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46f84: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return aiocbp->error_code;
}
46f88: 4e5e unlk %fp <== NOT EXECUTED
46f8a: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
00046f90 <aio_fsync>:
)
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
46f90: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED
int aio_fsync(
int op,
struct aiocb *aiocbp
)
{
46f96: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46f9a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46f9c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
46fa0: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
46fa4: 6648 bnes 46fee <aio_fsync+0x5e> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
46fa6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
46faa: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
46fac: 4eb9 0004 dfdc jsr 4dfdc <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
46fb2: 508f addql #8,%sp <== NOT EXECUTED
46fb4: 7203 moveq #3,%d1 <== NOT EXECUTED
46fb6: c081 andl %d1,%d0 <== NOT EXECUTED
46fb8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
46fbc: 5380 subql #1,%d0 <== NOT EXECUTED
46fbe: b280 cmpl %d0,%d1 <== NOT EXECUTED
46fc0: 654e bcss 47010 <aio_fsync+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
req = malloc (sizeof (rtems_aio_request));
46fc2: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
46fc6: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
if (req == NULL)
46fcc: 588f addql #4,%sp <== NOT EXECUTED
46fce: 4a80 tstl %d0 <== NOT EXECUTED
46fd0: 6760 beqs 47032 <aio_fsync+0xa2> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
46fd2: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_SYNC;
46fd4: 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;
46fd6: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_SYNC;
46fda: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
46fde: 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);
46fe2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
46fe6: 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);
46fe8: 4ef9 0004 766c jmp 4766c <rtems_aio_enqueue> <== NOT EXECUTED
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
46fee: 7216 moveq #22,%d1 <== NOT EXECUTED
46ff0: 70ff moveq #-1,%d0 <== NOT EXECUTED
46ff2: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
46ff6: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
46ffa: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47000: 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);
47004: 2040 moveal %d0,%a0 <== NOT EXECUTED
47006: 7016 moveq #22,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47008: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
4700a: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
4700c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4700e: 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);
47010: 72ff moveq #-1,%d1 <== NOT EXECUTED
47012: 7009 moveq #9,%d0 <== NOT EXECUTED
47014: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
47018: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4701c: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47022: 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);
47026: 2040 moveal %d0,%a0 <== NOT EXECUTED
47028: 7209 moveq #9,%d1 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
4702a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4702c: 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);
4702e: 2081 movel %d1,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47030: 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);
47032: 103c 000b moveb #11,%d0 <== NOT EXECUTED
47036: 72ff moveq #-1,%d1 <== NOT EXECUTED
47038: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4703c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
47040: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47046: 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);
4704a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4704c: 700b moveq #11,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
4704e: 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);
47050: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
}
47052: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00047890 <aio_read>:
* 0 - otherwise
*/
int
aio_read (struct aiocb *aiocbp)
{
47890: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47894: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
47896: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
* 0 - otherwise
*/
int
aio_read (struct aiocb *aiocbp)
{
4789a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
4789e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
478a0: 4eb9 0004 dfdc jsr 4dfdc <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
478a6: 508f addql #8,%sp <== NOT EXECUTED
478a8: 7203 moveq #3,%d1 <== NOT EXECUTED
478aa: c081 andl %d1,%d0 <== NOT EXECUTED
478ac: 6708 beqs 478b6 <aio_read+0x26> <== NOT EXECUTED
478ae: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
478b2: b280 cmpl %d0,%d1 <== NOT EXECUTED
478b4: 6638 bnes 478ee <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)
478b6: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
478ba: 6654 bnes 47910 <aio_read+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
478bc: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
478c0: 6b4e bmis 47910 <aio_read+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
478c2: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
478c6: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
if (req == NULL)
478cc: 588f addql #4,%sp <== NOT EXECUTED
478ce: 4a80 tstl %d0 <== NOT EXECUTED
478d0: 6760 beqs 47932 <aio_read+0xa2> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
478d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_READ;
478d4: 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;
478d6: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_READ;
478da: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
478de: 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);
478e2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
478e6: 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);
478e8: 4ef9 0004 766c jmp 4766c <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);
478ee: 7009 moveq #9,%d0 <== NOT EXECUTED
478f0: 72ff moveq #-1,%d1 <== NOT EXECUTED
478f2: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
478f6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
478fa: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47900: 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);
47904: 2040 moveal %d0,%a0 <== NOT EXECUTED
47906: 7009 moveq #9,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47908: 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);
4790a: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
4790c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4790e: 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);
47910: 72ff moveq #-1,%d1 <== NOT EXECUTED
47912: 7016 moveq #22,%d0 <== NOT EXECUTED
47914: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
47918: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4791c: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47922: 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);
47926: 2040 moveal %d0,%a0 <== NOT EXECUTED
47928: 7216 moveq #22,%d1 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
4792a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4792c: 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);
4792e: 2081 movel %d1,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47930: 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);
47932: 103c 000b moveb #11,%d0 <== NOT EXECUTED
47936: 72ff moveq #-1,%d1 <== NOT EXECUTED
47938: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4793c: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
47940: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47946: 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);
4794a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4794c: 700b moveq #11,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
4794e: 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);
47950: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
}
47952: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00047958 <aio_return>:
* aiocbp->return_value
*/
ssize_t
aio_return (const struct aiocb *aiocbp)
{
47958: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4795c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return aiocbp->return_value;
}
47960: 4e5e unlk %fp <== NOT EXECUTED
47962: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
00046174 <aio_suspend>:
int aio_suspend(
const struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
const struct timespec *timeout __attribute__((unused))
)
{
46174: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46178: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
4617e: 7258 moveq #88,%d1 <== NOT EXECUTED
46180: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46182: 70ff moveq #-1,%d0 <== NOT EXECUTED
46184: 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 );
46186: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00047968 <aio_write>:
* 0 - otherwise
*/
int
aio_write (struct aiocb *aiocbp)
{
47968: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4796c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
4796e: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
* 0 - otherwise
*/
int
aio_write (struct aiocb *aiocbp)
{
47972: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
47976: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
47978: 4eb9 0004 dfdc jsr 4dfdc <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
4797e: 508f addql #8,%sp <== NOT EXECUTED
47980: 7203 moveq #3,%d1 <== NOT EXECUTED
47982: c081 andl %d1,%d0 <== NOT EXECUTED
47984: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
47988: 5380 subql #1,%d0 <== NOT EXECUTED
4798a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4798c: 6538 bcss 479c6 <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)
4798e: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
47992: 6654 bnes 479e8 <aio_write+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
47994: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
47998: 6b4e bmis 479e8 <aio_write+0x80> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
req = malloc (sizeof (rtems_aio_request));
4799a: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
4799e: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
if (req == NULL)
479a4: 588f addql #4,%sp <== NOT EXECUTED
479a6: 4a80 tstl %d0 <== NOT EXECUTED
479a8: 6760 beqs 47a0a <aio_write+0xa2> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
479aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_WRITE;
479ac: 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;
479ae: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_WRITE;
479b2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
479b6: 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);
479ba: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
479be: 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);
479c0: 4ef9 0004 766c jmp 4766c <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);
479c6: 7009 moveq #9,%d0 <== NOT EXECUTED
479c8: 72ff moveq #-1,%d1 <== NOT EXECUTED
479ca: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
479ce: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
479d2: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
479d8: 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);
479dc: 2040 moveal %d0,%a0 <== NOT EXECUTED
479de: 7009 moveq #9,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
479e0: 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);
479e2: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
479e4: 70ff moveq #-1,%d0 <== NOT EXECUTED
479e6: 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);
479e8: 72ff moveq #-1,%d1 <== NOT EXECUTED
479ea: 7016 moveq #22,%d0 <== NOT EXECUTED
479ec: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
479f0: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
479f4: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
479fa: 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);
479fe: 2040 moveal %d0,%a0 <== NOT EXECUTED
47a00: 7216 moveq #22,%d1 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a02: 70ff moveq #-1,%d0 <== NOT EXECUTED
47a04: 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);
47a06: 2081 movel %d1,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a08: 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);
47a0a: 103c 000b moveb #11,%d0 <== NOT EXECUTED
47a0e: 72ff moveq #-1,%d1 <== NOT EXECUTED
47a10: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
47a14: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
47a18: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a1e: 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);
47a22: 2040 moveal %d0,%a0 <== NOT EXECUTED
47a24: 700b moveq #11,%d0 <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a26: 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);
47a28: 2080 movel %d0,%a0@ <== NOT EXECUTED
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
}
47a2a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004840c <alarm>:
}
unsigned int alarm(
unsigned int seconds
)
{
4840c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
48410: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
48414: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Initialize the timer used to implement alarm().
*/
if ( !the_timer->routine ) {
48418: 4ab9 0006 4bdc tstl 64bdc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED
4841e: 674e beqs 4846e <alarm+0x62> <== NOT EXECUTED
_Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL );
} else {
Watchdog_States state;
state = _Watchdog_Remove( the_timer );
48420: 4879 0006 4bc0 pea 64bc0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED
48426: 4eb9 0004 d598 jsr 4d598 <_Watchdog_Remove> <== NOT EXECUTED
if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
4842c: 588f addql #4,%sp <== NOT EXECUTED
4842e: 7201 moveq #1,%d1 <== NOT EXECUTED
48430: 5580 subql #2,%d0 <== NOT EXECUTED
48432: b280 cmpl %d0,%d1 <== NOT EXECUTED
48434: 645e bccs 48494 <alarm+0x88> <== NOT EXECUTED
unsigned int alarm(
unsigned int seconds
)
{
unsigned int remaining = 0;
48436: 4283 clrl %d3 <== NOT EXECUTED
remaining = the_timer->initial -
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
}
}
if ( seconds )
48438: 4a82 tstl %d2 <== NOT EXECUTED
4843a: 660c bnes 48448 <alarm+0x3c> <== NOT EXECUTED
_Watchdog_Insert_seconds( the_timer, seconds );
return remaining;
}
4843c: 2003 movel %d3,%d0 <== NOT EXECUTED
4843e: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED
48444: 4e5e unlk %fp <== NOT EXECUTED
48446: 4e75 rts <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
48448: 4879 0006 4bc0 pea 64bc0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED
4844e: 4879 0006 4f24 pea 64f24 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48454: 23c2 0006 4bcc movel %d2,64bcc <_POSIX_signals_Alarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
4845a: 4eb9 0004 d444 jsr 4d444 <_Watchdog_Insert> <== NOT EXECUTED
48460: 508f addql #8,%sp <== NOT EXECUTED
48462: 2003 movel %d3,%d0 <== NOT EXECUTED
48464: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED
4846a: 4e5e unlk %fp <== NOT EXECUTED
4846c: 4e75 rts <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4846e: 42b9 0006 4bc8 clrl 64bc8 <_POSIX_signals_Alarm_timer+0x8> <== NOT EXECUTED
unsigned int alarm(
unsigned int seconds
)
{
unsigned int remaining = 0;
48474: 4283 clrl %d3 <== NOT EXECUTED
the_watchdog->routine = routine;
48476: 203c 0004 83f0 movel #295920,%d0 <== NOT EXECUTED
the_watchdog->id = id;
4847c: 42b9 0006 4be0 clrl 64be0 <_POSIX_signals_Alarm_timer+0x20><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
48482: 23c0 0006 4bdc movel %d0,64bdc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id;
the_watchdog->user_data = user_data;
48488: 42b9 0006 4be4 clrl 64be4 <_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 )
4848e: 4a82 tstl %d2 <== NOT EXECUTED
48490: 67aa beqs 4843c <alarm+0x30> <== NOT EXECUTED
48492: 60b4 bras 48448 <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);
48494: 2839 0006 4bd8 movel 64bd8 <_POSIX_signals_Alarm_timer+0x18>,%d4<== NOT EXECUTED
4849a: 98b9 0006 4bd4 subl 64bd4 <_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 -
484a0: 2639 0006 4bcc movel 64bcc <_POSIX_signals_Alarm_timer+0xc>,%d3<== NOT EXECUTED
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
484a6: 4eb9 0004 af1c jsr 4af1c <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
484ac: 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 -
484b0: 9684 subl %d4,%d3 <== NOT EXECUTED
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
}
}
if ( seconds )
484b2: 4a82 tstl %d2 <== NOT EXECUTED
484b4: 6786 beqs 4843c <alarm+0x30> <== NOT EXECUTED
484b6: 6090 bras 48448 <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 fb50 addql #1,5fb50 <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 f200 jsr 4f200 <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 fb40 subql #1,5fb40 <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 044c jsr 5044c <__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 044c jsr 5044c <__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;
}
...
0004ba84 <chdir>:
#include <rtems/seterr.h>
int chdir(
const char *pathname
)
{
4ba84: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4ba88: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ba8a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ba8c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
4ba90: 6700 0086 beqw 4bb18 <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(
4ba94: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ba96: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED
4ba9a: 4eb9 0005 05fc jsr 505fc <strlen> <== NOT EXECUTED
4baa0: 7201 moveq #1,%d1 <== NOT EXECUTED
4baa2: 2e81 movel %d1,%sp@ <== NOT EXECUTED
4baa4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4baa6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4baaa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4baac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4baae: 4eb9 0004 3150 jsr 43150 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
pathname, strlen( pathname ), RTEMS_LIBIO_PERMS_SEARCH, &loc, true );
if ( result != 0 )
4bab4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4bab8: 4a80 tstl %d0 <== NOT EXECUTED
4baba: 670e beqs 4baca <chdir+0x46> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4babc: 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;
4bac0: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bac2: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4bac6: 4e5e unlk %fp <== NOT EXECUTED
4bac8: 4e75 rts <== NOT EXECUTED
return -1;
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
4baca: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
4bace: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bad0: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4bad4: 4e90 jsr %a0@ <== NOT EXECUTED
4bad6: 588f addql #4,%sp <== NOT EXECUTED
4bad8: 7201 moveq #1,%d1 <== NOT EXECUTED
4bada: b280 cmpl %d0,%d1 <== NOT EXECUTED
4badc: 6654 bnes 4bb32 <chdir+0xae> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
4bade: 2039 0005 ef08 movel 5ef08 <rtems_current_user_env>,%d0 <== NOT EXECUTED
4bae4: 5880 addql #4,%d0 <== NOT EXECUTED
4bae6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bae8: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_current = loc;
4baee: 2079 0005 ef08 moveal 5ef08 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4baf4: 5888 addql #4,%a0 <== NOT EXECUTED
return 0;
4baf6: 588f addql #4,%sp <== NOT EXECUTED
4baf8: 4280 clrl %d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
4bafa: 20d2 movel %a2@,%a0@+ <== NOT EXECUTED
4bafc: 20ee fff0 movel %fp@(-16),%a0@+ <== NOT EXECUTED
4bb00: 20ee fff4 movel %fp@(-12),%a0@+ <== NOT EXECUTED
4bb04: 20ee fff8 movel %fp@(-8),%a0@+ <== NOT EXECUTED
return 0;
}
4bb08: 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;
4bb0c: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
return 0;
}
4bb10: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4bb14: 4e5e unlk %fp <== NOT EXECUTED
4bb16: 4e75 rts <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
rtems_set_errno_and_return_minus_one( EFAULT );
4bb18: 4eb9 0004 f258 jsr 4f258 <__errno> <== NOT EXECUTED
4bb1e: 740e moveq #14,%d2 <== NOT EXECUTED
4bb20: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bb22: 70ff moveq #-1,%d0 <== NOT EXECUTED
4bb24: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb26: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
4bb2a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4bb2e: 4e5e unlk %fp <== NOT EXECUTED
4bb30: 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 );
4bb32: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bb34: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4bb3a: 4eb9 0004 f258 jsr 4f258 <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb40: 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 );
4bb44: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bb46: 7214 moveq #20,%d1 <== NOT EXECUTED
4bb48: 588f addql #4,%sp <== NOT EXECUTED
4bb4a: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4bb4c: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4bb50: 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 );
4bb52: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
...
000445c8 <chmod>:
int chmod(
const char *path,
mode_t mode
)
{
445c8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
445cc: 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 );
445ce: 260e movel %fp,%d3 <== NOT EXECUTED
445d0: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
int chmod(
const char *path,
mode_t mode
)
{
445d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
445d8: 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 );
445dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
445de: 4eb9 0005 2cb4 jsr 52cb4 <strlen> <== NOT EXECUTED
445e4: 7201 moveq #1,%d1 <== NOT EXECUTED
445e6: 2e81 movel %d1,%sp@ <== NOT EXECUTED
445e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
445ea: 42a7 clrl %sp@- <== NOT EXECUTED
445ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
445ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
445f0: 4eb9 0004 49a8 jsr 449a8 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
if ( status != 0 )
445f6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
445fa: 4a80 tstl %d0 <== NOT EXECUTED
445fc: 670e beqs 4460c <chmod+0x44> <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
445fe: 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;
44602: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
44604: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED
44608: 4e5e unlk %fp <== NOT EXECUTED
4460a: 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 );
4460c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44610: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
44614: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44616: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
4461a: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4461c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4461e: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
44622: 4eb9 0004 4a8c jsr 44a8c <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
44628: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
4462c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
44630: 242e ffe0 movel %fp@(-32),%d2 <== NOT EXECUTED
44634: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED
44638: 4e5e unlk %fp <== NOT EXECUTED
000446b8 <chown>:
const char *path,
uid_t owner,
gid_t group
)
{
return _chown_helper( path, owner, group, true );
446b8: 4281 clrl %d1 <== NOT EXECUTED
446ba: 4280 clrl %d0 <== NOT EXECUTED
int chown(
const char *path,
uid_t owner,
gid_t group
)
{
446bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _chown_helper( path, owner, group, true );
446c0: 322e 0012 movew %fp@(18),%d1 <== NOT EXECUTED
446c4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
446c8: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
446cc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
446ce: 2f00 movel %d0,%sp@- <== NOT EXECUTED
446d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
446d4: 4eb9 0004 463c jsr 4463c <_chown_helper> <== NOT EXECUTED
}
446da: 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 0544 movel #394564,%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 ef08 cmpl 5ef08 <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 ba84 jsr 4ba84 <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 e0ce pea 5e0ce <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 ef08 moveal 5ef08 <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 ef08 moveal 5ef08 <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 4444 jsr 44444 <rtems_libio_set_private_env> <== NOT EXECUTED
if (rtems_current_user_env == &rtems_global_user_env) /* not ok */
42db4: 41f9 0006 0544 lea 60544 <rtems_global_user_env>,%a0 <== NOT EXECUTED
42dba: b1f9 0005 ef08 cmpal 5ef08 <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 f258 jsr 4f258 <__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 f258 lea 4f258 <__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
...
0004618c <clock_getcpuclockid>:
int clock_getcpuclockid(
pid_t pid,
clockid_t *clock_id
)
{
4618c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46190: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
46196: 7258 moveq #88,%d1 <== NOT EXECUTED
46198: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4619a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4619c: 4e5e unlk %fp <== NOT EXECUTED
int clock_getcpuclockid(
pid_t pid,
clockid_t *clock_id
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4619e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000461a4 <clock_getenable_attr>:
int clock_getenable_attr(
clockid_t clock_id,
int *attr
)
{
461a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461a8: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
461ae: 7258 moveq #88,%d1 <== NOT EXECUTED
461b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461b2: 70ff moveq #-1,%d0 <== NOT EXECUTED
461b4: 4e5e unlk %fp <== NOT EXECUTED
int clock_getenable_attr(
clockid_t clock_id,
int *attr
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461b6: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000467b0 <clock_getres>:
int clock_getres(
clockid_t clock_id,
struct timespec *res
)
{
467b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
467b4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
467b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
467ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !res )
467bc: 4a88 tstl %a0 <== NOT EXECUTED
467be: 670c beqs 467cc <clock_getres+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
switch ( clock_id ) {
467c0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
467c4: 7202 moveq #2,%d1 <== NOT EXECUTED
467c6: 5380 subql #1,%d0 <== NOT EXECUTED
467c8: b280 cmpl %d0,%d1 <== NOT EXECUTED
467ca: 641a bccs 467e6 <clock_getres+0x36> <== NOT EXECUTED
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
}
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
467cc: 4eb9 0004 f790 jsr 4f790 <__errno> <== NOT EXECUTED
}
return 0;
}
467d2: 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 );
467d6: 2040 moveal %d0,%a0 <== NOT EXECUTED
467d8: 7216 moveq #22,%d1 <== NOT EXECUTED
467da: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return 0;
}
467dc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
467e0: 4e5e unlk %fp <== NOT EXECUTED
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
}
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
467e2: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return 0;
}
467e4: 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() /
467e6: 2239 0006 04d0 movel 604d0 <Configuration+0xc>,%d1 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND;
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
467ec: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
467f2: 4c01 2800 mulsl %d1,%d2 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
467f6: 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() /
467f8: 263c 000f 4240 movel #1000000,%d3 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND;
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
467fe: 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() /
46802: 4c43 1001 remul %d3,%d1,%d1 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
}
46806: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4680a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4680e: 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() /
46810: 2081 movel %d1,%a0@ <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
}
0004636c <clock_gettime>:
int clock_gettime(
clockid_t clock_id,
struct timespec *tp
)
{
4636c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46370: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46374: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
46378: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !tp )
4637a: 4a81 tstl %d1 <== NOT EXECUTED
4637c: 6718 beqs 46396 <clock_gettime+0x2a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
4637e: 7401 moveq #1,%d2 <== NOT EXECUTED
46380: b480 cmpl %d0,%d2 <== NOT EXECUTED
46382: 6752 beqs 463d6 <clock_gettime+0x6a> <== NOT EXECUTED
_TOD_Get(tp);
return 0;
}
#ifdef CLOCK_MONOTONIC
if ( clock_id == CLOCK_MONOTONIC ) {
46384: 7404 moveq #4,%d2 <== NOT EXECUTED
46386: b480 cmpl %d0,%d2 <== NOT EXECUTED
46388: 6738 beqs 463c2 <clock_gettime+0x56> <== NOT EXECUTED
return 0;
}
#endif
#ifdef _POSIX_CPUTIME
if ( clock_id == CLOCK_PROCESS_CPUTIME ) {
4638a: 7402 moveq #2,%d2 <== NOT EXECUTED
4638c: b480 cmpl %d0,%d2 <== NOT EXECUTED
4638e: 6732 beqs 463c2 <clock_gettime+0x56> <== NOT EXECUTED
return 0;
}
#endif
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
46390: 7203 moveq #3,%d1 <== NOT EXECUTED
46392: b280 cmpl %d0,%d1 <== NOT EXECUTED
46394: 6716 beqs 463ac <clock_gettime+0x40> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
46396: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
return 0;
}
4639c: 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 );
463a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
463a2: 7216 moveq #22,%d1 <== NOT EXECUTED
463a4: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
463a6: 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 );
463a8: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
463aa: 4e75 rts <== NOT EXECUTED
}
#endif
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
rtems_set_errno_and_return_minus_one( ENOSYS );
463ac: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
463b2: 7458 moveq #88,%d2 <== NOT EXECUTED
463b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
463b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
463b8: 2082 movel %d2,%a0@ <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463ba: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
463be: 4e5e unlk %fp <== NOT EXECUTED
463c0: 4e75 rts <== NOT EXECUTED
}
#endif
#ifdef _POSIX_CPUTIME
if ( clock_id == CLOCK_PROCESS_CPUTIME ) {
_TOD_Get_uptime_as_timespec( tp );
463c2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
463c4: 4eb9 0004 84d4 jsr 484d4 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463ca: 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;
463ce: 588f addql #4,%sp <== NOT EXECUTED
463d0: 4280 clrl %d0 <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463d2: 4e5e unlk %fp <== NOT EXECUTED
463d4: 4e75 rts <== NOT EXECUTED
{
if ( !tp )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
_TOD_Get(tp);
463d6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
463d8: 4eb9 0004 8470 jsr 48470 <_TOD_Get> <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463de: 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;
463e2: 588f addql #4,%sp <== NOT EXECUTED
463e4: 4280 clrl %d0 <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
463e6: 4e5e unlk %fp <== NOT EXECUTED
...
000461bc <clock_setenable_attr>:
int clock_setenable_attr(
clockid_t clock_id,
int attr
)
{
461bc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461c0: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
461c6: 7258 moveq #88,%d1 <== NOT EXECUTED
461c8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461ca: 70ff moveq #-1,%d0 <== NOT EXECUTED
461cc: 4e5e unlk %fp <== NOT EXECUTED
int clock_setenable_attr(
clockid_t clock_id,
int attr
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461ce: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000463ec <clock_settime>:
int clock_settime(
clockid_t clock_id,
const struct timespec *tp
)
{
463ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
463f0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
463f4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !tp )
463f8: 4a88 tstl %a0 <== NOT EXECUTED
463fa: 6712 beqs 4640e <clock_settime+0x22> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
463fc: 7201 moveq #1,%d1 <== NOT EXECUTED
463fe: b280 cmpl %d0,%d1 <== NOT EXECUTED
46400: 6730 beqs 46432 <clock_settime+0x46> <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( tp );
_Thread_Enable_dispatch();
}
#ifdef _POSIX_CPUTIME
else if ( clock_id == CLOCK_PROCESS_CPUTIME )
46402: 7202 moveq #2,%d1 <== NOT EXECUTED
46404: b280 cmpl %d0,%d1 <== NOT EXECUTED
46406: 6718 beqs 46420 <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 )
46408: 7203 moveq #3,%d1 <== NOT EXECUTED
4640a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4640c: 6712 beqs 46420 <clock_settime+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
4640e: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
46414: 7216 moveq #22,%d1 <== NOT EXECUTED
46416: 2040 moveal %d0,%a0 <== NOT EXECUTED
46418: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
4641a: 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 );
4641c: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
4641e: 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 );
46420: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
46426: 7258 moveq #88,%d1 <== NOT EXECUTED
46428: 2040 moveal %d0,%a0 <== NOT EXECUTED
4642a: 70ff moveq #-1,%d0 <== NOT EXECUTED
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
4642c: 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 );
4642e: 2081 movel %d1,%a0@ <== NOT EXECUTED
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
}
46430: 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 )
46432: 203c 21da e4ff movel #567993599,%d0 <== NOT EXECUTED
46438: b090 cmpl %a0@,%d0 <== NOT EXECUTED
4643a: 64d2 bccs 4640e <clock_settime+0x22> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4643c: 2039 0006 1cb8 movel 61cb8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46442: 5280 addql #1,%d0 <== NOT EXECUTED
46444: 23c0 0006 1cb8 movel %d0,61cb8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Thread_Disable_dispatch();
_TOD_Set( tp );
4644a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4644c: 4eb9 0004 852c jsr 4852c <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
46452: 4eb9 0004 9aa6 jsr 49aa6 <_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;
46458: 588f addql #4,%sp <== NOT EXECUTED
4645a: 4280 clrl %d0 <== NOT EXECUTED
}
4645c: 4e5e unlk %fp <== NOT EXECUTED
0004ae98 <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
4ae98: 4e56 fffc linkw %fp,#-4
4ae9c: 202e 0008 movel %fp@(8),%d0
4aea0: 2f0a movel %a2,%sp@-
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
4aea2: b0b9 0005 e314 cmpl 5e314 <rtems_libio_number_iops>,%d0
4aea8: 644e bccs 4aef8 <close+0x60> <== NEVER TAKEN
iop = rtems_libio_iop(fd);
4aeaa: 2200 movel %d0,%d1
4aeac: ed88 lsll #6,%d0
4aeae: e789 lsll #3,%d1
4aeb0: 2479 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a2
4aeb6: 9081 subl %d1,%d0
4aeb8: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
4aeba: 202a 0014 movel %a2@(20),%d0
4aebe: 0280 0000 0100 andil #256,%d0
4aec4: 6732 beqs 4aef8 <close+0x60> <== NEVER TAKEN
rc = RTEMS_SUCCESSFUL;
rc = (*iop->pathinfo.handlers->close_h)( iop );
4aec6: 206a 0020 moveal %a2@(32),%a0
4aeca: 2f0a movel %a2,%sp@-
4aecc: 2068 0004 moveal %a0@(4),%a0
4aed0: 4e90 jsr %a0@
rtems_filesystem_freenode( &iop->pathinfo );
4aed2: 486a 0018 pea %a2@(24)
4aed6: 2d40 fffc movel %d0,%fp@(-4)
4aeda: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode>
rtems_libio_free( iop );
4aee0: 2f0a movel %a2,%sp@-
4aee2: 4eb9 0004 b166 jsr 4b166 <rtems_libio_free>
return rc;
4aee8: 202e fffc movel %fp@(-4),%d0
4aeec: 4fef 000c lea %sp@(12),%sp
}
4aef0: 246e fff8 moveal %fp@(-8),%a2
4aef4: 4e5e unlk %fp
4aef6: 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);
4aef8: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4aefe: 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);
4af02: 2040 moveal %d0,%a0 <== NOT EXECUTED
4af04: 7209 moveq #9,%d1 <== NOT EXECUTED
4af06: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4af08: 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);
4af0a: 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 aa4c movel #371276,%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 b940 moveal 5b940 <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 b6a8 tstl 5b6a8 <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 3798 lea 43798 <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 a3b6 pea 5a3b6 <IntUartPollCallbacks.6370+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 b6a8 cmpl 5b6a8 <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 c72c jsr 4c72c <__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
...
00049a1c <devFS_close>:
#include "devfs.h"
int devFS_close(
rtems_libio_t *iop
)
{
49a1c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
49a20: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49a24: 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;
49a28: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49a2c: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED
49a30: 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;
49a34: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
args.flags = 0;
49a38: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
args.mode = 0;
49a3c: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_close(
49a40: 4eb9 0004 b384 jsr 4b384 <rtems_io_close> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
return rtems_deviceio_errno(status);
49a46: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49a48: 4eb9 0004 9b44 jsr 49b44 <rtems_deviceio_errno> <== NOT EXECUTED
}
49a4e: 4e5e unlk %fp <== NOT EXECUTED
...
00049a54 <devFS_evaluate_path>:
{
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
49a54: 70f8 moveq #-8,%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49a56: 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 ) )
49a5a: c0ae 0010 andl %fp@(16),%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49a5e: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
49a62: 2c2e 0008 movel %fp@(8),%d6
49a66: 262e 000c movel %fp@(12),%d3
49a6a: 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 ) )
49a6e: 4a80 tstl %d0
49a70: 6600 0090 bnew 49b02 <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;
49a74: 2814 movel %a4@,%d4
if (!device_name_table)
49a76: 6700 00a2 beqw 49b1a <devFS_evaluate_path+0xc6>
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
49a7a: 2a39 0005 b6a8 movel 5b6a8 <rtems_device_table_size>,%d5
49a80: 673c beqs 49abe <devFS_evaluate_path+0x6a> <== NEVER TAKEN
49a82: 4280 clrl %d0
49a84: 4282 clrl %d2
if (!device_name_table[i].device_name)
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
49a86: 4bf9 0004 da6c lea 4da6c <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)
49a8c: 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++) {
49a8e: 5282 addql #1,%d2
if (!device_name_table[i].device_name)
49a90: e989 lsll #4,%d1
49a92: 2041 moveal %d1,%a0
49a94: 47f0 0c00 lea %a0@(00000000,%d0:l:4),%a3
49a98: 47f3 4800 lea %a3@(00000000,%d4:l),%a3
49a9c: 2453 moveal %a3@,%a2
49a9e: 4a8a tstl %a2
49aa0: 6716 beqs 49ab8 <devFS_evaluate_path+0x64>
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
49aa2: 2f03 movel %d3,%sp@-
49aa4: 2f0a movel %a2,%sp@-
49aa6: 2f06 movel %d6,%sp@-
49aa8: 4e95 jsr %a5@
49aaa: 4fef 000c lea %sp@(12),%sp
49aae: 4a80 tstl %d0
49ab0: 6606 bnes 49ab8 <devFS_evaluate_path+0x64>
continue;
if (device_name_table[i].device_name[pathnamelen] != '\0')
49ab2: 4a32 3800 tstb %a2@(00000000,%d3:l)
49ab6: 671e beqs 49ad6 <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++) {
49ab8: 2002 movel %d2,%d0
49aba: b485 cmpl %d5,%d2
49abc: 65ce bcss 49a8c <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 );
49abe: 4eb9 0004 c72c jsr 4c72c <__errno>
49ac4: 7202 moveq #2,%d1
49ac6: 2040 moveal %d0,%a0
49ac8: 70ff moveq #-1,%d0
}
49aca: 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 );
49ad0: 2081 movel %d1,%a0@
}
49ad2: 4e5e unlk %fp
49ad4: 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;
49ad6: 2079 0005 b940 moveal 5b940 <rtems_current_user_env>,%a0
49adc: 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;
49ae2: 223c 0005 b7ec movel #374764,%d1
pathloc->ops = &devFS_ops;
49ae8: 41f9 0005 b7a4 lea 5b7a4 <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;
49aee: 2941 0008 movel %d1,%a4@(8)
pathloc->ops = &devFS_ops;
49af2: 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];
49af6: 288b movel %a3,%a4@
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49af8: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
49afe: 4e5e unlk %fp
49b00: 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 );
49b02: 4eb9 0004 c72c jsr 4c72c <__errno> <== NOT EXECUTED
49b08: 7601 moveq #1,%d3 <== NOT EXECUTED
49b0a: 2040 moveal %d0,%a0 <== NOT EXECUTED
49b0c: 70ff moveq #-1,%d0 <== NOT EXECUTED
49b0e: 2083 movel %d3,%a0@ <== NOT EXECUTED
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b10: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
49b16: 4e5e unlk %fp <== NOT EXECUTED
49b18: 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 );
49b1a: 4eb9 0004 c72c jsr 4c72c <__errno> <== NOT EXECUTED
49b20: 740e moveq #14,%d2 <== NOT EXECUTED
49b22: 2040 moveal %d0,%a0 <== NOT EXECUTED
49b24: 70ff moveq #-1,%d0 <== NOT EXECUTED
49b26: 2082 movel %d2,%a0@ <== NOT EXECUTED
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b28: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
49b2e: 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 b6a8 movel 5b6a8 <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 965a jsr 4965a <_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 b6a8 movel 5b6a8 <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 d048 jsr 4d048 <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 b7ec movel #374764,%d0
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
42230: 41f9 0005 b7a4 lea 5b7a4 <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 c72c jsr 4c72c <__errno> <== NOT EXECUTED
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
42256: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
rtems_set_errno_and_return_minus_one( ENOMEM );
4225a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4225c: 720c moveq #12,%d1 <== NOT EXECUTED
4225e: 70ff moveq #-1,%d0 <== NOT EXECUTED
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
42260: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
42264: 4e5e unlk %fp <== NOT EXECUTED
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
rtems_set_errno_and_return_minus_one( ENOMEM );
42266: 2081 movel %d1,%a0@ <== NOT EXECUTED
/* Set the node_access to device name table */
temp_mt_entry->mt_fs_root.node_access = (void *)device_name_table;
return 0;
}
...
00042468 <devFS_ioctl>:
int devFS_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
42468: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4246c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42470: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
{
rtems_libio_ioctl_args_t args;
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
42474: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42478: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.command = command;
4247c: 2d6e 000c fff4 movel %fp@(12),%fp@(-12) <== NOT EXECUTED
args.buffer = buffer;
status = rtems_io_control(
42482: 2f29 0008 movel %a1@(8),%sp@- <== NOT EXECUTED
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.command = command;
args.buffer = buffer;
42486: 2d6e 0010 fff8 movel %fp@(16),%fp@(-8) <== NOT EXECUTED
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
4248c: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42490: 4eb9 0004 6768 jsr 46768 <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 9b44 jsr 49b44 <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 b6a8 movel 5b6a8 <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 d578 lea 4d578 <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 da54 jsr 4da54 <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 c72c jsr 4c72c <__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 c72c jsr 4c72c <__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 c72c jsr 4c72c <__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 c72c jsr 4c72c <__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 68cc jsr 468cc <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 9b44 jsr 49b44 <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 6914 jsr 46914 <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 9b44 jsr 49b44 <rtems_deviceio_errno> <== NOT EXECUTED
425e0: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
425e2: 4e5e unlk %fp <== NOT EXECUTED
...
0004db7e <device_ftruncate>:
rtems_libio_t *iop,
rtems_off64_t length
)
{
return 0;
}
4db7e: 4280 clrl %d0 <== NOT EXECUTED
int device_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4db80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4db84: 4e5e unlk %fp <== NOT EXECUTED
0004db22 <device_ioctl>:
int device_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4db22: 4e56 fff0 linkw %fp,#-16
4db26: 206e 0008 moveal %fp@(8),%a0
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4db2a: 486e fff0 pea %fp@(-16)
args.iop = iop;
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
4db2e: 2268 0018 moveal %a0@(24),%a1
status = rtems_io_control(
4db32: 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;
4db36: 2d6e 000c fff4 movel %fp@(12),%fp@(-12)
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4db3c: 2f29 004c movel %a1@(76),%sp@-
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
args.buffer = buffer;
4db40: 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;
4db46: 2d48 fff0 movel %a0,%fp@(-16)
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4db4a: 4eb9 0004 e550 jsr 4e550 <rtems_io_control>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4db50: 4fef 000c lea %sp@(12),%sp
4db54: 4a80 tstl %d0
4db56: 6608 bnes 4db60 <device_ioctl+0x3e> <== NEVER TAKEN
return rtems_deviceio_errno(status);
return args.ioctl_return;
4db58: 202e fffc movel %fp@(-4),%d0
}
4db5c: 4e5e unlk %fp
4db5e: 4e75 rts
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4db60: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4db62: 4eb9 0004 e800 jsr 4e800 <rtems_deviceio_errno> <== NOT EXECUTED
4db68: 588f addql #4,%sp <== NOT EXECUTED
return args.ioctl_return;
}
4db6a: 4e5e unlk %fp <== NOT EXECUTED
0004db6e <device_lseek>:
rtems_off64_t device_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4db6e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return offset;
}
4db72: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4db76: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
4db7a: 4e5e unlk %fp <== NOT EXECUTED
0004da56 <device_read>:
ssize_t device_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4da56: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4da5a: 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(
4da5e: 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;
4da62: 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(
4da66: 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;
4da6a: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read(
4da70: 2f29 004c movel %a1@(76),%sp@- <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4da74: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
4da7a: 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;
4da80: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
4da84: 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;
4da88: 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;
4da8c: 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;
4da90: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
4da94: 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(
4da98: 4eb9 0004 e5e0 jsr 4e5e0 <rtems_io_read> <== NOT EXECUTED
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4da9e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4daa2: 4a80 tstl %d0 <== NOT EXECUTED
4daa4: 6608 bnes 4daae <device_read+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4daa6: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4daaa: 4e5e unlk %fp <== NOT EXECUTED
4daac: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4daae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4dab0: 4eb9 0004 e800 jsr 4e800 <rtems_deviceio_errno> <== NOT EXECUTED
4dab6: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4dab8: 4e5e unlk %fp <== NOT EXECUTED
0004dabc <device_write>:
ssize_t device_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4dabc: 4e56 ffe4 linkw %fp,#-28
4dac0: 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(
4dac4: 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;
4dac8: 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(
4dacc: 2f29 0050 movel %a1@(80),%sp@-
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
4dad0: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
args.bytes_moved = 0;
status = rtems_io_write(
4dad6: 2f29 004c movel %a1@(76),%sp@-
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4dada: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
4dae0: 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;
4dae6: 2028 000c movel %a0@(12),%d0
4daea: 2228 0010 movel %a0@(16),%d1
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4daee: 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;
4daf2: 42ae fffc clrl %fp@(-4)
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4daf6: 2d40 ffe8 movel %d0,%fp@(-24)
4dafa: 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(
4dafe: 4eb9 0004 e628 jsr 4e628 <rtems_io_write>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4db04: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4db08: 4a80 tstl %d0 <== NOT EXECUTED
4db0a: 6608 bnes 4db14 <device_write+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4db0c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4db10: 4e5e unlk %fp <== NOT EXECUTED
4db12: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4db14: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4db16: 4eb9 0004 e800 jsr 4e800 <rtems_deviceio_errno> <== NOT EXECUTED
4db1c: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4db1e: 4e5e unlk %fp <== NOT EXECUTED
00043cd0 <drainOutput>:
/*
* Drain output queue
*/
static void
drainOutput (struct rtems_termios_tty *tty)
{
43cd0: 4e56 fff4 linkw %fp,#-12
43cd4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
43cd8: 246e 0008 moveal %fp@(8),%a2
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
43cdc: 4aaa 00b4 tstl %a2@(180)
43ce0: 6750 beqs 43d32 <drainOutput+0x62> <== NEVER TAKEN
rtems_interrupt_disable (level);
43ce2: 243c 0000 0700 movel #1792,%d2
43ce8: 2002 movel %d2,%d0
43cea: 40c1 movew %sr,%d1
43cec: 8081 orl %d1,%d0
43cee: 46c0 movew %d0,%sr
while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {
43cf0: 206a 0084 moveal %a2@(132),%a0
43cf4: 202a 0080 movel %a2@(128),%d0
43cf8: b088 cmpl %a0,%d0
43cfa: 6734 beqs 43d30 <drainOutput+0x60> <== ALWAYS TAKEN
43cfc: 47f9 0004 6458 lea 46458 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
tty->rawOutBufState = rob_wait;
43d02: 7002 moveq #2,%d0 <== NOT EXECUTED
43d04: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable (level);
43d08: 46c1 movew %d1,%sr <== NOT EXECUTED
sc = rtems_semaphore_obtain(
43d0a: 42a7 clrl %sp@- <== NOT EXECUTED
43d0c: 42a7 clrl %sp@- <== NOT EXECUTED
43d0e: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
43d12: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43d14: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43d18: 4a80 tstl %d0 <== NOT EXECUTED
43d1a: 6620 bnes 43d3c <drainOutput+0x6c> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
43d1c: 2002 movel %d2,%d0 <== NOT EXECUTED
43d1e: 40c1 movew %sr,%d1 <== NOT EXECUTED
43d20: 8081 orl %d1,%d0 <== NOT EXECUTED
43d22: 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) {
43d24: 206a 0084 moveal %a2@(132),%a0 <== NOT EXECUTED
43d28: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED
43d2c: b088 cmpl %a0,%d0 <== NOT EXECUTED
43d2e: 66d2 bnes 43d02 <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);
43d30: 46c1 movew %d1,%sr
}
}
43d32: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
43d38: 4e5e unlk %fp
43d3a: 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);
43d3c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43d3e: 4eb9 0004 6bac jsr 46bac <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
00044a1c <echo>:
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
44a1c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
44a20: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
44a24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44a26: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
44a2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
44a2c: 242a 003c movel %a2@(60),%d2 <== NOT EXECUTED
44a30: 0282 0000 0200 andil #512,%d2 <== NOT EXECUTED
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
44a36: 1001 moveb %d1,%d0 <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
44a38: 4a82 tstl %d2 <== NOT EXECUTED
44a3a: 673e beqs 44a7a <echo+0x5e> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
44a3c: 1001 moveb %d1,%d0 <== NOT EXECUTED
44a3e: 2079 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a0 <== NOT EXECUTED
44a44: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
44a4a: 1430 0801 moveb %a0@(00000001,%d0:l),%d2 <== NOT EXECUTED
44a4e: 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) &&
44a50: 0802 0005 btst #5,%d2 <== NOT EXECUTED
44a54: 670e beqs 44a64 <echo+0x48> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
44a56: 7409 moveq #9,%d2 <== NOT EXECUTED
44a58: b480 cmpl %d0,%d2 <== NOT EXECUTED
44a5a: 6708 beqs 44a64 <echo+0x48> <== NOT EXECUTED
44a5c: 143c 000a moveb #10,%d2 <== NOT EXECUTED
44a60: b480 cmpl %d0,%d2 <== NOT EXECUTED
44a62: 662a bnes 44a8e <echo+0x72> <== NOT EXECUTED
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
44a64: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44a66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44a68: 4eba fdd4 jsr %pc@(4483e <oproc>) <== NOT EXECUTED
44a6c: 508f addql #8,%sp <== NOT EXECUTED
}
}
44a6e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
44a72: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
44a76: 4e5e unlk %fp <== NOT EXECUTED
44a78: 4e75 rts <== NOT EXECUTED
44a7a: 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);
44a7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44a7e: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
44a84: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44a86: 4eba fdb6 jsr %pc@(4483e <oproc>) <== NOT EXECUTED
44a8a: 508f addql #8,%sp <== NOT EXECUTED
44a8c: 60e0 bras 44a6e <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);
44a8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44a90: 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;
44a94: 7040 moveq #64,%d0 <== NOT EXECUTED
rtems_termios_puts (echobuf, 2, tty);
44a96: 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;
44a9a: b181 eorl %d0,%d1 <== NOT EXECUTED
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
44a9c: 745e moveq #94,%d2 <== NOT EXECUTED
echobuf[1] = c ^ 0x40;
44a9e: 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] = '^';
44aa2: 1d42 fffe moveb %d2,%fp@(-2) <== NOT EXECUTED
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
44aa6: 4eb9 0004 473a jsr 4473a <rtems_termios_puts> <== NOT EXECUTED
tty->column += 2;
} else {
oproc (c, tty);
}
}
44aac: 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;
44ab0: 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')) {
44ab4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
}
}
44ab8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
44abc: 4e5e unlk %fp <== NOT EXECUTED
00043cda <endgrent>:
void endgrent(void)
{
43cda: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (group_fp != NULL)
43cde: 2039 0006 0df0 movel 60df0 <group_fp>,%d0 <== NOT EXECUTED
43ce4: 670a beqs 43cf0 <endgrent+0x16> <== NOT EXECUTED
fclose(group_fp);
43ce6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43ce8: 4eb9 0004 f922 jsr 4f922 <fclose> <== NOT EXECUTED
43cee: 588f addql #4,%sp <== NOT EXECUTED
}
43cf0: 4e5e unlk %fp <== NOT EXECUTED
00043b8e <endpwent>:
void endpwent(void)
{
43b8e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (passwd_fp != NULL)
43b92: 2039 0006 0eca movel 60eca <passwd_fp>,%d0 <== NOT EXECUTED
43b98: 670a beqs 43ba4 <endpwent+0x16> <== NOT EXECUTED
fclose(passwd_fp);
43b9a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43b9c: 4eb9 0004 f922 jsr 4f922 <fclose> <== NOT EXECUTED
43ba2: 588f addql #4,%sp <== NOT EXECUTED
}
43ba4: 4e5e unlk %fp <== NOT EXECUTED
00044ac0 <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)
{
44ac0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
44ac4: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
44ac8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
44acc: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
if (tty->ccount == 0)
44ad0: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
44ad4: 6734 beqs 44b0a <erase+0x4a> <== NOT EXECUTED
return;
if (lineFlag) {
44ad6: 4a84 tstl %d4 <== NOT EXECUTED
44ad8: 673a beqs 44b14 <erase+0x54> <== NOT EXECUTED
if (!(tty->termios.c_lflag & ECHO)) {
44ada: 262a 003c movel %a2@(60),%d3 <== NOT EXECUTED
44ade: 7208 moveq #8,%d1 <== NOT EXECUTED
44ae0: c283 andl %d3,%d1 <== NOT EXECUTED
44ae2: 6700 01b0 beqw 44c94 <erase+0x1d4> <== NOT EXECUTED
tty->ccount = 0;
return;
}
if (!(tty->termios.c_lflag & ECHOE)) {
44ae6: 0803 0004 btst #4,%d3 <== NOT EXECUTED
44aea: 6630 bnes 44b1c <erase+0x5c> <== NOT EXECUTED
tty->ccount = 0;
echo (tty->termios.c_cc[VKILL], tty);
44aec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44aee: 4280 clrl %d0 <== NOT EXECUTED
44af0: 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;
44af4: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
echo (tty->termios.c_cc[VKILL], tty);
44af8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44afa: 4eba ff20 jsr %pc@(44a1c <echo>) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOK)
44afe: 508f addql #8,%sp <== NOT EXECUTED
44b00: 7020 moveq #32,%d0 <== NOT EXECUTED
44b02: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
44b06: 6600 019a bnew 44ca2 <erase+0x1e2> <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44b0a: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44b10: 4e5e unlk %fp <== NOT EXECUTED
44b12: 4e75 rts <== NOT EXECUTED
echo ('\n', tty);
return;
}
}
while (tty->ccount) {
44b14: 262a 003c movel %a2@(60),%d3 <== NOT EXECUTED
44b18: 7208 moveq #8,%d1 <== NOT EXECUTED
44b1a: c283 andl %d3,%d1 <== NOT EXECUTED
44b1c: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3 <== NOT EXECUTED
unsigned char c = tty->cbuf[--tty->ccount];
44b22: 5380 subql #1,%d0 <== NOT EXECUTED
44b24: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
44b28: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
44b2c: 1430 0800 moveb %a0@(00000000,%d0:l),%d2 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO) {
44b30: 4a81 tstl %d1 <== NOT EXECUTED
44b32: 6734 beqs 44b68 <erase+0xa8> <== NOT EXECUTED
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
44b34: 4a84 tstl %d4 <== NOT EXECUTED
44b36: 6608 bnes 44b40 <erase+0x80> <== NOT EXECUTED
44b38: 0803 0004 btst #4,%d3 <== NOT EXECUTED
44b3c: 6700 013c beqw 44c7a <erase+0x1ba> <== NOT EXECUTED
echo (tty->termios.c_cc[VERASE], tty);
} else if (c == '\t') {
44b40: 7209 moveq #9,%d1 <== NOT EXECUTED
44b42: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
44b48: b282 cmpl %d2,%d1 <== NOT EXECUTED
44b4a: 6700 0090 beqw 44bdc <erase+0x11c> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
44b4e: 2079 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a0 <== NOT EXECUTED
44b54: 5282 addql #1,%d2 <== NOT EXECUTED
44b56: 1030 2800 moveb %a0@(00000000,%d2:l),%d0 <== NOT EXECUTED
44b5a: 49c0 extbl %d0 <== NOT EXECUTED
44b5c: 0800 0005 btst #5,%d0 <== NOT EXECUTED
44b60: 6756 beqs 44bb8 <erase+0xf8> <== NOT EXECUTED
44b62: 0803 0009 btst #9,%d3 <== NOT EXECUTED
44b66: 6614 bnes 44b7c <erase+0xbc> <== NOT EXECUTED
if (tty->column)
tty->column--;
}
}
}
if (!lineFlag)
44b68: 4a84 tstl %d4 <== NOT EXECUTED
44b6a: 679e beqs 44b0a <erase+0x4a> <== NOT EXECUTED
echo ('\n', tty);
return;
}
}
while (tty->ccount) {
44b6c: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
44b70: 6798 beqs 44b0a <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);
44b72: 262a 003c movel %a2@(60),%d3 <== NOT EXECUTED
44b76: 7208 moveq #8,%d1 <== NOT EXECUTED
44b78: c283 andl %d3,%d1 <== NOT EXECUTED
44b7a: 60a6 bras 44b22 <erase+0x62> <== NOT EXECUTED
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
rtems_termios_puts ("\b \b", 3, tty);
44b7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44b7e: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
44b82: 4879 0005 d44d pea 5d44d <rtems_filesystem_default_pathconf+0xb1><== NOT EXECUTED
44b88: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->column)
44b8a: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44b8e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44b92: 6706 beqs 44b9a <erase+0xda> <== NOT EXECUTED
tty->column--;
44b94: 5380 subql #1,%d0 <== NOT EXECUTED
44b96: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {
44b9a: 2079 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a0 <== NOT EXECUTED
44ba0: 1030 2800 moveb %a0@(00000000,%d2:l),%d0 <== NOT EXECUTED
44ba4: 49c0 extbl %d0 <== NOT EXECUTED
44ba6: 0800 0005 btst #5,%d0 <== NOT EXECUTED
44baa: 670c beqs 44bb8 <erase+0xf8> <== NOT EXECUTED
44bac: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
44bb0: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
44bb6: 67b0 beqs 44b68 <erase+0xa8> <== NOT EXECUTED
rtems_termios_puts ("\b \b", 3, tty);
44bb8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44bba: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
44bbe: 4879 0005 d44d pea 5d44d <rtems_filesystem_default_pathconf+0xb1><== NOT EXECUTED
44bc4: 4eb9 0004 473a jsr 4473a <rtems_termios_puts> <== NOT EXECUTED
if (tty->column)
44bca: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44bce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44bd2: 6794 beqs 44b68 <erase+0xa8> <== NOT EXECUTED
tty->column--;
44bd4: 5380 subql #1,%d0 <== NOT EXECUTED
44bd6: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
44bda: 608c bras 44b68 <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;
44bdc: 242a 002c movel %a2@(44),%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44be0: 4a80 tstl %d0 <== NOT EXECUTED
44be2: 6732 beqs 44c16 <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)
44be4: 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;
44be6: 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)
44be8: 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)) {
44bee: 2279 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a1 <== NOT EXECUTED
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
if (c == '\t') {
44bf4: 4283 clrl %d3 <== NOT EXECUTED
44bf6: 1618 moveb %a0@+,%d3 <== NOT EXECUTED
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
44bf8: 5281 addql #1,%d1 <== NOT EXECUTED
if (c == '\t') {
44bfa: 7a09 moveq #9,%d5 <== NOT EXECUTED
44bfc: ba83 cmpl %d3,%d5 <== NOT EXECUTED
44bfe: 676c beqs 44c6c <erase+0x1ac> <== NOT EXECUTED
col = (col | 7) + 1;
} else if (iscntrl (c)) {
44c00: 1a31 3801 moveb %a1@(00000001,%d3:l),%d5 <== NOT EXECUTED
44c04: 49c5 extbl %d5 <== NOT EXECUTED
44c06: 0805 0005 btst #5,%d5 <== NOT EXECUTED
44c0a: 6758 beqs 44c64 <erase+0x1a4> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOCTL)
44c0c: 4a86 tstl %d6 <== NOT EXECUTED
44c0e: 6702 beqs 44c12 <erase+0x152> <== NOT EXECUTED
col += 2;
44c10: 5482 addql #2,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44c12: b280 cmpl %d0,%d1 <== NOT EXECUTED
44c14: 66de bnes 44bf4 <erase+0x134> <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c16: b4aa 0028 cmpl %a2@(40),%d2 <== NOT EXECUTED
44c1a: 6c00 ff4c bgew 44b68 <erase+0xa8> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
44c1e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44c20: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44c24: 4879 0005 d44f pea 5d44f <rtems_filesystem_default_pathconf+0xb3><== NOT EXECUTED
44c2a: 4e93 jsr %a3@ <== NOT EXECUTED
tty->column--;
44c2c: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44c30: 5380 subql #1,%d0 <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c32: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
44c36: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c3a: b480 cmpl %d0,%d2 <== NOT EXECUTED
44c3c: 6c00 ff2a bgew 44b68 <erase+0xa8> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
44c40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44c42: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44c46: 4879 0005 d44f pea 5d44f <rtems_filesystem_default_pathconf+0xb3><== NOT EXECUTED
44c4c: 4e93 jsr %a3@ <== NOT EXECUTED
tty->column--;
44c4e: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44c52: 5380 subql #1,%d0 <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c54: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
44c58: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44c5c: b480 cmpl %d0,%d2 <== NOT EXECUTED
44c5e: 6dbe blts 44c1e <erase+0x15e> <== NOT EXECUTED
44c60: 6000 ff06 braw 44b68 <erase+0xa8> <== NOT EXECUTED
col = (col | 7) + 1;
} else if (iscntrl (c)) {
if (tty->termios.c_lflag & ECHOCTL)
col += 2;
} else {
col++;
44c64: 5282 addql #1,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44c66: b280 cmpl %d0,%d1 <== NOT EXECUTED
44c68: 668a bnes 44bf4 <erase+0x134> <== NOT EXECUTED
44c6a: 60aa bras 44c16 <erase+0x156> <== NOT EXECUTED
c = tty->cbuf[i++];
if (c == '\t') {
col = (col | 7) + 1;
44c6c: 7607 moveq #7,%d3 <== NOT EXECUTED
44c6e: 8483 orl %d3,%d2 <== NOT EXECUTED
44c70: 5282 addql #1,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
44c72: b280 cmpl %d0,%d1 <== NOT EXECUTED
44c74: 6600 ff7e bnew 44bf4 <erase+0x134> <== NOT EXECUTED
44c78: 609c bras 44c16 <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);
44c7a: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
44c7e: 4280 clrl %d0 <== NOT EXECUTED
44c80: 102a 0043 moveb %a2@(67),%d0 <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44c84: 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);
44c8a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44c8e: 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);
44c90: 6000 fd8a braw 44a1c <echo> <== NOT EXECUTED
{
if (tty->ccount == 0)
return;
if (lineFlag) {
if (!(tty->termios.c_lflag & ECHO)) {
tty->ccount = 0;
44c94: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44c98: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44c9e: 4e5e unlk %fp <== NOT EXECUTED
44ca0: 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);
44ca2: 700a moveq #10,%d0 <== NOT EXECUTED
44ca4: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44ca8: 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);
44cae: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
44cb2: 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);
44cb4: 6000 fd66 braw 44a1c <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 f894 cmpl 5f894 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
438f6: 6400 012a bccw 43a22 <fchdir+0x13e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
438fa: 2200 movel %d0,%d1 <== NOT EXECUTED
438fc: ed88 lsll #6,%d0 <== NOT EXECUTED
438fe: e789 lsll #3,%d1 <== NOT EXECUTED
43900: 2479 0006 10a4 moveal 610a4 <rtems_libio_iops>,%a2 <== NOT EXECUTED
43906: 9081 subl %d1,%d0 <== NOT EXECUTED
43908: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4390a: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4390e: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43912: 6700 010e beqw 43a22 <fchdir+0x13e> <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
43916: 0800 0001 btst #1,%d0 <== NOT EXECUTED
4391a: 6700 011e beqw 43a3a <fchdir+0x156> <== NOT EXECUTED
/*
* Verify you can change directory into this node.
*/
if ( (*iop->pathinfo.ops->node_type_h)( &iop->pathinfo ) !=
4391e: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
43922: 47ea 0018 lea %a2@(24),%a3 <== NOT EXECUTED
43926: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43928: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4392c: 4e90 jsr %a0@ <== NOT EXECUTED
4392e: 588f addql #4,%sp <== NOT EXECUTED
43930: 7201 moveq #1,%d1 <== NOT EXECUTED
43932: b280 cmpl %d0,%d1 <== NOT EXECUTED
43934: 6600 00ae bnew 439e4 <fchdir+0x100> <== NOT EXECUTED
* but note the race condition. Threads who
* share their rtems_filesystem_current better
* be synchronized!
*/
saved = rtems_filesystem_current;
43938: 2279 0005 fab0 moveal 5fab0 <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 ec5e pea 5ec5e <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 fab0 moveal 5fab0 <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 f910 jsr 4f910 <__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 fab0 moveal 5fab0 <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 f910 jsr 4f910 <__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 f910 jsr 4f910 <__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 f894 cmpl 5f894 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
43a68: 643a bccs 43aa4 <fchmod+0x50> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43a6a: 2400 movel %d0,%d2 <== NOT EXECUTED
43a6c: ed88 lsll #6,%d0 <== NOT EXECUTED
43a6e: e78a lsll #3,%d2 <== NOT EXECUTED
43a70: 2079 0006 10a4 moveal 610a4 <rtems_libio_iops>,%a0 <== NOT EXECUTED
43a76: 9082 subl %d2,%d0 <== NOT EXECUTED
43a78: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43a7a: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
43a7e: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43a82: 6720 beqs 43aa4 <fchmod+0x50> <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43a84: 44c0 movew %d0,%ccr <== NOT EXECUTED
43a86: 6632 bnes 43aba <fchmod+0x66> <== NOT EXECUTED
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
43a88: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED
43a8c: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
43a90: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
43a94: 2269 001c moveal %a1@(28),%a1 <== NOT EXECUTED
}
43a98: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
43a9c: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
43aa0: 4e5e unlk %fp <== NOT EXECUTED
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
43aa2: 4ed1 jmp %a1@ <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43aa4: 4eb9 0004 f910 jsr 4f910 <__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 f910 jsr 4f910 <__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 f894 cmpl 5f894 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED
43aea: 644e bccs 43b3a <fchown+0x6a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43aec: 2602 movel %d2,%d3 <== NOT EXECUTED
43aee: ed8a lsll #6,%d2 <== NOT EXECUTED
43af0: e78b lsll #3,%d3 <== NOT EXECUTED
43af2: 2079 0006 10a4 moveal 610a4 <rtems_libio_iops>,%a0 <== NOT EXECUTED
43af8: 9483 subl %d3,%d2 <== NOT EXECUTED
43afa: d1c2 addal %d2,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43afc: 2428 0014 movel %a0@(20),%d2 <== NOT EXECUTED
43b00: 0802 0008 btst #8,%d2 <== NOT EXECUTED
43b04: 6734 beqs 43b3a <fchown+0x6a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43b06: 44c2 movew %d2,%ccr <== NOT EXECUTED
43b08: 664a bnes 43b54 <fchown+0x84> <== NOT EXECUTED
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43b0a: 2268 0024 moveal %a0@(36),%a1 <== NOT EXECUTED
43b0e: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
43b12: 2269 0018 moveal %a1@(24),%a1 <== NOT EXECUTED
43b16: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
43b1c: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
}
43b22: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
43b26: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43b2a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
43b2e: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
43b32: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
43b36: 4e5e unlk %fp <== NOT EXECUTED
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43b38: 4ed1 jmp %a1@ <== NOT EXECUTED
{
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
43b3a: 4eb9 0004 f910 jsr 4f910 <__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 f910 jsr 4f910 <__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 0054 movel 60054 <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 1864 moveal 61864 <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 fbc4 jsr 4fbc4 <__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 fbc4 jsr 4fbc4 <__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 fbc4 jsr 4fbc4 <__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 fbc4 jsr 4fbc4 <__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 1864 moveal 61864 <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 0054 cmpl 60054 <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 1864 moveal 61864 <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 fbc4 jsr 4fbc4 <__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 fbc4 jsr 4fbc4 <__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
...
0004cf7c <fifo_open>:
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cf7c: 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) {
4cf80: 2039 0006 1e18 movel 61e18 <pipe_semaphore>,%d0 <== NOT EXECUTED
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cf86: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
4cf8a: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
4cf8e: 47f9 0004 87f4 lea 487f4 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
4cf94: 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) {
4cf98: 4a80 tstl %d0 <== NOT EXECUTED
4cf9a: 677e beqs 4d01a <fifo_open+0x9e> <== NOT EXECUTED
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4cf9c: 42a7 clrl %sp@- <== NOT EXECUTED
4cf9e: 42a7 clrl %sp@- <== NOT EXECUTED
4cfa0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cfa2: 4e93 jsr %a3@ <== NOT EXECUTED
}
if (sc == RTEMS_SUCCESSFUL) {
4cfa4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cfa8: 4a80 tstl %d0 <== NOT EXECUTED
4cfaa: 6600 0378 bnew 4d324 <fifo_open+0x3a8> <== NOT EXECUTED
err = pipe_lock();
if (err)
return err;
pipe = *pipep;
4cfae: 2a54 moveal %a4@,%a5 <== NOT EXECUTED
if (pipe == NULL) {
4cfb0: 4a8d tstl %a5 <== NOT EXECUTED
4cfb2: 6700 0118 beqw 4d0cc <fifo_open+0x150> <== NOT EXECUTED
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4cfb6: 42a7 clrl %sp@- <== NOT EXECUTED
4cfb8: 42a7 clrl %sp@- <== NOT EXECUTED
4cfba: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED
4cfbe: 4e93 jsr %a3@ <== NOT EXECUTED
4cfc0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cfc4: 4a80 tstl %d0 <== NOT EXECUTED
4cfc6: 6600 0084 bnew 4d04c <fifo_open+0xd0> <== NOT EXECUTED
4cfca: 95ca subal %a2,%a2 <== NOT EXECUTED
err = -EINTR;
if (*pipep == NULL) {
4cfcc: 4a94 tstl %a4@ <== NOT EXECUTED
4cfce: 6700 0310 beqw 4d2e0 <fifo_open+0x364> <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4cfd2: 4eba fec4 jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
pipe_control_t *pipe;
unsigned int prevCounter;
int err;
err = pipe_new(pipep);
if (err)
4cfd6: 4a8a tstl %a2 <== NOT EXECUTED
4cfd8: 6634 bnes 4d00e <fifo_open+0x92> <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
4cfda: 7006 moveq #6,%d0 <== NOT EXECUTED
4cfdc: 2042 moveal %d2,%a0 <== NOT EXECUTED
4cfde: 7204 moveq #4,%d1 <== NOT EXECUTED
4cfe0: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4cfe4: 2454 moveal %a4@,%a2 <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
4cfe6: b280 cmpl %d0,%d1 <== NOT EXECUTED
4cfe8: 6700 027a beqw 4d264 <fifo_open+0x2e8> <== NOT EXECUTED
4cfec: 123c 0006 moveb #6,%d1 <== NOT EXECUTED
4cff0: b280 cmpl %d0,%d1 <== NOT EXECUTED
4cff2: 6700 0220 beqw 4d214 <fifo_open+0x298> <== NOT EXECUTED
4cff6: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
4cffa: b280 cmpl %d0,%d1 <== NOT EXECUTED
4cffc: 6756 beqs 4d054 <fifo_open+0xd8> <== NOT EXECUTED
4cffe: 4bf9 0004 8934 lea 48934 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d004: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d008: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d00a: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d00c: 588f addql #4,%sp <== NOT EXECUTED
out_error:
pipe_release(pipep, iop);
return err;
}
4d00e: 200a movel %a2,%d0 <== NOT EXECUTED
4d010: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d016: 4e5e unlk %fp <== NOT EXECUTED
4d018: 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 );
4d01a: 42a7 clrl %sp@- <== NOT EXECUTED
4d01c: 42a7 clrl %sp@- <== NOT EXECUTED
4d01e: 2f39 0006 2510 movel 62510 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4d024: 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) {
4d026: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d02a: 4ab9 0006 1e18 tstl 61e18 <pipe_semaphore> <== NOT EXECUTED
4d030: 6700 02be beqw 4d2f0 <fifo_open+0x374> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4d034: 2f39 0006 2510 movel 62510 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4d03a: 4eb9 0004 8934 jsr 48934 <rtems_semaphore_release> <== NOT EXECUTED
4d040: 2039 0006 1e18 movel 61e18 <pipe_semaphore>,%d0 <== NOT EXECUTED
4d046: 588f addql #4,%sp <== NOT EXECUTED
4d048: 6000 ff52 braw 4cf9c <fifo_open+0x20> <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4d04c: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
4d050: 6000 ff7a braw 4cfcc <fifo_open+0x50> <== NOT EXECUTED
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d054: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4d058: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d05a: 5288 addql #1,%a0 <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
4d05c: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d060: 2548 0010 movel %a0,%a2@(16) <== NOT EXECUTED
4d064: 4a80 tstl %d0 <== NOT EXECUTED
4d066: 6700 02f4 beqw 4d35c <fifo_open+0x3e0> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
if (pipe->Writers == 0) {
4d06a: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4d06e: 668e bnes 4cffe <fifo_open+0x82> <== NOT EXECUTED
/* Not an error */
if (LIBIO_NODELAY(iop))
4d070: 7001 moveq #1,%d0 <== NOT EXECUTED
4d072: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d074: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4d078: 6684 bnes 4cffe <fifo_open+0x82> <== NOT EXECUTED
break;
prevCounter = pipe->writerCounter;
4d07a: 282a 0024 movel %a2@(36),%d4 <== NOT EXECUTED
4d07e: 4bf9 0004 8934 lea 48934 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
4d084: 263c 0004 efc4 movel #323524,%d3 <== NOT EXECUTED
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4d08a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d08e: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d090: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d092: 42a7 clrl %sp@- <== NOT EXECUTED
4d094: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d098: 4e90 jsr %a0@ <== NOT EXECUTED
4d09a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d09e: 4a80 tstl %d0 <== NOT EXECUTED
4d0a0: 6600 02ce bnew 4d370 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d0a4: 42a7 clrl %sp@- <== NOT EXECUTED
4d0a6: 42a7 clrl %sp@- <== NOT EXECUTED
4d0a8: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d0ac: 4e93 jsr %a3@ <== NOT EXECUTED
4d0ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d0b2: 4a80 tstl %d0 <== NOT EXECUTED
4d0b4: 6600 02ba bnew 4d370 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->writerCounter);
4d0b8: b8aa 0024 cmpl %a2@(36),%d4 <== NOT EXECUTED
4d0bc: 67cc beqs 4d08a <fifo_open+0x10e> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d0be: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d0c2: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d0c4: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d0c6: 588f addql #4,%sp <== NOT EXECUTED
4d0c8: 6000 ff44 braw 4d00e <fifo_open+0x92> <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d0cc: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
4d0d0: 45f9 0004 52b8 lea 452b8 <malloc>,%a2 <== NOT EXECUTED
4d0d6: 4e92 jsr %a2@ <== NOT EXECUTED
if (pipe == NULL)
4d0d8: 588f addql #4,%sp <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4d0da: 2a40 moveal %d0,%a5 <== NOT EXECUTED
4d0dc: 2600 movel %d0,%d3 <== NOT EXECUTED
if (pipe == NULL)
4d0de: 6700 0330 beqw 4d410 <fifo_open+0x494> <== NOT EXECUTED
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4d0e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4d0e4: 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));
4d0ea: 4298 clrl %a0@+ <== NOT EXECUTED
4d0ec: 5888 addql #4,%a0 <== NOT EXECUTED
4d0ee: 4298 clrl %a0@+ <== NOT EXECUTED
4d0f0: 4298 clrl %a0@+ <== NOT EXECUTED
4d0f2: 4298 clrl %a0@+ <== NOT EXECUTED
4d0f4: 4298 clrl %a0@+ <== NOT EXECUTED
4d0f6: 4298 clrl %a0@+ <== NOT EXECUTED
4d0f8: 4298 clrl %a0@+ <== NOT EXECUTED
4d0fa: 4298 clrl %a0@+ <== NOT EXECUTED
4d0fc: 4298 clrl %a0@+ <== NOT EXECUTED
4d0fe: 4298 clrl %a0@+ <== NOT EXECUTED
4d100: 4298 clrl %a0@+ <== NOT EXECUTED
4d102: 4290 clrl %a0@ <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4d104: 2b40 0004 movel %d0,%a5@(4) <== NOT EXECUTED
pipe->Buffer = malloc(pipe->Size);
4d108: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED
4d10c: 4e92 jsr %a2@ <== NOT EXECUTED
if (! pipe->Buffer)
4d10e: 588f addql #4,%sp <== NOT EXECUTED
4d110: 45f9 0004 4aa0 lea 44aa0 <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);
4d116: 2a80 movel %d0,%a5@ <== NOT EXECUTED
if (! pipe->Buffer)
4d118: 6700 02f0 beqw 4d40a <fifo_open+0x48e> <== NOT EXECUTED
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d11c: 486d 002c pea %a5@(44) <== NOT EXECUTED
4d120: 45f9 0004 edb4 lea 4edb4 <rtems_barrier_create>,%a2 <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4d126: 1039 0006 0f08 moveb 60f08 <c.6472>,%d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d12c: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4d12e: 49c0 extbl %d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4d130: 42a7 clrl %sp@- <== NOT EXECUTED
4d132: 0080 5049 7200 oril #1346990592,%d0 <== NOT EXECUTED
4d138: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d13a: 4e92 jsr %a2@ <== NOT EXECUTED
4d13c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d140: 4a80 tstl %d0 <== NOT EXECUTED
4d142: 6600 02b8 bnew 4d3fc <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(
4d146: 486d 0030 pea %a5@(48) <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4d14a: 1039 0006 0f08 moveb 60f08 <c.6472>,%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(
4d150: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4d152: 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(
4d154: 42a7 clrl %sp@- <== NOT EXECUTED
4d156: 0080 5049 7700 oril #1346991872,%d0 <== NOT EXECUTED
4d15c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d15e: 4e92 jsr %a2@ <== NOT EXECUTED
4d160: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d164: 45f9 0004 eeac lea 4eeac <rtems_barrier_delete>,%a2 <== NOT EXECUTED
4d16a: 4a80 tstl %d0 <== NOT EXECUTED
4d16c: 6600 0284 bnew 4d3f2 <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(
4d170: 486d 0028 pea %a5@(40) <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4d174: 1039 0006 0f08 moveb 60f08 <c.6472>,%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(
4d17a: 42a7 clrl %sp@- <== NOT EXECUTED
4d17c: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4d180: 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(
4d182: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d186: 0080 5049 7300 oril #1346990848,%d0 <== NOT EXECUTED
4d18c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d18e: 4eb9 0004 8558 jsr 48558 <rtems_semaphore_create> <== NOT EXECUTED
4d194: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4d198: 4a80 tstl %d0 <== NOT EXECUTED
4d19a: 6600 0248 bnew 4d3e4 <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
4d19e: 280e movel %fp,%d4 <== NOT EXECUTED
4d1a0: 5184 subql #8,%d4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4d1a2: 263c 0004 a0d8 movel #303320,%d3 <== NOT EXECUTED
4d1a8: 2043 moveal %d3,%a0 <== NOT EXECUTED
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Thread_Enable_dispatch();
4d1aa: 45f9 0004 ac3a lea 4ac3a <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED
4d1b0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d1b2: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED
4d1b6: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4d1bc: 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;
4d1be: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED
4d1c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d1c6: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4d1ca: 4e92 jsr %a2@ <== NOT EXECUTED
4d1cc: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d1ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d1d0: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED
4d1d4: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4d1da: 4e90 jsr %a0@ <== NOT EXECUTED
_Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
4d1dc: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED
4d1e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d1e4: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4d1e8: 4e92 jsr %a2@ <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d1ea: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4d1ee: 1039 0006 0f08 moveb 60f08 <c.6472>,%d0 <== NOT EXECUTED
4d1f4: 49c0 extbl %d0 <== NOT EXECUTED
4d1f6: 2200 movel %d0,%d1 <== NOT EXECUTED
4d1f8: 5281 addql #1,%d1 <== NOT EXECUTED
4d1fa: 13c1 0006 0f08 moveb %d1,60f08 <c.6472> <== NOT EXECUTED
4d200: 727a moveq #122,%d1 <== NOT EXECUTED
4d202: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d204: 6600 fdb0 bnew 4cfb6 <fifo_open+0x3a> <== NOT EXECUTED
c = 'a';
4d208: 7061 moveq #97,%d0 <== NOT EXECUTED
4d20a: 13c0 0006 0f08 moveb %d0,60f08 <c.6472> <== NOT EXECUTED
4d210: 6000 fda4 braw 4cfb6 <fifo_open+0x3a> <== NOT EXECUTED
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d214: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4d218: 2200 movel %d0,%d1 <== NOT EXECUTED
4d21a: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->readerCounter);
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
4d21c: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d220: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
4d224: 4a80 tstl %d0 <== NOT EXECUTED
4d226: 6700 0120 beqw 4d348 <fifo_open+0x3cc> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d22a: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4d22e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d230: 5288 addql #1,%a0 <== NOT EXECUTED
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
4d232: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
4d236: 4bf9 0004 8934 lea 48934 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d23c: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED
4d240: 4a80 tstl %d0 <== NOT EXECUTED
4d242: 6600 fdc0 bnew 4d004 <fifo_open+0x88> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4d246: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d24a: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d24e: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4d254: 508f addql #8,%sp <== NOT EXECUTED
break;
}
PIPE_UNLOCK(pipe);
4d256: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d25a: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d25c: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d25e: 588f addql #4,%sp <== NOT EXECUTED
4d260: 6000 fdac braw 4d00e <fifo_open+0x92> <== NOT EXECUTED
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d264: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4d268: 2200 movel %d0,%d1 <== NOT EXECUTED
4d26a: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->writerCounter);
}
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
4d26c: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d270: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
4d274: 4a80 tstl %d0 <== NOT EXECUTED
4d276: 6700 00bc beqw 4d334 <fifo_open+0x3b8> <== NOT EXECUTED
4d27a: 4bf9 0004 8934 lea 48934 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
4d280: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d284: 6600 fd7e bnew 4d004 <fifo_open+0x88> <== NOT EXECUTED
4d288: 7001 moveq #1,%d0 <== NOT EXECUTED
4d28a: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d28c: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4d290: 6600 0138 bnew 4d3ca <fifo_open+0x44e> <== NOT EXECUTED
err = -ENXIO;
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
4d294: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
4d298: 263c 0004 efc4 movel #323524,%d3 <== NOT EXECUTED
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4d29e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d2a2: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d2a4: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d2a6: 42a7 clrl %sp@- <== NOT EXECUTED
4d2a8: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d2ac: 4e90 jsr %a0@ <== NOT EXECUTED
4d2ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d2b2: 4a80 tstl %d0 <== NOT EXECUTED
4d2b4: 6600 00ba bnew 4d370 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d2b8: 42a7 clrl %sp@- <== NOT EXECUTED
4d2ba: 42a7 clrl %sp@- <== NOT EXECUTED
4d2bc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d2c0: 4e93 jsr %a3@ <== NOT EXECUTED
4d2c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d2c6: 4a80 tstl %d0 <== NOT EXECUTED
4d2c8: 6600 00a6 bnew 4d370 <fifo_open+0x3f4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->readerCounter);
4d2cc: b8aa 0020 cmpl %a2@(32),%d4 <== NOT EXECUTED
4d2d0: 67cc beqs 4d29e <fifo_open+0x322> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d2d2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d2d6: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d2d8: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d2da: 588f addql #4,%sp <== NOT EXECUTED
4d2dc: 6000 fd30 braw 4d00e <fifo_open+0x92> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
err = -EINTR;
if (*pipep == NULL) {
if (err)
4d2e0: 4a8a tstl %a2 <== NOT EXECUTED
4d2e2: 6600 00a8 bnew 4d38c <fifo_open+0x410> <== NOT EXECUTED
pipe_free(pipe);
else
*pipep = pipe;
4d2e6: 288d movel %a5,%a4@ <== NOT EXECUTED
}
out:
pipe_unlock();
4d2e8: 4eba fbae jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
4d2ec: 6000 fcec braw 4cfda <fifo_open+0x5e> <== NOT EXECUTED
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
sc = rtems_semaphore_create(
4d2f0: 4879 0006 1e18 pea 61e18 <pipe_semaphore> <== NOT EXECUTED
4d2f6: 42a7 clrl %sp@- <== NOT EXECUTED
4d2f8: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> <== NOT EXECUTED
4d2fc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d300: 2f3c 5049 5045 movel #1346981957,%sp@- <== NOT EXECUTED
4d306: 4eb9 0004 8558 jsr 48558 <rtems_semaphore_create> <== NOT EXECUTED
4d30c: 2f39 0006 2510 movel 62510 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4d312: 2600 movel %d0,%d3 <== NOT EXECUTED
4d314: 4eb9 0004 8934 jsr 48934 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d31a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4d31e: 4a83 tstl %d3 <== NOT EXECUTED
4d320: 6700 00f8 beqw 4d41a <fifo_open+0x49e> <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d324: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d328: 200a movel %a2,%d0 <== NOT EXECUTED
4d32a: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d330: 4e5e unlk %fp <== NOT EXECUTED
4d332: 4e75 rts <== NOT EXECUTED
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
4d334: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d338: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d33c: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4d342: 508f addql #8,%sp <== NOT EXECUTED
4d344: 6000 ff34 braw 4d27a <fifo_open+0x2fe> <== NOT EXECUTED
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d348: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d34c: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d350: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4d356: 508f addql #8,%sp <== NOT EXECUTED
4d358: 6000 fed0 braw 4d22a <fifo_open+0x2ae> <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d35c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d360: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d364: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4d36a: 508f addql #8,%sp <== NOT EXECUTED
4d36c: 6000 fcfc braw 4d06a <fifo_open+0xee> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d370: 2f02 movel %d2,%sp@- <== NOT EXECUTED
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
4d372: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d376: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d378: 4eb9 0004 ceae jsr 4ceae <pipe_release> <== NOT EXECUTED
return err;
4d37e: 508f addql #8,%sp <== NOT EXECUTED
}
4d380: 200a movel %a2,%d0 <== NOT EXECUTED
4d382: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d388: 4e5e unlk %fp <== NOT EXECUTED
4d38a: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d38c: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED
4d390: 49f9 0004 eeac lea 4eeac <rtems_barrier_delete>,%a4 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
4d396: 47f9 0004 4aa0 lea 44aa0 <free>,%a3 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d39c: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4d39e: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED
4d3a2: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4d3a4: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED
4d3a8: 4eb9 0004 871c jsr 4871c <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4d3ae: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
4d3b0: 4e93 jsr %a3@ <== NOT EXECUTED
free(pipe);
4d3b2: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4d3b4: 4e93 jsr %a3@ <== NOT EXECUTED
4d3b6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d3ba: 4eba fadc jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d3be: 200a movel %a2,%d0 <== NOT EXECUTED
4d3c0: 4cee 3c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d3c6: 4e5e unlk %fp <== NOT EXECUTED
4d3c8: 4e75 rts <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d3ca: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
err = -ENXIO;
4d3ce: 347c fffa moveaw #-6,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d3d2: 4e95 jsr %a5@ <== NOT EXECUTED
err = -ENXIO;
goto out_error;
4d3d4: 588f addql #4,%sp <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d3d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d3d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d3da: 4eb9 0004 ceae jsr 4ceae <pipe_release> <== NOT EXECUTED
return err;
4d3e0: 508f addql #8,%sp <== NOT EXECUTED
4d3e2: 609c bras 4d380 <fifo_open+0x404> <== NOT EXECUTED
if (c ++ == 'z')
c = 'a';
return 0;
err_sem:
rtems_barrier_delete(pipe->writeBarrier);
4d3e4: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED
4d3e8: 45f9 0004 eeac lea 4eeac <rtems_barrier_delete>,%a2 <== NOT EXECUTED
4d3ee: 4e92 jsr %a2@ <== NOT EXECUTED
4d3f0: 588f addql #4,%sp <== NOT EXECUTED
err_wbar:
rtems_barrier_delete(pipe->readBarrier);
4d3f2: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d3f4: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
4d3f8: 4e92 jsr %a2@ <== NOT EXECUTED
4d3fa: 588f addql #4,%sp <== NOT EXECUTED
err_rbar:
free(pipe->Buffer);
4d3fc: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d3fe: 45f9 0004 4aa0 lea 44aa0 <free>,%a2 <== NOT EXECUTED
4d404: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4d406: 4e92 jsr %a2@ <== NOT EXECUTED
4d408: 588f addql #4,%sp <== NOT EXECUTED
err_buf:
free(pipe);
4d40a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d40c: 4e92 jsr %a2@ <== NOT EXECUTED
4d40e: 588f addql #4,%sp <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d410: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d414: 4eba fa82 jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
4d418: 60a4 bras 4d3be <fifo_open+0x442> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d41a: 2039 0006 1e18 movel 61e18 <pipe_semaphore>,%d0 <== NOT EXECUTED
4d420: 6000 fb7a braw 4cf9c <fifo_open+0x20> <== NOT EXECUTED
0004b2f0 <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)
{
4b2f0: 4e56 0000 linkw %fp,#0
4b2f4: 2f0b movel %a3,%sp@-
4b2f6: 266e 0008 moveal %fp@(8),%a3
4b2fa: 2f0a movel %a2,%sp@-
4b2fc: 246e 000c moveal %fp@(12),%a2
find_arg *fa = arg;
if ( strcmp( entry->type, fa->type ) != 0 ) {
4b300: 2f12 movel %a2@,%sp@-
4b302: 2f13 movel %a3@,%sp@-
4b304: 4eb9 0004 f7e4 jsr 4f7e4 <strcmp>
4b30a: 508f addql #8,%sp
4b30c: 4a80 tstl %d0
4b30e: 6614 bnes 4b324 <find_handler+0x34> <== NEVER TAKEN
return false;
} else {
fa->mount_h = entry->mount_h;
4b310: 256b 0004 0004 movel %a3@(4),%a2@(4)
return true;
}
}
4b316: 246e fff8 moveal %fp@(-8),%a2
4b31a: 266e fffc moveal %fp@(-4),%a3
4b31e: 4e5e unlk %fp
if ( strcmp( entry->type, fa->type ) != 0 ) {
return false;
} else {
fa->mount_h = entry->mount_h;
return true;
4b320: 7001 moveq #1,%d0
}
}
4b322: 4e75 rts
4b324: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4b328: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4b32c: 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;
4b32e: 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
000461d4 <fork>:
#include <sys/types.h>
#include <errno.h>
#include <rtems/seterr.h>
int fork( void )
{
461d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461d8: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
461de: 7258 moveq #88,%d1 <== NOT EXECUTED
461e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461e2: 70ff moveq #-1,%d0 <== NOT EXECUTED
461e4: 4e5e unlk %fp <== NOT EXECUTED
#include <errno.h>
#include <rtems/seterr.h>
int fork( void )
{
rtems_set_errno_and_return_minus_one( ENOSYS );
461e6: 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 0054 cmpl 60054 <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 1864 moveal 61864 <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 fbc4 jsr 4fbc4 <__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 fbc4 jsr 4fbc4 <__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 fb48 addql #1,5fb48 <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 fde4 cmpl 5fde4 <_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 eab6 moveal 5eab6 <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 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@-
42d34: 4eb9 0004 80b8 jsr 480b8 <_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 e320 moveal 5e320 <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 d364 pea 5d364 <rtems_status_assoc+0x168> <== NOT EXECUTED
42d5e: 4eb9 0004 3ba0 jsr 43ba0 <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
...
000443fc <free_user_env>:
* NOTE: this must be called with
* thread dispatching disabled!
*/
static void
free_user_env(void *venv)
{
443fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44400: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44402: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44404: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_user_env_t *env = (rtems_user_env_t*) venv ;
if (env != &rtems_global_user_env
44408: b5fc 0006 0544 cmpal #394564,%a2 <== NOT EXECUTED
4440e: 6728 beqs 44438 <free_user_env+0x3c> <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
44410: 486a 0004 pea %a2@(4) <== NOT EXECUTED
44414: 47f9 0004 3234 lea 43234 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
4441a: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_filesystem_freenode( &env->root_directory);
4441c: 486a 0018 pea %a2@(24) <== NOT EXECUTED
44420: 4e93 jsr %a3@ <== NOT EXECUTED
free(env);
}
}
44422: 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);
44426: 508f addql #8,%sp <== NOT EXECUTED
44428: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4442c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
44430: 4e5e unlk %fp <== NOT EXECUTED
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
rtems_filesystem_freenode( &env->root_directory);
free(env);
44432: 4ef9 0004 3248 jmp 43248 <free> <== NOT EXECUTED
}
}
44438: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4443c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
44440: 4e5e unlk %fp <== NOT EXECUTED
0005bb98 <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
5bb98: 4e56 0000 linkw %fp,#0
5bb9c: 202e 0008 movel %fp@(8),%d0
5bba0: 2f0a movel %a2,%sp@-
5bba2: 2f02 movel %d2,%sp@-
5bba4: 242e 000c movel %fp@(12),%d2
rtems_libio_t *iop;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
5bba8: 6770 beqs 5bc1a <fstat+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
5bbaa: b0b9 0005 e314 cmpl 5e314 <rtems_libio_number_iops>,%d0
5bbb0: 644e bccs 5bc00 <fstat+0x68> <== NEVER TAKEN
5bbb2: 2200 movel %d0,%d1
5bbb4: ed88 lsll #6,%d0
5bbb6: e789 lsll #3,%d1
5bbb8: 2479 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a2
5bbbe: 9081 subl %d1,%d0
5bbc0: d5c0 addal %d0,%a2
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5bbc2: 202a 0014 movel %a2@(20),%d0
5bbc6: 0280 0000 0100 andil #256,%d0
5bbcc: 6732 beqs 5bc00 <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) );
5bbce: 4878 0046 pea 46 <DBL_MANT_DIG+0x11>
5bbd2: 42a7 clrl %sp@-
5bbd4: 2f02 movel %d2,%sp@-
5bbd6: 4eb9 0004 f200 jsr 4f200 <memset>
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5bbdc: 206a 0020 moveal %a2@(32),%a0
5bbe0: 45ea 0018 lea %a2@(24),%a2
5bbe4: 4fef 000c lea %sp@(12),%sp
5bbe8: 2d42 000c movel %d2,%fp@(12)
}
5bbec: 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 );
5bbf0: 2d4a 0008 movel %a2,%fp@(8)
}
5bbf4: 246e fffc moveal %fp@(-4),%a2
5bbf8: 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 );
5bbfa: 2268 0018 moveal %a0@(24),%a1
5bbfe: 4ed1 jmp %a1@
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5bc00: 4eb9 0004 e8e4 jsr 4e8e4 <__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 );
}
5bc06: 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);
5bc0a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bc0c: 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 );
}
5bc0e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5bc12: 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);
5bc14: 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 );
}
5bc16: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bc18: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5bc1a: 4eb9 0004 e8e4 jsr 4e8e4 <__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 );
}
5bc20: 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 );
5bc24: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bc26: 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 );
}
5bc28: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bc2a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5bc2e: 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 );
5bc30: 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 0054 cmpl 60054 <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 1864 moveal 61864 <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 fbc4 jsr 4fbc4 <__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 fbc4 jsr 4fbc4 <__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
...
0004af20 <ftruncate>:
int ftruncate(
int fd,
off_t length
)
{
4af20: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4af24: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4af28: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
4af2a: b0b9 0005 e314 cmpl 5e314 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4af30: 6478 bccs 4afaa <ftruncate+0x8a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
4af32: 2200 movel %d0,%d1 <== NOT EXECUTED
4af34: ed88 lsll #6,%d0 <== NOT EXECUTED
4af36: e789 lsll #3,%d1 <== NOT EXECUTED
4af38: 2479 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a2 <== NOT EXECUTED
4af3e: 9081 subl %d1,%d0 <== NOT EXECUTED
4af40: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4af42: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4af46: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED
4af4c: 675c beqs 4afaa <ftruncate+0x8a> <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4af4e: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED
4af54: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED
4af5a: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED
4af60: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4af66: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4af6a: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4af70: 486e ffec pea %fp@(-20) <== NOT EXECUTED
4af74: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4af78: 4e90 jsr %a0@ <== NOT EXECUTED
4af7a: 588f addql #4,%sp <== NOT EXECUTED
4af7c: 7201 moveq #1,%d1 <== NOT EXECUTED
4af7e: b280 cmpl %d0,%d1 <== NOT EXECUTED
4af80: 6754 beqs 4afd6 <ftruncate+0xb6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4af82: 7004 moveq #4,%d0 <== NOT EXECUTED
4af84: c0aa 0014 andl %a2@(20),%d0 <== NOT EXECUTED
4af88: 6736 beqs 4afc0 <ftruncate+0xa0> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4af8a: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
4af8e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4af92: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4af96: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4af98: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED
4af9c: 4e90 jsr %a0@ <== NOT EXECUTED
}
4af9e: 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 );
4afa2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4afa6: 4e5e unlk %fp <== NOT EXECUTED
4afa8: 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);
4afaa: 4eb9 0004 e8e4 jsr 4e8e4 <__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 );
}
4afb0: 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);
4afb4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4afb6: 7209 moveq #9,%d1 <== NOT EXECUTED
4afb8: 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 );
}
4afba: 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);
4afbc: 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 );
}
4afbe: 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 );
4afc0: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4afc6: 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 );
4afca: 2040 moveal %d0,%a0 <== NOT EXECUTED
4afcc: 7216 moveq #22,%d1 <== NOT EXECUTED
4afce: 70ff moveq #-1,%d0 <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4afd0: 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 );
4afd2: 2081 movel %d1,%a0@ <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4afd4: 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 );
4afd6: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4afdc: 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 );
4afe0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4afe2: 7215 moveq #21,%d1 <== NOT EXECUTED
4afe4: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4afe6: 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 );
4afe8: 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 e91c jsr 4e91c <__errno> <== NOT EXECUTED
}
42e7e: 4e5e unlk %fp <== NOT EXECUTED
#include <errno.h>
/* This is a non-functional stub */
int ftrylockfile(FILE* file)
{
rtems_set_errno_and_return_minus_one( ENOTSUP );
42e80: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
42e82: 70ff moveq #-1,%d0 <== NOT EXECUTED
#include <errno.h>
/* This is a non-functional stub */
int ftrylockfile(FILE* file)
{
rtems_set_errno_and_return_minus_one( ENOTSUP );
42e84: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
}
00042e8c <funlockfile>:
#include <stdio.h>
/* This is a non-functional stub */
void funlockfile(FILE* file)
{
42e8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
42e90: 4e5e unlk %fp <== NOT EXECUTED
00042f50 <getchark>:
#include <rtems.h>
#include <rtems/bspIo.h>
int getchark(void)
{
42f50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( BSP_poll_char )
42f54: 2279 0005 f628 moveal 5f628 <BSP_poll_char>,%a1 <== NOT EXECUTED
42f5a: 4a89 tstl %a1 <== NOT EXECUTED
42f5c: 6704 beqs 42f62 <getchark+0x12> <== NOT EXECUTED
return (*BSP_poll_char)();
return -1;
}
42f5e: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/bspIo.h>
int getchark(void)
{
if ( BSP_poll_char )
return (*BSP_poll_char)();
42f60: 4ed1 jmp %a1@ <== NOT EXECUTED
return -1;
}
42f62: 70ff moveq #-1,%d0 <== NOT EXECUTED
42f64: 4e5e unlk %fp <== NOT EXECUTED
0005d7f0 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
5d7f0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5d7f4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5d7f8: 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 );
5d7fa: b0b9 0006 07f4 cmpl 607f4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
5d800: 6464 bccs 5d866 <getdents+0x76> <== NOT EXECUTED
5d802: 2200 movel %d0,%d1 <== NOT EXECUTED
5d804: ed88 lsll #6,%d0 <== NOT EXECUTED
5d806: e789 lsll #3,%d1 <== NOT EXECUTED
5d808: 2479 0006 2114 moveal 62114 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5d80e: 9081 subl %d1,%d0 <== NOT EXECUTED
5d810: d5c0 addal %d0,%a2 <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
5d812: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED
5d818: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED
5d81e: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED
5d824: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d82a: 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;
5d82e: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d834: 486e ffec pea %fp@(-20) <== NOT EXECUTED
5d838: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
5d83c: 4e90 jsr %a0@ <== NOT EXECUTED
5d83e: 588f addql #4,%sp <== NOT EXECUTED
5d840: 7201 moveq #1,%d1 <== NOT EXECUTED
5d842: b280 cmpl %d0,%d1 <== NOT EXECUTED
5d844: 6624 bnes 5d86a <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 );
5d846: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
5d84a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5d84e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5d852: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5d854: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
5d858: 4e90 jsr %a0@ <== NOT EXECUTED
}
5d85a: 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 );
5d85e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
5d862: 4e5e unlk %fp <== NOT EXECUTED
5d864: 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 );
5d866: 95ca subal %a2,%a2 <== NOT EXECUTED
5d868: 60a8 bras 5d812 <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 );
5d86a: 4eb9 0004 fc90 jsr 4fc90 <__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 );
}
5d870: 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 );
5d874: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d876: 7214 moveq #20,%d1 <== NOT EXECUTED
5d878: 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 );
}
5d87a: 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 );
5d87c: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* Return the number of bytes that were actually transfered as a result
* of the read attempt.
*/
return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len );
}
00043348 <getgid>:
/*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getgid( void )
{
43348: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Gid;
4334c: 2079 0005 fff0 moveal 5fff0 <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 11a0 lea 511a0 <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 f687 pea 5f687 <_global_impure_ptr+0xbf> <== NOT EXECUTED
438e6: 4879 0005 ee18 pea 5ee18 <rtems_status_assoc+0x21a> <== NOT EXECUTED
438ec: 4eb9 0005 0020 jsr 50020 <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 f922 jsr 4f922 <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 f922 jsr 4f922 <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43956: 4eb9 0004 f7d4 jsr 4f7d4 <__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 f7d4 jsr 4f7d4 <__errno> <== NOT EXECUTED
43976: 7416 moveq #22,%d2 <== NOT EXECUTED
43978: 2040 moveal %d0,%a0 <== NOT EXECUTED
4397a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4397c: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
4397e: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
43984: 4e5e unlk %fp <== NOT EXECUTED
00043c64 <getgrent>:
struct group *getgrent(void)
{
43c64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (group_fp == NULL)
43c68: 2039 0006 0df0 movel 60df0 <group_fp>,%d0 <== NOT EXECUTED
43c6e: 6606 bnes 43c76 <getgrent+0x12> <== NOT EXECUTED
return NULL;
43c70: 4280 clrl %d0 <== NOT EXECUTED
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
return NULL;
return &grent;
}
43c72: 4e5e unlk %fp <== NOT EXECUTED
43c74: 4e75 rts <== NOT EXECUTED
struct group *getgrent(void)
{
if (group_fp == NULL)
return NULL;
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
43c76: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43c7a: 4879 0006 0e02 pea 60e02 <grbuf> <== NOT EXECUTED
43c80: 4879 0006 0df4 pea 60df4 <grent> <== NOT EXECUTED
43c86: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c88: 4eba f918 jsr %pc@(435a2 <scangr>) <== NOT EXECUTED
43c8c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return NULL;
return &grent;
}
43c90: 4e5e unlk %fp <== NOT EXECUTED
struct group *getgrent(void)
{
if (group_fp == NULL)
return NULL;
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
return NULL;
43c92: 4a80 tstl %d0 <== NOT EXECUTED
43c94: 56c0 sne %d0 <== NOT EXECUTED
43c96: 49c0 extbl %d0 <== NOT EXECUTED
43c98: 0280 0006 0df4 andil #396788,%d0 <== NOT EXECUTED
return &grent;
}
00043c28 <getgrgid>:
gid_t gid
)
{
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
43c28: 4280 clrl %d0 <== NOT EXECUTED
}
struct group *getgrgid(
gid_t gid
)
{
43c2a: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
43c2e: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
43c32: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43c36: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43c3a: 4879 0006 0e02 pea 60e02 <grbuf> <== NOT EXECUTED
43c40: 4879 0006 0df4 pea 60df4 <grent> <== NOT EXECUTED
43c46: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c48: 4eb9 0004 3c02 jsr 43c02 <getgrgid_r> <== NOT EXECUTED
43c4e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43c52: 4a80 tstl %d0 <== NOT EXECUTED
43c54: 6608 bnes 43c5e <getgrgid+0x36> <== NOT EXECUTED
return NULL;
return p;
43c56: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43c5a: 4e5e unlk %fp <== NOT EXECUTED
43c5c: 4e75 rts <== NOT EXECUTED
)
{
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
return NULL;
43c5e: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
43c60: 4e5e unlk %fp <== NOT EXECUTED
00043c02 <getgrgid_r>:
char *buffer,
size_t bufsize,
struct group **result
)
{
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
43c02: 4280 clrl %d0 <== NOT EXECUTED
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
43c04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
43c08: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
43c0c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
43c10: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43c14: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43c18: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
43c1c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c1e: 42a7 clrl %sp@- <== NOT EXECUTED
43c20: 4eba fc92 jsr %pc@(438b4 <getgr_r>) <== NOT EXECUTED
}
43c24: 4e5e unlk %fp <== NOT EXECUTED
00043bca <getgrnam>:
struct group *getgrnam(
const char *name
)
{
43bca: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
43bce: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43bd2: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43bd6: 4879 0006 0e02 pea 60e02 <grbuf> <== NOT EXECUTED
43bdc: 4879 0006 0df4 pea 60df4 <grent> <== NOT EXECUTED
43be2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43be6: 4eb9 0004 3ba8 jsr 43ba8 <getgrnam_r> <== NOT EXECUTED
43bec: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43bf0: 4a80 tstl %d0 <== NOT EXECUTED
43bf2: 6608 bnes 43bfc <getgrnam+0x32> <== NOT EXECUTED
return NULL;
return p;
43bf4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43bf8: 4e5e unlk %fp <== NOT EXECUTED
43bfa: 4e75 rts <== NOT EXECUTED
)
{
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
return NULL;
43bfc: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
43bfe: 4e5e unlk %fp <== NOT EXECUTED
00043ba8 <getgrnam_r>:
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
43ba8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getgr_r(name, 0, grp, buffer, bufsize, result);
43bac: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
43bb0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
43bb4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43bb8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43bbc: 42a7 clrl %sp@- <== NOT EXECUTED
43bbe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43bc2: 4eba fcf0 jsr %pc@(438b4 <getgr_r>) <== NOT EXECUTED
}
43bc6: 4e5e unlk %fp <== NOT EXECUTED
0004335c <getgroups>:
int gidsetsize __attribute__((unused)),
gid_t grouplist[] __attribute__((unused))
)
{
return 0; /* no supplemental group ids */
}
4335c: 4280 clrl %d0 <== NOT EXECUTED
int getgroups(
int gidsetsize __attribute__((unused)),
gid_t grouplist[] __attribute__((unused))
)
{
4335e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; /* no supplemental group ids */
}
43362: 4e5e unlk %fp <== NOT EXECUTED
...
000460f0 <getitimer>:
int getitimer(
int which,
struct itimerval *value
)
{
460f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !value )
460f4: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
460f8: 672c beqs 46126 <getitimer+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
switch ( which ) {
460fa: 7002 moveq #2,%d0 <== NOT EXECUTED
460fc: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
46100: 6412 bccs 46114 <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 );
46102: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED
}
46108: 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 );
4610a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4610c: 7016 moveq #22,%d0 <== NOT EXECUTED
4610e: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
46110: 70ff moveq #-1,%d0 <== NOT EXECUTED
46112: 4e75 rts <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
46114: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED
4611a: 7258 moveq #88,%d1 <== NOT EXECUTED
4611c: 2040 moveal %d0,%a0 <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4611e: 70ff moveq #-1,%d0 <== NOT EXECUTED
46120: 4e5e unlk %fp <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
46122: 2081 movel %d1,%a0@ <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46124: 4e75 rts <== NOT EXECUTED
int which,
struct itimerval *value
)
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
46126: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4612c: 4e5e unlk %fp <== NOT EXECUTED
int which,
struct itimerval *value
)
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
4612e: 2040 moveal %d0,%a0 <== NOT EXECUTED
46130: 700e moveq #14,%d0 <== NOT EXECUTED
46132: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46134: 70ff moveq #-1,%d0 <== NOT EXECUTED
000433cc <getlogin>:
* 4.2.4 Get User Name, P1003.1b-1993, p. 87
*
* NOTE: P1003.1c/D10, p. 49 adds getlogin_r().
*/
char *getlogin( void )
{
433cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
(void) getlogin_r( _POSIX_types_Getlogin_buffer, LOGIN_NAME_MAX );
433d0: 2079 0005 fff0 moveal 5fff0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
433d6: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
433da: 41e8 003a lea %a0@(58),%a0 <== NOT EXECUTED
433de: 2f08 movel %a0,%sp@- <== NOT EXECUTED
433e0: 4eb9 0004 3368 jsr 43368 <getlogin_r> <== NOT EXECUTED
return _POSIX_types_Getlogin_buffer;
}
433e6: 2039 0005 fff0 movel 5fff0 <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 ef02 movel #388866,%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 1710 jsr 51710 <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
...
0005bc50 <getpid>:
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
5bc50: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
5bc52: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Local_node;
}
5bc56: 4e5e unlk %fp <== NOT EXECUTED
00043424 <getppid>:
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getppid( void )
{
43424: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Ppid;
}
43428: 2039 0006 0dec movel 60dec <_POSIX_types_Ppid>,%d0 <== NOT EXECUTED
4342e: 4e5e unlk %fp <== NOT EXECUTED
...
00043988 <getpw_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43988: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
4398c: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ <== NOT EXECUTED
43990: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
43994: 47fa fd24 lea %pc@(436ba <scanpw>),%a3 <== NOT EXECUTED
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
goto error_einval;
if (name) {
match = (strcmp(pwd->pw_name, name) == 0);
43998: 49f9 0005 11a0 lea 511a0 <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 f687 pea 5f687 <_global_impure_ptr+0xbf> <== NOT EXECUTED
439ba: 4879 0005 eda3 pea 5eda3 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
439c0: 4eb9 0005 0020 jsr 50020 <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 f922 jsr 4f922 <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 f922 jsr 4f922 <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43a2c: 4eb9 0004 f7d4 jsr 4f7d4 <__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 f7d4 jsr 4f7d4 <__errno> <== NOT EXECUTED
43a4a: 7816 moveq #22,%d4 <== NOT EXECUTED
43a4c: 2040 moveal %d0,%a0 <== NOT EXECUTED
43a4e: 70ff moveq #-1,%d0 <== NOT EXECUTED
43a50: 2084 movel %d4,%a0@ <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
rtems_set_errno_and_return_minus_one( EINVAL );
}
43a52: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
43a58: 4e5e unlk %fp <== NOT EXECUTED
00043b18 <getpwent>:
struct passwd *getpwent(void)
{
43b18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (passwd_fp == NULL)
43b1c: 2039 0006 0eca movel 60eca <passwd_fp>,%d0 <== NOT EXECUTED
43b22: 6606 bnes 43b2a <getpwent+0x12> <== NOT EXECUTED
return NULL;
43b24: 4280 clrl %d0 <== NOT EXECUTED
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
return NULL;
return &pwent;
}
43b26: 4e5e unlk %fp <== NOT EXECUTED
43b28: 4e75 rts <== NOT EXECUTED
struct passwd *getpwent(void)
{
if (passwd_fp == NULL)
return NULL;
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
43b2a: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43b2e: 4879 0006 0eea pea 60eea <pwbuf> <== NOT EXECUTED
43b34: 4879 0006 0ece pea 60ece <pwent> <== NOT EXECUTED
43b3a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43b3c: 4eba fb7c jsr %pc@(436ba <scanpw>) <== NOT EXECUTED
43b40: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return NULL;
return &pwent;
}
43b44: 4e5e unlk %fp <== NOT EXECUTED
struct passwd *getpwent(void)
{
if (passwd_fp == NULL)
return NULL;
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
return NULL;
43b46: 4a80 tstl %d0 <== NOT EXECUTED
43b48: 56c0 sne %d0 <== NOT EXECUTED
43b4a: 49c0 extbl %d0 <== NOT EXECUTED
43b4c: 0280 0006 0ece andil #397006,%d0 <== NOT EXECUTED
return &pwent;
}
00043a7e <getpwnam>:
struct passwd *getpwnam(
const char *name
)
{
43a7e: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct passwd *p;
if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))
43a82: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43a86: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43a8a: 4879 0006 0eea pea 60eea <pwbuf> <== NOT EXECUTED
43a90: 4879 0006 0ece pea 60ece <pwent> <== NOT EXECUTED
43a96: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43a9a: 4eb9 0004 3a5c jsr 43a5c <getpwnam_r> <== NOT EXECUTED
43aa0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43aa4: 4a80 tstl %d0 <== NOT EXECUTED
43aa6: 6608 bnes 43ab0 <getpwnam+0x32> <== NOT EXECUTED
return NULL;
return p;
43aa8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43aac: 4e5e unlk %fp <== NOT EXECUTED
43aae: 4e75 rts <== NOT EXECUTED
)
{
struct passwd *p;
if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))
return NULL;
43ab0: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
43ab2: 4e5e unlk %fp <== NOT EXECUTED
00043a5c <getpwnam_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43a5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpw_r(name, 0, pwd, buffer, bufsize, result);
43a60: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
43a64: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
43a68: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43a6c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43a70: 42a7 clrl %sp@- <== NOT EXECUTED
43a72: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43a76: 4eba ff10 jsr %pc@(43988 <getpw_r>) <== NOT EXECUTED
}
43a7a: 4e5e unlk %fp <== NOT EXECUTED
00043adc <getpwuid>:
uid_t uid
)
{
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
43adc: 4280 clrl %d0 <== NOT EXECUTED
}
struct passwd *getpwuid(
uid_t uid
)
{
43ade: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
43ae2: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
43ae6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43aea: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43aee: 4879 0006 0eea pea 60eea <pwbuf> <== NOT EXECUTED
43af4: 4879 0006 0ece pea 60ece <pwent> <== NOT EXECUTED
43afa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43afc: 4eb9 0004 3ab6 jsr 43ab6 <getpwuid_r> <== NOT EXECUTED
43b02: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43b06: 4a80 tstl %d0 <== NOT EXECUTED
43b08: 6608 bnes 43b12 <getpwuid+0x36> <== NOT EXECUTED
return NULL;
return p;
43b0a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
43b0e: 4e5e unlk %fp <== NOT EXECUTED
43b10: 4e75 rts <== NOT EXECUTED
)
{
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
return NULL;
43b12: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
43b14: 4e5e unlk %fp <== NOT EXECUTED
00043ab6 <getpwuid_r>:
char *buffer,
size_t bufsize,
struct passwd **result
)
{
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
43ab6: 4280 clrl %d0 <== NOT EXECUTED
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43ab8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
43abc: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
43ac0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
43ac4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43ac8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43acc: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
43ad0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43ad2: 42a7 clrl %sp@- <== NOT EXECUTED
43ad4: 4eba feb2 jsr %pc@(43988 <getpw_r>) <== NOT EXECUTED
}
43ad8: 4e5e unlk %fp <== NOT EXECUTED
00043048 <getrusage>:
#include <rtems.h>
#include <rtems/seterr.h>
int getrusage(int who, struct rusage *usage)
{
43048: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4304c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
43050: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
43054: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
struct timespec uptime;
struct timeval rtime;
if ( !usage )
43058: 4a8a tstl %a2 <== NOT EXECUTED
4305a: 6772 beqs 430ce <getrusage+0x86> <== NOT EXECUTED
* RTEMS only has a single process so there are no children.
* The single process has been running since the system
* was booted and since there is no distinction between system
* and user time, we will just report the uptime.
*/
if (who == RUSAGE_SELF) {
4305c: 4a80 tstl %d0 <== NOT EXECUTED
4305e: 6736 beqs 43096 <getrusage+0x4e> <== NOT EXECUTED
usage->ru_stime = rtime;
return 0;
}
if (who == RUSAGE_CHILDREN) {
43060: 72ff moveq #-1,%d1 <== NOT EXECUTED
43062: b280 cmpl %d0,%d1 <== NOT EXECUTED
43064: 6718 beqs 4307e <getrusage+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
}
rtems_set_errno_and_return_minus_one( EINVAL );
43066: 4eb9 0004 ebb8 jsr 4ebb8 <__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 ebb8 jsr 4ebb8 <__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 60a0 jsr 460a0 <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 ebb8 jsr 4ebb8 <__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 7348 jsr 47348 <_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 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
42dde: 720e moveq #14,%d1 <== NOT EXECUTED
42de0: 2040 moveal %d0,%a0 <== NOT EXECUTED
42de2: 70ff moveq #-1,%d0 <== NOT EXECUTED
* with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X
* do it. This puts us in good company.
*/
return 0;
}
42de4: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
void * __tz __attribute__((unused))
)
{
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
rtems_set_errno_and_return_minus_one( EFAULT );
42dea: 2081 movel %d1,%a0@ <== NOT EXECUTED
* with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X
* do it. This puts us in good company.
*/
return 0;
}
42dec: 4e5e unlk %fp <== NOT EXECUTED
00043d80 <getuid>:
/*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t getuid( void )
{
43d80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Uid;
43d84: 2079 0005 fff0 moveal 5fff0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
43d8a: 4e5e unlk %fp <== NOT EXECUTED
43d8c: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
...
0004dcae <imfs_dir_close>:
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4dcae: 4280 clrl %d0 <== NOT EXECUTED
*/
int imfs_dir_close(
rtems_libio_t *iop
)
{
4dcb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4dcb4: 4e5e unlk %fp <== NOT EXECUTED
0004dd48 <imfs_dir_fstat>:
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dd48: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4dd4c: 4280 clrl %d0 <== NOT EXECUTED
4dd4e: 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;
4dd50: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dd54: 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;
4dd58: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4dd5a: 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));
4dd5e: 2408 movel %a0,%d2 <== NOT EXECUTED
4dd60: 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;
4dd66: 2368 0034 0008 movel %a0@(52),%a1@(8) <== NOT EXECUTED
buf->st_mode = the_jnode->st_mode;
4dd6c: 2368 002e 000c movel %a0@(46),%a1@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4dd72: 3368 0032 0010 movew %a0@(50),%a1@(16) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4dd78: 3368 0038 0012 movew %a0@(56),%a1@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4dd7e: 3368 003a 0014 movew %a0@(58),%a1@(20) <== NOT EXECUTED
buf->st_rdev = 0ll;
buf->st_blksize = 0;
4dd84: 42a9 003e clrl %a1@(62) <== NOT EXECUTED
buf->st_blocks = 0;
buf->st_atime = the_jnode->stat_atime;
4dd88: 2368 003c 0026 movel %a0@(60),%a1@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4dd8e: 2368 0040 002e movel %a0@(64),%a1@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4dd94: 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;
4dd9a: 2280 movel %d0,%a1@ <== NOT EXECUTED
4dd9c: 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;
4dda0: 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;
4dda4: 2340 0016 movel %d0,%a1@(22) <== NOT EXECUTED
4dda8: 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;
4ddac: 2340 001e movel %d0,%a1@(30) <== NOT EXECUTED
4ddb0: 2341 0022 movel %d1,%a1@(34) <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4ddb4: 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 );
4ddb8: b488 cmpl %a0,%d2 <== NOT EXECUTED
4ddba: 6724 beqs 4dde0 <imfs_dir_fstat+0x98> <== NOT EXECUTED
4ddbc: 4280 clrl %d0 <== NOT EXECUTED
4ddbe: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4ddc4: 2800 movel %d0,%d4 <== NOT EXECUTED
4ddc6: 2601 movel %d1,%d3 <== NOT EXECUTED
!rtems_chain_is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
4ddc8: 2050 moveal %a0@,%a0 <== NOT EXECUTED
4ddca: 4285 clrl %d5 <== NOT EXECUTED
4ddcc: 0681 0000 0110 addil #272,%d1 <== NOT EXECUTED
4ddd2: 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 );
4ddd4: b488 cmpl %a0,%d2 <== NOT EXECUTED
4ddd6: 66ec bnes 4ddc4 <imfs_dir_fstat+0x7c> <== NOT EXECUTED
4ddd8: 2344 001e movel %d4,%a1@(30) <== NOT EXECUTED
4dddc: 2343 0022 movel %d3,%a1@(34) <== NOT EXECUTED
buf->st_size = buf->st_size + sizeof( struct dirent );
}
return 0;
}
4dde0: 4280 clrl %d0 <== NOT EXECUTED
4dde2: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED
4dde6: 4e5e unlk %fp <== NOT EXECUTED
0004dcb8 <imfs_dir_lseek>:
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
switch( whence ) {
4dcb8: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_off64_t imfs_dir_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4dcba: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4dcbe: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED
4dcc2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch( whence ) {
4dcc6: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED
4dcca: 6422 bccs 4dcee <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 );
4dccc: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4dcd2: 2440 moveal %d0,%a2 <== NOT EXECUTED
4dcd4: 7016 moveq #22,%d0 <== NOT EXECUTED
4dcd6: 307c ffff moveaw #-1,%a0 <== NOT EXECUTED
4dcda: 327c ffff moveaw #-1,%a1 <== NOT EXECUTED
4dcde: 2480 movel %d0,%a2@ <== NOT EXECUTED
break;
}
return 0;
}
4dce0: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
4dce6: 2008 movel %a0,%d0 <== NOT EXECUTED
4dce8: 2209 movel %a1,%d1 <== NOT EXECUTED
4dcea: 4e5e unlk %fp <== NOT EXECUTED
4dcec: 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)) *
4dcee: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
4dcf2: 741c moveq #28,%d2 <== NOT EXECUTED
4dcf4: 42a7 clrl %sp@- <== NOT EXECUTED
4dcf6: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4dcfa: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4dcfe: 4eb9 0005 a780 jsr 5a780 <__divdi3> <== NOT EXECUTED
4dd04: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4dd08: 2c01 movel %d1,%d6 <== NOT EXECUTED
4dd0a: e4ae lsrl %d2,%d6 <== NOT EXECUTED
4dd0c: 2406 movel %d6,%d2 <== NOT EXECUTED
4dd0e: 2601 movel %d1,%d3 <== NOT EXECUTED
4dd10: 721c moveq #28,%d1 <== NOT EXECUTED
4dd12: e988 lsll #4,%d0 <== NOT EXECUTED
4dd14: e98b lsll #4,%d3 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
4dd16: 91c8 subal %a0,%a0 <== NOT EXECUTED
4dd18: 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)) *
4dd1a: 8480 orl %d0,%d2 <== NOT EXECUTED
4dd1c: 2003 movel %d3,%d0 <== NOT EXECUTED
4dd1e: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
4dd20: 2802 movel %d2,%d4 <== NOT EXECUTED
4dd22: 2a03 movel %d3,%d5 <== NOT EXECUTED
4dd24: e98c lsll #4,%d4 <== NOT EXECUTED
4dd26: e98d lsll #4,%d5 <== NOT EXECUTED
4dd28: 8880 orl %d0,%d4 <== NOT EXECUTED
4dd2a: 2002 movel %d2,%d0 <== NOT EXECUTED
4dd2c: 2203 movel %d3,%d1 <== NOT EXECUTED
4dd2e: d285 addl %d5,%d1 <== NOT EXECUTED
4dd30: d184 addxl %d4,%d0 <== NOT EXECUTED
4dd32: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
4dd36: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
}
4dd3a: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
4dd40: 2008 movel %a0,%d0 <== NOT EXECUTED
4dd42: 2209 movel %a1,%d1 <== NOT EXECUTED
4dd44: 4e5e unlk %fp <== NOT EXECUTED
0004db88 <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 )
4db88: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4db8a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4db8e: 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 )
4db92: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4db96: 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 )
4db98: b0a9 0048 cmpl %a1@(72),%d0 <== NOT EXECUTED
4db9c: 6708 beqs 4dba6 <imfs_dir_open+0x1e> <== NOT EXECUTED
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
}
4db9e: 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 */
4dba0: 70ff moveq #-1,%d0 <== NOT EXECUTED
iop->offset = 0;
return 0;
}
4dba2: 4e5e unlk %fp <== NOT EXECUTED
4dba4: 4e75 rts <== NOT EXECUTED
if ( the_jnode->type != IMFS_DIRECTORY )
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
4dba6: 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;
4dba8: 4281 clrl %d1 <== NOT EXECUTED
4dbaa: 4282 clrl %d2 <== NOT EXECUTED
4dbac: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
4dbb0: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
return 0;
}
4dbb4: 241f movel %sp@+,%d2 <== NOT EXECUTED
4dbb6: 4e5e unlk %fp <== NOT EXECUTED
0004dbba <imfs_dir_read>:
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dbba: 4e56 fec4 linkw %fp,#-316 <== NOT EXECUTED
4dbbe: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4dbc2: 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;
4dbc6: 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 );
4dbca: 2a08 movel %a0,%d5 <== NOT EXECUTED
4dbcc: 0685 0000 0050 addil #80,%d5 <== NOT EXECUTED
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4dbd2: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4dbd6: 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 ) )
4dbda: ba8a cmpl %a2,%d5 <== NOT EXECUTED
4dbdc: 6700 00c4 beqw 4dca2 <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);
4dbe0: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4dbe6: 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;
4dbea: 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);
4dbee: 2004 movel %d4,%d0 <== NOT EXECUTED
4dbf0: e18c lsll #8,%d4 <== NOT EXECUTED
4dbf2: e988 lsll #4,%d0 <== NOT EXECUTED
4dbf4: d880 addl %d0,%d4 <== NOT EXECUTED
4dbf6: d883 addl %d3,%d4 <== NOT EXECUTED
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4dbf8: 4a84 tstl %d4 <== NOT EXECUTED
4dbfa: 6f00 00a6 blew 4dca2 <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 );
4dbfe: 49ee fef0 lea %fp@(-272),%a4 <== NOT EXECUTED
4dc02: 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 (
4dc06: 4282 clrl %d2 <== NOT EXECUTED
4dc08: 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(
4dc0a: 4bf9 0004 f190 lea 4f190 <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 );
4dc10: 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 ) {
4dc14: b483 cmpl %d3,%d2 <== NOT EXECUTED
4dc16: 6c1c bges 4dc34 <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;
4dc18: 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(
4dc1a: 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 (
4dc20: b484 cmpl %d4,%d2 <== NOT EXECUTED
4dc22: 6c04 bges 4dc28 <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 ) ){
4dc24: ba8a cmpl %a2,%d5 <== NOT EXECUTED
4dc26: 66ec bnes 4dc14 <imfs_dir_read+0x5a> <== NOT EXECUTED
4dc28: 2006 movel %d6,%d0 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4dc2a: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4dc30: 4e5e unlk %fp <== NOT EXECUTED
4dc32: 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 );
4dc34: 2e0a movel %a2,%d7 <== NOT EXECUTED
4dc36: 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;
4dc3c: 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 );
4dc42: 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 );
4dc46: 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 );
4dc48: 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;
4dc4c: 2d42 fef8 movel %d2,%fp@(-264) <== NOT EXECUTED
4dc50: 5bc0 smi %d0 <== NOT EXECUTED
4dc52: 49c0 extbl %d0 <== NOT EXECUTED
4dc54: 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 );
4dc58: 4eb9 0004 fd3c jsr 4fd3c <strlen> <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4dc5e: 2e87 movel %d7,%sp@ <== NOT EXECUTED
4dc60: 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 );
4dc64: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4dc68: 4eb9 0004 f890 jsr 4f890 <strcpy> <== NOT EXECUTED
memcpy(
4dc6e: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
4dc72: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4dc76: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4dc78: 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 );
4dc7c: 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(
4dc82: 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 );
4dc84: 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);
4dc88: 4280 clrl %d0 <== NOT EXECUTED
4dc8a: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4dc90: d3ab 0010 addl %d1,%a3@(16) <== NOT EXECUTED
4dc94: 2e2b 000c movel %a3@(12),%d7 <== NOT EXECUTED
4dc98: df80 addxl %d0,%d7 <== NOT EXECUTED
4dc9a: 2747 000c movel %d7,%a3@(12) <== NOT EXECUTED
4dc9e: 6000 ff78 braw 4dc18 <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;
4dca2: 4280 clrl %d0 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4dca4: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4dcaa: 4e5e unlk %fp <== NOT EXECUTED
0004ddea <imfs_dir_rmnod>:
int imfs_dir_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4ddea: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ddee: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4ddf2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
4ddf4: 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 );
4ddf6: 200a movel %a2,%d0 <== NOT EXECUTED
4ddf8: 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 ) )
4ddfe: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED
4de02: 6642 bnes 4de46 <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 )
4de04: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4de08: b5e8 001c cmpal %a0@(28),%a2 <== NOT EXECUTED
4de0c: 6722 beqs 4de30 <imfs_dir_rmnod+0x46> <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
4de0e: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED
4de12: 661c bnes 4de30 <imfs_dir_rmnod+0x46> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
IMFS_create_orphan( the_jnode );
4de14: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4de16: 4eb9 0004 ab08 jsr 4ab08 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4de1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4de1e: 4eb9 0004 ab4c jsr 4ab4c <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4de24: 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;
4de28: 508f addql #8,%sp <== NOT EXECUTED
4de2a: 4280 clrl %d0 <== NOT EXECUTED
}
4de2c: 4e5e unlk %fp <== NOT EXECUTED
4de2e: 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 );
4de30: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de36: 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 );
4de3a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4de3c: 7210 moveq #16,%d1 <== NOT EXECUTED
4de3e: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de40: 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 );
4de42: 2081 movel %d1,%a0@ <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de44: 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 );
4de46: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de4c: 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 );
4de50: 2040 moveal %d0,%a0 <== NOT EXECUTED
4de52: 725a moveq #90,%d1 <== NOT EXECUTED
4de54: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4de56: 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 );
4de58: 2081 movel %d1,%a0@ <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
000437aa <init_etc_passwd_group>:
/*
* Initialize useable but dummy databases
*/
void init_etc_passwd_group(void)
{
437aa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
437ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
437b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
FILE *fp;
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
437b2: 4a39 0006 0fb2 tstb 60fb2 <etc_passwd_initted.6402> <== 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 0020 lea 50020 <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 ed9e pea 5ed9e <rtems_status_assoc+0x1a0> <== NOT EXECUTED
FILE *fp;
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
return;
etc_passwd_initted = 1;
437d6: 7001 moveq #1,%d0 <== NOT EXECUTED
437d8: 13c0 0006 0fb2 moveb %d0,60fb2 <etc_passwd_initted.6402> <== 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 f687 pea 5f687 <_global_impure_ptr+0xbf> <== NOT EXECUTED
437ea: 4879 0005 eda3 pea 5eda3 <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 f922 jsr 4f922 <fclose> <== NOT EXECUTED
43802: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
43804: 4879 0005 f687 pea 5f687 <_global_impure_ptr+0xbf> <== NOT EXECUTED
4380a: 4879 0005 ee18 pea 5ee18 <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 f922 jsr 4f922 <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 edaf pea 5edaf <rtems_status_assoc+0x1b1> <== NOT EXECUTED
43834: 4879 0005 ee18 pea 5ee18 <rtems_status_assoc+0x21a> <== NOT EXECUTED
4383a: 4eb9 0005 0020 jsr 50020 <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 ee23 pea 5ee23 <rtems_status_assoc+0x225> <== NOT EXECUTED
4385a: 4eb9 0005 07d4 jsr 507d4 <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 f922 jsr 4f922 <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 edaf pea 5edaf <rtems_status_assoc+0x1b1> <== NOT EXECUTED
4387e: 4879 0005 eda3 pea 5eda3 <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 edb1 pea 5edb1 <rtems_status_assoc+0x1b3> <== NOT EXECUTED
4389e: 4eb9 0005 07d4 jsr 507d4 <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 f922 jsr 4f922 <fclose> <== NOT EXECUTED
438ac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
438b0: 6000 ff52 braw 43804 <init_etc_passwd_group+0x5a> <== NOT EXECUTED
000464f8 <ioctl>:
int ioctl(
int fd,
ioctl_command_t command,
...
)
{
464f8: 4e56 0000 linkw %fp,#0
464fc: 202e 0008 movel %fp@(8),%d0
va_list ap;
rtems_status_code rc;
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
46500: b0b9 0006 2694 cmpl 62694 <rtems_libio_number_iops>,%d0
46506: 6438 bccs 46540 <ioctl+0x48> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
46508: 2200 movel %d0,%d1
4650a: ed88 lsll #6,%d0
4650c: e789 lsll #3,%d1
4650e: 2079 0006 3f70 moveal 63f70 <rtems_libio_iops>,%a0
46514: 9081 subl %d1,%d0
46516: d1c0 addal %d0,%a0
rtems_libio_check_is_open(iop);
46518: 2028 0014 movel %a0@(20),%d0
4651c: 0280 0000 0100 andil #256,%d0
46522: 671c beqs 46540 <ioctl+0x48> <== NEVER TAKEN
buffer = va_arg(ap, void *);
/*
* Now process the ioctl().
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
46524: 2268 0020 moveal %a0@(32),%a1
46528: 2f2e 0010 movel %fp@(16),%sp@-
4652c: 2f2e 000c movel %fp@(12),%sp@-
46530: 2f08 movel %a0,%sp@-
46532: 2069 0010 moveal %a1@(16),%a0
46536: 4e90 jsr %a0@
va_end( ap );
return rc;
46538: 4fef 000c lea %sp@(12),%sp
}
4653c: 4e5e unlk %fp
4653e: 4e75 rts
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open(iop);
46540: 4eb9 0005 2e38 jsr 52e38 <__errno>
46546: 7209 moveq #9,%d1 <== NOT EXECUTED
46548: 2040 moveal %d0,%a0 <== NOT EXECUTED
4654a: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
va_end( ap );
return rc;
}
4654c: 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);
4654e: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
va_end( ap );
return rc;
}
...
00044cb8 <iproc>:
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
44cb8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
44cbc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
44cc0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
44cc4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (tty->termios.c_iflag & ISTRIP)
44cc8: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
44ccc: 1401 moveb %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & ISTRIP)
44cce: 0800 0005 btst #5,%d0 <== NOT EXECUTED
44cd2: 6704 beqs 44cd8 <iproc+0x20> <== NOT EXECUTED
c &= 0x7f;
44cd4: 747f moveq #127,%d2 <== NOT EXECUTED
44cd6: c481 andl %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & IUCLC)
44cd8: 0800 0009 btst #9,%d0 <== NOT EXECUTED
44cdc: 6720 beqs 44cfe <iproc+0x46> <== NOT EXECUTED
c = tolower (c);
44cde: 2079 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a0 <== NOT EXECUTED
44ce4: 7603 moveq #3,%d3 <== NOT EXECUTED
44ce6: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
44cec: 1230 2801 moveb %a0@(00000001,%d2:l),%d1 <== NOT EXECUTED
44cf0: 49c1 extbl %d1 <== NOT EXECUTED
44cf2: c283 andl %d3,%d1 <== NOT EXECUTED
44cf4: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
44cf8: b681 cmpl %d1,%d3 <== NOT EXECUTED
44cfa: 6700 00e0 beqw 44ddc <iproc+0x124> <== NOT EXECUTED
if (c == '\r') {
44cfe: 4281 clrl %d1 <== NOT EXECUTED
44d00: 1202 moveb %d2,%d1 <== NOT EXECUTED
44d02: 760d moveq #13,%d3 <== NOT EXECUTED
44d04: b681 cmpl %d1,%d3 <== NOT EXECUTED
44d06: 6740 beqs 44d48 <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)) {
44d08: 760a moveq #10,%d3 <== NOT EXECUTED
44d0a: b681 cmpl %d1,%d3 <== NOT EXECUTED
44d0c: 6700 00c4 beqw 44dd2 <iproc+0x11a> <== NOT EXECUTED
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
44d10: 4a02 tstb %d2 <== NOT EXECUTED
44d12: 664c bnes 44d60 <iproc+0xa8> <== NOT EXECUTED
}
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
44d14: 2039 0005 e520 movel 5e520 <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED
44d1a: 5380 subql #1,%d0 <== NOT EXECUTED
44d1c: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
44d20: b081 cmpl %d1,%d0 <== NOT EXECUTED
44d22: 6f28 bles 44d4c <iproc+0x94> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
44d24: 7008 moveq #8,%d0 <== NOT EXECUTED
44d26: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
44d2a: 6600 00ba bnew 44de6 <iproc+0x12e> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
44d2e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
}
return 0;
44d32: 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;
44d34: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
44d38: 5281 addql #1,%d1 <== NOT EXECUTED
44d3a: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
}
return 0;
}
44d3e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44d44: 4e5e unlk %fp <== NOT EXECUTED
44d46: 4e75 rts <== NOT EXECUTED
if (tty->termios.c_iflag & IUCLC)
c = tolower (c);
if (c == '\r') {
if (tty->termios.c_iflag & IGNCR)
44d48: 4a00 tstb %d0 <== NOT EXECUTED
44d4a: 6c0c bges 44d58 <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;
44d4c: 4280 clrl %d0 <== NOT EXECUTED
}
44d4e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44d54: 4e5e unlk %fp <== NOT EXECUTED
44d56: 4e75 rts <== NOT EXECUTED
c = tolower (c);
if (c == '\r') {
if (tty->termios.c_iflag & IGNCR)
return 0;
if (tty->termios.c_iflag & ICRNL)
44d58: 0800 0008 btst #8,%d0 <== NOT EXECUTED
44d5c: 6702 beqs 44d60 <iproc+0xa8> <== NOT EXECUTED
c = '\n';
44d5e: 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)) {
44d60: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
44d64: 0801 0001 btst #1,%d1 <== NOT EXECUTED
44d68: 67aa beqs 44d14 <iproc+0x5c> <== NOT EXECUTED
if (c == tty->termios.c_cc[VERASE]) {
44d6a: 4283 clrl %d3 <== NOT EXECUTED
44d6c: 162a 0043 moveb %a2@(67),%d3 <== NOT EXECUTED
44d70: 4280 clrl %d0 <== NOT EXECUTED
44d72: 1002 moveb %d2,%d0 <== NOT EXECUTED
44d74: b083 cmpl %d3,%d0 <== NOT EXECUTED
44d76: 6700 0122 beqw 44e9a <iproc+0x1e2> <== NOT EXECUTED
erase (tty, 0);
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
44d7a: 4283 clrl %d3 <== NOT EXECUTED
44d7c: 162a 0044 moveb %a2@(68),%d3 <== NOT EXECUTED
44d80: b083 cmpl %d3,%d0 <== NOT EXECUTED
44d82: 6700 00a8 beqw 44e2c <iproc+0x174> <== NOT EXECUTED
erase (tty, 1);
return 0;
}
else if (c == tty->termios.c_cc[VEOF]) {
44d86: 4283 clrl %d3 <== NOT EXECUTED
44d88: 162a 0045 moveb %a2@(69),%d3 <== NOT EXECUTED
44d8c: b083 cmpl %d3,%d0 <== NOT EXECUTED
44d8e: 6700 00fe beqw 44e8e <iproc+0x1d6> <== NOT EXECUTED
return 1;
} else if (c == '\n') {
44d92: 760a moveq #10,%d3 <== NOT EXECUTED
44d94: b680 cmpl %d0,%d3 <== NOT EXECUTED
44d96: 6700 00ac beqw 44e44 <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]) ||
44d9a: 4283 clrl %d3 <== NOT EXECUTED
44d9c: 162a 004c moveb %a2@(76),%d3 <== NOT EXECUTED
44da0: b083 cmpl %d3,%d0 <== NOT EXECUTED
44da2: 670c beqs 44db0 <iproc+0xf8> <== NOT EXECUTED
44da4: 4283 clrl %d3 <== NOT EXECUTED
44da6: 162a 0051 moveb %a2@(81),%d3 <== NOT EXECUTED
44daa: b083 cmpl %d3,%d0 <== NOT EXECUTED
44dac: 6600 ff66 bnew 44d14 <iproc+0x5c> <== NOT EXECUTED
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
44db0: 44c1 movew %d1,%ccr <== NOT EXECUTED
44db2: 6b58 bmis 44e0c <iproc+0x154> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
44db4: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
return 1;
44db8: 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;
44dba: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
44dbe: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
44dc2: 5281 addql #1,%d1 <== NOT EXECUTED
44dc4: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44dc8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44dce: 4e5e unlk %fp <== NOT EXECUTED
44dd0: 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)) {
44dd2: 0800 0006 btst #6,%d0 <== NOT EXECUTED
44dd6: 6788 beqs 44d60 <iproc+0xa8> <== NOT EXECUTED
c = '\r';
44dd8: 740d moveq #13,%d2 <== NOT EXECUTED
44dda: 6084 bras 44d60 <iproc+0xa8> <== NOT EXECUTED
{
if (tty->termios.c_iflag & ISTRIP)
c &= 0x7f;
if (tty->termios.c_iflag & IUCLC)
c = tolower (c);
44ddc: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
44de2: 6000 ff1a braw 44cfe <iproc+0x46> <== NOT EXECUTED
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
44de6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44de8: 4280 clrl %d0 <== NOT EXECUTED
44dea: 1002 moveb %d2,%d0 <== NOT EXECUTED
44dec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44dee: 4eba fc2c jsr %pc@(44a1c <echo>) <== NOT EXECUTED
44df2: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
44df6: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
}
return 0;
44df8: 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;
44dfa: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
44dfe: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
44e02: 5281 addql #1,%d1 <== NOT EXECUTED
44e04: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
44e08: 6000 ff34 braw 44d3e <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);
44e0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44e0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44e10: 4eba fc0a jsr %pc@(44a1c <echo>) <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44e14: 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);
44e18: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
return 1;
44e1a: 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;
44e1c: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
44e20: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
44e24: 5281 addql #1,%d1 <== NOT EXECUTED
44e26: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
44e2a: 609c bras 44dc8 <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);
44e2c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44e30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44e32: 4eba fc8c jsr %pc@(44ac0 <erase>) <== NOT EXECUTED
return 0;
44e36: 508f addql #8,%sp <== NOT EXECUTED
44e38: 4280 clrl %d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44e3a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44e40: 4e5e unlk %fp <== NOT EXECUTED
44e42: 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))
44e44: 7048 moveq #72,%d0 <== NOT EXECUTED
44e46: c280 andl %d0,%d1 <== NOT EXECUTED
44e48: 6620 bnes 44e6a <iproc+0x1b2> <== NOT EXECUTED
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
44e4a: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
return 1;
44e4e: 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;
44e50: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
44e54: 740a moveq #10,%d2 <== NOT EXECUTED
44e56: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
44e5a: 5281 addql #1,%d1 <== NOT EXECUTED
44e5c: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44e60: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44e66: 4e5e unlk %fp <== NOT EXECUTED
44e68: 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);
44e6a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44e6c: 4878 000a pea a <LASTO> <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44e70: 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);
44e72: 4eba fba8 jsr %pc@(44a1c <echo>) <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44e76: 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);
44e7a: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
return 1;
44e7c: 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;
44e7e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
44e82: 1182 1800 moveb %d2,%a0@(00000000,%d1:l) <== NOT EXECUTED
44e86: 5281 addql #1,%d1 <== NOT EXECUTED
44e88: 2541 0020 movel %d1,%a2@(32) <== NOT EXECUTED
44e8c: 60d2 bras 44e60 <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;
44e8e: 7001 moveq #1,%d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44e90: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44e96: 4e5e unlk %fp <== NOT EXECUTED
44e98: 4e75 rts <== NOT EXECUTED
c = '\r';
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
if (c == tty->termios.c_cc[VERASE]) {
erase (tty, 0);
44e9a: 42a7 clrl %sp@- <== NOT EXECUTED
44e9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44e9e: 4eba fc20 jsr %pc@(44ac0 <erase>) <== NOT EXECUTED
return 0;
44ea2: 508f addql #8,%sp <== NOT EXECUTED
44ea4: 4280 clrl %d0 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
}
44ea6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44eac: 4e5e unlk %fp <== NOT EXECUTED
00046fd8 <is_fs_below_mount_point>:
static bool is_fs_below_mount_point(
const rtems_filesystem_mount_table_entry_t *mt_entry,
void *arg
)
{
46fd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46fdc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return arg == mt_entry->mt_point_node.mt_entry;
46fe0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
46fe4: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED
46fe8: 57c0 seq %d0 <== NOT EXECUTED
}
46fea: 4e5e unlk %fp <== NOT EXECUTED
46fec: 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
...
000467e4 <kill>:
int kill(
pid_t pid,
int sig
)
{
467e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
467e8: 42a7 clrl %sp@- <== NOT EXECUTED
467ea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
467ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
467f2: 4eb9 0004 cf28 jsr 4cf28 <killinfo> <== NOT EXECUTED
}
467f8: 4e5e unlk %fp <== NOT EXECUTED
0005c11c <killinfo>:
int killinfo(
pid_t pid,
int sig,
const union sigval *value
)
{
5c11c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
5c120: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
5c124: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
5c128: 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() )
5c12c: 4eb9 0005 bc50 jsr 5bc50 <getpid> <== NOT EXECUTED
5c132: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
5c136: 6600 0234 bnew 5c36c <killinfo+0x250> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
/*
* Validate the signal passed.
*/
if ( !sig )
5c13a: 4a83 tstl %d3 <== NOT EXECUTED
5c13c: 6700 0246 beqw 5c384 <killinfo+0x268> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5c140: 2003 movel %d3,%d0 <== NOT EXECUTED
5c142: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5c144: 721f moveq #31,%d1 <== NOT EXECUTED
5c146: b280 cmpl %d0,%d1 <== NOT EXECUTED
5c148: 6500 023a bcsw 5c384 <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 )
5c14c: 2c03 movel %d3,%d6 <== NOT EXECUTED
5c14e: 2a03 movel %d3,%d5 <== NOT EXECUTED
5c150: 7201 moveq #1,%d1 <== NOT EXECUTED
5c152: e98e lsll #4,%d6 <== NOT EXECUTED
5c154: e58d lsll #2,%d5 <== NOT EXECUTED
5c156: 2806 movel %d6,%d4 <== NOT EXECUTED
5c158: 9885 subl %d5,%d4 <== NOT EXECUTED
5c15a: 2044 moveal %d4,%a0 <== NOT EXECUTED
5c15c: d1fc 0006 013c addal #393532,%a0 <== NOT EXECUTED
5c162: b290 cmpl %a0@,%d1 <== NOT EXECUTED
5c164: 6700 01f2 beqw 5c358 <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 ) )
5c168: 123c 0008 moveb #8,%d1 <== NOT EXECUTED
5c16c: b283 cmpl %d3,%d1 <== NOT EXECUTED
5c16e: 6700 00d2 beqw 5c242 <killinfo+0x126> <== NOT EXECUTED
5c172: 123c 0004 moveb #4,%d1 <== NOT EXECUTED
5c176: b283 cmpl %d3,%d1 <== NOT EXECUTED
5c178: 6700 00c8 beqw 5c242 <killinfo+0x126> <== NOT EXECUTED
5c17c: 123c 000b moveb #11,%d1 <== NOT EXECUTED
5c180: b283 cmpl %d3,%d1 <== NOT EXECUTED
5c182: 6700 00be beqw 5c242 <killinfo+0x126> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5c186: 7401 moveq #1,%d2 <== NOT EXECUTED
5c188: e1aa lsll %d0,%d2 <== NOT EXECUTED
/*
* Build up a siginfo structure
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
siginfo->si_code = SI_USER;
5c18a: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Build up a siginfo structure
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
5c18c: 2d43 fff4 movel %d3,%fp@(-12) <== NOT EXECUTED
siginfo->si_code = SI_USER;
5c190: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
if ( !value ) {
5c194: 4a8a tstl %a2 <== NOT EXECUTED
5c196: 6700 01cc beqw 5c364 <killinfo+0x248> <== NOT EXECUTED
siginfo->si_value.sival_int = 0;
} else {
siginfo->si_value = *value;
5c19a: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED
5c19e: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5c1a4: 5280 addql #1,%d0 <== NOT EXECUTED
5c1a6: 23c0 0005 fc78 movel %d0,5fc78 <_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;
5c1ac: 2679 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( _POSIX_signals_Is_interested( api, mask ) ) {
5c1b2: 206b 0102 moveal %a3@(258),%a0 <== NOT EXECUTED
5c1b6: 2028 00d0 movel %a0@(208),%d0 <== NOT EXECUTED
5c1ba: 4680 notl %d0 <== NOT EXECUTED
5c1bc: c082 andl %d2,%d0 <== NOT EXECUTED
5c1be: 6642 bnes 5c202 <killinfo+0xe6> <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c1c0: 2079 0006 02c0 moveal 602c0 <_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 );
5c1c6: b1fc 0006 02c4 cmpal #393924,%a0 <== NOT EXECUTED
5c1cc: 6700 00d6 beqw 5c2a4 <killinfo+0x188> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c1d0: 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;
5c1d2: 2648 moveal %a0,%a3 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c1d4: 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 ];
5c1d8: 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)
5c1dc: 6624 bnes 5c202 <killinfo+0xe6> <== NOT EXECUTED
/*
* Is this thread is blocked waiting for another signal but has
* not blocked this one?
*/
if (~api->signals_blocked & mask)
5c1de: 2029 00d0 movel %a1@(208),%d0 <== NOT EXECUTED
5c1e2: 4680 notl %d0 <== NOT EXECUTED
5c1e4: c082 andl %d2,%d0 <== NOT EXECUTED
5c1e6: 661a bnes 5c202 <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 ) {
5c1e8: 2050 moveal %a0@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)the_node;
5c1ea: 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 );
5c1ec: b1fc 0006 02c4 cmpal #393924,%a0 <== NOT EXECUTED
5c1f2: 6700 00b0 beqw 5c2a4 <killinfo+0x188> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5c1f6: 2002 movel %d2,%d0 <== NOT EXECUTED
5c1f8: 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 ];
5c1fc: 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)
5c200: 67dc beqs 5c1de <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 ) ) {
5c202: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
5c206: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c208: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5c20a: 4eb9 0005 c3dc jsr 5c3dc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
5c210: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5c214: 4a00 tstb %d0 <== NOT EXECUTED
5c216: 6618 bnes 5c230 <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 );
5c218: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c21a: 4eb9 0005 c3bc jsr 5c3bc <_POSIX_signals_Set_process_signals><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
5c220: 588f addql #4,%sp <== NOT EXECUTED
5c222: 41f9 0006 0134 lea 60134 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
5c228: 7002 moveq #2,%d0 <== NOT EXECUTED
5c22a: b0b0 4800 cmpl %a0@(00000000,%d4:l),%d0 <== NOT EXECUTED
5c22e: 672e beqs 5c25e <killinfo+0x142> <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5c230: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c236: 4280 clrl %d0 <== NOT EXECUTED
}
5c238: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5c23e: 4e5e unlk %fp <== NOT EXECUTED
5c240: 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 );
5c242: 4eb9 0005 c5f0 jsr 5c5f0 <pthread_self> <== NOT EXECUTED
5c248: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c24a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c24c: 4eb9 0005 c518 jsr 5c518 <pthread_kill> <== NOT EXECUTED
5c252: 508f addql #8,%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c254: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5c25a: 4e5e unlk %fp <== NOT EXECUTED
5c25c: 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 );
5c25e: 4879 0006 02b4 pea 602b4 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED
5c264: 4eb9 0004 6f30 jsr 46f30 <_Chain_Get> <== NOT EXECUTED
if ( !psiginfo ) {
5c26a: 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 );
5c26c: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !psiginfo ) {
5c26e: 4a80 tstl %d0 <== NOT EXECUTED
5c270: 6700 012a beqw 5c39c <killinfo+0x280> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5c274: 9c85 subl %d5,%d6 <== NOT EXECUTED
5c276: 0686 0006 032c addil #394028,%d6 <== NOT EXECUTED
if ( !psiginfo ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
5c27c: 216e fff4 0008 movel %fp@(-12),%a0@(8) <== NOT EXECUTED
5c282: 216e fff8 000c movel %fp@(-8),%a0@(12) <== NOT EXECUTED
5c288: 216e fffc 0010 movel %fp@(-4),%a0@(16) <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5c28e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5c290: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5c292: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED
5c298: 508f addql #8,%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5c29a: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c2a0: 4280 clrl %d0 <== NOT EXECUTED
5c2a2: 6094 bras 5c238 <killinfo+0x11c> <== NOT EXECUTED
* NOTES:
*
* + rtems internal threads do not receive signals.
*/
interested = NULL;
interested_priority = PRIORITY_MAXIMUM + 1;
5c2a4: 4287 clrl %d7 <== NOT EXECUTED
5c2a6: 1e39 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d7 <== NOT EXECUTED
5c2ac: 49f9 0005 fc3c lea 5fc3c <_Objects_Information_table+0x8>,%a4<== NOT EXECUTED
5c2b2: 5287 addql #1,%d7 <== NOT EXECUTED
*
* NOTES:
*
* + rtems internal threads do not receive signals.
*/
interested = NULL;
5c2b4: 97cb subal %a3,%a3 <== NOT EXECUTED
interested_priority = PRIORITY_MAXIMUM + 1;
5c2b6: 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 ] )
5c2b8: 205c moveal %a4@+,%a0 <== NOT EXECUTED
5c2ba: 4a88 tstl %a0 <== NOT EXECUTED
5c2bc: 6770 beqs 5c32e <killinfo+0x212> <== NOT EXECUTED
continue;
the_info = _Objects_Information_table[ the_api ][ 1 ];
5c2be: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
*/
if ( !the_info )
continue;
#endif
maximum = the_info->maximum;
5c2c2: 4287 clrl %d7 <== NOT EXECUTED
5c2c4: 3e28 000e movew %a0@(14),%d7 <== NOT EXECUTED
object_table = the_info->local_table;
5c2c8: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
for ( index = 1 ; index <= maximum ; index++ ) {
5c2cc: 4a87 tstl %d7 <== NOT EXECUTED
5c2ce: 675e beqs 5c32e <killinfo+0x212> <== NOT EXECUTED
*/
#define _POSIX_signals_Is_interested( _api, _mask ) \
( ~(_api)->signals_blocked & (_mask) )
int killinfo(
5c2d0: 5889 addql #4,%a1 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5c2d2: 7001 moveq #1,%d0 <== NOT EXECUTED
5c2d4: 2d43 ffec movel %d3,%fp@(-20) <== NOT EXECUTED
the_thread = (Thread_Control *) object_table[ index ];
5c2d8: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
if ( !the_thread )
5c2da: 4a88 tstl %a0 <== NOT EXECUTED
5c2dc: 6746 beqs 5c324 <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 )
5c2de: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED
5c2e2: b5c1 cmpal %d1,%a2 <== NOT EXECUTED
5c2e4: 653e bcss 5c324 <killinfo+0x208> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( !api )
continue;
#endif
if ( !_POSIX_signals_Is_interested( api, mask ) )
5c2e6: 2a68 0102 moveal %a0@(258),%a5 <== NOT EXECUTED
5c2ea: 262d 00d0 movel %a5@(208),%d3 <== NOT EXECUTED
5c2ee: 4683 notl %d3 <== NOT EXECUTED
5c2f0: c682 andl %d2,%d3 <== NOT EXECUTED
5c2f2: 6730 beqs 5c324 <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 ) {
5c2f4: b5c1 cmpal %d1,%a2 <== NOT EXECUTED
5c2f6: 6228 bhis 5c320 <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 ) ) {
5c2f8: 4a8b tstl %a3 <== NOT EXECUTED
5c2fa: 6728 beqs 5c324 <killinfo+0x208> <== NOT EXECUTED
5c2fc: 2a6b 0010 moveal %a3@(16),%a5 <== NOT EXECUTED
5c300: 4a8d tstl %a5 <== NOT EXECUTED
5c302: 6720 beqs 5c324 <killinfo+0x208> <== NOT EXECUTED
/* preferred ready over blocked */
DEBUG_STEP("5");
if ( _States_Is_ready( the_thread->current_state ) ) {
5c304: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
5c308: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
5c30c: 6712 beqs 5c320 <killinfo+0x204> <== NOT EXECUTED
continue;
}
DEBUG_STEP("6");
/* prefer blocked/interruptible over blocked/not interruptible */
if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
5c30e: 260d movel %a5,%d3 <== NOT EXECUTED
5c310: 0803 001c btst #28,%d3 <== NOT EXECUTED
5c314: 660e bnes 5c324 <killinfo+0x208> <== NOT EXECUTED
DEBUG_STEP("7");
if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
5c316: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED
5c31a: 0803 001c btst #28,%d3 <== NOT EXECUTED
5c31e: 6704 beqs 5c324 <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 ) ) {
5c320: 2441 moveal %d1,%a2 <== NOT EXECUTED
5c322: 2648 moveal %a0,%a3 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5c324: 5280 addql #1,%d0 <== NOT EXECUTED
5c326: b087 cmpl %d7,%d0 <== NOT EXECUTED
5c328: 63ae blss 5c2d8 <killinfo+0x1bc> <== NOT EXECUTED
5c32a: 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++) {
5c32e: b9fc 0005 fc44 cmpal #392260,%a4 <== NOT EXECUTED
5c334: 6682 bnes 5c2b8 <killinfo+0x19c> <== NOT EXECUTED
}
}
}
}
if ( interested ) {
5c336: 4a8b tstl %a3 <== NOT EXECUTED
5c338: 6700 fede beqw 5c218 <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 ) ) {
5c33c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
5c340: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c342: 2f0b movel %a3,%sp@- <== NOT EXECUTED
5c344: 4eb9 0005 c3dc jsr 5c3dc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
5c34a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5c34e: 4a00 tstb %d0 <== NOT EXECUTED
5c350: 6700 fec6 beqw 5c218 <killinfo+0xfc> <== NOT EXECUTED
5c354: 6000 feda braw 5c230 <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;
5c358: 4280 clrl %d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c35a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5c360: 4e5e unlk %fp <== NOT EXECUTED
5c362: 4e75 rts <== NOT EXECUTED
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
siginfo->si_code = SI_USER;
if ( !value ) {
siginfo->si_value.sival_int = 0;
5c364: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
5c368: 6000 fe34 braw 5c19e <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 );
5c36c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c372: 7603 moveq #3,%d3 <== NOT EXECUTED
5c374: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c376: 70ff moveq #-1,%d0 <== NOT EXECUTED
5c378: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c37a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5c380: 4e5e unlk %fp <== NOT EXECUTED
5c382: 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 );
5c384: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c38a: 7416 moveq #22,%d2 <== NOT EXECUTED
5c38c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c38e: 70ff moveq #-1,%d0 <== NOT EXECUTED
5c390: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c392: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
5c398: 4e5e unlk %fp <== NOT EXECUTED
5c39a: 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();
5c39c: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
5c3a2: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c3a8: 720b moveq #11,%d1 <== NOT EXECUTED
5c3aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c3ac: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3ae: 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 );
5c3b4: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5c3b6: 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 fde4 cmpl 5fde4 <_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: 2079 0005 e5f8 moveal 5e5f8 <_impure_ptr>,%a0
435b6: 2479 0005 db16 moveal 5db16 <_global_impure_ptr>,%a2
435bc: b5c8 cmpal %a0,%a2
435be: 6712 beqs 435d2 <libc_wrapup+0x3a>
_wrapup_reent(_global_impure_ptr);
435c0: 2f0a movel %a2,%sp@-
435c2: 4eb9 0004 f48e jsr 4f48e <_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;
435c8: 588f addql #4,%sp
435ca: 204a moveal %a2,%a0
435cc: 23ca 0005 e5f8 movel %a2,5e5f8 <_impure_ptr>
*
* Should this be changed to do *all* file streams?
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
435d2: 2f28 0004 movel %a0@(4),%sp@-
435d6: 45f9 0004 ea32 lea 4ea32 <fclose>,%a2
435dc: 4e92 jsr %a2@
fclose (stdout);
435de: 2079 0005 e5f8 moveal 5e5f8 <_impure_ptr>,%a0
435e4: 2f28 0008 movel %a0@(8),%sp@-
435e8: 4e92 jsr %a2@
fclose (stderr);
435ea: 2079 0005 e5f8 moveal 5e5f8 <_impure_ptr>,%a0
435f0: 2f28 000c movel %a0@(12),%sp@-
435f4: 4e92 jsr %a2@
}
435f6: 246e fffc moveal %fp@(-4),%a2
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
fclose (stdout);
fclose (stderr);
435fa: 4fef 000c lea %sp@(12),%sp
}
435fe: 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 58c4 jsr 558c4 <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 7924 jsr 47924 <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 2898 jsr 52898 <__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
000461ec <lio_listio>:
int mode __attribute__((unused)),
struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
struct sigevent *sig __attribute__((unused))
)
{
461ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
461f0: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
461f6: 7258 moveq #88,%d1 <== NOT EXECUTED
461f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
461fa: 70ff moveq #-1,%d0 <== NOT EXECUTED
461fc: 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 );
461fe: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0005bc78 <lseek>:
off_t lseek(
int fd,
off_t offset,
int whence
)
{
5bc78: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5bc7c: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
5bc80: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
5bc84: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
5bc88: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
5bc8c: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
rtems_libio_t *iop;
off_t old_offset;
off_t status;
rtems_libio_check_fd( fd );
5bc90: b4b9 0005 e314 cmpl 5e314 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED
5bc96: 6400 011e bccw 5bdb6 <lseek+0x13e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5bc9a: 2802 movel %d2,%d4 <== NOT EXECUTED
5bc9c: ed8a lsll #6,%d2 <== NOT EXECUTED
5bc9e: e78c lsll #3,%d4 <== NOT EXECUTED
5bca0: 2479 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5bca6: 9484 subl %d4,%d2 <== NOT EXECUTED
5bca8: d5c2 addal %d2,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
5bcaa: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED
5bcae: 0282 0000 0100 andil #256,%d2 <== NOT EXECUTED
5bcb4: 6700 0100 beqw 5bdb6 <lseek+0x13e> <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
switch ( whence ) {
5bcb8: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
5bcba: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED
5bcbe: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
switch ( whence ) {
5bcc2: b888 cmpl %a0,%d4 <== NOT EXECUTED
5bcc4: 6700 00b6 beqw 5bd7c <lseek+0x104> <== NOT EXECUTED
5bcc8: 7a02 moveq #2,%d5 <== NOT EXECUTED
5bcca: ba88 cmpl %a0,%d5 <== NOT EXECUTED
5bccc: 6756 beqs 5bd24 <lseek+0xac> <== NOT EXECUTED
5bcce: 4a88 tstl %a0 <== NOT EXECUTED
5bcd0: 6600 008c bnew 5bd5e <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 );
5bcd4: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
*/
old_offset = iop->offset;
switch ( whence ) {
case SEEK_SET:
iop->offset = offset;
5bcd8: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
5bcdc: 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 );
5bce0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5bce2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5bce4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5bce6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bce8: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
5bcec: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bcee: 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 );
5bcf2: 2800 movel %d0,%d4 <== NOT EXECUTED
5bcf4: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bcf6: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bcf8: 72ff moveq #-1,%d1 <== NOT EXECUTED
5bcfa: 9285 subl %d5,%d1 <== NOT EXECUTED
5bcfc: 9184 subxl %d4,%d0 <== NOT EXECUTED
5bcfe: 670e beqs 5bd0e <lseek+0x96> <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd00: 2004 movel %d4,%d0 <== NOT EXECUTED
5bd02: 2205 movel %d5,%d1 <== NOT EXECUTED
5bd04: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5bd0a: 4e5e unlk %fp <== NOT EXECUTED
5bd0c: 4e75 rts <== NOT EXECUTED
5bd0e: 2004 movel %d4,%d0 <== NOT EXECUTED
5bd10: 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;
5bd12: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
5bd16: 2543 0010 movel %d3,%a2@(16) <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd1a: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5bd20: 4e5e unlk %fp <== NOT EXECUTED
5bd22: 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 );
5bd24: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_CUR:
iop->offset += offset;
break;
case SEEK_END:
iop->offset = iop->size + offset;
5bd28: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED
5bd2c: 2a2a 0008 movel %a2@(8),%d5 <== NOT EXECUTED
5bd30: da81 addl %d1,%d5 <== NOT EXECUTED
5bd32: d980 addxl %d0,%d4 <== NOT EXECUTED
5bd34: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED
5bd38: 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 );
5bd3c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5bd3e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5bd40: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5bd42: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bd44: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
5bd48: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd4a: 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 );
5bd4e: 2800 movel %d0,%d4 <== NOT EXECUTED
5bd50: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd52: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bd54: 72ff moveq #-1,%d1 <== NOT EXECUTED
5bd56: 9285 subl %d5,%d1 <== NOT EXECUTED
5bd58: 9184 subxl %d4,%d0 <== NOT EXECUTED
5bd5a: 66a4 bnes 5bd00 <lseek+0x88> <== NOT EXECUTED
5bd5c: 60b0 bras 5bd0e <lseek+0x96> <== NOT EXECUTED
case SEEK_END:
iop->offset = iop->size + offset;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
5bd5e: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5bd64: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bd66: 7016 moveq #22,%d0 <== NOT EXECUTED
5bd68: 78ff moveq #-1,%d4 <== NOT EXECUTED
5bd6a: 7aff moveq #-1,%d5 <== NOT EXECUTED
5bd6c: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bd6e: 2004 movel %d4,%d0 <== NOT EXECUTED
5bd70: 2205 movel %d5,%d1 <== NOT EXECUTED
5bd72: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5bd78: 4e5e unlk %fp <== NOT EXECUTED
5bd7a: 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 );
5bd7c: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_SET:
iop->offset = offset;
break;
case SEEK_CUR:
iop->offset += offset;
5bd80: 2800 movel %d0,%d4 <== NOT EXECUTED
5bd82: 2a01 movel %d1,%d5 <== NOT EXECUTED
5bd84: da83 addl %d3,%d5 <== NOT EXECUTED
5bd86: d982 addxl %d2,%d4 <== NOT EXECUTED
5bd88: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED
5bd8c: 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 );
5bd90: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5bd92: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5bd94: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5bd96: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bd98: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
5bd9c: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5bd9e: 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 );
5bda2: 2800 movel %d0,%d4 <== NOT EXECUTED
5bda4: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5bda6: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bda8: 72ff moveq #-1,%d1 <== NOT EXECUTED
5bdaa: 9285 subl %d5,%d1 <== NOT EXECUTED
5bdac: 9184 subxl %d4,%d0 <== NOT EXECUTED
5bdae: 6600 ff50 bnew 5bd00 <lseek+0x88> <== NOT EXECUTED
5bdb2: 6000 ff5a braw 5bd0e <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);
5bdb6: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5bdbc: 7209 moveq #9,%d1 <== NOT EXECUTED
5bdbe: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bdc0: 78ff moveq #-1,%d4 <== NOT EXECUTED
5bdc2: 7aff moveq #-1,%d5 <== NOT EXECUTED
5bdc4: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5bdc6: 2004 movel %d4,%d0 <== NOT EXECUTED
5bdc8: 2205 movel %d5,%d1 <== NOT EXECUTED
5bdca: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5bdd0: 4e5e unlk %fp <== NOT EXECUTED
0004507c <lstat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
4507c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
45080: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
45084: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
45088: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
4508c: 676e beqs 450fc <lstat+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
4508e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45090: 280e movel %fp,%d4 <== NOT EXECUTED
45092: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED
45098: 4eb9 0005 2cb4 jsr 52cb4 <strlen> <== NOT EXECUTED
4509e: 4297 clrl %sp@ <== NOT EXECUTED
450a0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
450a2: 42a7 clrl %sp@- <== NOT EXECUTED
450a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
450a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
450a8: 4eb9 0004 49a8 jsr 449a8 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
450ae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
450b2: 4a80 tstl %d0 <== NOT EXECUTED
450b4: 670c beqs 450c2 <lstat+0x46> <== NOT EXECUTED
return -1;
450b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
450b8: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
450be: 4e5e unlk %fp <== NOT EXECUTED
450c0: 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) );
450c2: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED
450c6: 42a7 clrl %sp@- <== NOT EXECUTED
450c8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
450ca: 4eb9 0005 1f84 jsr 51f84 <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
450d0: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
450d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
450d6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
450d8: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
450dc: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
450de: 2f04 movel %d4,%sp@- <== NOT EXECUTED
450e0: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
450e4: 4eb9 0004 4a8c jsr 44a8c <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
450ea: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
450ee: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
450f2: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
450f8: 4e5e unlk %fp <== NOT EXECUTED
450fa: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
rtems_set_errno_and_return_minus_one( EFAULT );
450fc: 4eb9 0005 0ecc jsr 50ecc <__errno> <== NOT EXECUTED
45102: 720e moveq #14,%d1 <== NOT EXECUTED
45104: 2040 moveal %d0,%a0 <== NOT EXECUTED
45106: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
45108: 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 );
4510e: 2081 movel %d1,%a0@ <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
45110: 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 fb40 addql #1,5fb40 <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 fde4 cmpl 5fde4 <_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 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@-
4305e: 4eb9 0004 8078 jsr 48078 <_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 eabe moveal 5eabe <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 eab6 moveal 5eab6 <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 eaba moveal 5eaba <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 eabe moveal 5eabe <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 e8e4 jsr 4e8e4 <__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 fb30 pea 5fb30 <RTEMS_Malloc_GC_list> <== NOT EXECUTED
42f50: 4eb9 0004 6ed0 jsr 46ed0 <_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 fb30 pea 5fb30 <RTEMS_Malloc_GC_list>
42f14: 45f9 0004 6f30 lea 46f30 <_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 fb30 pea 5fb30 <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 3e80 movel 63e80 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46c0e: 4eb9 0004 cf98 jsr 4cf98 <_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 e8b0 movel 5e8b0 <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 fc88 movel 5fc88 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
42fa2: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Lock> <== NOT EXECUTED
*stats = rtems_malloc_statistics;
42fa8: 2042 moveal %d2,%a0 <== NOT EXECUTED
42faa: 20f9 0005 fa8c movel 5fa8c <rtems_malloc_statistics>,%a0@+ <== NOT EXECUTED
42fb0: 20f9 0005 fa90 movel 5fa90 <rtems_malloc_statistics+0x4>,%a0@+<== NOT EXECUTED
42fb6: 20f9 0005 fa94 movel 5fa94 <rtems_malloc_statistics+0x8>,%a0@+<== NOT EXECUTED
42fbc: 20f9 0005 fa98 movel 5fa98 <rtems_malloc_statistics+0xc>,%a0@+<== NOT EXECUTED
42fc2: 20f9 0005 fa9c movel 5fa9c <rtems_malloc_statistics+0x10>,%a0@+<== NOT EXECUTED
42fc8: 20f9 0005 faa0 movel 5faa0 <rtems_malloc_statistics+0x14>,%a0@+<== NOT EXECUTED
42fce: 20f9 0005 faa4 movel 5faa4 <rtems_malloc_statistics+0x18>,%a0@+<== NOT EXECUTED
42fd4: 20f9 0005 faa8 movel 5faa8 <rtems_malloc_statistics+0x1c>,%a0@+<== NOT EXECUTED
42fda: 20f9 0005 faac movel 5faac <rtems_malloc_statistics+0x20>,%a0@+<== NOT EXECUTED
42fe0: 20f9 0005 fab0 movel 5fab0 <rtems_malloc_statistics+0x24>,%a0@+<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42fe6: 2f39 0005 fc88 movel 5fc88 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
)
{
if ( !stats )
return -1;
_RTEMS_Lock_allocator();
*stats = rtems_malloc_statistics;
42fec: 20b9 0005 fab4 movel 5fab4 <rtems_malloc_statistics+0x28>,%a0@<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42ff2: 4eb9 0004 6f00 jsr 46f00 <_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 3e80 movel 63e80 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46c2e: 4eb9 0004 cfc8 jsr 4cfc8 <_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 fc78 movel 5fc78 <_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 00fe tstl 600fe <_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 7b14 pea 47b14 <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 5f90 moveal 65f90 <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 5f94 movel 65f94 <rtems_malloc_statistics+0x1c>,%d4<== NOT EXECUTED
46e1a: 2a39 0006 5f98 movel 65f98 <rtems_malloc_statistics+0x20>,%d5<== NOT EXECUTED
46e20: 2039 0006 5f9c movel 65f9c <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED
46e26: 2239 0006 5fa0 movel 65fa0 <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 5f78 movel 65f78 <rtems_malloc_statistics>,%d2 <== NOT EXECUTED
(uint32_t) (s->lifetime_allocated / 1024),
46e32: 2e05 movel %d5,%d7 <== NOT EXECUTED
46e34: e6af lsrl %d3,%d7 <== NOT EXECUTED
(uint32_t) (s->lifetime_freed / 1024)
46e36: 2c01 movel %d1,%d6 <== NOT EXECUTED
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
46e38: 2047 moveal %d7,%a0 <== NOT EXECUTED
(uint32_t) (s->lifetime_freed / 1024)
46e3a: e6ae lsrl %d3,%d6 <== NOT EXECUTED
46e3c: 2600 movel %d0,%d3 <== NOT EXECUTED
46e3e: 7e16 moveq #22,%d7 <== NOT EXECUTED
46e40: efab lsll %d7,%d3 <== NOT EXECUTED
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
46e42: 2e0a movel %a2,%d7 <== NOT EXECUTED
(uint32_t) (s->lifetime_allocated / 1024),
(uint32_t) (s->lifetime_freed / 1024)
46e44: 2243 moveal %d3,%a1 <== NOT EXECUTED
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
46e46: 7664 moveq #100,%d3 <== NOT EXECUTED
46e48: 4c03 7800 mulsl %d3,%d7 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e4c: 2609 movel %a1,%d3 <== NOT EXECUTED
46e4e: 8686 orl %d6,%d3 <== NOT EXECUTED
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
46e50: 2c04 movel %d4,%d6 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e52: 2f03 movel %d3,%sp@- <== NOT EXECUTED
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
s->max_depth / 1024,
(s->max_depth * 100) / s->space_available,
(uint32_t) (s->lifetime_allocated / 1024),
46e54: 7616 moveq #22,%d3 <== NOT EXECUTED
46e56: e7ae lsll %d3,%d6 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e58: 2608 movel %a0,%d3 <== NOT EXECUTED
46e5a: 8c83 orl %d3,%d6 <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
46e5c: 9a81 subl %d1,%d5 <== NOT EXECUTED
46e5e: 9980 subxl %d0,%d4 <== NOT EXECUTED
(*print)(
46e60: 760a moveq #10,%d3 <== NOT EXECUTED
46e62: 2f06 movel %d6,%sp@- <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46e64: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e68: 4c42 7007 remul %d2,%d7,%d7 <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46e6c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e70: 2c04 movel %d4,%d6 <== NOT EXECUTED
46e72: 2f07 movel %d7,%sp@- <== NOT EXECUTED
46e74: 2e02 movel %d2,%d7 <== NOT EXECUTED
46e76: e6af lsrl %d3,%d7 <== NOT EXECUTED
46e78: 2605 movel %d5,%d3 <== NOT EXECUTED
46e7a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
"max:%"PRIu32"k (%"PRIu32"%%)"
" lifetime:%"PRIu32"k freed:%"PRIu32"k\n",
s->space_available / 1024,
allocated / 1024,
/* avoid float! */
(allocated * 100) / s->space_available,
46e7c: 4878 0064 pea 64 <DBL_MANT_DIG+0x2f> <== NOT EXECUTED
46e80: 42a7 clrl %sp@- <== NOT EXECUTED
46e82: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46e84: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46e86: 4eb9 0005 f2bc jsr 5f2bc <__muldi3> <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46e8c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46e90: 2e82 movel %d2,%sp@ <== NOT EXECUTED
46e92: 7416 moveq #22,%d2 <== NOT EXECUTED
46e94: 42a7 clrl %sp@- <== NOT EXECUTED
46e96: e5ae lsll %d2,%d6 <== NOT EXECUTED
46e98: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46e9a: 2404 movel %d4,%d2 <== NOT EXECUTED
46e9c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46e9e: 4eb9 0005 fb08 jsr 5fb08 <__udivdi3> <== NOT EXECUTED
46ea4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46ea8: 2046 moveal %d6,%a0 <== NOT EXECUTED
46eaa: 7c0a moveq #10,%d6 <== NOT EXECUTED
46eac: ecab lsrl %d6,%d3 <== NOT EXECUTED
46eae: ecaa lsrl %d6,%d2 <== NOT EXECUTED
46eb0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46eb2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46eb4: 2008 movel %a0,%d0 <== NOT EXECUTED
46eb6: 8680 orl %d0,%d3 <== NOT EXECUTED
46eb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46eba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46ebc: 2f07 movel %d7,%sp@- <== NOT EXECUTED
46ebe: 4879 0006 28fc pea 628fc <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 5f8c movel 65f8c <rtems_malloc_statistics+0x14>,%sp@<== NOT EXECUTED
46ed2: 2f39 0006 5f88 movel 65f88 <rtems_malloc_statistics+0x10>,%sp@-<== NOT EXECUTED
46ed8: 2f39 0006 5f84 movel 65f84 <rtems_malloc_statistics+0xc>,%sp@-<== NOT EXECUTED
46ede: 2f39 0006 5f80 movel 65f80 <rtems_malloc_statistics+0x8>,%sp@-<== NOT EXECUTED
46ee4: 2f39 0006 5f7c movel 65f7c <rtems_malloc_statistics+0x4>,%sp@-<== NOT EXECUTED
46eea: 4879 0006 295e pea 6295e <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 0230 movel 60230 <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 e8b0 movel 5e8b0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
433e6: 4eb9 0004 8384 jsr 48384 <_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 0204 addl %d2,60204 <rtems_malloc_statistics> <== NOT EXECUTED
433fc: 42a7 clrl %sp@- <== NOT EXECUTED
433fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43402: 2f39 0005 e8b0 movel 5e8b0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
43408: 4eb9 0004 8344 jsr 48344 <_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 ee68 jsr 4ee68 <__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 0230 movel %d1,60230 <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
43458: 4e75 rts
* 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
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 6ef8 jsr 46ef8 <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 e8b0 movel %a0@,5e8b0 <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 3e80 movel 63e80 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
4701e: 4eb9 0004 d07c jsr 4d07c <_Protected_heap_Walk> <== NOT EXECUTED
47024: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
47028: 4e5e unlk %fp <== NOT EXECUTED
0004ce08 <memfile_alloc_block>:
* Allocate a block for an in-memory file.
*/
int memfile_blocks_allocated = 0;
void *memfile_alloc_block(void)
{
4ce08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void *memory;
memory = (void *)calloc(1, IMFS_MEMFILE_BYTES_PER_BLOCK);
4ce0c: 2f39 0005 f324 movel 5f324 <imfs_memfile_bytes_per_block>,%sp@-<== NOT EXECUTED
4ce12: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4ce16: 4eb9 0004 28f0 jsr 428f0 <calloc> <== NOT EXECUTED
if ( memory )
4ce1c: 508f addql #8,%sp <== NOT EXECUTED
4ce1e: 4a80 tstl %d0 <== NOT EXECUTED
4ce20: 6706 beqs 4ce28 <memfile_alloc_block+0x20> <== NOT EXECUTED
memfile_blocks_allocated++;
4ce22: 52b9 0005 f434 addql #1,5f434 <memfile_blocks_allocated> <== NOT EXECUTED
return memory;
}
4ce28: 4e5e unlk %fp <== NOT EXECUTED
0004cdc8 <memfile_close>:
* nothing to flush or memory to free at this point.
*/
int memfile_close(
rtems_libio_t *iop
)
{
4cdc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cdcc: 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)
4cdd0: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
4cdd4: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
rtems_libio_t *iop
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4cdda: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
if (iop->flags & LIBIO_FLAGS_APPEND)
4cdde: 6710 beqs 4cdf0 <memfile_close+0x28> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4cde0: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED
4cde4: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED
4cde8: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
4cdec: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4cdf0: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4cdf2: 4eb9 0004 ab4c jsr 4ab4c <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4cdf8: 4280 clrl %d0 <== NOT EXECUTED
4cdfa: 4e5e unlk %fp <== NOT EXECUTED
0004d2a4 <memfile_free_block>:
* Free a block from an in-memory file.
*/
void memfile_free_block(
void *memory
)
{
4d2a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free(memory);
4d2a8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d2ac: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
memfile_blocks_allocated--;
4d2b2: 588f addql #4,%sp <== NOT EXECUTED
4d2b4: 53b9 0005 f434 subql #1,5f434 <memfile_blocks_allocated> <== NOT EXECUTED
}
4d2ba: 4e5e unlk %fp <== NOT EXECUTED
0004d2be <memfile_free_blocks_in_table>:
*/
void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4d2be: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4d2c2: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d2c6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
4d2ca: 47f9 0004 d2a4 lea 4d2a4 <memfile_free_block>,%a3 <== NOT EXECUTED
4d2d0: 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;
4d2d4: 2454 moveal %a4@,%a2 <== NOT EXECUTED
for ( i=0 ; i<entries ; i++ ) {
4d2d6: 6f1a bles 4d2f2 <memfile_free_blocks_in_table+0x34><== NOT EXECUTED
4d2d8: 4282 clrl %d2 <== NOT EXECUTED
if ( b[i] ) {
4d2da: 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++ ) {
4d2dc: 5282 addql #1,%d2 <== NOT EXECUTED
if ( b[i] ) {
4d2de: 4a80 tstl %d0 <== NOT EXECUTED
4d2e0: 670a beqs 4d2ec <memfile_free_blocks_in_table+0x2e><== NOT EXECUTED
memfile_free_block( b[i] );
4d2e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d2e4: 4e93 jsr %a3@ <== NOT EXECUTED
b[i] = 0;
4d2e6: 588f addql #4,%sp <== NOT EXECUTED
4d2e8: 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++ ) {
4d2ec: b483 cmpl %d3,%d2 <== NOT EXECUTED
4d2ee: 6dea blts 4d2da <memfile_free_blocks_in_table+0x1c><== NOT EXECUTED
4d2f0: 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 );
4d2f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d2f4: 4e93 jsr %a3@ <== NOT EXECUTED
*block_table = 0;
4d2f6: 588f addql #4,%sp <== NOT EXECUTED
4d2f8: 4294 clrl %a4@ <== NOT EXECUTED
}
4d2fa: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d300: 4e5e unlk %fp <== NOT EXECUTED
0004d810 <memfile_ftruncate>:
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d810: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4d814: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d818: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d81c: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d820: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4d824: 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 )
4d828: 242a 004c movel %a2@(76),%d2 <== NOT EXECUTED
4d82c: 262a 0050 movel %a2@(80),%d3 <== NOT EXECUTED
4d830: 9681 subl %d1,%d3 <== NOT EXECUTED
4d832: 9580 subxl %d0,%d2 <== NOT EXECUTED
4d834: 6d30 blts 4d866 <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;
4d836: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
4d83a: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4d83e: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
4d842: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4d846: 42a7 clrl %sp@- <== NOT EXECUTED
4d848: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d84c: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4d852: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return 0;
4d858: 508f addql #8,%sp <== NOT EXECUTED
4d85a: 4280 clrl %d0 <== NOT EXECUTED
}
4d85c: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4d862: 4e5e unlk %fp <== NOT EXECUTED
4d864: 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 );
4d866: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d868: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d86a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d86c: 4eb9 0004 d446 jsr 4d446 <IMFS_memfile_extend> <== NOT EXECUTED
4d872: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
IMFS_update_atime( the_jnode );
return 0;
}
4d876: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4d87c: 4e5e unlk %fp <== NOT EXECUTED
0004cdfe <memfile_ioctl>:
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4cdfe: 4280 clrl %d0 <== NOT EXECUTED
int memfile_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4ce00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4ce04: 4e5e unlk %fp <== NOT EXECUTED
0004d880 <memfile_lseek>:
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d880: 7006 moveq #6,%d0 <== NOT EXECUTED
rtems_off64_t memfile_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4d882: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4d886: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
4d88a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d88e: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
if (the_jnode->type == IMFS_LINEAR_FILE) {
4d892: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED
4d896: 673e beqs 4d8d6 <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 ))
4d898: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4d89c: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4d8a0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d8a2: 4eb9 0004 d446 jsr 4d446 <IMFS_memfile_extend> <== NOT EXECUTED
4d8a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d8ac: 4a80 tstl %d0 <== NOT EXECUTED
4d8ae: 665a bnes 4d90a <memfile_lseek+0x8a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
iop->size = the_jnode->info.file.size;
4d8b0: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED
4d8b4: 222b 0050 movel %a3@(80),%d1 <== NOT EXECUTED
4d8b8: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4d8bc: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
4d8c0: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4d8c4: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
}
return iop->offset;
}
4d8c8: 2001 movel %d1,%d0 <== NOT EXECUTED
4d8ca: 2202 movel %d2,%d1 <== NOT EXECUTED
4d8cc: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4d8d2: 4e5e unlk %fp <== NOT EXECUTED
4d8d4: 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)
4d8d6: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4d8da: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
4d8de: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED
4d8e2: 282b 0050 movel %a3@(80),%d4 <== NOT EXECUTED
4d8e6: 2a01 movel %d1,%d5 <== NOT EXECUTED
4d8e8: 2c02 movel %d2,%d6 <== NOT EXECUTED
4d8ea: 9c84 subl %d4,%d6 <== NOT EXECUTED
4d8ec: 9b83 subxl %d3,%d5 <== NOT EXECUTED
4d8ee: 6fd8 bles 4d8c8 <memfile_lseek+0x48> <== NOT EXECUTED
iop->offset = the_jnode->info.linearfile.size;
4d8f0: 2203 movel %d3,%d1 <== NOT EXECUTED
4d8f2: 2404 movel %d4,%d2 <== NOT EXECUTED
4d8f4: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
4d8f8: 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;
}
4d8fc: 2001 movel %d1,%d0 <== NOT EXECUTED
4d8fe: 2202 movel %d2,%d1 <== NOT EXECUTED
4d900: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4d906: 4e5e unlk %fp <== NOT EXECUTED
4d908: 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 );
4d90a: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4d910: 781c moveq #28,%d4 <== NOT EXECUTED
4d912: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d914: 72ff moveq #-1,%d1 <== NOT EXECUTED
4d916: 74ff moveq #-1,%d2 <== NOT EXECUTED
4d918: 2084 movel %d4,%a0@ <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
}
return iop->offset;
}
4d91a: 2001 movel %d1,%d0 <== NOT EXECUTED
4d91c: 2202 movel %d2,%d1 <== NOT EXECUTED
4d91e: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4d924: 4e5e unlk %fp <== NOT EXECUTED
0004d748 <memfile_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4d748: 4e56 fff0 linkw %fp,#-16
4d74c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4d750: 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))
4d754: 202a 0014 movel %a2@(20),%d0
4d758: 2200 movel %d0,%d1
4d75a: 0281 0000 0204 andil #516,%d1
uint32_t mode
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4d760: 266a 0018 moveal %a2@(24),%a3
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4d764: 6708 beqs 4d76e <memfile_open+0x26> <== NEVER TAKEN
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
4d766: 7206 moveq #6,%d1
4d768: b2ab 0048 cmpl %a3@(72),%d1
4d76c: 6732 beqs 4d7a0 <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))
4d76e: 222b 004c movel %a3@(76),%d1
4d772: 242b 0050 movel %a3@(80),%d2
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4d776: 0800 0009 btst #9,%d0
4d77a: 6710 beqs 4d78c <memfile_open+0x44> <== ALWAYS TAKEN
iop->offset = the_jnode->info.file.size;
4d77c: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
4d780: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED
4d784: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4d788: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
return 0;
4d78c: 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;
4d78e: 2541 0004 movel %d1,%a2@(4)
4d792: 2542 0008 movel %d2,%a2@(8)
return 0;
}
4d796: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4d79c: 4e5e unlk %fp
4d79e: 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;
4d7a0: 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;
4d7a4: 4282 clrl %d2 <== NOT EXECUTED
4d7a6: 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;
4d7a8: 222b 0054 movel %a3@(84),%d1 <== NOT EXECUTED
the_jnode->type = IMFS_MEMORY_FILE;
the_jnode->info.file.size = 0;
4d7ac: 2742 004c movel %d2,%a3@(76) <== NOT EXECUTED
4d7b0: 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;
4d7b4: 7605 moveq #5,%d3 <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
4d7b6: 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;
4d7ba: 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;
4d7be: 42ab 0058 clrl %a3@(88) <== NOT EXECUTED
the_jnode->info.file.triply_indirect = 0;
4d7c2: 42ab 005c clrl %a3@(92) <== NOT EXECUTED
if ((count != 0)
4d7c6: 4a80 tstl %d0 <== NOT EXECUTED
4d7c8: 6610 bnes 4d7da <memfile_open+0x92> <== NOT EXECUTED
4d7ca: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4d7ce: 4281 clrl %d1 <== NOT EXECUTED
4d7d0: 4282 clrl %d2 <== NOT EXECUTED
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4d7d2: 0800 0009 btst #9,%d0 <== NOT EXECUTED
4d7d6: 67b4 beqs 4d78c <memfile_open+0x44> <== NOT EXECUTED
4d7d8: 60a2 bras 4d77c <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))
4d7da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d7dc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d7de: 42a7 clrl %sp@- <== NOT EXECUTED
4d7e0: 42a7 clrl %sp@- <== NOT EXECUTED
4d7e2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d7e4: 4eb9 0004 d54c jsr 4d54c <IMFS_memfile_write> <== NOT EXECUTED
4d7ea: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4d7ee: 72ff moveq #-1,%d1 <== NOT EXECUTED
4d7f0: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d7f2: 6710 beqs 4d804 <memfile_open+0xbc> <== NOT EXECUTED
4d7f4: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4d7f8: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4d7fc: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
4d800: 6000 ff74 braw 4d776 <memfile_open+0x2e> <== NOT EXECUTED
return -1;
4d804: 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;
}
4d806: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4d80c: 4e5e unlk %fp <== NOT EXECUTED
0004d232 <memfile_read>:
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d232: 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 );
4d236: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d23a: 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 );
4d23e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4d242: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED
4d246: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4d24a: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED
4d24e: 4eb9 0004 cfd2 jsr 4cfd2 <IMFS_memfile_read> <== NOT EXECUTED
}
4d254: 4e5e unlk %fp <== NOT EXECUTED
0004d706 <memfile_write>:
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4d706: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4d70a: 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 );
4d70e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4d712: 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 );
4d716: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
)
{
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
4d71a: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4d71e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4d722: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4d726: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d728: 4eb9 0004 d54c jsr 4d54c <IMFS_memfile_write> <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4d72e: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4d732: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
4d736: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
4d73a: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return status;
}
4d73e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4d744: 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 e8e4 jsr 4e8e4 <__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 3bb8 jsr 43bb8 <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 b3dc jsr 4b3dc <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 fd3c lea 4fd3c <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 fd3c jsr 4fd3c <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 f190 lea 4f190 <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 e418 movel #386072,%d0
43390: b0b9 0005 e414 cmpl 5e414 <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 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
433b6: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
433bc: 2f0a movel %a2,%sp@-
433be: 4879 0005 e414 pea 5e414 <mount_chain>
433c4: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append>
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
433ca: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
433d0: 4eb9 0004 6598 jsr 46598 <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 e530 moveal 5e530 <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 e8e4 jsr 4e8e4 <__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 cee8 lea 5cee8 <IMFS_ops+0x48>,%a0
434da: 45f9 0004 fd3c lea 4fd3c <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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 e8e4 jsr 4e8e4 <__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 4418 jsr 44418 <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 f0cc jsr 4f0cc <__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
...
00046204 <mprotect>:
const void *addr __attribute__((unused)),
size_t len __attribute__((unused)),
int prot __attribute__((unused)) )
{
return 0;
}
46204: 4280 clrl %d0 <== NOT EXECUTED
int mprotect(
const void *addr __attribute__((unused)),
size_t len __attribute__((unused)),
int prot __attribute__((unused)) )
{
46206: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4620a: 4e5e unlk %fp <== NOT EXECUTED
...
0004bd6c <mq_close>:
*/
int mq_close(
mqd_t mqdes
)
{
4bd6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4bd70: 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(
4bd72: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4bd76: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4bd7a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4bd80: 4eb9 0004 f664 jsr 4f664 <_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 ) {
4bd86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bd8a: 2440 moveal %d0,%a2 <== NOT EXECUTED
4bd8c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4bd90: 6640 bnes 4bdd2 <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;
4bd92: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
the_mq->open_count -= 1;
4bd96: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED
_POSIX_Message_queue_Delete( the_mq );
4bd9a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4bd9c: 4eb9 0004 bde8 jsr 4bde8 <_POSIX_Message_queue_Delete> <== NOT EXECUTED
/*
* Now close this file descriptor.
*/
_Objects_Close(
4bda2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bda4: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4bdaa: 4eb9 0004 f234 jsr 4f234 <_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 );
4bdb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bdb2: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4bdb8: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED
&_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4bdbe: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
}
4bdc4: 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;
4bdc8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4bdcc: 4280 clrl %d0 <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
}
4bdce: 4e5e unlk %fp <== NOT EXECUTED
4bdd0: 4e75 rts <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4bdd2: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
}
4bdd8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4bddc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bdde: 7209 moveq #9,%d1 <== NOT EXECUTED
4bde0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4bde2: 4e5e unlk %fp <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4bde4: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
0004be40 <mq_getattr>:
int mq_getattr(
mqd_t mqdes,
struct mq_attr *mqstat
)
{
4be40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4be44: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4be46: 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 )
4be4a: 4a8a tstl %a2 <== NOT EXECUTED
4be4c: 6760 beqs 4beae <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(
4be4e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4be52: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4be56: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4be5c: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4be62: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4be66: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4be6a: 662c bnes 4be98 <mq_getattr+0x58> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_mq = the_mq_fd->Queue;
4be6c: 2240 moveal %d0,%a1 <== NOT EXECUTED
4be6e: 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;
4be72: 24a9 0014 movel %a1@(20),%a2@ <== NOT EXECUTED
mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size;
4be76: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED
mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages;
4be7c: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED
mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages;
4be82: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
4be88: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4be8e: 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;
4be92: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4be94: 4e5e unlk %fp <== NOT EXECUTED
4be96: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4be98: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
}
4be9e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bea2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bea4: 7209 moveq #9,%d1 <== NOT EXECUTED
4bea6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4bea8: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4beaa: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4beac: 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 );
4beae: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4beb4: 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 );
4beb8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4beba: 7216 moveq #22,%d1 <== NOT EXECUTED
4bebc: 70ff moveq #-1,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bebe: 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 );
4bec0: 2081 movel %d1,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
0004befa <mq_notify>:
int mq_notify(
mqd_t mqdes,
const struct sigevent *notification
)
{
4befa: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4befe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bf00: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4bf02: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4bf06: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4bf0a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4bf10: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4bf14: 4eb9 0004 f664 jsr 4f664 <_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 ) {
4bf1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bf1e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4bf22: 671a beqs 4bf3e <mq_notify+0x44> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bf24: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
}
4bf2a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bf2e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bf30: 7209 moveq #9,%d1 <== NOT EXECUTED
4bf32: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4bf34: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4bf38: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4bf3a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4bf3c: 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;
4bf3e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bf40: 2468 0010 moveal %a0@(16),%a2 <== NOT EXECUTED
if ( notification ) {
4bf44: 4a82 tstl %d2 <== NOT EXECUTED
4bf46: 673c beqs 4bf84 <mq_notify+0x8a> <== NOT EXECUTED
if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) {
4bf48: 4aaa 007a tstl %a2@(122) <== NOT EXECUTED
4bf4c: 6648 bnes 4bf96 <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;
4bf4e: 41ea 008e lea %a2@(142),%a0 <== NOT EXECUTED
4bf52: 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;
4bf54: 203c 0004 bec4 movel #310980,%d0 <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bf5a: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
4bf5e: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
4bf60: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
4bf62: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
4bf64: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
4bf66: 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;
4bf68: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bf6c: 254a 007e movel %a2,%a2@(126) <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
_Thread_Enable_dispatch();
4bf70: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4bf76: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bf78: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4bf7c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4bf80: 4e5e unlk %fp <== NOT EXECUTED
4bf82: 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;
4bf84: 42aa 007a clrl %a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4bf88: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
_Thread_Enable_dispatch();
4bf8c: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4bf92: 4280 clrl %d0 <== NOT EXECUTED
4bf94: 60e2 bras 4bf78 <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();
4bf96: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
4bf9c: 7410 moveq #16,%d2 <== NOT EXECUTED
4bf9e: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bfa4: 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 );
4bfa8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bfaa: 70ff moveq #-1,%d0 <== NOT EXECUTED
4bfac: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4bfae: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4bfb2: 4e5e unlk %fp <== NOT EXECUTED
...
0004bfb8 <mq_open>:
int oflag,
...
/* mode_t mode, */
/* struct mq_attr attr */
)
{
4bfb8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4bfbc: 2039 0006 9a24 movel 69a24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4bfc2: 5280 addql #1,%d0 <== NOT EXECUTED
4bfc4: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
4bfc8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED
4bfcc: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4bfd0: 23c0 0006 9a24 movel %d0,69a24 <_Thread_Dispatch_disable_level><== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
4bfd6: 2802 movel %d2,%d4 <== NOT EXECUTED
4bfd8: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED
4bfde: 6600 00c4 bnew 4c0a4 <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 );
4bfe2: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
/* struct mq_attr attr */
)
{
va_list arg;
mode_t mode;
struct mq_attr *attr = NULL;
4bfe8: 4286 clrl %d6 <== NOT EXECUTED
4bfea: 4eb9 0004 f1a4 jsr 4f1a4 <_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 ) {
4bff0: 588f addql #4,%sp <== NOT EXECUTED
4bff2: 2440 moveal %d0,%a2 <== NOT EXECUTED
4bff4: 4a80 tstl %d0 <== NOT EXECUTED
4bff6: 6700 00c6 beqw 4c0be <mq_open+0x106> <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq_fd->oflag = oflag;
4bffa: 2542 0014 movel %d2,%a2@(20) <== NOT EXECUTED
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
4bffe: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c002: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c004: 4eb9 0005 32e4 jsr 532e4 <_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 ) {
4c00a: 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 );
4c00c: 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 ) {
4c00e: 6662 bnes 4c072 <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) ) {
4c010: 0282 0000 0a00 andil #2560,%d2 <== NOT EXECUTED
4c016: 0c82 0000 0a00 cmpil #2560,%d2 <== NOT EXECUTED
4c01c: 6700 010c beqw 4c12a <mq_open+0x172> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control *)
_Objects_Get( &_POSIX_Message_queue_Information, id, location );
4c020: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
_Objects_Open_string(
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
4c024: 47f9 0005 021e lea 5021e <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
4c02a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4c02e: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
4c034: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c03a: 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;
4c03c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c03e: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c042: 2079 0006 9e54 moveal 69e54 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c048: 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 );
4c04c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
the_mq->open_count += 1;
the_mq_fd->Queue = the_mq;
4c050: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c054: 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;
4c058: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Objects_Open_string(
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
4c05c: 4e93 jsr %a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4c05e: 4e93 jsr %a3@ <== NOT EXECUTED
return (mqd_t)the_mq_fd->Object.id;
4c060: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
4c064: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c068: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4c06e: 4e5e unlk %fp <== NOT EXECUTED
4c070: 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) ) ) {
4c072: 7002 moveq #2,%d0 <== NOT EXECUTED
4c074: b083 cmpl %d3,%d0 <== NOT EXECUTED
4c076: 6764 beqs 4c0dc <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 );
4c078: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c07a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4c080: 4eb9 0004 f4f8 jsr 4f4f8 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4c086: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, mqd_t );
4c08c: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c092: 508f addql #8,%sp <== NOT EXECUTED
4c094: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c096: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c098: 2083 movel %d3,%a0@ <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c09a: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4c0a0: 4e5e unlk %fp <== NOT EXECUTED
4c0a2: 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 );
4c0a4: 4879 0006 9e3c pea 69e3c <_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 * );
4c0aa: 2c2e 0014 movel %fp@(20),%d6 <== NOT EXECUTED
4c0ae: 4eb9 0004 f1a4 jsr 4f1a4 <_Objects_Allocate> <== NOT EXECUTED
va_end(arg);
}
the_mq_fd = _POSIX_Message_queue_Allocate_fd();
if ( !the_mq_fd ) {
4c0b4: 588f addql #4,%sp <== NOT EXECUTED
4c0b6: 2440 moveal %d0,%a2 <== NOT EXECUTED
4c0b8: 4a80 tstl %d0 <== NOT EXECUTED
4c0ba: 6600 ff3e bnew 4bffa <mq_open+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
4c0be: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
4c0c4: 7417 moveq #23,%d2 <== NOT EXECUTED
4c0c6: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c0cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c0ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c0d0: 2082 movel %d2,%a0@ <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c0d2: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4c0d8: 4e5e unlk %fp <== NOT EXECUTED
4c0da: 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) ) ) {
4c0dc: 4a84 tstl %d4 <== NOT EXECUTED
4c0de: 6798 beqs 4c078 <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(
4c0e0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c0e4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4c0e6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c0ea: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c0ec: 4eb9 0005 3164 jsr 53164 <_POSIX_Message_queue_Create_support><== NOT EXECUTED
);
/*
* errno was set by Create_support, so don't set it again.
*/
if ( status == -1 ) {
4c0f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c0f6: 72ff moveq #-1,%d1 <== NOT EXECUTED
4c0f8: b280 cmpl %d0,%d1 <== NOT EXECUTED
4c0fa: 675c beqs 4c158 <mq_open+0x1a0> <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c0fc: 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;
4c0fe: 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;
4c104: 2079 0006 9e54 moveal 69e54 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4c10a: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4c10e: 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;
4c112: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
4c116: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
return (mqd_t) the_mq_fd->Object.id;
4c11c: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
}
4c120: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4c126: 4e5e unlk %fp <== NOT EXECUTED
4c128: 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 );
4c12a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c12c: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4c132: 4eb9 0004 f4f8 jsr 4f4f8 <_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();
4c138: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );
4c13e: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
4c144: 508f addql #8,%sp <== NOT EXECUTED
4c146: 7211 moveq #17,%d1 <== NOT EXECUTED
4c148: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c14a: 70ff moveq #-1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c14c: 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 );
4c152: 2081 movel %d1,%a0@ <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c154: 4e5e unlk %fp <== NOT EXECUTED
4c156: 4e75 rts <== NOT EXECUTED
4c158: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c15a: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4c160: 4eb9 0004 f4f8 jsr 4f4f8 <_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();
4c166: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
return (mqd_t) -1;
4c16c: 508f addql #8,%sp <== NOT EXECUTED
4c16e: 70ff moveq #-1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return (mqd_t) the_mq_fd->Object.id;
}
4c170: 4cee 0c7c ffd8 moveml %fp@(-40),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4c176: 4e5e unlk %fp <== NOT EXECUTED
...
0004c17c <mq_receive>:
mqd_t mqdes,
char *msg_ptr,
size_t msg_len,
unsigned int *msg_prio
)
{
4c17c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Message_queue_Receive_support(
4c180: 42a7 clrl %sp@- <== NOT EXECUTED
4c182: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c186: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4c18a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c18e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c192: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c196: 4eb9 0004 c1a0 jsr 4c1a0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED
msg_len,
msg_prio,
true,
THREAD_QUEUE_WAIT_FOREVER
);
}
4c19c: 4e5e unlk %fp <== NOT EXECUTED
0004c308 <mq_send>:
mqd_t mqdes,
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio
)
{
4c308: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Message_queue_Send_support(
4c30c: 42a7 clrl %sp@- <== NOT EXECUTED
4c30e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c312: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4c316: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c31a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c31e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c322: 4eb9 0004 c32c jsr 4c32c <_POSIX_Message_queue_Send_support><== NOT EXECUTED
msg_len,
msg_prio,
true,
THREAD_QUEUE_WAIT_FOREVER
);
}
4c328: 4e5e unlk %fp <== NOT EXECUTED
0004c484 <mq_setattr>:
int mq_setattr(
mqd_t mqdes,
const struct mq_attr *mqstat,
struct mq_attr *omqstat
)
{
4c484: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4c488: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c48a: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
4c48e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c490: 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 )
4c494: 4a8b tstl %a3 <== NOT EXECUTED
4c496: 6770 beqs 4c508 <mq_setattr+0x84> <== NOT EXECUTED
4c498: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c49c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c4a0: 4879 0006 9e3c pea 69e3c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4c4a6: 4eb9 0004 f664 jsr 4f664 <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
4c4ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c4b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c4b2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4c4b6: 6636 bnes 4c4ee <mq_setattr+0x6a> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_core_mq = &the_mq_fd->Queue->Message_queue;
4c4b8: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
/*
* Return the old values.
*/
if ( omqstat ) {
4c4bc: 4a8a tstl %a2 <== NOT EXECUTED
4c4be: 6716 beqs 4c4d6 <mq_setattr+0x52> <== NOT EXECUTED
omqstat->mq_flags = the_mq_fd->oflag;
4c4c0: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED
omqstat->mq_msgsize = the_core_mq->maximum_message_size;
4c4c4: 2569 0066 0008 movel %a1@(102),%a2@(8) <== NOT EXECUTED
omqstat->mq_maxmsg = the_core_mq->maximum_pending_messages;
4c4ca: 2569 005e 0004 movel %a1@(94),%a2@(4) <== NOT EXECUTED
omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages;
4c4d0: 2569 0062 000c movel %a1@(98),%a2@(12) <== NOT EXECUTED
}
the_mq_fd->oflag = mqstat->mq_flags;
4c4d6: 2153 0014 movel %a3@,%a0@(20) <== NOT EXECUTED
_Thread_Enable_dispatch();
4c4da: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c4e0: 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;
4c4e4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c4e6: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4c4ea: 4e5e unlk %fp <== NOT EXECUTED
4c4ec: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c4ee: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
}
4c4f4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c4f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c4fa: 7209 moveq #9,%d1 <== NOT EXECUTED
4c4fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4c4fe: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4c502: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
4c504: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4c506: 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 );
4c508: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c50e: 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 );
4c512: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c514: 7216 moveq #22,%d1 <== NOT EXECUTED
4c516: 70ff moveq #-1,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
4c518: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4c51c: 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 );
4c51e: 2081 movel %d1,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
...
0004c524 <mq_timedreceive>:
char *msg_ptr,
size_t msg_len,
unsigned int *msg_prio,
const struct timespec *abstime
)
{
4c524: 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 );
4c528: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c52c: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4c530: 4eb9 0004 c640 jsr 4c640 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
return _POSIX_Message_queue_Receive_support(
4c536: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4c53a: 7203 moveq #3,%d1 <== NOT EXECUTED
4c53c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4c53e: 57c0 seq %d0 <== NOT EXECUTED
4c540: 49c0 extbl %d0 <== NOT EXECUTED
4c542: 4480 negl %d0 <== NOT EXECUTED
4c544: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c546: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4c54a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c54e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c552: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c556: 4eb9 0004 c1a0 jsr 4c1a0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED
msg_len,
msg_prio,
do_wait,
ticks
);
}
4c55c: 4e5e unlk %fp <== NOT EXECUTED
0004c560 <mq_timedsend>:
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio,
const struct timespec *abstime
)
{
4c560: 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 );
4c564: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c568: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4c56c: 4eb9 0004 c640 jsr 4c640 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
return _POSIX_Message_queue_Send_support(
4c572: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4c576: 7203 moveq #3,%d1 <== NOT EXECUTED
4c578: b280 cmpl %d0,%d1 <== NOT EXECUTED
4c57a: 57c0 seq %d0 <== NOT EXECUTED
4c57c: 49c0 extbl %d0 <== NOT EXECUTED
4c57e: 4480 negl %d0 <== NOT EXECUTED
4c580: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c582: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4c586: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c58a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c58e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c592: 4eb9 0004 c32c jsr 4c32c <_POSIX_Message_queue_Send_support><== NOT EXECUTED
msg_len,
msg_prio,
do_wait,
ticks
);
}
4c598: 4e5e unlk %fp <== NOT EXECUTED
0004c5b4 <mq_unlink>:
*/
int mq_unlink(
const char *name
)
{
4c5b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4c5b8: 2039 0006 9a24 movel 69a24 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4c5be: 5280 addql #1,%d0 <== NOT EXECUTED
4c5c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c5c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c5c4: 23c0 0006 9a24 movel %d0,69a24 <_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 );
4c5ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c5ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c5d2: 4eb9 0005 32e4 jsr 532e4 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED
if ( status != 0 ) {
4c5d8: 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 );
4c5da: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != 0 ) {
4c5dc: 6644 bnes 4c622 <mq_unlink+0x6e> <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
4c5de: 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(
4c5e0: 2079 0006 9ce6 moveal 69ce6 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
4c5e6: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED
4c5ea: 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;
4c5ee: 4200 clrb %d0 <== NOT EXECUTED
4c5f0: 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(
4c5f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c5f6: 4879 0006 9cce pea 69cce <_POSIX_Message_queue_Information><== NOT EXECUTED
4c5fc: 4eb9 0004 f7e4 jsr 4f7e4 <_Objects_Namespace_remove> <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
4c602: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c604: 4eb9 0004 bde8 jsr 4bde8 <_POSIX_Message_queue_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
4c60a: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
4c610: 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;
4c614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c618: 4280 clrl %d0 <== NOT EXECUTED
}
4c61a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4c61e: 4e5e unlk %fp <== NOT EXECUTED
4c620: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
if ( status != 0 ) {
_Thread_Enable_dispatch();
4c622: 4eb9 0005 021e jsr 5021e <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
4c628: 4eb9 0005 69d4 jsr 569d4 <__errno> <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
_Thread_Enable_dispatch();
return 0;
}
4c62e: 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 );
4c632: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c634: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c636: 2082 movel %d2,%a0@ <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
_Thread_Enable_dispatch();
return 0;
}
4c638: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4c63c: 4e5e unlk %fp <== NOT EXECUTED
0005cb1c <nanosleep>:
int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp
)
{
5cb1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5cb20: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5cb22: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
5cb26: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cb28: 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 ) )
5cb2c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cb2e: 4eb9 0005 cc88 jsr 5cc88 <_Timespec_Is_valid> <== NOT EXECUTED
5cb34: 588f addql #4,%sp <== NOT EXECUTED
5cb36: 4a00 tstb %d0 <== NOT EXECUTED
5cb38: 6700 00f8 beqw 5cc32 <nanosleep+0x116> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
ticks = _Timespec_To_ticks( rqtp );
5cb3c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cb3e: 4eb9 0004 d1c4 jsr 4d1c4 <_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 ) {
5cb44: 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 );
5cb46: 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 ) {
5cb48: 663e bnes 5cb88 <nanosleep+0x6c> <== NOT EXECUTED
5cb4a: 2039 0006 0be0 movel 60be0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5cb50: 5280 addql #1,%d0 <== NOT EXECUTED
5cb52: 23c0 0006 0be0 movel %d0,60be0 <_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 );
5cb58: 4879 0006 0c66 pea 60c66 <_Scheduler> <== NOT EXECUTED
5cb5e: 2079 0006 0c6e moveal 60c6e <_Scheduler+0x8>,%a0 <== NOT EXECUTED
5cb64: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
5cb66: 4eb9 0004 8d4a jsr 48d4a <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( rmtp ) {
5cb6c: 588f addql #4,%sp <== NOT EXECUTED
5cb6e: 4a8a tstl %a2 <== NOT EXECUTED
5cb70: 6700 0098 beqw 5cc0a <nanosleep+0xee> <== NOT EXECUTED
rmtp->tv_sec = 0;
5cb74: 4292 clrl %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cb76: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( rmtp ) {
rmtp->tv_sec = 0;
rmtp->tv_nsec = 0;
}
return 0;
5cb7a: 4280 clrl %d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
if ( rmtp ) {
rmtp->tv_sec = 0;
rmtp->tv_nsec = 0;
5cb7c: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cb80: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5cb84: 4e5e unlk %fp <== NOT EXECUTED
5cb86: 4e75 rts <== NOT EXECUTED
5cb88: 2039 0006 0be0 movel 60be0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5cb8e: 5280 addql #1,%d0 <== NOT EXECUTED
5cb90: 23c0 0006 0be0 movel %d0,60be0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block for the desired amount of time
*/
_Thread_Disable_dispatch();
_Thread_Set_state(
5cb96: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED
5cb9c: 2f39 0006 106a movel 6106a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
5cba2: 4eb9 0004 9648 jsr 49648 <_Thread_Set_state> <== NOT EXECUTED
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
5cba8: 2079 0006 106a moveal 6106a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5cbae: 203c 0004 8ba4 movel #297892,%d0 <== NOT EXECUTED
5cbb4: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Set_state(
_Thread_Executing,
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
5cbb8: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5cbbc: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
5cbc0: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
5cbc4: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5cbc8: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
5cbcc: 4868 0048 pea %a0@(72) <== NOT EXECUTED
5cbd0: 4879 0006 0cc0 pea 60cc0 <_Watchdog_Ticks_chain> <== NOT EXECUTED
5cbd6: 4eb9 0004 9d1c jsr 49d1c <_Watchdog_Insert> <== NOT EXECUTED
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
_Thread_Enable_dispatch();
5cbdc: 4eb9 0004 8d4a jsr 48d4a <_Thread_Enable_dispatch> <== NOT EXECUTED
/* calculate time remaining */
if ( rmtp ) {
5cbe2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5cbe6: 4a8a tstl %a2 <== NOT EXECUTED
5cbe8: 6720 beqs 5cc0a <nanosleep+0xee> <== NOT EXECUTED
ticks -=
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
5cbea: 2079 0006 106a moveal 6106a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
5cbf0: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
5cbf4: 90a8 0060 subl %a0@(96),%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
/* calculate time remaining */
if ( rmtp ) {
ticks -=
5cbf8: d480 addl %d0,%d2 <== NOT EXECUTED
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
_Timespec_From_ticks( ticks, rmtp );
5cbfa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5cbfc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5cbfe: 4eb9 0005 cc4c jsr 5cc4c <_Timespec_From_ticks> <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
5cc04: 508f addql #8,%sp <== NOT EXECUTED
5cc06: 4a82 tstl %d2 <== NOT EXECUTED
5cc08: 660e bnes 5cc18 <nanosleep+0xfc> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cc0a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( ticks )
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
5cc0e: 4280 clrl %d0 <== NOT EXECUTED
}
5cc10: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5cc14: 4e5e unlk %fp <== NOT EXECUTED
5cc16: 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 );
5cc18: 4eb9 0004 eda8 jsr 4eda8 <__errno> <== NOT EXECUTED
#endif
}
return 0;
}
5cc1e: 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 );
5cc22: 2040 moveal %d0,%a0 <== NOT EXECUTED
5cc24: 7204 moveq #4,%d1 <== NOT EXECUTED
5cc26: 70ff moveq #-1,%d0 <== NOT EXECUTED
#endif
}
return 0;
}
5cc28: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5cc2c: 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 );
5cc2e: 2081 movel %d1,%a0@ <== NOT EXECUTED
#endif
}
return 0;
}
5cc30: 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 );
5cc32: 4eb9 0004 eda8 jsr 4eda8 <__errno> <== NOT EXECUTED
5cc38: 7416 moveq #22,%d2 <== NOT EXECUTED
5cc3a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5cc3c: 70ff moveq #-1,%d0 <== NOT EXECUTED
5cc3e: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
#endif
}
return 0;
}
5cc40: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5cc44: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5cc48: 4e5e unlk %fp <== NOT EXECUTED
00043684 <newlib_create_hook>:
*/
bool newlib_create_hook(
rtems_tcb *current_task __attribute__((unused)),
rtems_tcb *creating_task
)
{
43684: 4e56 0000 linkw %fp,#0
43688: 2f0a movel %a2,%sp@-
struct _reent *ptr;
if (_Thread_libc_reent == 0)
4368a: 4ab9 0005 fd1e tstl 5fd1e <_Thread_libc_reent>
43690: 6700 018e beqw 43820 <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));
43694: 4878 0422 pea 422 <DBL_MAX_EXP+0x21>
43698: 4eb9 0004 9b52 jsr 49b52 <_Workspace_Allocate>
#endif
if (ptr) {
4369e: 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));
436a0: 2440 moveal %d0,%a2
#endif
if (ptr) {
436a2: 4a80 tstl %d0
436a4: 6700 0170 beqw 43816 <newlib_create_hook+0x192>
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
436a8: 42aa 0078 clrl %a2@(120)
436ac: 41ea 007c lea %a2@(124),%a0
436b0: 4298 clrl %a0@+
436b2: 43ea 02ea lea %a2@(746),%a1
436b6: 4298 clrl %a0@+
436b8: 203c 0005 d3cc movel #381900,%d0
436be: 4298 clrl %a0@+
436c0: 4201 clrb %d1
436c2: 4298 clrl %a0@+
436c4: 1541 002c moveb %d1,%a2@(44)
436c8: 4298 clrl %a0@+
436ca: 1541 005e moveb %d1,%a2@(94)
436ce: 2549 0004 movel %a1,%a2@(4)
436d2: 43ea 0352 lea %a2@(850),%a1
436d6: 4298 clrl %a0@+
436d8: 2549 0008 movel %a1,%a2@(8)
436dc: 43ea 03ba lea %a2@(954),%a1
436e0: 2540 0032 movel %d0,%a2@(50)
436e4: 4280 clrl %d0
436e6: 7201 moveq #1,%d1
436e8: 2549 000c movel %a1,%a2@(12)
436ec: 327c 1234 moveaw #4660,%a1
436f0: 4298 clrl %a0@+
436f2: 4292 clrl %a2@
436f4: 42aa 0010 clrl %a2@(16)
436f8: 42aa 0014 clrl %a2@(20)
436fc: 42aa 0018 clrl %a2@(24)
43700: 42aa 001c clrl %a2@(28)
43704: 42aa 0020 clrl %a2@(32)
43708: 42aa 0024 clrl %a2@(36)
4370c: 42aa 0028 clrl %a2@(40)
43710: 42aa 002e clrl %a2@(46)
43714: 42aa 0036 clrl %a2@(54)
43718: 42aa 003a clrl %a2@(58)
4371c: 42aa 003e clrl %a2@(62)
43720: 42aa 0042 clrl %a2@(66)
43724: 42aa 0046 clrl %a2@(70)
43728: 42aa 004a clrl %a2@(74)
4372c: 42aa 004e clrl %a2@(78)
43730: 42aa 0052 clrl %a2@(82)
43734: 42aa 0056 clrl %a2@(86)
43738: 42aa 005a clrl %a2@(90)
4373c: 4290 clrl %a0@
4373e: 2540 00a0 movel %d0,%a2@(160)
43742: 2541 00a4 movel %d1,%a2@(164)
43746: 323c 330e movew #13070,%d1
4374a: 303c e66d movew #-6547,%d0
4374e: 307c abcd moveaw #-21555,%a0
43752: 42aa 009c clrl %a2@(156)
43756: 3541 00a8 movew %d1,%a2@(168)
4375a: 3540 00ae movew %d0,%a2@(174)
4375e: 42aa 00b6 clrl %a2@(182)
43762: 323c deec movew #-8468,%d1
43766: 7005 moveq #5,%d0
43768: 42aa 00ba clrl %a2@(186)
4376c: 3541 00b0 movew %d1,%a2@(176)
43770: 3540 00b2 movew %d0,%a2@(178)
43774: 42aa 00be clrl %a2@(190)
43778: 4200 clrb %d0
4377a: 720b moveq #11,%d1
4377c: 42aa 00c2 clrl %a2@(194)
43780: 42aa 00c6 clrl %a2@(198)
43784: 3548 00aa movew %a0,%a2@(170)
43788: 42aa 00ca clrl %a2@(202)
4378c: 3549 00ac movew %a1,%a2@(172)
43790: 42aa 00f2 clrl %a2@(242)
43794: 42aa 00f6 clrl %a2@(246)
43798: 3541 00b4 movew %d1,%a2@(180)
4379c: 42aa 00fa clrl %a2@(250)
437a0: 1540 00ce moveb %d0,%a2@(206)
437a4: 42aa 00fe clrl %a2@(254)
437a8: 42aa 0102 clrl %a2@(258)
437ac: 1540 00d6 moveb %d0,%a2@(214)
437b0: 42aa 0106 clrl %a2@(262)
437b4: 42aa 010a clrl %a2@(266)
437b8: 42aa 010e clrl %a2@(270)
437bc: 42aa 0112 clrl %a2@(274)
437c0: 42aa 0116 clrl %a2@(278)
437c4: 42aa 00ee clrl %a2@(238)
437c8: 42aa 0146 clrl %a2@(326)
437cc: 42aa 014a clrl %a2@(330)
437d0: 42aa 014e clrl %a2@(334)
437d4: 42aa 0152 clrl %a2@(338)
437d8: 42aa 02d2 clrl %a2@(722)
437dc: 42aa 01d2 clrl %a2@(466)
437e0: 42aa 02da clrl %a2@(730)
437e4: 42aa 02de clrl %a2@(734)
437e8: 42aa 02e2 clrl %a2@(738)
437ec: 42aa 02e6 clrl %a2@(742)
437f0: 4878 0138 pea 138 <DBL_MANT_DIG+0x103>
437f4: 42a7 clrl %sp@-
437f6: 486a 02ea pea %a2@(746)
437fa: 4eb9 0004 f200 jsr 4f200 <memset>
creating_task->libc_reent = ptr;
43800: 206e 000c moveal %fp@(12),%a0
return TRUE;
43804: 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;
43808: 214a 00fa movel %a2,%a0@(250)
return TRUE;
}
return FALSE;
}
4380c: 246e fffc moveal %fp@(-4),%a2
43810: 4e5e unlk %fp
#endif
if (ptr) {
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
creating_task->libc_reent = ptr;
return TRUE;
43812: 7001 moveq #1,%d0
}
return FALSE;
}
43814: 4e75 rts
43816: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4381a: 4e5e unlk %fp <== NOT EXECUTED
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
creating_task->libc_reent = ptr;
return TRUE;
}
return FALSE;
4381c: 4200 clrb %d0 <== NOT EXECUTED
}
4381e: 4e75 rts <== NOT EXECUTED
{
struct _reent *ptr;
if (_Thread_libc_reent == 0)
{
_REENT = _global_impure_ptr;
43820: 41f9 0005 db16 lea 5db16 <_global_impure_ptr>,%a0
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (
struct _reent **libc_reent
)
{
_Thread_libc_reent = libc_reent;
43826: 43f9 0005 e5f8 lea 5e5f8 <_impure_ptr>,%a1
4382c: 23d0 0005 e5f8 movel %a0@,5e5f8 <_impure_ptr>
43832: 23c9 0005 fd1e movel %a1,5fd1e <_Thread_libc_reent>
43838: 6000 fe5a braw 43694 <newlib_create_hook+0x10>
0004383c <newlib_delete_hook>:
void newlib_delete_hook(
rtems_tcb *current_task,
rtems_tcb *deleted_task
)
{
4383c: 4e56 fff4 linkw %fp,#-12
43840: 48d7 040c moveml %d2-%d3/%a2,%sp@
43844: 262e 0008 movel %fp@(8),%d3
43848: 246e 000c moveal %fp@(12),%a2
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
4384c: b5c3 cmpal %d3,%a2
4384e: 674c beqs 4389c <newlib_delete_hook+0x60> <== ALWAYS TAKEN
ptr = _REENT;
} else {
ptr = deleted_task->libc_reent;
43850: 242a 00fa movel %a2@(250),%d2 <== NOT EXECUTED
}
if (ptr && ptr != _global_impure_ptr) {
43854: 4a82 tstl %d2
43856: 6722 beqs 4387a <newlib_delete_hook+0x3e> <== NEVER TAKEN
43858: b4b9 0005 db16 cmpl 5db16 <_global_impure_ptr>,%d2
4385e: 671a beqs 4387a <newlib_delete_hook+0x3e>
_reclaim_reent(ptr);
*/
/*
* Just in case there are some buffers lying around.
*/
_fwalk(ptr, newlib_free_buffers);
43860: 4879 0004 3624 pea 43624 <newlib_free_buffers>
43866: 2f02 movel %d2,%sp@-
43868: 4eb9 0004 f098 jsr 4f098 <_fwalk>
#if REENT_MALLOCED
free(ptr);
#else
_Workspace_Free(ptr);
4386e: 2f02 movel %d2,%sp@-
43870: 4eb9 0004 9b6e jsr 49b6e <_Workspace_Free>
43876: 4fef 000c lea %sp@(12),%sp
#endif
}
deleted_task->libc_reent = NULL;
4387a: 42aa 00fa clrl %a2@(250)
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
4387e: b5c3 cmpal %d3,%a2
43880: 670a beqs 4388c <newlib_delete_hook+0x50> <== ALWAYS TAKEN
_REENT = 0;
}
}
43882: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
43888: 4e5e unlk %fp <== NOT EXECUTED
4388a: 4e75 rts <== NOT EXECUTED
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
_REENT = 0;
4388c: 42b9 0005 e5f8 clrl 5e5f8 <_impure_ptr>
}
}
43892: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
43898: 4e5e unlk %fp
4389a: 4e75 rts
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
ptr = _REENT;
4389c: 2439 0005 e5f8 movel 5e5f8 <_impure_ptr>,%d2
438a2: 60b0 bras 43854 <newlib_delete_hook+0x18>
00043624 <newlib_free_buffers>:
*/
int newlib_free_buffers(
FILE *fp
)
{
43624: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43628: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4362a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch ( fileno(fp) ) {
4362e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43630: 4eb9 0004 ec84 jsr 4ec84 <fileno> <== NOT EXECUTED
43636: 588f addql #4,%sp <== NOT EXECUTED
43638: 7202 moveq #2,%d1 <== NOT EXECUTED
4363a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4363c: 6414 bccs 43652 <newlib_free_buffers+0x2e> <== NOT EXECUTED
fp->_flags &= ~__SMBF;
fp->_bf._base = fp->_p = (unsigned char *) NULL;
}
break;
default:
fclose(fp);
4363e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43640: 4eb9 0004 ea32 jsr 4ea32 <fclose> <== NOT EXECUTED
43646: 588f addql #4,%sp <== NOT EXECUTED
}
return 0;
}
43648: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4364c: 4280 clrl %d0 <== NOT EXECUTED
4364e: 4e5e unlk %fp <== NOT EXECUTED
43650: 4e75 rts <== NOT EXECUTED
{
switch ( fileno(fp) ) {
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
43652: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED
43656: 48c0 extl %d0 <== NOT EXECUTED
43658: 4a00 tstb %d0 <== NOT EXECUTED
4365a: 6cec bges 43648 <newlib_free_buffers+0x24> <== NOT EXECUTED
free( fp->_bf._base );
4365c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
43660: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
fp->_flags &= ~__SMBF;
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43666: 588f addql #4,%sp <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43668: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
4366c: 4292 clrl %a2@ <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
4366e: 0880 0007 bclr #7,%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
43672: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
43676: 3540 000c movew %d0,%a2@(12) <== NOT EXECUTED
break;
default:
fclose(fp);
}
return 0;
}
4367a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4367e: 4280 clrl %d0 <== NOT EXECUTED
43680: 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 cbe8 tstb 5cbe8 <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 a51e pea 5a51e <_rodata_start+0x21e>
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
42754: 13c0 0005 cbe8 moveb %d0,5cbe8 <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 d3e0 movel %d2,5d3e0 <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 6c48 jsr 46c48 <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
00043918 <open>:
int open(
const char *pathname,
int flags,
...
)
{
43918: 4e56 ffcc linkw %fp,#-52
4391c: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
43920: 242e 000c movel %fp@(12),%d2
/*
* Set the Evaluation flags
*/
eval_flags = 0;
status = flags + 1;
43924: 2002 movel %d2,%d0
43926: 5280 addql #1,%d0
int open(
const char *pathname,
int flags,
...
)
{
43928: 262e 0008 movel %fp@(8),%d3
/*
* Set the Evaluation flags
*/
eval_flags = 0;
status = flags + 1;
if ( ( status & _FREAD ) == _FREAD )
4392c: 0800 0000 btst #0,%d0
43930: 6700 00cc beqw 439fe <open+0xe6>
eval_flags |= RTEMS_LIBIO_PERMS_READ;
43934: 7804 moveq #4,%d4
if ( ( status & _FWRITE ) == _FWRITE )
43936: 0800 0001 btst #1,%d0
4393a: 6704 beqs 43940 <open+0x28>
eval_flags |= RTEMS_LIBIO_PERMS_WRITE;
4393c: 7002 moveq #2,%d0
4393e: 8880 orl %d0,%d4
va_start(ap, flags);
mode = va_arg( ap, int );
43940: 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();
43944: 4eb9 0004 b0a2 jsr 4b0a2 <rtems_libio_allocate>
4394a: 2440 moveal %d0,%a2
if ( iop == 0 ) {
4394c: 4a80 tstl %d0
4394e: 6700 00b4 beqw 43a04 <open+0xec>
}
/*
* See if the file exists.
*/
status = rtems_filesystem_evaluate_path(
43952: 2f03 movel %d3,%sp@-
43954: 4bf9 0004 fd3c lea 4fd3c <strlen>,%a5
4395a: 4e95 jsr %a5@
4395c: 47ee ffec lea %fp@(-20),%a3
43960: 7201 moveq #1,%d1
43962: 49f9 0004 2c04 lea 42c04 <rtems_filesystem_evaluate_path>,%a4
43968: 2e81 movel %d1,%sp@
4396a: 2f0b movel %a3,%sp@-
4396c: 2f04 movel %d4,%sp@-
4396e: 2f00 movel %d0,%sp@-
43970: 2f03 movel %d3,%sp@-
43972: 4e94 jsr %a4@
pathname, strlen( pathname ), eval_flags, &loc, true );
if ( status == -1 ) {
43974: 4fef 0014 lea %sp@(20),%sp
43978: 72ff moveq #-1,%d1
4397a: b280 cmpl %d0,%d1
4397c: 6700 0162 beqw 43ae0 <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)) {
43980: 2002 movel %d2,%d0
43982: 0280 0000 0a00 andil #2560,%d0
43988: 0c80 0000 0a00 cmpil #2560,%d0
4398e: 6700 0090 beqw 43a20 <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 );
43992: 282a 0014 movel %a2@(20),%d4
43996: 2f02 movel %d2,%sp@-
43998: 4eb9 0004 b014 jsr 4b014 <rtems_libio_fcntl_flags>
iop->pathinfo = loc;
4399e: 256e fff4 0020 movel %fp@(-12),%a2@(32)
439a4: 256e fff0 001c movel %fp@(-16),%a2@(28)
439aa: 256e fff8 0024 movel %fp@(-8),%a2@(36)
439b0: 256e fffc 0028 movel %fp@(-4),%a2@(40)
439b6: 2553 0018 movel %a3@,%a2@(24)
rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
439ba: 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 );
439be: 8084 orl %d4,%d0
439c0: 2540 0014 movel %d0,%a2@(20)
iop->pathinfo = loc;
rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
439c4: 2f05 movel %d5,%sp@-
439c6: 2f02 movel %d2,%sp@-
439c8: 2f03 movel %d3,%sp@-
439ca: 2f0a movel %a2,%sp@-
439cc: 2050 moveal %a0@,%a0
439ce: 4e90 jsr %a0@
if ( rc ) {
439d0: 4fef 0014 lea %sp@(20),%sp
439d4: 4a80 tstl %d0
439d6: 6600 00f4 bnew 43acc <open+0x1b4>
}
/*
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
439da: 0802 000a btst #10,%d2
439de: 6670 bnes 43a50 <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;
439e0: 200a movel %a2,%d0
439e2: 90b9 0005 fb24 subl 5fb24 <rtems_libio_iops>,%d0
439e8: 223c b6db 6db7 movel #-1227133513,%d1
439ee: e680 asrl #3,%d0
439f0: 4c01 0800 mulsl %d1,%d0
}
439f4: 4cee 3c3c ffcc moveml %fp@(-52),%d2-%d5/%a2-%a5
439fa: 4e5e unlk %fp
439fc: 4e75 rts
int eval_flags;
/*
* Set the Evaluation flags
*/
eval_flags = 0;
439fe: 4284 clrl %d4
43a00: 6000 ff34 braw 43936 <open+0x1e>
*/
/* allocate a file control block */
iop = rtems_libio_allocate();
if ( iop == 0 ) {
rc = ENFILE;
43a04: 7417 moveq #23,%d2
43a06: 283c 0004 e8e4 movel #321764,%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 );
43a0c: 2044 moveal %d4,%a0
43a0e: 4e90 jsr %a0@
43a10: 2040 moveal %d0,%a0
43a12: 70ff moveq #-1,%d0
43a14: 2082 movel %d2,%a0@
}
return iop - rtems_libio_iops;
}
43a16: 4cee 3c3c ffcc moveml %fp@(-52),%d2-%d5/%a2-%a5
43a1c: 4e5e unlk %fp
43a1e: 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;
43a20: 7411 moveq #17,%d2 <== NOT EXECUTED
43a22: 283c 0004 e8e4 movel #321764,%d4 <== NOT EXECUTED
*/
done:
va_end(ap);
if ( rc ) {
if ( iop )
43a28: 4a8a tstl %a2
43a2a: 670a beqs 43a36 <open+0x11e> <== NEVER TAKEN
rtems_libio_free( iop );
43a2c: 2f0a movel %a2,%sp@-
43a2e: 4eb9 0004 b166 jsr 4b166 <rtems_libio_free>
43a34: 588f addql #4,%sp
if ( loc_to_free )
43a36: 4a8b tstl %a3
43a38: 67d2 beqs 43a0c <open+0xf4>
rtems_filesystem_freenode( loc_to_free );
43a3a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43a3c: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode> <== NOT EXECUTED
43a42: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( rc );
43a44: 2044 moveal %d4,%a0 <== NOT EXECUTED
43a46: 4e90 jsr %a0@ <== NOT EXECUTED
43a48: 2040 moveal %d0,%a0 <== NOT EXECUTED
43a4a: 70ff moveq #-1,%d0 <== NOT EXECUTED
43a4c: 2082 movel %d2,%a0@ <== NOT EXECUTED
43a4e: 60c6 bras 43a16 <open+0xfe> <== NOT EXECUTED
/*
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
rc = ftruncate( iop - rtems_libio_iops, 0 );
43a50: 200a movel %a2,%d0 <== NOT EXECUTED
43a52: 90b9 0005 fb24 subl 5fb24 <rtems_libio_iops>,%d0 <== NOT EXECUTED
43a58: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED
43a5e: e680 asrl #3,%d0 <== NOT EXECUTED
43a60: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
43a64: 42a7 clrl %sp@- <== NOT EXECUTED
43a66: 42a7 clrl %sp@- <== NOT EXECUTED
43a68: 2f01 movel %d1,%sp@- <== NOT EXECUTED
43a6a: 4eb9 0004 af20 jsr 4af20 <ftruncate> <== NOT EXECUTED
if ( rc ) {
43a70: 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 );
43a74: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( rc ) {
43a76: 6700 ff68 beqw 439e0 <open+0xc8> <== NOT EXECUTED
if(errno) rc = errno;
43a7a: 283c 0004 e8e4 movel #321764,%d4 <== NOT EXECUTED
43a80: 2044 moveal %d4,%a0 <== NOT EXECUTED
43a82: 4e90 jsr %a0@ <== NOT EXECUTED
43a84: 2040 moveal %d0,%a0 <== NOT EXECUTED
43a86: 4a90 tstl %a0@ <== NOT EXECUTED
43a88: 6600 0086 bnew 43b10 <open+0x1f8> <== NOT EXECUTED
close( iop - rtems_libio_iops );
43a8c: 200a movel %a2,%d0 <== NOT EXECUTED
43a8e: 90b9 0005 fb24 subl 5fb24 <rtems_libio_iops>,%d0 <== NOT EXECUTED
43a94: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED
43a9a: e680 asrl #3,%d0 <== NOT EXECUTED
43a9c: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
/* those are released by close(): */
iop = 0;
loc_to_free = NULL;
43aa0: 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;
43aa2: 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 );
43aa4: 2f01 movel %d1,%sp@- <== NOT EXECUTED
43aa6: 4eb9 0004 ae98 jsr 4ae98 <close> <== NOT EXECUTED
43aac: 588f addql #4,%sp <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
43aae: 4a82 tstl %d2 <== NOT EXECUTED
43ab0: 6600 ff76 bnew 43a28 <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;
43ab4: 200a movel %a2,%d0 <== NOT EXECUTED
43ab6: 90b9 0005 fb24 subl 5fb24 <rtems_libio_iops>,%d0 <== NOT EXECUTED
43abc: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED
43ac2: e680 asrl #3,%d0 <== NOT EXECUTED
43ac4: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
43ac8: 6000 ff2a braw 439f4 <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;
43acc: 283c 0004 e8e4 movel #321764,%d4 <== NOT EXECUTED
43ad2: 2044 moveal %d4,%a0 <== NOT EXECUTED
43ad4: 4e90 jsr %a0@ <== NOT EXECUTED
43ad6: 2040 moveal %d0,%a0 <== NOT EXECUTED
43ad8: 2410 movel %a0@,%d2 <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
43ada: 67d8 beqs 43ab4 <open+0x19c> <== NOT EXECUTED
43adc: 6000 ff4a braw 43a28 <open+0x110> <== NOT EXECUTED
*/
status = rtems_filesystem_evaluate_path(
pathname, strlen( pathname ), eval_flags, &loc, true );
if ( status == -1 ) {
if ( errno != ENOENT ) {
43ae0: 283c 0004 e8e4 movel #321764,%d4
43ae6: 2044 moveal %d4,%a0
43ae8: 4e90 jsr %a0@
43aea: 7202 moveq #2,%d1
43aec: 2040 moveal %d0,%a0
43aee: b290 cmpl %a0@,%d1
43af0: 6710 beqs 43b02 <open+0x1ea> <== ALWAYS TAKEN
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
if ( rc ) {
rc = errno;
43af2: 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;
43af4: 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;
43af6: 4e90 jsr %a0@ <== NOT EXECUTED
43af8: 2040 moveal %d0,%a0 <== NOT EXECUTED
43afa: 2410 movel %a0@,%d2 <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
43afc: 67b6 beqs 43ab4 <open+0x19c> <== NOT EXECUTED
43afe: 6000 ff28 braw 43a28 <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) ) {
43b02: 0802 0009 btst #9,%d2
43b06: 6636 bnes 43b3e <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;
43b08: 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;
43b0a: 7402 moveq #2,%d2
43b0c: 6000 ff1a braw 43a28 <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;
43b10: 2044 moveal %d4,%a0 <== NOT EXECUTED
close( iop - rtems_libio_iops );
/* those are released by close(): */
iop = 0;
loc_to_free = NULL;
43b12: 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;
43b14: 4e90 jsr %a0@ <== NOT EXECUTED
close( iop - rtems_libio_iops );
43b16: 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;
43b1c: 2040 moveal %d0,%a0 <== NOT EXECUTED
close( iop - rtems_libio_iops );
43b1e: 200a movel %a2,%d0 <== NOT EXECUTED
43b20: 90b9 0005 fb24 subl 5fb24 <rtems_libio_iops>,%d0 <== NOT EXECUTED
/* those are released by close(): */
iop = 0;
43b26: 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 );
43b28: e680 asrl #3,%d0 <== NOT EXECUTED
43b2a: 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;
43b2e: 2410 movel %a0@,%d2 <== NOT EXECUTED
close( iop - rtems_libio_iops );
43b30: 2f01 movel %d1,%sp@- <== NOT EXECUTED
43b32: 4eb9 0004 ae98 jsr 4ae98 <close> <== NOT EXECUTED
43b38: 588f addql #4,%sp <== NOT EXECUTED
43b3a: 6000 ff72 braw 43aae <open+0x196> <== NOT EXECUTED
rc = ENOENT;
goto done;
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
43b3e: 42a7 clrl %sp@-
43b40: 2005 movel %d5,%d0
43b42: 42a7 clrl %sp@-
43b44: 08c0 000f bset #15,%d0
43b48: 2f00 movel %d0,%sp@-
43b4a: 2f03 movel %d3,%sp@-
43b4c: 4eb9 0004 311c jsr 4311c <mknod>
if ( rc ) {
43b52: 4fef 0010 lea %sp@(16),%sp
43b56: 4a80 tstl %d0
43b58: 6698 bnes 43af2 <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(
43b5a: 2f03 movel %d3,%sp@-
43b5c: 4e95 jsr %a5@
43b5e: 7201 moveq #1,%d1
43b60: 2e81 movel %d1,%sp@
43b62: 2f0b movel %a3,%sp@-
43b64: 42a7 clrl %sp@-
43b66: 2f00 movel %d0,%sp@-
43b68: 2f03 movel %d3,%sp@-
43b6a: 4e94 jsr %a4@
pathname, strlen( pathname ), 0x0, &loc, true );
if ( status != 0 ) { /* The file did not exist */
43b6c: 4fef 0014 lea %sp@(20),%sp
43b70: 4a80 tstl %d0
43b72: 6700 fe1e beqw 43992 <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;
43b76: 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;
43b78: 740d moveq #13,%d2 <== NOT EXECUTED
43b7a: 6000 feac braw 43a28 <open+0x110> <== NOT EXECUTED
000438a4 <open_dev_console>:
/*
* This is a replaceable stub which opens the console, if present.
*/
void open_dev_console(void)
{
438a4: 4e56 0000 linkw %fp,#0
438a8: 2f0a movel %a2,%sp@-
int stderr_fd;
/*
* Attempt to open /dev/console.
*/
if ((stdin_fd = open("/dev/console", O_RDONLY, 0)) == -1) {
438aa: 45f9 0004 3918 lea 43918 <open>,%a2
438b0: 42a7 clrl %sp@-
438b2: 42a7 clrl %sp@-
438b4: 4879 0005 ce0a pea 5ce0a <CSWTCH.55+0x100>
438ba: 4e92 jsr %a2@
438bc: 4fef 000c lea %sp@(12),%sp
438c0: 72ff moveq #-1,%d1
438c2: b280 cmpl %d0,%d1
438c4: 6730 beqs 438f6 <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)
438c6: 42a7 clrl %sp@-
438c8: 4878 0001 pea 1 <ADD>
438cc: 4879 0005 ce0a pea 5ce0a <CSWTCH.55+0x100>
438d2: 4e92 jsr %a2@
438d4: 4fef 000c lea %sp@(12),%sp
438d8: 72ff moveq #-1,%d1
438da: b280 cmpl %d0,%d1
438dc: 672c beqs 4390a <open_dev_console+0x66>
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */
if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)
438de: 42a7 clrl %sp@-
438e0: 4878 0001 pea 1 <ADD>
438e4: 4879 0005 ce0a pea 5ce0a <CSWTCH.55+0x100>
438ea: 4e92 jsr %a2@
438ec: 4fef 000c lea %sp@(12),%sp
438f0: 72ff moveq #-1,%d1
438f2: b280 cmpl %d0,%d1
438f4: 6708 beqs 438fe <open_dev_console+0x5a>
rtems_fatal_error_occurred( 0x55544432 ); /* error STD2 */
}
438f6: 246e fffc moveal %fp@(-4),%a2
438fa: 4e5e unlk %fp
438fc: 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 */
438fe: 2f3c 5554 4432 movel #1431585842,%sp@-
43904: 4eb9 0004 6bac jsr 46bac <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 */
4390a: 2f3c 5554 4431 movel #1431585841,%sp@-
43910: 4eb9 0004 6bac jsr 46bac <rtems_fatal_error_occurred>
...
0004483e <oproc>:
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
4483e: 4e56 fff0 linkw %fp,#-16
44842: 202e 0008 movel %fp@(8),%d0
44846: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4484a: 246e 000c moveal %fp@(12),%a2
int i;
if (tty->termios.c_oflag & OPOST) {
4484e: 222a 0034 movel %a2@(52),%d1
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
44852: 1d40 fffe moveb %d0,%fp@(-2)
int i;
if (tty->termios.c_oflag & OPOST) {
44856: 0801 0000 btst #0,%d1
4485a: 6700 0092 beqw 448ee <oproc+0xb0>
switch (c) {
4485e: 7409 moveq #9,%d2
44860: 0280 0000 00ff andil #255,%d0
44866: b480 cmpl %d0,%d2
44868: 6700 0118 beqw 44982 <oproc+0x144>
4486c: 6450 bccs 448be <oproc+0x80> <== NEVER TAKEN
4486e: 740a moveq #10,%d2
44870: b480 cmpl %d0,%d2
44872: 6700 0092 beqw 44906 <oproc+0xc8>
44876: 143c 000d moveb #13,%d2
4487a: b480 cmpl %d0,%d2
4487c: 6700 00c6 beqw 44944 <oproc+0x106>
if (tty->column > 0)
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
44880: 0801 0001 btst #1,%d1
44884: 6600 0138 bnew 449be <oproc+0x180>
44888: 2079 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a0
4488e: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3
c = toupper(c);
if (!iscntrl(c))
44894: 1030 0801 moveb %a0@(00000001,%d0:l),%d0
44898: 49c0 extbl %d0
4489a: 0800 0005 btst #5,%d0
4489e: 6604 bnes 448a4 <oproc+0x66> <== NEVER TAKEN
tty->column++;
448a0: 52aa 0028 addql #1,%a2@(40)
break;
}
}
rtems_termios_puts (&c, 1, tty);
448a4: 2f0a movel %a2,%sp@-
448a6: 4878 0001 pea 1 <ADD>
448aa: 486e fffe pea %fp@(-2)
448ae: 4e93 jsr %a3@
448b0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
448b4: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
448ba: 4e5e unlk %fp <== NOT EXECUTED
448bc: 4e75 rts <== NOT EXECUTED
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
int i;
if (tty->termios.c_oflag & OPOST) {
switch (c) {
448be: 143c 0008 moveb #8,%d2 <== NOT EXECUTED
448c2: b480 cmpl %d0,%d2 <== NOT EXECUTED
448c4: 66ba bnes 44880 <oproc+0x42> <== NOT EXECUTED
}
tty->column += i;
break;
case '\b':
if (tty->column > 0)
448c6: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
448ca: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3 <== NOT EXECUTED
448d0: 6fd2 bles 448a4 <oproc+0x66> <== NOT EXECUTED
tty->column--;
448d2: 5380 subql #1,%d0 <== NOT EXECUTED
448d4: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
448d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
448da: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
448de: 486e fffe pea %fp@(-2) <== NOT EXECUTED
448e2: 4e93 jsr %a3@ <== NOT EXECUTED
448e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
448e8: 60ca bras 448b4 <oproc+0x76> <== NOT EXECUTED
c = '\n';
if (tty->termios.c_oflag & ONLRET)
tty->column = 0;
break;
}
tty->column = 0;
448ea: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
448ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED
448f0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
448f4: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3 <== NOT EXECUTED
448fa: 486e fffe pea %fp@(-2) <== NOT EXECUTED
448fe: 4e93 jsr %a3@ <== NOT EXECUTED
44900: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44904: 60ae bras 448b4 <oproc+0x76> <== NOT EXECUTED
int i;
if (tty->termios.c_oflag & OPOST) {
switch (c) {
case '\n':
if (tty->termios.c_oflag & ONLRET)
44906: 0801 0005 btst #5,%d1
4490a: 6704 beqs 44910 <oproc+0xd2> <== ALWAYS TAKEN
tty->column = 0;
4490c: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
44910: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3
if (tty->termios.c_oflag & ONLCR) {
44916: 44c1 movew %d1,%ccr
44918: 668a bnes 448a4 <oproc+0x66> <== NEVER TAKEN
rtems_termios_puts ("\r", 1, tty);
4491a: 2f0a movel %a2,%sp@-
4491c: 4878 0001 pea 1 <ADD>
44920: 4879 0005 d442 pea 5d442 <rtems_filesystem_default_pathconf+0xa6>
44926: 4e93 jsr %a3@
tty->column = 0;
44928: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4492c: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
44930: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44932: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44936: 486e fffe pea %fp@(-2) <== NOT EXECUTED
4493a: 4e93 jsr %a3@ <== NOT EXECUTED
4493c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44940: 6000 ff72 braw 448b4 <oproc+0x76> <== NOT EXECUTED
tty->column = 0;
}
break;
case '\r':
if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))
44944: 0801 0004 btst #4,%d1 <== NOT EXECUTED
44948: 6708 beqs 44952 <oproc+0x114> <== NOT EXECUTED
4494a: 4aaa 0028 tstl %a2@(40) <== NOT EXECUTED
4494e: 6700 ff64 beqw 448b4 <oproc+0x76> <== NOT EXECUTED
return;
if (tty->termios.c_oflag & OCRNL) {
44952: 44c1 movew %d1,%ccr <== NOT EXECUTED
44954: 6a94 bpls 448ea <oproc+0xac> <== NOT EXECUTED
44956: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3 <== NOT EXECUTED
c = '\n';
4495c: 700a moveq #10,%d0 <== NOT EXECUTED
4495e: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
if (tty->termios.c_oflag & ONLRET)
44962: 0801 0005 btst #5,%d1 <== NOT EXECUTED
44966: 6700 ff3c beqw 448a4 <oproc+0x66> <== NOT EXECUTED
tty->column = 0;
4496a: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
4496e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44970: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44974: 486e fffe pea %fp@(-2) <== NOT EXECUTED
44978: 4e93 jsr %a3@ <== NOT EXECUTED
4497a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4497e: 6000 ff34 braw 448b4 <oproc+0x76> <== NOT EXECUTED
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
44982: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44986: 7407 moveq #7,%d2 <== NOT EXECUTED
44988: 307c 0008 moveaw #8,%a0 <== NOT EXECUTED
4498c: c480 andl %d0,%d2 <== NOT EXECUTED
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
4498e: 0281 0000 1800 andil #6144,%d1 <== NOT EXECUTED
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
44994: 91c2 subal %d2,%a0 <== NOT EXECUTED
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
44996: 0c81 0000 1800 cmpil #6144,%d1 <== NOT EXECUTED
4499c: 675a beqs 449f8 <oproc+0x1ba> <== NOT EXECUTED
tty->column += i;
rtems_termios_puts ( " ", i, tty);
return;
}
tty->column += i;
4499e: d1c0 addal %d0,%a0 <== NOT EXECUTED
449a0: 47f9 0004 473a lea 4473a <rtems_termios_puts>,%a3 <== NOT EXECUTED
449a6: 2548 0028 movel %a0,%a2@(40) <== NOT EXECUTED
if (!iscntrl(c))
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
449aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
449ac: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
449b0: 486e fffe pea %fp@(-2) <== NOT EXECUTED
449b4: 4e93 jsr %a3@ <== NOT EXECUTED
449b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
449ba: 6000 fef8 braw 448b4 <oproc+0x76> <== NOT EXECUTED
tty->column--;
break;
default:
if (tty->termios.c_oflag & OLCUC)
c = toupper(c);
449be: 2079 0005 e5f4 moveal 5e5f4 <__ctype_ptr__>,%a0 <== NOT EXECUTED
449c4: 7403 moveq #3,%d2 <== NOT EXECUTED
449c6: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
449ca: 49c1 extbl %d1 <== NOT EXECUTED
449cc: c282 andl %d2,%d1 <== NOT EXECUTED
449ce: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
449d2: b481 cmpl %d1,%d2 <== NOT EXECUTED
449d4: 670e beqs 449e4 <oproc+0x1a6> <== NOT EXECUTED
449d6: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
449da: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
449e0: 6000 feac braw 4488e <oproc+0x50> <== NOT EXECUTED
449e4: 0680 ffff ffe0 addil #-32,%d0 <== NOT EXECUTED
449ea: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
449ee: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
449f4: 6000 fe98 braw 4488e <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);
449f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
break;
case '\t':
i = 8 - (tty->column & 7);
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
tty->column += i;
449fa: d088 addl %a0,%d0 <== NOT EXECUTED
449fc: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
rtems_termios_puts ( " ", i, tty);
44a00: 2f08 movel %a0,%sp@- <== NOT EXECUTED
44a02: 4879 0005 d444 pea 5d444 <rtems_filesystem_default_pathconf+0xa8><== NOT EXECUTED
44a08: 4eb9 0004 473a jsr 4473a <rtems_termios_puts> <== NOT EXECUTED
return;
44a0e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->column++;
break;
}
}
rtems_termios_puts (&c, 1, tty);
}
44a12: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
44a18: 4e5e unlk %fp <== NOT EXECUTED
00044fbc <pathconf>:
long pathconf(
const char *path,
int name
)
{
44fbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44fc0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44fc2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
44fc4: 42a7 clrl %sp@- <== NOT EXECUTED
44fc6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
44fca: 4eb9 0004 4d34 jsr 44d34 <open> <== NOT EXECUTED
if ( fd == -1 )
44fd0: 508f addql #8,%sp <== NOT EXECUTED
)
{
int status;
int fd;
fd = open( path, O_RDONLY );
44fd2: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( fd == -1 )
44fd4: 70ff moveq #-1,%d0 <== NOT EXECUTED
44fd6: b082 cmpl %d2,%d0 <== NOT EXECUTED
44fd8: 6728 beqs 45002 <pathconf+0x46> <== NOT EXECUTED
return -1;
status = fpathconf( fd, name );
44fda: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44fde: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44fe0: 4eb9 0004 3a60 jsr 43a60 <fpathconf> <== NOT EXECUTED
44fe6: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
44fe8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44fea: 4eb9 0004 3320 jsr 43320 <close> <== NOT EXECUTED
return status;
}
44ff0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
status = fpathconf( fd, name );
(void) close( fd );
return status;
44ff4: 2003 movel %d3,%d0 <== NOT EXECUTED
44ff6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
44ffa: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
44ffe: 4e5e unlk %fp <== NOT EXECUTED
45000: 4e75 rts <== NOT EXECUTED
45002: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
if ( fd == -1 )
return -1;
45006: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = fpathconf( fd, name );
(void) close( fd );
return status;
}
45008: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4500c: 4e5e unlk %fp <== NOT EXECUTED
00048544 <pause>:
/*
* 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81
*/
int pause( void )
{
48544: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48548: 2f02 movel %d2,%sp@- <== NOT EXECUTED
sigset_t all_signals;
int status;
(void) sigfillset( &all_signals );
4854a: 240e movel %fp,%d2 <== NOT EXECUTED
4854c: 5982 subql #4,%d2 <== NOT EXECUTED
4854e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48550: 4eb9 0004 93d0 jsr 493d0 <sigfillset> <== NOT EXECUTED
status = sigtimedwait( &all_signals, NULL, NULL );
48556: 42a7 clrl %sp@- <== NOT EXECUTED
48558: 42a7 clrl %sp@- <== NOT EXECUTED
4855a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4855c: 4eb9 0004 954c jsr 4954c <sigtimedwait> <== NOT EXECUTED
return status;
}
48562: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48566: 4e5e unlk %fp <== NOT EXECUTED
...
00045294 <pipe>:
extern int pipe_create(int filsdes[2]);
int pipe(
int filsdes[2]
)
{
45294: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45298: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if (filsdes == NULL)
4529c: 670c beqs 452aa <pipe+0x16> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
4529e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
452a2: 4e5e unlk %fp <== NOT EXECUTED
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
452a4: 4ef9 0004 c10c jmp 4c10c <pipe_create> <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
452aa: 4eb9 0005 0780 jsr 50780 <__errno> <== NOT EXECUTED
452b0: 720e moveq #14,%d1 <== NOT EXECUTED
452b2: 2040 moveal %d0,%a0 <== NOT EXECUTED
return pipe_create(filsdes);
}
452b4: 70ff moveq #-1,%d0 <== NOT EXECUTED
452b6: 4e5e unlk %fp <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
452b8: 2081 movel %d1,%a0@ <== NOT EXECUTED
return pipe_create(filsdes);
}
0004c10c <pipe_create>:
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4c10c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4c110: 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)
4c114: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
4c118: 4879 0005 f208 pea 5f208 <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4c11e: 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)
4c122: 4eb9 0004 da7c jsr 4da7c <rtems_mkdir> <== NOT EXECUTED
4c128: 508f addql #8,%sp <== NOT EXECUTED
4c12a: 4a80 tstl %d0 <== NOT EXECUTED
4c12c: 670c beqs 4c13a <pipe_create+0x2e> <== NOT EXECUTED
return -1;
4c12e: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c130: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c136: 4e5e unlk %fp <== NOT EXECUTED
4c138: 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);
4c13a: 45ee fff1 lea %fp@(-15),%a2 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c13e: 3039 0006 0ef8 movew 60ef8 <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);
4c144: 24bc 2f74 6d70 movel #796159344,%a2@ <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c14a: 2200 movel %d0,%d1 <== NOT EXECUTED
4c14c: 5281 addql #1,%d1 <== NOT EXECUTED
4c14e: 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);
4c150: 203c 2f2e 6669 movel #791570025,%d0 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c156: 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);
4c158: 307c 666f moveaw #26223,%a0 <== NOT EXECUTED
4c15c: 2d40 fff5 movel %d0,%fp@(-11) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c160: 4879 0005 f20d pea 5f20d <_CPU_m68k_BFFFO_table+0x105> <== NOT EXECUTED
4c166: 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);
4c16a: 3d48 fff9 movew %a0,%fp@(-7) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4c16e: 33c1 0006 0ef8 movew %d1,60ef8 <rtems_pipe_no> <== NOT EXECUTED
4c174: 4eb9 0005 14a4 jsr 514a4 <sprintf> <== NOT EXECUTED
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
4c17a: 4878 0180 pea 180 <DBL_MANT_DIG+0x14b> <== NOT EXECUTED
4c17e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c180: 4eb9 0004 d7a8 jsr 4d7a8 <mkfifo> <== NOT EXECUTED
4c186: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4c18a: 4a80 tstl %d0 <== NOT EXECUTED
4c18c: 6600 009a bnew 4c228 <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);
4c190: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
4c194: 49f9 0004 500c lea 4500c <open>,%a4 <== NOT EXECUTED
4c19a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c19c: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c19e: 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);
4c1a0: 2680 movel %d0,%a3@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c1a2: 6d4e blts 4c1f2 <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]);
4c1a4: b0b9 0005 fdc4 cmpl 5fdc4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4c1aa: 6442 bccs 4c1ee <pipe_create+0xe2> <== NOT EXECUTED
4c1ac: 2200 movel %d0,%d1 <== NOT EXECUTED
4c1ae: ed88 lsll #6,%d0 <== NOT EXECUTED
4c1b0: e789 lsll #3,%d1 <== NOT EXECUTED
4c1b2: 2079 0006 15ec moveal 615ec <rtems_libio_iops>,%a0 <== NOT EXECUTED
4c1b8: 9081 subl %d1,%d0 <== NOT EXECUTED
4c1ba: d1c0 addal %d0,%a0 <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4c1bc: 70fe moveq #-2,%d0 <== NOT EXECUTED
4c1be: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED
filsdes[1] = open(fifopath, O_WRONLY);
4c1c2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c1c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c1c8: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[1] < 0) {
4c1ca: 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);
4c1cc: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
if (filsdes[1] < 0) {
4c1d0: 6d36 blts 4c208 <pipe_create+0xfc> <== NOT EXECUTED
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c1d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
int pipe_create(
int filsdes[2]
)
{
rtems_libio_t *iop;
int err = 0;
4c1d4: 99cc subal %a4,%a4 <== NOT EXECUTED
if (filsdes[1] < 0) {
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c1d6: 4eb9 0004 712c jsr 4712c <unlink> <== NOT EXECUTED
4c1dc: 588f addql #4,%sp <== NOT EXECUTED
}
if(err != 0)
4c1de: 4a8c tstl %a4 <== NOT EXECUTED
4c1e0: 6658 bnes 4c23a <pipe_create+0x12e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(err);
return 0;
4c1e2: 4280 clrl %d0 <== NOT EXECUTED
}
4c1e4: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c1ea: 4e5e unlk %fp <== NOT EXECUTED
4c1ec: 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]);
4c1ee: 91c8 subal %a0,%a0 <== NOT EXECUTED
4c1f0: 60ca bras 4c1bc <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;
4c1f2: 4eb9 0005 0780 jsr 50780 <__errno> <== NOT EXECUTED
4c1f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c1fa: 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);
4c1fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c1fe: 4eb9 0004 712c jsr 4712c <unlink> <== NOT EXECUTED
4c204: 588f addql #4,%sp <== NOT EXECUTED
4c206: 60d6 bras 4c1de <pipe_create+0xd2> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
filsdes[1] = open(fifopath, O_WRONLY);
if (filsdes[1] < 0) {
err = errno;
4c208: 4eb9 0005 0780 jsr 50780 <__errno> <== NOT EXECUTED
4c20e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c210: 2850 moveal %a0@,%a4 <== NOT EXECUTED
close(filsdes[0]);
4c212: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4c214: 4eb9 0004 3c88 jsr 43c88 <close> <== NOT EXECUTED
4c21a: 588f addql #4,%sp <== NOT EXECUTED
}
unlink(fifopath);
4c21c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c21e: 4eb9 0004 712c jsr 4712c <unlink> <== NOT EXECUTED
4c224: 588f addql #4,%sp <== NOT EXECUTED
4c226: 60b6 bras 4c1de <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){
4c228: 4eb9 0005 0780 jsr 50780 <__errno> <== NOT EXECUTED
return -1;
4c22e: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c230: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c236: 4e5e unlk %fp <== NOT EXECUTED
4c238: 4e75 rts <== NOT EXECUTED
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
4c23a: 4eb9 0005 0780 jsr 50780 <__errno> <== NOT EXECUTED
4c240: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c242: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c244: 208c movel %a4,%a0@ <== NOT EXECUTED
return 0;
}
4c246: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c24c: 4e5e unlk %fp <== NOT EXECUTED
0004d83a <pipe_ioctl>:
pipe_control_t *pipe,
uint32_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4d83a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (cmd == FIONREAD) {
4d83e: 203c 4004 667f movel #1074030207,%d0 <== NOT EXECUTED
4d844: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED
4d848: 6706 beqs 4d850 <pipe_ioctl+0x16> <== NOT EXECUTED
*(unsigned int *)buffer = pipe->Length;
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
4d84a: 70ea moveq #-22,%d0 <== NOT EXECUTED
}
4d84c: 4e5e unlk %fp <== NOT EXECUTED
4d84e: 4e75 rts <== NOT EXECUTED
void *buffer,
rtems_libio_t *iop
)
{
if (cmd == FIONREAD) {
if (buffer == NULL)
4d850: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
4d854: 6606 bnes 4d85c <pipe_ioctl+0x22> <== NOT EXECUTED
return -EFAULT;
4d856: 70f2 moveq #-14,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d858: 4e5e unlk %fp <== NOT EXECUTED
4d85a: 4e75 rts <== NOT EXECUTED
{
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
if (! PIPE_LOCK(pipe))
4d85c: 42a7 clrl %sp@- <== NOT EXECUTED
4d85e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d862: 42a7 clrl %sp@- <== NOT EXECUTED
4d864: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
4d868: 4eb9 0004 87f4 jsr 487f4 <rtems_semaphore_obtain> <== NOT EXECUTED
4d86e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d872: 4a80 tstl %d0 <== NOT EXECUTED
4d874: 6706 beqs 4d87c <pipe_ioctl+0x42> <== NOT EXECUTED
return -EINTR;
4d876: 70fc moveq #-4,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d878: 4e5e unlk %fp <== NOT EXECUTED
4d87a: 4e75 rts <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
4d87c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d880: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
4d884: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d888: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
4d88c: 4eb9 0004 8934 jsr 48934 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
4d892: 588f addql #4,%sp <== NOT EXECUTED
4d894: 4280 clrl %d0 <== NOT EXECUTED
}
return -EINVAL;
}
4d896: 4e5e unlk %fp <== NOT EXECUTED
0004d89a <pipe_lseek>:
rtems_libio_t *iop
)
{
/* Seek on pipe is not supported */
return -ESPIPE;
}
4d89a: 70e3 moveq #-29,%d0 <== NOT EXECUTED
pipe_control_t *pipe,
off_t offset,
int whence,
rtems_libio_t *iop
)
{
4d89c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Seek on pipe is not supported */
return -ESPIPE;
}
4d8a0: 4e5e unlk %fp <== NOT EXECUTED
0004d424 <pipe_read>:
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d424: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
4d428: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d42c: 42a7 clrl %sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d42e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d432: 47f9 0004 87f4 lea 487f4 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
4d438: 42a7 clrl %sp@- <== NOT EXECUTED
4d43a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d43e: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
4d442: 2a6e 0014 moveal %fp@(20),%a5 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d446: 4e93 jsr %a3@ <== NOT EXECUTED
4d448: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d44c: 4a80 tstl %d0 <== NOT EXECUTED
4d44e: 6600 00aa bnew 4d4fa <pipe_read+0xd6> <== NOT EXECUTED
return -EINTR;
while (read < count) {
4d452: 4a84 tstl %d4 <== NOT EXECUTED
4d454: 6700 01a8 beqw 4d5fe <pipe_read+0x1da> <== NOT EXECUTED
4d458: 4285 clrl %d5 <== NOT EXECUTED
4d45a: 4283 clrl %d3 <== NOT EXECUTED
4d45c: 49f9 0004 8934 lea 48934 <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))
4d462: 243c 0004 efc4 movel #323524,%d2 <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4d468: 2e3c 0004 ef4c movel #323404,%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);
4d46e: 2c3c 0005 1e48 movel #335432,%d6 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
4d474: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4d478: 6600 008c bnew 4d506 <pipe_read+0xe2> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
4d47c: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4d480: 6700 0106 beqw 4d588 <pipe_read+0x164> <== NOT EXECUTED
goto out_locked;
if (LIBIO_NODELAY(iop)) {
4d484: 7001 moveq #1,%d0 <== NOT EXECUTED
4d486: c0ad 0014 andl %a5@(20),%d0 <== NOT EXECUTED
4d48a: 6600 010c bnew 4d598 <pipe_read+0x174> <== NOT EXECUTED
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
4d48e: 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 ++;
4d492: 52aa 0018 addql #1,%a2@(24) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d496: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d498: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d49a: 42a7 clrl %sp@- <== NOT EXECUTED
4d49c: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d4a0: 4e90 jsr %a0@ <== NOT EXECUTED
4d4a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d4a6: 4a80 tstl %d0 <== NOT EXECUTED
4d4a8: 663a bnes 4d4e4 <pipe_read+0xc0> <== NOT EXECUTED
4d4aa: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d4ae: 42a7 clrl %sp@- <== NOT EXECUTED
4d4b0: 42a7 clrl %sp@- <== NOT EXECUTED
4d4b2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d4b6: 4e93 jsr %a3@ <== NOT EXECUTED
4d4b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d4bc: 4a80 tstl %d0 <== NOT EXECUTED
4d4be: 6600 00ea bnew 4d5aa <pipe_read+0x186> <== NOT EXECUTED
/* WARN waitingReaders not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingReaders --;
4d4c2: 53aa 0018 subql #1,%a2@(24) <== NOT EXECUTED
if (ret != 0)
4d4c6: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
4d4ca: 67a8 beqs 4d474 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d4cc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d4d0: 4e94 jsr %a4@ <== NOT EXECUTED
4d4d2: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
if (read > 0)
4d4d4: 4a83 tstl %d3 <== NOT EXECUTED
4d4d6: 6f14 bles 4d4ec <pipe_read+0xc8> <== NOT EXECUTED
4d4d8: 2003 movel %d3,%d0 <== NOT EXECUTED
return read;
return ret;
}
4d4da: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d4e0: 4e5e unlk %fp <== NOT EXECUTED
4d4e2: 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;
4d4e4: 70fc moveq #-4,%d0 <== NOT EXECUTED
4d4e6: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
4d4ea: 60c2 bras 4d4ae <pipe_read+0x8a> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
return read;
return ret;
4d4ec: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
}
4d4f0: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d4f6: 4e5e unlk %fp <== NOT EXECUTED
4d4f8: 4e75 rts <== NOT EXECUTED
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d4fa: 70fc moveq #-4,%d0 <== NOT EXECUTED
out_nolock:
if (read > 0)
return read;
return ret;
}
4d4fc: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d502: 4e5e unlk %fp <== NOT EXECUTED
4d504: 4e75 rts <== NOT EXECUTED
if (ret != 0)
goto out_locked;
}
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
4d506: 2004 movel %d4,%d0 <== NOT EXECUTED
4d508: 9085 subl %d5,%d0 <== NOT EXECUTED
4d50a: b081 cmpl %d1,%d0 <== NOT EXECUTED
4d50c: 6402 bccs 4d510 <pipe_read+0xec> <== NOT EXECUTED
4d50e: 2200 movel %d0,%d1 <== NOT EXECUTED
chunk1 = pipe->Size - pipe->Start;
4d510: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
4d514: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
4d518: 91c0 subal %d0,%a0 <== NOT EXECUTED
if (chunk > chunk1) {
4d51a: b1c1 cmpal %d1,%a0 <== NOT EXECUTED
4d51c: 6d00 009c bltw 4d5ba <pipe_read+0x196> <== 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);
4d520: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d522: d092 addl %a2@,%d0 <== NOT EXECUTED
4d524: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d526: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d52a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d52c: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED
4d530: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d534: 4e91 jsr %a1@ <== NOT EXECUTED
4d536: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d53a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Start += chunk;
4d53e: 2041 moveal %d1,%a0 <== NOT EXECUTED
4d540: d1ea 0008 addal %a2@(8),%a0 <== NOT EXECUTED
pipe->Start %= pipe->Size;
4d544: 2008 movel %a0,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d546: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED
4d54a: 93c1 subal %d1,%a1 <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d54c: 4c6a 0005 0004 remul %a2@(4),%d5,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d552: 2549 000c movel %a1,%a2@(12) <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d556: 2545 0008 movel %d5,%a2@(8) <== NOT EXECUTED
pipe->Length -= chunk;
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
4d55a: 4a89 tstl %a1 <== NOT EXECUTED
4d55c: 6604 bnes 4d562 <pipe_read+0x13e> <== NOT EXECUTED
pipe->Start = 0;
4d55e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
if (pipe->waitingWriters > 0)
4d562: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED
4d566: 6716 beqs 4d57e <pipe_read+0x15a> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4d568: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d56c: 2047 moveal %d7,%a0 <== NOT EXECUTED
4d56e: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d572: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d576: 4e90 jsr %a0@ <== NOT EXECUTED
4d578: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d57c: 508f addql #8,%sp <== NOT EXECUTED
read += chunk;
4d57e: d681 addl %d1,%d3 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d580: 2a03 movel %d3,%d5 <== NOT EXECUTED
4d582: b883 cmpl %d3,%d4 <== NOT EXECUTED
4d584: 6200 feee bhiw 4d474 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d588: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4d58c: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d590: 4e94 jsr %a4@ <== NOT EXECUTED
4d592: 588f addql #4,%sp <== NOT EXECUTED
4d594: 6000 ff3e braw 4d4d4 <pipe_read+0xb0> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d598: 70f5 moveq #-11,%d0 <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d59a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d59e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5a2: 4e94 jsr %a4@ <== NOT EXECUTED
4d5a4: 588f addql #4,%sp <== NOT EXECUTED
4d5a6: 6000 ff2c braw 4d4d4 <pipe_read+0xb0> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingReaders not restored! */
ret = -EINTR;
4d5aa: 7afc moveq #-4,%d5 <== NOT EXECUTED
4d5ac: 2d45 fff8 movel %d5,%fp@(-8) <== NOT EXECUTED
out_locked:
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
4d5b0: 4a83 tstl %d3 <== NOT EXECUTED
4d5b2: 6e00 ff24 bgtw 4d4d8 <pipe_read+0xb4> <== NOT EXECUTED
4d5b6: 6000 ff34 braw 4d4ec <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);
4d5ba: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d5bc: d092 addl %a2@,%d0 <== NOT EXECUTED
4d5be: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d5c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d5c4: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED
4d5c8: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d5ca: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d5ce: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
4d5d2: 4e91 jsr %a1@ <== NOT EXECUTED
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
4d5d4: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d5d8: 2001 movel %d1,%d0 <== NOT EXECUTED
4d5da: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d5dc: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
4d5e0: 9088 subl %a0,%d0 <== NOT EXECUTED
4d5e2: da88 addl %a0,%d5 <== NOT EXECUTED
4d5e4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d5e6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4d5e8: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d5ec: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED
4d5f0: 4e91 jsr %a1@ <== NOT EXECUTED
4d5f2: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d5f6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4d5fa: 6000 ff42 braw 4d53e <pipe_read+0x11a> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5fe: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d602: 49f9 0004 8934 lea 48934 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d608: 4283 clrl %d3 <== NOT EXECUTED
4d60a: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d60e: 4e94 jsr %a4@ <== NOT EXECUTED
4d610: 588f addql #4,%sp <== NOT EXECUTED
4d612: 6000 fec0 braw 4d4d4 <pipe_read+0xb0> <== NOT EXECUTED
0004ceae <pipe_release>:
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4ceae: 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);
4ceb2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4ceb6: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
4ceba: 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);
4cebe: 7406 moveq #6,%d2 <== NOT EXECUTED
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
pipe_control_t *pipe = *pipep;
4cec0: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4cec2: c4a8 0014 andl %a0@(20),%d2 <== NOT EXECUTED
if (mode & LIBIO_FLAGS_READ)
4cec6: 0802 0001 btst #1,%d2 <== NOT EXECUTED
4ceca: 6704 beqs 4ced0 <pipe_release+0x22> <== NOT EXECUTED
pipe->Readers --;
4cecc: 53aa 0010 subql #1,%a2@(16) <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
4ced0: 44c2 movew %d2,%ccr <== NOT EXECUTED
4ced2: 6604 bnes 4ced8 <pipe_release+0x2a> <== NOT EXECUTED
pipe->Writers --;
4ced4: 53aa 0014 subql #1,%a2@(20) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4ced8: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4cedc: 4eb9 0004 8934 jsr 48934 <rtems_semaphore_release> <== NOT EXECUTED
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cee2: 588f addql #4,%sp <== NOT EXECUTED
4cee4: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4cee8: 672a beqs 4cf14 <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)
4ceea: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4ceee: 6616 bnes 4cf06 <pipe_release+0x58> <== NOT EXECUTED
4cef0: 7002 moveq #2,%d0 <== NOT EXECUTED
4cef2: b082 cmpl %d2,%d0 <== NOT EXECUTED
4cef4: 6710 beqs 4cf06 <pipe_release+0x58> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4cef6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cefa: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4cefe: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4cf04: 508f addql #8,%sp <== NOT EXECUTED
pipe_unlock();
4cf06: 4eba ff90 jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf0a: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED
4cf10: 4e5e unlk %fp <== NOT EXECUTED
4cf12: 4e75 rts <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
pipe->Writers --;
PIPE_UNLOCK(pipe);
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cf14: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4cf18: 6724 beqs 4cf3e <pipe_release+0x90> <== NOT EXECUTED
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
4cf1a: 7004 moveq #4,%d0 <== NOT EXECUTED
4cf1c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4cf1e: 67e6 beqs 4cf06 <pipe_release+0x58> <== NOT EXECUTED
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
4cf20: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cf24: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4cf28: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4cf2e: 508f addql #8,%sp <== NOT EXECUTED
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
PIPE_WAKEUPREADERS(pipe);
pipe_unlock();
4cf30: 4eba ff66 jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf34: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED
4cf3a: 4e5e unlk %fp <== NOT EXECUTED
4cf3c: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cf3e: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4cf42: 4bf9 0004 eeac lea 4eeac <rtems_barrier_delete>,%a5 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
4cf48: 49f9 0004 4aa0 lea 44aa0 <free>,%a4 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cf4e: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4cf50: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4cf54: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4cf56: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4cf5a: 4eb9 0004 871c jsr 4871c <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4cf60: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4cf62: 4e94 jsr %a4@ <== NOT EXECUTED
free(pipe);
4cf64: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cf66: 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;
4cf68: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4cf6c: 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();
4cf6e: 4eba ff28 jsr %pc@(4ce98 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cf72: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED
4cf78: 4e5e unlk %fp <== NOT EXECUTED
0004ce98 <pipe_unlock>:
return -ENOMEM;
}
}
static void pipe_unlock(void)
{
4ce98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_release(pipe_semaphore);
4ce9c: 2f39 0006 1e18 movel 61e18 <pipe_semaphore>,%sp@- <== NOT EXECUTED
4cea2: 4eb9 0004 8934 jsr 48934 <rtems_semaphore_release> <== NOT EXECUTED
4cea8: 588f addql #4,%sp <== NOT EXECUTED
#ifdef RTEMS_DEBUG
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
}
#endif
}
4ceaa: 4e5e unlk %fp <== NOT EXECUTED
0004d616 <pipe_write>:
pipe_control_t *pipe,
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d616: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
4d61a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4d61e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4d622: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
4d626: 660c bnes 4d634 <pipe_write+0x1e> <== NOT EXECUTED
return 0;
4d628: 4280 clrl %d0 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d62a: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d630: 4e5e unlk %fp <== NOT EXECUTED
4d632: 4e75 rts <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
4d634: 42a7 clrl %sp@- <== NOT EXECUTED
4d636: 47f9 0004 87f4 lea 487f4 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
4d63c: 42a7 clrl %sp@- <== NOT EXECUTED
4d63e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d642: 4e93 jsr %a3@ <== NOT EXECUTED
4d644: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d648: 4a80 tstl %d0 <== NOT EXECUTED
4d64a: 6600 00c6 bnew 4d712 <pipe_write+0xfc> <== NOT EXECUTED
return -EINTR;
if (pipe->Readers == 0) {
4d64e: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d652: 6700 0104 beqw 4d758 <pipe_write+0x142> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4d656: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4d65a: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d65c: 6500 00de bcsw 4d73c <pipe_write+0x126> <== NOT EXECUTED
4d660: 2602 movel %d2,%d3 <== NOT EXECUTED
4d662: 4285 clrl %d5 <== NOT EXECUTED
4d664: 4284 clrl %d4 <== NOT EXECUTED
4d666: 49f9 0004 8934 lea 48934 <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))
4d66c: 4bf9 0004 efc4 lea 4efc4 <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);
4d672: 2c3c 0005 1e48 movel #335432,%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) {
4d678: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4d67c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d67e: 91c1 subal %d1,%a0 <== NOT EXECUTED
4d680: b688 cmpl %a0,%d3 <== NOT EXECUTED
4d682: 6300 00f0 blsw 4d774 <pipe_write+0x15e> <== NOT EXECUTED
if (LIBIO_NODELAY(iop)) {
4d686: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4d68a: 7001 moveq #1,%d0 <== NOT EXECUTED
4d68c: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4d690: 6600 016a bnew 4d7fc <pipe_write+0x1e6> <== NOT EXECUTED
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
4d694: 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 ++;
4d698: 52aa 001c addql #1,%a2@(28) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d69c: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d69e: 42a7 clrl %sp@- <== NOT EXECUTED
4d6a0: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d6a4: 4e95 jsr %a5@ <== NOT EXECUTED
4d6a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d6aa: 4a80 tstl %d0 <== NOT EXECUTED
4d6ac: 662a bnes 4d6d8 <pipe_write+0xc2> <== NOT EXECUTED
4d6ae: 4287 clrl %d7 <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d6b0: 42a7 clrl %sp@- <== NOT EXECUTED
4d6b2: 42a7 clrl %sp@- <== NOT EXECUTED
4d6b4: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d6b8: 4e93 jsr %a3@ <== NOT EXECUTED
4d6ba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d6be: 4a80 tstl %d0 <== NOT EXECUTED
4d6c0: 6600 0150 bnew 4d812 <pipe_write+0x1fc> <== NOT EXECUTED
/* WARN waitingWriters not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingWriters --;
4d6c4: 53aa 001c subql #1,%a2@(28) <== NOT EXECUTED
if (ret != 0)
4d6c8: 4a87 tstl %d7 <== NOT EXECUTED
4d6ca: 6612 bnes 4d6de <pipe_write+0xc8> <== NOT EXECUTED
goto out_locked;
if (pipe->Readers == 0) {
4d6cc: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d6d0: 674c beqs 4d71e <pipe_write+0x108> <== NOT EXECUTED
4d6d2: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4d6d6: 60a0 bras 4d678 <pipe_write+0x62> <== NOT EXECUTED
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
4d6d8: 7efc moveq #-4,%d7 <== NOT EXECUTED
4d6da: 60d4 bras 4d6b0 <pipe_write+0x9a> <== NOT EXECUTED
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4d6dc: 4287 clrl %d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d6de: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d6e2: 4e94 jsr %a4@ <== NOT EXECUTED
4d6e4: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d6e6: 70e0 moveq #-32,%d0 <== NOT EXECUTED
4d6e8: b087 cmpl %d7,%d0 <== NOT EXECUTED
4d6ea: 6710 beqs 4d6fc <pipe_write+0xe6> <== NOT EXECUTED
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4d6ec: 4a84 tstl %d4 <== NOT EXECUTED
4d6ee: 6f40 bles 4d730 <pipe_write+0x11a> <== NOT EXECUTED
4d6f0: 2004 movel %d4,%d0 <== NOT EXECUTED
return written;
return ret;
}
4d6f2: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d6f8: 4e5e unlk %fp <== NOT EXECUTED
4d6fa: 4e75 rts <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
4d6fc: 4eb9 0004 e17c jsr 4e17c <getpid> <== NOT EXECUTED
4d702: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
4d706: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d708: 4eb9 0004 e4ac jsr 4e4ac <kill> <== NOT EXECUTED
4d70e: 508f addql #8,%sp <== NOT EXECUTED
4d710: 60da bras 4d6ec <pipe_write+0xd6> <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d712: 70fc moveq #-4,%d0 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d714: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d71a: 4e5e unlk %fp <== NOT EXECUTED
4d71c: 4e75 rts <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d71e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe->waitingWriters --;
if (ret != 0)
goto out_locked;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d722: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d724: 4e94 jsr %a4@ <== NOT EXECUTED
4d726: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d728: 70e0 moveq #-32,%d0 <== NOT EXECUTED
4d72a: b087 cmpl %d7,%d0 <== NOT EXECUTED
4d72c: 66be bnes 4d6ec <pipe_write+0xd6> <== NOT EXECUTED
4d72e: 60cc bras 4d6fc <pipe_write+0xe6> <== NOT EXECUTED
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4d730: 2007 movel %d7,%d0 <== NOT EXECUTED
return written;
return ret;
}
4d732: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d738: 4e5e unlk %fp <== NOT EXECUTED
4d73a: 4e75 rts <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4d73c: 7601 moveq #1,%d3 <== NOT EXECUTED
4d73e: 4285 clrl %d5 <== NOT EXECUTED
4d740: 4284 clrl %d4 <== NOT EXECUTED
4d742: 49f9 0004 8934 lea 48934 <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))
4d748: 4bf9 0004 efc4 lea 4efc4 <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);
4d74e: 2c3c 0005 1e48 movel #335432,%d6 <== NOT EXECUTED
4d754: 6000 ff22 braw 4d678 <pipe_write+0x62> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d758: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d75c: 49f9 0004 8934 lea 48934 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d762: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
int chunk, chunk1, written = 0, ret = 0;
4d764: 4284 clrl %d4 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d766: 4e94 jsr %a4@ <== NOT EXECUTED
4d768: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d76a: 70e0 moveq #-32,%d0 <== NOT EXECUTED
4d76c: b087 cmpl %d7,%d0 <== NOT EXECUTED
4d76e: 6600 ff7c bnew 4d6ec <pipe_write+0xd6> <== NOT EXECUTED
4d772: 6088 bras 4d6fc <pipe_write+0xe6> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
4d774: 2242 moveal %d2,%a1 <== NOT EXECUTED
4d776: 93c5 subal %d5,%a1 <== NOT EXECUTED
4d778: 2608 movel %a0,%d3 <== NOT EXECUTED
4d77a: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
4d77c: 6402 bccs 4d780 <pipe_write+0x16a> <== NOT EXECUTED
4d77e: 2609 movel %a1,%d3 <== NOT EXECUTED
chunk1 = pipe->Size - PIPE_WSTART(pipe);
4d780: 2241 moveal %d1,%a1 <== NOT EXECUTED
4d782: d3ea 0008 addal %a2@(8),%a1 <== NOT EXECUTED
4d786: 2209 movel %a1,%d1 <== NOT EXECUTED
4d788: 4c40 1007 remul %d0,%d7,%d1 <== NOT EXECUTED
4d78c: 2200 movel %d0,%d1 <== NOT EXECUTED
4d78e: 2047 moveal %d7,%a0 <== NOT EXECUTED
4d790: 9287 subl %d7,%d1 <== NOT EXECUTED
if (chunk > chunk1) {
4d792: b283 cmpl %d3,%d1 <== NOT EXECUTED
4d794: 6c00 0082 bgew 4d818 <pipe_write+0x202> <== NOT EXECUTED
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4d798: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d79c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d79e: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED
4d7a2: d1d2 addal %a2@,%a0 <== NOT EXECUTED
4d7a4: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d7a8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d7aa: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d7ac: 4e90 jsr %a0@ <== NOT EXECUTED
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4d7ae: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d7b2: 2003 movel %d3,%d0 <== NOT EXECUTED
4d7b4: 9081 subl %d1,%d0 <== NOT EXECUTED
4d7b6: da81 addl %d1,%d5 <== NOT EXECUTED
4d7b8: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d7ba: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d7be: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d7c0: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED
4d7c4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4d7c6: 4e91 jsr %a1@ <== NOT EXECUTED
4d7c8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
4d7cc: d7aa 000c addl %d3,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d7d0: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
4d7d4: 6614 bnes 4d7ea <pipe_write+0x1d4> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
written += chunk;
4d7d6: d883 addl %d3,%d4 <== NOT EXECUTED
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4d7d8: 2a04 movel %d4,%d5 <== NOT EXECUTED
4d7da: b882 cmpl %d2,%d4 <== NOT EXECUTED
4d7dc: 6400 fefe bccw 4d6dc <pipe_write+0xc6> <== NOT EXECUTED
4d7e0: 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;
4d7e4: 7601 moveq #1,%d3 <== NOT EXECUTED
4d7e6: 6000 fe90 braw 4d678 <pipe_write+0x62> <== NOT EXECUTED
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
4d7ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d7ee: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d7f2: 4eb9 0004 ef4c jsr 4ef4c <rtems_barrier_release> <== NOT EXECUTED
4d7f8: 508f addql #8,%sp <== NOT EXECUTED
4d7fa: 60da bras 4d7d6 <pipe_write+0x1c0> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d7fc: 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;
4d800: 7ef5 moveq #-11,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d802: 4e94 jsr %a4@ <== NOT EXECUTED
4d804: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4d806: 70e0 moveq #-32,%d0 <== NOT EXECUTED
4d808: b087 cmpl %d7,%d0 <== NOT EXECUTED
4d80a: 6600 fee0 bnew 4d6ec <pipe_write+0xd6> <== NOT EXECUTED
4d80e: 6000 feec braw 4d6fc <pipe_write+0xe6> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingWriters not restored! */
ret = -EINTR;
4d812: 7efc moveq #-4,%d7 <== NOT EXECUTED
4d814: 6000 fed6 braw 4d6ec <pipe_write+0xd6> <== 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);
4d818: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d81c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d81e: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED
4d822: d1d2 addal %a2@,%a0 <== NOT EXECUTED
4d824: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d826: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d828: 4e90 jsr %a0@ <== NOT EXECUTED
4d82a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Length += chunk;
4d82e: d7aa 000c addl %d3,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d832: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
4d836: 679e beqs 4d7d6 <pipe_write+0x1c0> <== NOT EXECUTED
4d838: 60b0 bras 4d7ea <pipe_write+0x1d4> <== NOT EXECUTED
00047ad0 <posix_memalign>:
int posix_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
47ad0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47ad4: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47ad8: 2001 movel %d1,%d0 <== NOT EXECUTED
47ada: 5380 subql #1,%d0 <== NOT EXECUTED
)
{
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
47adc: 52b9 0006 5f80 addql #1,65f80 <rtems_malloc_statistics+0x8><== NOT EXECUTED
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
47ae2: c081 andl %d1,%d0 <== NOT EXECUTED
47ae4: 6608 bnes 47aee <posix_memalign+0x1e> <== NOT EXECUTED
47ae6: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
47aea: b081 cmpl %d1,%d0 <== NOT EXECUTED
47aec: 6506 bcss 47af4 <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 );
}
47aee: 7016 moveq #22,%d0 <== NOT EXECUTED
47af0: 4e5e unlk %fp <== NOT EXECUTED
47af2: 4e75 rts <== NOT EXECUTED
47af4: 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 );
47af6: 4ef9 0004 7ca8 jmp 47ca8 <rtems_memalign> <== NOT EXECUTED
00044ee8 <printk_plugin>:
int printk_plugin(
void *ignored __attribute__((unused)),
const char *format,
...
)
{
44ee8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
va_list arg_pointer;
va_start (arg_pointer, format);
vprintk( format, arg_pointer );
44eec: 486e 0010 pea %fp@(16) <== NOT EXECUTED
44ef0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44ef4: 4eb9 0004 6d04 jsr 46d04 <vprintk> <== NOT EXECUTED
va_end(arg_pointer); /* clean up when done */
return 0;
}
44efa: 4280 clrl %d0 <== NOT EXECUTED
44efc: 4e5e unlk %fp <== NOT EXECUTED
00046210 <pthread_atfork>:
int pthread_atfork(
void (*prepare)(void) __attribute__((unused)),
void (*parent)(void) __attribute__((unused)),
void (*child)(void) __attribute__((unused))
)
{
46210: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46214: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
4621a: 7258 moveq #88,%d1 <== NOT EXECUTED
4621c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4621e: 70ff moveq #-1,%d0 <== NOT EXECUTED
46220: 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 );
46222: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0004af8c <pthread_attr_destroy>:
#include <rtems/system.h>
int pthread_attr_destroy(
pthread_attr_t *attr
)
{
4af8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4af90: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4af94: 4a88 tstl %a0 <== NOT EXECUTED
4af96: 670c beqs 4afa4 <pthread_attr_destroy+0x18> <== NOT EXECUTED
4af98: 4a90 tstl %a0@ <== NOT EXECUTED
4af9a: 6708 beqs 4afa4 <pthread_attr_destroy+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
4af9c: 4280 clrl %d0 <== NOT EXECUTED
}
4af9e: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->is_initialized = false;
4afa0: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
4afa2: 4e75 rts <== NOT EXECUTED
int pthread_attr_destroy(
pthread_attr_t *attr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4afa4: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4afa6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b700 <pthread_attr_getcputime>:
int pthread_attr_getcputime(
pthread_attr_t *attr,
int *clock_allowed
)
{
4b700: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b704: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b708: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !clock_allowed )
4b70c: 4a88 tstl %a0 <== NOT EXECUTED
4b70e: 6712 beqs 4b722 <pthread_attr_getcputime+0x22> <== NOT EXECUTED
4b710: 4a90 tstl %a0@ <== NOT EXECUTED
4b712: 670e beqs 4b722 <pthread_attr_getcputime+0x22> <== NOT EXECUTED
4b714: 4a89 tstl %a1 <== NOT EXECUTED
4b716: 670a beqs 4b722 <pthread_attr_getcputime+0x22> <== NOT EXECUTED
return EINVAL;
*clock_allowed = attr->cputime_clock_allowed;
4b718: 22a8 0038 movel %a0@(56),%a1@ <== NOT EXECUTED
return 0;
4b71c: 4280 clrl %d0 <== NOT EXECUTED
}
4b71e: 4e5e unlk %fp <== NOT EXECUTED
4b720: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
int *clock_allowed
)
{
if ( !attr || !attr->is_initialized || !clock_allowed )
return EINVAL;
4b722: 7016 moveq #22,%d0 <== NOT EXECUTED
*clock_allowed = attr->cputime_clock_allowed;
return 0;
}
4b724: 4e5e unlk %fp <== NOT EXECUTED
0004afac <pthread_attr_getdetachstate>:
int pthread_attr_getdetachstate(
const pthread_attr_t *attr,
int *detachstate
)
{
4afac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4afb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4afb4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !detachstate )
4afb8: 4a88 tstl %a0 <== NOT EXECUTED
4afba: 6712 beqs 4afce <pthread_attr_getdetachstate+0x22><== NOT EXECUTED
4afbc: 4a90 tstl %a0@ <== NOT EXECUTED
4afbe: 670e beqs 4afce <pthread_attr_getdetachstate+0x22><== NOT EXECUTED
4afc0: 4a89 tstl %a1 <== NOT EXECUTED
4afc2: 670a beqs 4afce <pthread_attr_getdetachstate+0x22><== NOT EXECUTED
return EINVAL;
*detachstate = attr->detachstate;
4afc4: 22a8 003c movel %a0@(60),%a1@ <== NOT EXECUTED
return 0;
4afc8: 4280 clrl %d0 <== NOT EXECUTED
}
4afca: 4e5e unlk %fp <== NOT EXECUTED
4afcc: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *detachstate
)
{
if ( !attr || !attr->is_initialized || !detachstate )
return EINVAL;
4afce: 7016 moveq #22,%d0 <== NOT EXECUTED
*detachstate = attr->detachstate;
return 0;
}
4afd0: 4e5e unlk %fp <== NOT EXECUTED
0004afd4 <pthread_attr_getguardsize>:
int pthread_attr_getguardsize(
const pthread_attr_t *attr,
size_t *guardsize
)
{
4afd4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4afd8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4afdc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !guardsize )
4afe0: 4a88 tstl %a0 <== NOT EXECUTED
4afe2: 6712 beqs 4aff6 <pthread_attr_getguardsize+0x22> <== NOT EXECUTED
4afe4: 4a90 tstl %a0@ <== NOT EXECUTED
4afe6: 670e beqs 4aff6 <pthread_attr_getguardsize+0x22> <== NOT EXECUTED
4afe8: 4a89 tstl %a1 <== NOT EXECUTED
4afea: 670a beqs 4aff6 <pthread_attr_getguardsize+0x22> <== NOT EXECUTED
return EINVAL;
*guardsize = attr->guardsize;
4afec: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED
return 0;
4aff0: 4280 clrl %d0 <== NOT EXECUTED
}
4aff2: 4e5e unlk %fp <== NOT EXECUTED
4aff4: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
size_t *guardsize
)
{
if ( !attr || !attr->is_initialized || !guardsize )
return EINVAL;
4aff6: 7016 moveq #22,%d0 <== NOT EXECUTED
*guardsize = attr->guardsize;
return 0;
}
4aff8: 4e5e unlk %fp <== NOT EXECUTED
0004affc <pthread_attr_getinheritsched>:
int pthread_attr_getinheritsched(
const pthread_attr_t *attr,
int *inheritsched
)
{
4affc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b000: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b004: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !inheritsched )
4b008: 4a88 tstl %a0 <== NOT EXECUTED
4b00a: 6712 beqs 4b01e <pthread_attr_getinheritsched+0x22><== NOT EXECUTED
4b00c: 4a90 tstl %a0@ <== NOT EXECUTED
4b00e: 670e beqs 4b01e <pthread_attr_getinheritsched+0x22><== NOT EXECUTED
4b010: 4a89 tstl %a1 <== NOT EXECUTED
4b012: 670a beqs 4b01e <pthread_attr_getinheritsched+0x22><== NOT EXECUTED
return EINVAL;
*inheritsched = attr->inheritsched;
4b014: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED
return 0;
4b018: 4280 clrl %d0 <== NOT EXECUTED
}
4b01a: 4e5e unlk %fp <== NOT EXECUTED
4b01c: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *inheritsched
)
{
if ( !attr || !attr->is_initialized || !inheritsched )
return EINVAL;
4b01e: 7016 moveq #22,%d0 <== NOT EXECUTED
*inheritsched = attr->inheritsched;
return 0;
}
4b020: 4e5e unlk %fp <== NOT EXECUTED
0004b024 <pthread_attr_getschedparam>:
int pthread_attr_getschedparam(
const pthread_attr_t *attr,
struct sched_param *param
)
{
4b024: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b028: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4b02c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !param )
4b030: 4a89 tstl %a1 <== NOT EXECUTED
4b032: 672a beqs 4b05e <pthread_attr_getschedparam+0x3a><== NOT EXECUTED
4b034: 4a91 tstl %a1@ <== NOT EXECUTED
4b036: 6726 beqs 4b05e <pthread_attr_getschedparam+0x3a><== NOT EXECUTED
4b038: 4a88 tstl %a0 <== NOT EXECUTED
4b03a: 6722 beqs 4b05e <pthread_attr_getschedparam+0x3a><== NOT EXECUTED
return EINVAL;
*param = attr->schedparam;
4b03c: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED
return 0;
4b040: 4280 clrl %d0 <== NOT EXECUTED
}
4b042: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
*param = attr->schedparam;
4b044: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED
4b048: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED
4b04c: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED
4b050: 20e9 0028 movel %a1@(40),%a0@+ <== NOT EXECUTED
4b054: 20e9 002c movel %a1@(44),%a0@+ <== NOT EXECUTED
4b058: 20a9 0030 movel %a1@(48),%a0@ <== NOT EXECUTED
return 0;
}
4b05c: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
struct sched_param *param
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
4b05e: 7016 moveq #22,%d0 <== NOT EXECUTED
*param = attr->schedparam;
return 0;
}
4b060: 4e5e unlk %fp <== NOT EXECUTED
0004b064 <pthread_attr_getschedpolicy>:
int pthread_attr_getschedpolicy(
const pthread_attr_t *attr,
int *policy
)
{
4b064: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b068: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b06c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !policy )
4b070: 4a88 tstl %a0 <== NOT EXECUTED
4b072: 6712 beqs 4b086 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED
4b074: 4a90 tstl %a0@ <== NOT EXECUTED
4b076: 670e beqs 4b086 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED
4b078: 4a89 tstl %a1 <== NOT EXECUTED
4b07a: 670a beqs 4b086 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED
return EINVAL;
*policy = attr->schedpolicy;
4b07c: 22a8 0014 movel %a0@(20),%a1@ <== NOT EXECUTED
return 0;
4b080: 4280 clrl %d0 <== NOT EXECUTED
}
4b082: 4e5e unlk %fp <== NOT EXECUTED
4b084: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *policy
)
{
if ( !attr || !attr->is_initialized || !policy )
return EINVAL;
4b086: 7016 moveq #22,%d0 <== NOT EXECUTED
*policy = attr->schedpolicy;
return 0;
}
4b088: 4e5e unlk %fp <== NOT EXECUTED
0004b08c <pthread_attr_getscope>:
int pthread_attr_getscope(
const pthread_attr_t *attr,
int *contentionscope
)
{
4b08c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b090: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b094: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !contentionscope )
4b098: 4a88 tstl %a0 <== NOT EXECUTED
4b09a: 6712 beqs 4b0ae <pthread_attr_getscope+0x22> <== NOT EXECUTED
4b09c: 4a90 tstl %a0@ <== NOT EXECUTED
4b09e: 670e beqs 4b0ae <pthread_attr_getscope+0x22> <== NOT EXECUTED
4b0a0: 4a89 tstl %a1 <== NOT EXECUTED
4b0a2: 670a beqs 4b0ae <pthread_attr_getscope+0x22> <== NOT EXECUTED
return EINVAL;
*contentionscope = attr->contentionscope;
4b0a4: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
return 0;
4b0a8: 4280 clrl %d0 <== NOT EXECUTED
}
4b0aa: 4e5e unlk %fp <== NOT EXECUTED
4b0ac: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
int *contentionscope
)
{
if ( !attr || !attr->is_initialized || !contentionscope )
return EINVAL;
4b0ae: 7016 moveq #22,%d0 <== NOT EXECUTED
*contentionscope = attr->contentionscope;
return 0;
}
4b0b0: 4e5e unlk %fp <== NOT EXECUTED
0004b0dc <pthread_attr_getstack>:
int pthread_attr_getstack(
const pthread_attr_t *attr,
void **stackaddr,
size_t *stacksize
)
{
4b0dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b0e0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b0e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b0e6: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4b0ea: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
4b0ee: 4a88 tstl %a0 <== NOT EXECUTED
4b0f0: 671c beqs 4b10e <pthread_attr_getstack+0x32> <== NOT EXECUTED
4b0f2: 4a90 tstl %a0@ <== NOT EXECUTED
4b0f4: 6718 beqs 4b10e <pthread_attr_getstack+0x32> <== NOT EXECUTED
4b0f6: 4a89 tstl %a1 <== NOT EXECUTED
4b0f8: 6714 beqs 4b10e <pthread_attr_getstack+0x32> <== NOT EXECUTED
4b0fa: 4a8a tstl %a2 <== NOT EXECUTED
4b0fc: 6710 beqs 4b10e <pthread_attr_getstack+0x32> <== NOT EXECUTED
return EINVAL;
*stackaddr = attr->stackaddr;
4b0fe: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
*stacksize = attr->stacksize;
return 0;
4b102: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
return EINVAL;
*stackaddr = attr->stackaddr;
*stacksize = attr->stacksize;
4b104: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return 0;
}
4b108: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4b10a: 4e5e unlk %fp <== NOT EXECUTED
4b10c: 4e75 rts <== NOT EXECUTED
4b10e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
void **stackaddr,
size_t *stacksize
)
{
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
return EINVAL;
4b110: 7016 moveq #22,%d0 <== NOT EXECUTED
*stackaddr = attr->stackaddr;
*stacksize = attr->stacksize;
return 0;
}
4b112: 4e5e unlk %fp <== NOT EXECUTED
...
0004b0b4 <pthread_attr_getstackaddr>:
int pthread_attr_getstackaddr(
const pthread_attr_t *attr,
void **stackaddr
)
{
4b0b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b0b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b0bc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stackaddr )
4b0c0: 4a88 tstl %a0 <== NOT EXECUTED
4b0c2: 6712 beqs 4b0d6 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED
4b0c4: 4a90 tstl %a0@ <== NOT EXECUTED
4b0c6: 670e beqs 4b0d6 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED
4b0c8: 4a89 tstl %a1 <== NOT EXECUTED
4b0ca: 670a beqs 4b0d6 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED
return EINVAL;
*stackaddr = attr->stackaddr;
4b0cc: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
4b0d0: 4280 clrl %d0 <== NOT EXECUTED
}
4b0d2: 4e5e unlk %fp <== NOT EXECUTED
4b0d4: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
void **stackaddr
)
{
if ( !attr || !attr->is_initialized || !stackaddr )
return EINVAL;
4b0d6: 7016 moveq #22,%d0 <== NOT EXECUTED
*stackaddr = attr->stackaddr;
return 0;
}
4b0d8: 4e5e unlk %fp <== NOT EXECUTED
0004b118 <pthread_attr_getstacksize>:
int pthread_attr_getstacksize(
const pthread_attr_t *attr,
size_t *stacksize
)
{
4b118: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b11c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b120: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stacksize )
4b124: 4a88 tstl %a0 <== NOT EXECUTED
4b126: 6712 beqs 4b13a <pthread_attr_getstacksize+0x22> <== NOT EXECUTED
4b128: 4a90 tstl %a0@ <== NOT EXECUTED
4b12a: 670e beqs 4b13a <pthread_attr_getstacksize+0x22> <== NOT EXECUTED
4b12c: 4a89 tstl %a1 <== NOT EXECUTED
4b12e: 670a beqs 4b13a <pthread_attr_getstacksize+0x22> <== NOT EXECUTED
return EINVAL;
*stacksize = attr->stacksize;
4b130: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
4b134: 4280 clrl %d0 <== NOT EXECUTED
}
4b136: 4e5e unlk %fp <== NOT EXECUTED
4b138: 4e75 rts <== NOT EXECUTED
const pthread_attr_t *attr,
size_t *stacksize
)
{
if ( !attr || !attr->is_initialized || !stacksize )
return EINVAL;
4b13a: 7016 moveq #22,%d0 <== NOT EXECUTED
*stacksize = attr->stacksize;
return 0;
}
4b13c: 4e5e unlk %fp <== NOT EXECUTED
0004d1c4 <pthread_attr_init>:
#include <rtems/posix/pthread.h>
int pthread_attr_init(
pthread_attr_t *attr
)
{
4d1c4: 4e56 0000 linkw %fp,#0
4d1c8: 202e 0008 movel %fp@(8),%d0
if ( !attr )
4d1cc: 671c beqs 4d1ea <pthread_attr_init+0x26> <== NEVER TAKEN
return EINVAL;
*attr = _POSIX_Threads_Default_attributes;
4d1ce: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
4d1d2: 4879 0005 e8be pea 5e8be <_POSIX_Threads_Default_attributes>
4d1d8: 2f00 movel %d0,%sp@-
4d1da: 4eb9 0005 0198 jsr 50198 <memcpy>
return 0;
4d1e0: 4fef 000c lea %sp@(12),%sp
4d1e4: 4280 clrl %d0
}
4d1e6: 4e5e unlk %fp
4d1e8: 4e75 rts
int pthread_attr_init(
pthread_attr_t *attr
)
{
if ( !attr )
return EINVAL;
4d1ea: 7016 moveq #22,%d0
*attr = _POSIX_Threads_Default_attributes;
return 0;
}
4d1ec: 4e5e unlk %fp <== NOT EXECUTED
0004bc80 <pthread_attr_setcputime>:
int pthread_attr_setcputime(
pthread_attr_t *attr,
int clock_allowed
)
{
4bc80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4bc84: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4bc88: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4bc8c: 4a88 tstl %a0 <== NOT EXECUTED
4bc8e: 670a beqs 4bc9a <pthread_attr_setcputime+0x1a> <== NOT EXECUTED
4bc90: 4a90 tstl %a0@ <== NOT EXECUTED
4bc92: 6706 beqs 4bc9a <pthread_attr_setcputime+0x1a> <== NOT EXECUTED
return EINVAL;
switch ( clock_allowed ) {
4bc94: 7201 moveq #1,%d1 <== NOT EXECUTED
4bc96: b280 cmpl %d0,%d1 <== NOT EXECUTED
4bc98: 6406 bccs 4bca0 <pthread_attr_setcputime+0x20> <== NOT EXECUTED
case CLOCK_DISABLED:
attr->cputime_clock_allowed = clock_allowed;
return 0;
default:
return EINVAL;
4bc9a: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
4bc9c: 4e5e unlk %fp <== NOT EXECUTED
4bc9e: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( clock_allowed ) {
case CLOCK_ENABLED:
case CLOCK_DISABLED:
attr->cputime_clock_allowed = clock_allowed;
4bca0: 2140 0038 movel %d0,%a0@(56) <== NOT EXECUTED
return 0;
4bca4: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4bca6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b16c <pthread_attr_setdetachstate>:
int pthread_attr_setdetachstate(
pthread_attr_t *attr,
int detachstate
)
{
4b16c: 4e56 0000 linkw %fp,#0
4b170: 206e 0008 moveal %fp@(8),%a0
4b174: 202e 000c movel %fp@(12),%d0
if ( !attr || !attr->is_initialized )
4b178: 4a88 tstl %a0
4b17a: 670a beqs 4b186 <pthread_attr_setdetachstate+0x1a><== NEVER TAKEN
4b17c: 4a90 tstl %a0@
4b17e: 6706 beqs 4b186 <pthread_attr_setdetachstate+0x1a><== NEVER TAKEN
return EINVAL;
switch ( detachstate ) {
4b180: 7201 moveq #1,%d1
4b182: b280 cmpl %d0,%d1
4b184: 6406 bccs 4b18c <pthread_attr_setdetachstate+0x20><== ALWAYS TAKEN
case PTHREAD_CREATE_JOINABLE:
attr->detachstate = detachstate;
return 0;
default:
return EINVAL;
4b186: 7016 moveq #22,%d0
}
}
4b188: 4e5e unlk %fp
4b18a: 4e75 rts
return EINVAL;
switch ( detachstate ) {
case PTHREAD_CREATE_DETACHED:
case PTHREAD_CREATE_JOINABLE:
attr->detachstate = detachstate;
4b18c: 2140 003c movel %d0,%a0@(60)
return 0;
4b190: 4280 clrl %d0
default:
return EINVAL;
}
}
4b192: 4e5e unlk %fp
...
0004b198 <pthread_attr_setguardsize>:
int pthread_attr_setguardsize(
pthread_attr_t *attr,
size_t guardsize
)
{
4b198: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b19c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b1a0: 4a88 tstl %a0 <== NOT EXECUTED
4b1a2: 6710 beqs 4b1b4 <pthread_attr_setguardsize+0x1c> <== NOT EXECUTED
4b1a4: 4a90 tstl %a0@ <== NOT EXECUTED
4b1a6: 670c beqs 4b1b4 <pthread_attr_setguardsize+0x1c> <== NOT EXECUTED
return EINVAL;
attr->guardsize = guardsize;
return 0;
4b1a8: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->guardsize = guardsize;
4b1aa: 216e 000c 0034 movel %fp@(12),%a0@(52) <== NOT EXECUTED
return 0;
}
4b1b0: 4e5e unlk %fp <== NOT EXECUTED
4b1b2: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
size_t guardsize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b1b4: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->guardsize = guardsize;
return 0;
}
4b1b6: 4e5e unlk %fp <== NOT EXECUTED
...
0004d1f0 <pthread_attr_setinheritsched>:
int pthread_attr_setinheritsched(
pthread_attr_t *attr,
int inheritsched
)
{
4d1f0: 4e56 0000 linkw %fp,#0
4d1f4: 206e 0008 moveal %fp@(8),%a0
4d1f8: 222e 000c movel %fp@(12),%d1
4d1fc: 2f02 movel %d2,%sp@-
if ( !attr || !attr->is_initialized )
4d1fe: 4a88 tstl %a0
4d200: 6726 beqs 4d228 <pthread_attr_setinheritsched+0x38><== NEVER TAKEN
4d202: 4a90 tstl %a0@
4d204: 6722 beqs 4d228 <pthread_attr_setinheritsched+0x38><== NEVER TAKEN
return EINVAL;
switch ( inheritsched ) {
4d206: 2241 moveal %d1,%a1
4d208: 5389 subql #1,%a1
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
default:
return ENOTSUP;
4d20a: 203c 0000 0086 movel #134,%d0
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( inheritsched ) {
4d210: 7401 moveq #1,%d2
4d212: b489 cmpl %a1,%d2
4d214: 6406 bccs 4d21c <pthread_attr_setinheritsched+0x2c><== ALWAYS TAKEN
return 0;
default:
return ENOTSUP;
}
}
4d216: 241f movel %sp@+,%d2 <== NOT EXECUTED
4d218: 4e5e unlk %fp <== NOT EXECUTED
4d21a: 4e75 rts <== NOT EXECUTED
4d21c: 241f movel %sp@+,%d2
switch ( inheritsched ) {
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
4d21e: 4200 clrb %d0
default:
return ENOTSUP;
}
}
4d220: 4e5e unlk %fp
return EINVAL;
switch ( inheritsched ) {
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
4d222: 2141 0010 movel %d1,%a0@(16)
return 0;
default:
return ENOTSUP;
}
}
4d226: 4e75 rts
4d228: 241f movel %sp@+,%d2 <== NOT EXECUTED
pthread_attr_t *attr,
int inheritsched
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4d22a: 7016 moveq #22,%d0 <== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4d22c: 4e5e unlk %fp <== NOT EXECUTED
0004b1fc <pthread_attr_setschedparam>:
int pthread_attr_setschedparam(
pthread_attr_t *attr,
const struct sched_param *param
)
{
4b1fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b200: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4b204: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !param )
4b208: 4a89 tstl %a1 <== NOT EXECUTED
4b20a: 672a beqs 4b236 <pthread_attr_setschedparam+0x3a><== NOT EXECUTED
4b20c: 4a91 tstl %a1@ <== NOT EXECUTED
4b20e: 6726 beqs 4b236 <pthread_attr_setschedparam+0x3a><== NOT EXECUTED
4b210: 4a88 tstl %a0 <== NOT EXECUTED
4b212: 6722 beqs 4b236 <pthread_attr_setschedparam+0x3a><== NOT EXECUTED
return EINVAL;
attr->schedparam = *param;
4b214: 2358 0018 movel %a0@+,%a1@(24) <== NOT EXECUTED
return 0;
4b218: 4280 clrl %d0 <== NOT EXECUTED
}
4b21a: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
attr->schedparam = *param;
4b21c: 2358 001c movel %a0@+,%a1@(28) <== NOT EXECUTED
4b220: 2358 0020 movel %a0@+,%a1@(32) <== NOT EXECUTED
4b224: 2358 0024 movel %a0@+,%a1@(36) <== NOT EXECUTED
4b228: 2358 0028 movel %a0@+,%a1@(40) <== NOT EXECUTED
4b22c: 2358 002c movel %a0@+,%a1@(44) <== NOT EXECUTED
4b230: 2350 0030 movel %a0@,%a1@(48) <== NOT EXECUTED
return 0;
}
4b234: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
const struct sched_param *param
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
4b236: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->schedparam = *param;
return 0;
}
4b238: 4e5e unlk %fp <== NOT EXECUTED
0004b23c <pthread_attr_setschedpolicy>:
int pthread_attr_setschedpolicy(
pthread_attr_t *attr,
int policy
)
{
4b23c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b240: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b244: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4b248: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b24a: 4a88 tstl %a0 <== NOT EXECUTED
4b24c: 672e beqs 4b27c <pthread_attr_setschedpolicy+0x40><== NOT EXECUTED
4b24e: 4a90 tstl %a0@ <== NOT EXECUTED
4b250: 672a beqs 4b27c <pthread_attr_setschedpolicy+0x40><== NOT EXECUTED
return EINVAL;
switch ( policy ) {
4b252: 7204 moveq #4,%d1 <== NOT EXECUTED
4b254: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b256: 640c bccs 4b264 <pthread_attr_setschedpolicy+0x28><== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b258: 241f movel %sp@+,%d2 <== NOT EXECUTED
case SCHED_SPORADIC:
attr->schedpolicy = policy;
return 0;
default:
return ENOTSUP;
4b25a: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED
}
}
4b260: 4e5e unlk %fp <== NOT EXECUTED
4b262: 4e75 rts <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( policy ) {
4b264: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
4b268: 7417 moveq #23,%d2 <== NOT EXECUTED
4b26a: e1a9 lsll %d0,%d1 <== NOT EXECUTED
4b26c: c282 andl %d2,%d1 <== NOT EXECUTED
4b26e: 67e8 beqs 4b258 <pthread_attr_setschedpolicy+0x1c><== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b270: 241f movel %sp@+,%d2 <== NOT EXECUTED
4b272: 4e5e unlk %fp <== NOT EXECUTED
switch ( policy ) {
case SCHED_OTHER:
case SCHED_FIFO:
case SCHED_RR:
case SCHED_SPORADIC:
attr->schedpolicy = policy;
4b274: 2140 0014 movel %d0,%a0@(20) <== NOT EXECUTED
return 0;
4b278: 4280 clrl %d0 <== NOT EXECUTED
default:
return ENOTSUP;
}
}
4b27a: 4e75 rts <== NOT EXECUTED
4b27c: 241f movel %sp@+,%d2 <== NOT EXECUTED
pthread_attr_t *attr,
int policy
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b27e: 7016 moveq #22,%d0 <== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b280: 4e5e unlk %fp <== NOT EXECUTED
0004b284 <pthread_attr_setscope>:
int pthread_attr_setscope(
pthread_attr_t *attr,
int contentionscope
)
{
4b284: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b288: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b28c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
4b290: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b292: 4a88 tstl %a0 <== NOT EXECUTED
4b294: 6720 beqs 4b2b6 <pthread_attr_setscope+0x32> <== NOT EXECUTED
4b296: 4a90 tstl %a0@ <== NOT EXECUTED
4b298: 671c beqs 4b2b6 <pthread_attr_setscope+0x32> <== NOT EXECUTED
return EINVAL;
switch ( contentionscope ) {
4b29a: 4a81 tstl %d1 <== NOT EXECUTED
4b29c: 660c bnes 4b2aa <pthread_attr_setscope+0x26> <== NOT EXECUTED
case PTHREAD_SCOPE_PROCESS:
attr->contentionscope = contentionscope;
4b29e: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
return 0;
4b2a2: 4280 clrl %d0 <== NOT EXECUTED
return ENOTSUP;
default:
return EINVAL;
}
}
4b2a4: 241f movel %sp@+,%d2 <== NOT EXECUTED
4b2a6: 4e5e unlk %fp <== NOT EXECUTED
4b2a8: 4e75 rts <== NOT EXECUTED
case PTHREAD_SCOPE_PROCESS:
attr->contentionscope = contentionscope;
return 0;
case PTHREAD_SCOPE_SYSTEM:
return ENOTSUP;
4b2aa: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( contentionscope ) {
4b2b0: 7401 moveq #1,%d2 <== NOT EXECUTED
4b2b2: b481 cmpl %d1,%d2 <== NOT EXECUTED
4b2b4: 67ee beqs 4b2a4 <pthread_attr_setscope+0x20> <== NOT EXECUTED
return ENOTSUP;
default:
return EINVAL;
}
}
4b2b6: 241f movel %sp@+,%d2 <== NOT EXECUTED
case PTHREAD_SCOPE_SYSTEM:
return ENOTSUP;
default:
return EINVAL;
4b2b8: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
4b2ba: 4e5e unlk %fp <== NOT EXECUTED
...
0004b2e4 <pthread_attr_setstack>:
int pthread_attr_setstack(
pthread_attr_t *attr,
void *stackaddr,
size_t stacksize
)
{
4b2e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b2e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b2ec: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b2f0: 4a88 tstl %a0 <== NOT EXECUTED
4b2f2: 672e beqs 4b322 <pthread_attr_setstack+0x3e> <== NOT EXECUTED
4b2f4: 4a90 tstl %a0@ <== NOT EXECUTED
4b2f6: 672a beqs 4b322 <pthread_attr_setstack+0x3e> <== NOT EXECUTED
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4b2f8: 2039 0006 71e2 movel 671e2 <rtems_minimum_stack_size>,%d0 <== NOT EXECUTED
4b2fe: d080 addl %d0,%d0 <== NOT EXECUTED
4b300: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b302: 6410 bccs 4b314 <pthread_attr_setstack+0x30> <== NOT EXECUTED
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4b304: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
return 0;
4b308: 4280 clrl %d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
4b30a: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
return 0;
}
4b310: 4e5e unlk %fp <== NOT EXECUTED
4b312: 4e75 rts <== NOT EXECUTED
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
4b314: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
attr->stackaddr = stackaddr;
return 0;
4b318: 4280 clrl %d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
4b31a: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
4b320: 60ee bras 4b310 <pthread_attr_setstack+0x2c> <== NOT EXECUTED
void *stackaddr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b322: 7016 moveq #22,%d0 <== NOT EXECUTED
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
return 0;
}
4b324: 4e5e unlk %fp <== NOT EXECUTED
0004b2c0 <pthread_attr_setstackaddr>:
int pthread_attr_setstackaddr(
pthread_attr_t *attr,
void *stackaddr
)
{
4b2c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b2c4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4b2c8: 4a88 tstl %a0 <== NOT EXECUTED
4b2ca: 6710 beqs 4b2dc <pthread_attr_setstackaddr+0x1c> <== NOT EXECUTED
4b2cc: 4a90 tstl %a0@ <== NOT EXECUTED
4b2ce: 670c beqs 4b2dc <pthread_attr_setstackaddr+0x1c> <== NOT EXECUTED
return EINVAL;
attr->stackaddr = stackaddr;
return 0;
4b2d0: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->stackaddr = stackaddr;
4b2d2: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
return 0;
}
4b2d8: 4e5e unlk %fp <== NOT EXECUTED
4b2da: 4e75 rts <== NOT EXECUTED
pthread_attr_t *attr,
void *stackaddr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b2dc: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->stackaddr = stackaddr;
return 0;
}
4b2de: 4e5e unlk %fp <== NOT EXECUTED
...
0004d230 <pthread_attr_setstacksize>:
int pthread_attr_setstacksize(
pthread_attr_t *attr,
size_t stacksize
)
{
4d230: 4e56 0000 linkw %fp,#0
4d234: 206e 0008 moveal %fp@(8),%a0
4d238: 222e 000c movel %fp@(12),%d1
if ( !attr || !attr->is_initialized )
4d23c: 4a88 tstl %a0
4d23e: 6724 beqs 4d264 <pthread_attr_setstacksize+0x34> <== NEVER TAKEN
4d240: 4a90 tstl %a0@
4d242: 6720 beqs 4d264 <pthread_attr_setstacksize+0x34> <== NEVER TAKEN
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4d244: 2039 0005 f842 movel 5f842 <rtems_minimum_stack_size>,%d0
4d24a: d080 addl %d0,%d0
4d24c: b280 cmpl %d0,%d1
4d24e: 650a bcss 4d25a <pthread_attr_setstacksize+0x2a>
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
4d250: 4280 clrl %d0
}
4d252: 4e5e unlk %fp
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
4d254: 2141 0008 movel %d1,%a0@(8)
return 0;
}
4d258: 4e75 rts
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4d25a: 2140 0008 movel %d0,%a0@(8)
else
attr->stacksize = stacksize;
return 0;
4d25e: 4280 clrl %d0
}
4d260: 4e5e unlk %fp
4d262: 4e75 rts
pthread_attr_t *attr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4d264: 7016 moveq #22,%d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
}
4d266: 4e5e unlk %fp <== NOT EXECUTED
...
000467e4 <pthread_barrier_destroy>:
*/
int pthread_barrier_destroy(
pthread_barrier_t *barrier
)
{
467e4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
467e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Barrier_Control *the_barrier = NULL;
Objects_Locations location;
if ( !barrier )
467ec: 4a88 tstl %a0 <== NOT EXECUTED
467ee: 6730 beqs 46820 <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(
467f0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
467f4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
467f6: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED
467fc: 4eb9 0004 9104 jsr 49104 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_barrier = _POSIX_Barrier_Get( barrier, &location );
switch ( location ) {
46802: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46806: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4680a: 6614 bnes 46820 <pthread_barrier_destroy+0x3c> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) {
4680c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4680e: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED
46812: 6712 beqs 46826 <pthread_barrier_destroy+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
46814: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EBUSY;
4681a: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4681c: 4e5e unlk %fp <== NOT EXECUTED
4681e: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46820: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46822: 4e5e unlk %fp <== NOT EXECUTED
46824: 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 );
46826: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46828: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED
4682e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
46832: 4eb9 0004 8cd4 jsr 48cd4 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free (
POSIX_Barrier_Control *the_barrier
)
{
_Objects_Free( &_POSIX_Barrier_Information, &the_barrier->Object );
46838: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4683c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4683e: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED
46844: 4eb9 0004 8f98 jsr 48f98 <_Objects_Free> <== NOT EXECUTED
_POSIX_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4684a: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46850: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46854: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46856: 4e5e unlk %fp <== NOT EXECUTED
...
0004685c <pthread_barrier_init>:
int pthread_barrier_init(
pthread_barrier_t *barrier,
const pthread_barrierattr_t *attr,
unsigned int count
)
{
4685c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
46860: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
46864: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
46868: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
4686c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
const pthread_barrierattr_t *the_attr;
/*
* Error check parameters
*/
if ( !barrier )
46870: 4a8a tstl %a2 <== NOT EXECUTED
46872: 677a beqs 468ee <pthread_barrier_init+0x92> <== NOT EXECUTED
return EINVAL;
if ( count == 0 )
46874: 4a82 tstl %d2 <== NOT EXECUTED
46876: 6776 beqs 468ee <pthread_barrier_init+0x92> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
46878: 4a83 tstl %d3 <== NOT EXECUTED
4687a: 6700 0090 beqw 4690c <pthread_barrier_init+0xb0> <== NOT EXECUTED
4687e: 2043 moveal %d3,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
46880: 4a90 tstl %a0@ <== NOT EXECUTED
46882: 676a beqs 468ee <pthread_barrier_init+0x92> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
46884: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
46888: 6664 bnes 468ee <pthread_barrier_init+0x92> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4688a: 2039 0006 151c movel 6151c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46890: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* Convert from POSIX attributes to Core Barrier attributes
*/
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
46892: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
the_attributes.maximum_count = count;
46896: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED
4689a: 23c0 0006 151c movel %d0,6151c <_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 );
468a0: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED
468a6: 4eb9 0004 8c44 jsr 48c44 <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _POSIX_Barrier_Allocate();
if ( !the_barrier ) {
468ac: 588f addql #4,%sp <== NOT EXECUTED
468ae: 2640 moveal %d0,%a3 <== NOT EXECUTED
468b0: 4a80 tstl %d0 <== NOT EXECUTED
468b2: 6746 beqs 468fa <pthread_barrier_init+0x9e> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
468b4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
468b8: 486b 0010 pea %a3@(16) <== NOT EXECUTED
468bc: 4eb9 0004 8214 jsr 48214 <_CORE_barrier_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
468c2: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
468c6: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
468c8: 2079 0006 1852 moveal 61852 <_POSIX_Barrier_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
468ce: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
468d0: 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;
468d4: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
);
/*
* Exit the critical section and return the user an operational barrier
*/
*barrier = the_barrier->Object.id;
468d8: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
468da: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
468e0: 508f addql #8,%sp <== NOT EXECUTED
468e2: 4280 clrl %d0 <== NOT EXECUTED
}
468e4: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED
468ea: 4e5e unlk %fp <== NOT EXECUTED
468ec: 4e75 rts <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
468ee: 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;
}
468f0: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED
468f6: 4e5e unlk %fp <== NOT EXECUTED
468f8: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _POSIX_Barrier_Allocate();
if ( !the_barrier ) {
_Thread_Enable_dispatch();
468fa: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
46900: 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;
}
46902: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46908: 4e5e unlk %fp <== NOT EXECUTED
4690a: 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 );
4690c: 260e movel %fp,%d3 <== NOT EXECUTED
4690e: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED
46914: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46916: 4eb9 0004 6798 jsr 46798 <pthread_barrierattr_init> <== NOT EXECUTED
4691c: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &my_attr;
4691e: 2043 moveal %d3,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
46920: 4a90 tstl %a0@ <== NOT EXECUTED
46922: 6600 ff60 bnew 46884 <pthread_barrier_init+0x28> <== NOT EXECUTED
46926: 60c6 bras 468ee <pthread_barrier_init+0x92> <== NOT EXECUTED
00046928 <pthread_barrier_wait>:
*/
int pthread_barrier_wait(
pthread_barrier_t *barrier
)
{
46928: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4692c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Barrier_Control *the_barrier = NULL;
Objects_Locations location;
if ( !barrier )
46930: 4a88 tstl %a0 <== NOT EXECUTED
46932: 6752 beqs 46986 <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(
46934: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46938: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4693a: 4879 0006 183a pea 6183a <_POSIX_Barrier_Information> <== NOT EXECUTED
46940: 4eb9 0004 9104 jsr 49104 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_barrier = _POSIX_Barrier_Get( barrier, &location );
switch ( location ) {
46946: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4694a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4694e: 6636 bnes 46986 <pthread_barrier_wait+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
46950: 42a7 clrl %sp@- <== NOT EXECUTED
46952: 2040 moveal %d0,%a0 <== NOT EXECUTED
46954: 42a7 clrl %sp@- <== NOT EXECUTED
46956: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4695a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4695e: 4868 0010 pea %a0@(16) <== NOT EXECUTED
46962: 4eb9 0004 8250 jsr 48250 <_CORE_barrier_Wait> <== NOT EXECUTED
the_barrier->Object.id,
true,
0,
NULL
);
_Thread_Enable_dispatch();
46968: 4eb9 0004 9c36 jsr 49c36 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4696e: 2079 0006 19a6 moveal 619a6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_Barrier_Translate_core_barrier_return_code(
46974: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
46978: 4eb9 0004 cbe4 jsr 4cbe4 <_POSIX_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
4697e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46982: 4e5e unlk %fp <== NOT EXECUTED
46984: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46986: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46988: 4e5e unlk %fp <== NOT EXECUTED
00046754 <pthread_barrierattr_destroy>:
*/
int pthread_barrierattr_destroy(
pthread_barrierattr_t *attr
)
{
46754: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46758: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
4675c: 4a88 tstl %a0 <== NOT EXECUTED
4675e: 670c beqs 4676c <pthread_barrierattr_destroy+0x18><== NOT EXECUTED
46760: 4a90 tstl %a0@ <== NOT EXECUTED
46762: 6708 beqs 4676c <pthread_barrierattr_destroy+0x18><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
46764: 4280 clrl %d0 <== NOT EXECUTED
}
46766: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
46768: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
4676a: 4e75 rts <== NOT EXECUTED
int pthread_barrierattr_destroy(
pthread_barrierattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
4676c: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4676e: 4e5e unlk %fp <== NOT EXECUTED
...
00046774 <pthread_barrierattr_getpshared>:
int pthread_barrierattr_getpshared(
const pthread_barrierattr_t *attr,
int *pshared
)
{
46774: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46778: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4677c: 4a88 tstl %a0 <== NOT EXECUTED
4677e: 6712 beqs 46792 <pthread_barrierattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
46780: 4a90 tstl %a0@ <== NOT EXECUTED
46782: 670e beqs 46792 <pthread_barrierattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
46784: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
46788: 4280 clrl %d0 <== NOT EXECUTED
}
4678a: 4e5e unlk %fp <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
4678c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
}
46790: 4e75 rts <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
46792: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
46794: 4e5e unlk %fp <== NOT EXECUTED
00046798 <pthread_barrierattr_init>:
*/
int pthread_barrierattr_init(
pthread_barrierattr_t *attr
)
{
46798: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4679c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
467a0: 4a88 tstl %a0 <== NOT EXECUTED
467a2: 670e beqs 467b2 <pthread_barrierattr_init+0x1a> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
467a4: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
467a6: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
467a8: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
467aa: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
467ac: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
return 0;
}
467b0: 4e75 rts <== NOT EXECUTED
int pthread_barrierattr_init(
pthread_barrierattr_t *attr
)
{
if ( !attr )
return EINVAL;
467b2: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
467b4: 4e5e unlk %fp <== NOT EXECUTED
000467b8 <pthread_barrierattr_setpshared>:
int pthread_barrierattr_setpshared(
pthread_barrierattr_t *attr,
int pshared
)
{
467b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
467bc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
467c0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
467c4: 4a88 tstl %a0 <== NOT EXECUTED
467c6: 670a beqs 467d2 <pthread_barrierattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
467c8: 4a90 tstl %a0@ <== NOT EXECUTED
467ca: 6706 beqs 467d2 <pthread_barrierattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
467cc: 7201 moveq #1,%d1 <== NOT EXECUTED
467ce: b280 cmpl %d0,%d1 <== NOT EXECUTED
467d0: 6406 bccs 467d8 <pthread_barrierattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
467d2: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
467d4: 4e5e unlk %fp <== NOT EXECUTED
467d6: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
467d8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
467dc: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
467de: 4e5e unlk %fp <== NOT EXECUTED
...
00045ea8 <pthread_cancel>:
*/
int pthread_cancel(
pthread_t thread
)
{
45ea8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
/*
* Don't even think about deleting a resource from an ISR.
*/
if ( _ISR_Is_in_progress() )
45eac: 4ab9 0006 08f2 tstl 608f2 <_Per_CPU_Information+0x8> <== NOT EXECUTED
45eb2: 6706 beqs 45eba <pthread_cancel+0x12> <== NOT EXECUTED
return EPROTO;
45eb4: 7047 moveq #71,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
45eb6: 4e5e unlk %fp <== NOT EXECUTED
45eb8: 4e75 rts <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
45eba: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45ebe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45ec2: 4879 0006 062e pea 6062e <_POSIX_Threads_Information> <== NOT EXECUTED
45ec8: 4eb9 0004 8170 jsr 48170 <_Objects_Get> <== NOT EXECUTED
if ( _ISR_Is_in_progress() )
return EPROTO;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
45ece: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45ed2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45ed6: 661c bnes 45ef4 <pthread_cancel+0x4c> <== NOT EXECUTED
case OBJECTS_LOCAL:
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
thread_support->cancelation_requested = 1;
45ed8: 2240 moveal %d0,%a1 <== NOT EXECUTED
45eda: 7201 moveq #1,%d1 <== NOT EXECUTED
45edc: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
45ee0: 2141 00e0 movel %d1,%a0@(224) <== NOT EXECUTED
/* This enables dispatch implicitly */
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( the_thread );
45ee4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45ee6: 4eb9 0004 b95c jsr 4b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
return 0;
45eec: 588f addql #4,%sp <== NOT EXECUTED
45eee: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
45ef0: 4e5e unlk %fp <== NOT EXECUTED
45ef2: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
45ef4: 7016 moveq #22,%d0 <== NOT EXECUTED
}
45ef6: 4e5e unlk %fp <== NOT EXECUTED
...
00045d1c <pthread_cleanup_pop>:
*/
void pthread_cleanup_pop(
int execute
)
{
45d1c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45d20: 2039 0006 0090 movel 60090 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45d26: 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 ];
45d28: 2079 0006 051a moveal 6051a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void pthread_cleanup_pop(
int execute
)
{
45d2e: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
45d32: 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 ];
45d36: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
45d3a: 23c0 0006 0090 movel %d0,60090 <_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 );
45d40: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45d46: 40c2 movew %sr,%d2 <== NOT EXECUTED
45d48: 8082 orl %d2,%d0 <== NOT EXECUTED
45d4a: 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 );
45d4c: 2008 movel %a0,%d0 <== NOT EXECUTED
45d4e: 0680 0000 00e8 addil #232,%d0 <== NOT EXECUTED
if ( _Chain_Is_empty( handler_stack ) ) {
45d54: b0a8 00e4 cmpl %a0@(228),%d0 <== NOT EXECUTED
45d58: 6748 beqs 45da2 <pthread_cleanup_pop+0x86> <== NOT EXECUTED
_Thread_Enable_dispatch();
_ISR_Enable( level );
return;
}
handler = (POSIX_Cancel_Handler_control *)
45d5a: 2068 00ec moveal %a0@(236),%a0 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
45d5e: 2450 moveal %a0@,%a2 <== NOT EXECUTED
previous = the_node->previous;
45d60: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
next->previous = previous;
45d64: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous->next = next;
45d68: 228a movel %a2,%a1@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
45d6a: 46c2 movew %d2,%sr <== NOT EXECUTED
45d6c: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
45d70: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
tmp_handler = *handler;
_Workspace_Free( handler );
45d74: 2f08 movel %a0,%sp@- <== NOT EXECUTED
45d76: 4eb9 0004 9bae jsr 49bae <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
45d7c: 4eb9 0004 897e jsr 4897e <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( execute )
45d82: 588f addql #4,%sp <== NOT EXECUTED
45d84: 4a83 tstl %d3 <== NOT EXECUTED
45d86: 660a bnes 45d92 <pthread_cleanup_pop+0x76> <== NOT EXECUTED
(*tmp_handler.routine)( tmp_handler.arg );
}
45d88: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
45d8e: 4e5e unlk %fp <== NOT EXECUTED
45d90: 4e75 rts <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45d92: 2244 moveal %d4,%a1 <== NOT EXECUTED
45d94: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
45d98: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
45d9e: 4e5e unlk %fp <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45da0: 4ed1 jmp %a1@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Disable( level );
if ( _Chain_Is_empty( handler_stack ) ) {
_Thread_Enable_dispatch();
45da2: 4eb9 0004 897e jsr 4897e <_Thread_Enable_dispatch> <== NOT EXECUTED
_ISR_Enable( level );
45da8: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
}
45daa: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
45db0: 4e5e unlk %fp <== NOT EXECUTED
000462a0 <pthread_cleanup_push>:
void pthread_cleanup_push(
void (*routine)( void * ),
void *arg
)
{
462a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
462a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
462a6: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
462aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
462ac: 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 )
462b0: 6754 beqs 46306 <pthread_cleanup_push+0x66> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
462b2: 2039 0006 0e92 movel 60e92 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
462b8: 5280 addql #1,%d0 <== NOT EXECUTED
462ba: 23c0 0006 0e92 movel %d0,60e92 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return;
_Thread_Disable_dispatch();
handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
462c0: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
462c4: 4eb9 0004 a96e jsr 4a96e <_Workspace_Allocate> <== NOT EXECUTED
if ( handler ) {
462ca: 588f addql #4,%sp <== NOT EXECUTED
462cc: 4a80 tstl %d0 <== NOT EXECUTED
462ce: 6726 beqs 462f6 <pthread_cleanup_push+0x56> <== NOT EXECUTED
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
462d0: 2079 0006 131c moveal 6131c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
462d6: 2228 0102 movel %a0@(258),%d1 <== NOT EXECUTED
handler->routine = routine;
462da: 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;
462dc: 0681 0000 00e4 addil #228,%d1 <== NOT EXECUTED
handler->routine = routine;
462e2: 2142 0008 movel %d2,%a0@(8) <== NOT EXECUTED
handler->arg = arg;
462e6: 2143 000c movel %d3,%a0@(12) <== NOT EXECUTED
_Chain_Append( handler_stack, &handler->Node );
462ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
462ec: 2f01 movel %d1,%sp@- <== NOT EXECUTED
462ee: 4eb9 0004 7cc8 jsr 47cc8 <_Chain_Append> <== NOT EXECUTED
462f4: 508f addql #8,%sp <== NOT EXECUTED
}
_Thread_Enable_dispatch();
}
462f6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
462fa: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
462fe: 4e5e unlk %fp <== NOT EXECUTED
handler->routine = routine;
handler->arg = arg;
_Chain_Append( handler_stack, &handler->Node );
}
_Thread_Enable_dispatch();
46300: 4ef9 0004 96b6 jmp 496b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
}
46306: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4630a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4630e: 4e5e unlk %fp <== NOT EXECUTED
...
0004705c <pthread_cond_broadcast>:
*/
int pthread_cond_broadcast(
pthread_cond_t *cond
)
{
4705c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Signal_support( cond, true );
47060: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47064: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47068: 4eb9 0004 7238 jsr 47238 <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED
}
4706e: 4e5e unlk %fp <== NOT EXECUTED
...
00047074 <pthread_cond_destroy>:
*/
int pthread_cond_destroy(
pthread_cond_t *cond
)
{
47074: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47078: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
4707a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4707e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47082: 4eb9 0004 70ec jsr 470ec <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
47088: 508f addql #8,%sp <== NOT EXECUTED
)
{
POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
4708a: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
4708c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47090: 6620 bnes 470b2 <pthread_cond_destroy+0x3e> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
47092: 486a 0018 pea %a2@(24) <== NOT EXECUTED
47096: 4eb9 0004 b258 jsr 4b258 <_Thread_queue_First> <== NOT EXECUTED
4709c: 588f addql #4,%sp <== NOT EXECUTED
4709e: 4a80 tstl %d0 <== NOT EXECUTED
470a0: 671a beqs 470bc <pthread_cond_destroy+0x48> <== NOT EXECUTED
_Thread_Enable_dispatch();
470a2: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470a8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
_Thread_Enable_dispatch();
return EBUSY;
470ac: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470ae: 4e5e unlk %fp <== NOT EXECUTED
470b0: 4e75 rts <== NOT EXECUTED
470b2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
470b6: 7016 moveq #22,%d0 <== NOT EXECUTED
}
470b8: 4e5e unlk %fp <== NOT EXECUTED
470ba: 4e75 rts <== NOT EXECUTED
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
_Thread_Enable_dispatch();
return EBUSY;
}
_Objects_Close(
470bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470be: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED
470c4: 4eb9 0004 9ba0 jsr 49ba0 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Free (
POSIX_Condition_variables_Control *the_condition_variable
)
{
_Objects_Free(
470ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470cc: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information><== NOT EXECUTED
470d2: 4eb9 0004 9e64 jsr 49e64 <_Objects_Free> <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
&the_cond->Object
);
_POSIX_Condition_variables_Free( the_cond );
_Thread_Enable_dispatch();
470d8: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470de: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
&the_cond->Object
);
_POSIX_Condition_variables_Free( the_cond );
_Thread_Enable_dispatch();
return 0;
470e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
470e6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
470e8: 4e5e unlk %fp <== NOT EXECUTED
00047164 <pthread_cond_init>:
int pthread_cond_init(
pthread_cond_t *cond,
const pthread_condattr_t *attr
)
{
47164: 4e56 0000 linkw %fp,#0
47168: 2f0b movel %a3,%sp@-
4716a: 2f0a movel %a2,%sp@-
4716c: 246e 000c moveal %fp@(12),%a2
POSIX_Condition_variables_Control *the_cond;
const pthread_condattr_t *the_attr;
if ( attr ) the_attr = attr;
47170: 4a8a tstl %a2
47172: 6700 0092 beqw 47206 <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 )
47176: 7001 moveq #1,%d0
47178: b0aa 0004 cmpl %a2@(4),%d0
4717c: 6704 beqs 47182 <pthread_cond_init+0x1e> <== NEVER TAKEN
return EINVAL;
if ( !the_attr->is_initialized )
4717e: 4a92 tstl %a2@
47180: 660e bnes 47190 <pthread_cond_init+0x2c> <== ALWAYS TAKEN
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47182: 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;
47186: 7016 moveq #22,%d0 <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47188: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4718c: 4e5e unlk %fp <== NOT EXECUTED
4718e: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
47190: 2039 0006 26d8 movel 626d8 <_Thread_Dispatch_disable_level>,%d0
47196: 5280 addql #1,%d0
47198: 23c0 0006 26d8 movel %d0,626d8 <_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 );
4719e: 4879 0006 2a82 pea 62a82 <_POSIX_Condition_variables_Information>
471a4: 4eb9 0004 9b10 jsr 49b10 <_Objects_Allocate>
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
471aa: 588f addql #4,%sp
471ac: 2640 moveal %d0,%a3
471ae: 4a80 tstl %d0
471b0: 675e beqs 47210 <pthread_cond_init+0xac> <== NEVER TAKEN
_Thread_Enable_dispatch();
return ENOMEM;
}
the_cond->process_shared = the_attr->process_shared;
471b2: 276a 0004 0010 movel %a2@(4),%a3@(16)
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
471b8: 42ab 0014 clrl %a3@(20)
_Thread_queue_Initialize(
471bc: 4878 0074 pea 74 <DBL_MANT_DIG+0x3f>
471c0: 2f3c 1000 0800 movel #268437504,%sp@-
471c6: 42a7 clrl %sp@-
471c8: 486b 0018 pea %a3@(24)
471cc: 4eb9 0004 b2fc jsr 4b2fc <_Thread_queue_Initialize>
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
471d2: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
471d6: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
471d8: 2079 0006 2a9a moveal 62a9a <_POSIX_Condition_variables_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
471de: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
471e0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
&_POSIX_Condition_variables_Information,
&the_cond->Object,
0
);
*cond = the_cond->Object.id;
471e4: 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;
471e8: 42ab 000c clrl %a3@(12)
471ec: 2080 movel %d0,%a0@
_Thread_Enable_dispatch();
471ee: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch>
return 0;
}
471f4: 246e fff8 moveal %fp@(-8),%a2
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
471f8: 4fef 0010 lea %sp@(16),%sp
471fc: 4280 clrl %d0
}
471fe: 266e fffc moveal %fp@(-4),%a3
47202: 4e5e unlk %fp
47204: 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;
47206: 45f9 0005 fe9e lea 5fe9e <_POSIX_Condition_variables_Default_attributes>,%a2
4720c: 6000 ff68 braw 47176 <pthread_cond_init+0x12>
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
_Thread_Enable_dispatch();
47210: 4eb9 0004 ab02 jsr 4ab02 <_Thread_Enable_dispatch>
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47216: 246e fff8 moveal %fp@(-8),%a2
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
_Thread_Enable_dispatch();
return ENOMEM;
4721a: 700c moveq #12,%d0 <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
4721c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
47220: 4e5e unlk %fp <== NOT EXECUTED
00047224 <pthread_cond_signal>:
*/
int pthread_cond_signal(
pthread_cond_t *cond
)
{
47224: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Signal_support( cond, false );
47228: 42a7 clrl %sp@- <== NOT EXECUTED
4722a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4722e: 4eb9 0004 7238 jsr 47238 <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED
}
47234: 4e5e unlk %fp <== NOT EXECUTED
000472a0 <pthread_cond_timedwait>:
int pthread_cond_timedwait(
pthread_cond_t *cond,
pthread_mutex_t *mutex,
const struct timespec *abstime
)
{
472a0: 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);
472a4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
472a8: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
472ac: 4eb9 0004 77a8 jsr 477a8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
472b2: 508f addql #8,%sp <== NOT EXECUTED
472b4: 4a80 tstl %d0 <== NOT EXECUTED
472b6: 6728 beqs 472e0 <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(
472b8: 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 ||
472ba: 5380 subql #1,%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
already_timedout = true;
return _POSIX_Condition_variables_Wait_support(
472bc: b280 cmpl %d0,%d1 <== NOT EXECUTED
472be: 54c0 scc %d0 <== NOT EXECUTED
472c0: 49c0 extbl %d0 <== NOT EXECUTED
472c2: 4480 negl %d0 <== NOT EXECUTED
472c4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
472c6: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
472ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
472ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
472d2: 4eb9 0004 7304 jsr 47304 <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED
472d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
cond,
mutex,
ticks,
already_timedout
);
}
472dc: 4e5e unlk %fp <== NOT EXECUTED
472de: 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;
472e0: 7016 moveq #22,%d0 <== NOT EXECUTED
cond,
mutex,
ticks,
already_timedout
);
}
472e2: 4e5e unlk %fp <== NOT EXECUTED
...
000472e8 <pthread_cond_wait>:
int pthread_cond_wait(
pthread_cond_t *cond,
pthread_mutex_t *mutex
)
{
472e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Wait_support(
472ec: 42a7 clrl %sp@- <== NOT EXECUTED
472ee: 42a7 clrl %sp@- <== NOT EXECUTED
472f0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
472f4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
472f8: 4eb9 0004 7304 jsr 47304 <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED
cond,
mutex,
THREAD_QUEUE_WAIT_FOREVER,
false
);
}
472fe: 4e5e unlk %fp <== NOT EXECUTED
...
00046fc4 <pthread_condattr_destroy>:
*/
int pthread_condattr_destroy(
pthread_condattr_t *attr
)
{
46fc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46fc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
46fcc: 4a88 tstl %a0 <== NOT EXECUTED
46fce: 670c beqs 46fdc <pthread_condattr_destroy+0x18> <== NOT EXECUTED
46fd0: 4a90 tstl %a0@ <== NOT EXECUTED
46fd2: 6708 beqs 46fdc <pthread_condattr_destroy+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
46fd4: 4280 clrl %d0 <== NOT EXECUTED
}
46fd6: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
46fd8: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
46fda: 4e75 rts <== NOT EXECUTED
int pthread_condattr_destroy(
pthread_condattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
46fdc: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
46fde: 4e5e unlk %fp <== NOT EXECUTED
...
00046fe4 <pthread_condattr_getpshared>:
int pthread_condattr_getpshared(
const pthread_condattr_t *attr,
int *pshared
)
{
46fe4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46fe8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
46fec: 4a88 tstl %a0 <== NOT EXECUTED
46fee: 670e beqs 46ffe <pthread_condattr_getpshared+0x1a><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
46ff0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
46ff4: 4280 clrl %d0 <== NOT EXECUTED
}
46ff6: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*pshared = attr->process_shared;
46ff8: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
}
46ffc: 4e75 rts <== NOT EXECUTED
const pthread_condattr_t *attr,
int *pshared
)
{
if ( !attr )
return EINVAL;
46ffe: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
47000: 4e5e unlk %fp <== NOT EXECUTED
00047004 <pthread_condattr_init>:
*/
int pthread_condattr_init(
pthread_condattr_t *attr
)
{
47004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47008: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4700c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr )
4700e: 4a88 tstl %a0 <== NOT EXECUTED
47010: 671a beqs 4702c <pthread_condattr_init+0x28> <== NOT EXECUTED
return EINVAL;
*attr = _POSIX_Condition_variables_Default_attributes;
return 0;
47012: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*attr = _POSIX_Condition_variables_Default_attributes;
47014: 2239 0005 fe9e movel 5fe9e <_POSIX_Condition_variables_Default_attributes>,%d1<== NOT EXECUTED
4701a: 2439 0005 fea2 movel 5fea2 <_POSIX_Condition_variables_Default_attributes+0x4>,%d2<== NOT EXECUTED
47020: 2081 movel %d1,%a0@ <== NOT EXECUTED
47022: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
return 0;
}
47026: 241f movel %sp@+,%d2 <== NOT EXECUTED
47028: 4e5e unlk %fp <== NOT EXECUTED
4702a: 4e75 rts <== NOT EXECUTED
4702c: 241f movel %sp@+,%d2 <== NOT EXECUTED
int pthread_condattr_init(
pthread_condattr_t *attr
)
{
if ( !attr )
return EINVAL;
4702e: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Condition_variables_Default_attributes;
return 0;
}
47030: 4e5e unlk %fp <== NOT EXECUTED
00047034 <pthread_condattr_setpshared>:
int pthread_condattr_setpshared(
pthread_condattr_t *attr,
int pshared
)
{
47034: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47038: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4703c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
47040: 4a88 tstl %a0 <== NOT EXECUTED
47042: 6706 beqs 4704a <pthread_condattr_setpshared+0x16><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
47044: 7201 moveq #1,%d1 <== NOT EXECUTED
47046: b280 cmpl %d0,%d1 <== NOT EXECUTED
47048: 6406 bccs 47050 <pthread_condattr_setpshared+0x1c><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
4704a: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
4704c: 4e5e unlk %fp <== NOT EXECUTED
4704e: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
47050: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
47054: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
47056: 4e5e unlk %fp <== NOT EXECUTED
...
00046730 <pthread_create>:
pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine)( void * ),
void *arg
)
{
46730: 4e56 ff9c linkw %fp,#-100
46734: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
46738: 246e 000c moveal %fp@(12),%a2
4673c: 262e 0010 movel %fp@(16),%d3
int schedpolicy = SCHED_RR;
struct sched_param schedparam;
Objects_Name name;
int rc;
if ( !start_routine )
46740: 6700 01fc beqw 4693e <pthread_create+0x20e>
return EFAULT;
the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;
46744: 4a8a tstl %a2
46746: 6738 beqs 46780 <pthread_create+0x50> <== NEVER TAKEN
if ( !the_attr->is_initialized )
46748: 4a92 tstl %a2@
4674a: 6726 beqs 46772 <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) )
4674c: 4aaa 0004 tstl %a2@(4)
46750: 670c beqs 4675e <pthread_create+0x2e> <== ALWAYS TAKEN
46752: 2039 0005 f842 movel 5f842 <rtems_minimum_stack_size>,%d0 <== NOT EXECUTED
46758: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED
4675c: 6214 bhis 46772 <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 ) {
4675e: 202a 0010 movel %a2@(16),%d0
46762: 7201 moveq #1,%d1
46764: b280 cmpl %d0,%d1
46766: 6700 0176 beqw 468de <pthread_create+0x1ae>
4676a: 123c 0002 moveb #2,%d1
4676e: b280 cmpl %d0,%d1
46770: 6716 beqs 46788 <pthread_create+0x58> <== ALWAYS TAKEN
/*
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
return EINVAL;
46772: 7416 moveq #22,%d2 <== NOT EXECUTED
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
46774: 2002 movel %d2,%d0 <== NOT EXECUTED
46776: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4677c: 4e5e unlk %fp <== NOT EXECUTED
4677e: 4e75 rts <== NOT EXECUTED
int rc;
if ( !start_routine )
return EFAULT;
the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;
46780: 45f9 0005 e8be lea 5e8be <_POSIX_Threads_Default_attributes>,%a2<== NOT EXECUTED
46786: 60c0 bras 46748 <pthread_create+0x18> <== NOT EXECUTED
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
break;
case PTHREAD_EXPLICIT_SCHED:
schedpolicy = the_attr->schedpolicy;
46788: 226a 0014 moveal %a2@(20),%a1
schedparam = the_attr->schedparam;
4678c: 2e0e movel %fp,%d7
4678e: 2c0e movel %fp,%d6
46790: 0687 ffff ffe0 addil #-32,%d7
46796: 0686 ffff ffe4 addil #-28,%d6
4679c: 2047 moveal %d7,%a0
4679e: 2a0e movel %fp,%d5
467a0: 280e movel %fp,%d4
467a2: 0685 ffff ffe8 addil #-24,%d5
467a8: 0684 ffff ffec addil #-20,%d4
467ae: 47ee ffdc lea %fp@(-36),%a3
467b2: 4bee fff0 lea %fp@(-16),%a5
467b6: 49ee fff4 lea %fp@(-12),%a4
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
break;
case PTHREAD_EXPLICIT_SCHED:
schedpolicy = the_attr->schedpolicy;
467ba: 2d49 ffd8 movel %a1,%fp@(-40)
schedparam = the_attr->schedparam;
467be: 2246 moveal %d6,%a1
467c0: 20aa 001c movel %a2@(28),%a0@
467c4: 2045 moveal %d5,%a0
467c6: 22aa 0020 movel %a2@(32),%a1@
467ca: 2244 moveal %d4,%a1
467cc: 26aa 0018 movel %a2@(24),%a3@
467d0: 20aa 0024 movel %a2@(36),%a0@
467d4: 22aa 0028 movel %a2@(40),%a1@
467d8: 2aaa 002c movel %a2@(44),%a5@
467dc: 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;
467e0: 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 )
467e6: 4aaa 000c tstl %a2@(12)
467ea: 6688 bnes 46774 <pthread_create+0x44> <== NEVER TAKEN
return ENOTSUP;
/*
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
467ec: 2f2e ffdc movel %fp@(-36),%sp@-
467f0: 4eb9 0004 d0c8 jsr 4d0c8 <_POSIX_Priority_Is_valid>
467f6: 588f addql #4,%sp
467f8: 4a00 tstb %d0
467fa: 6700 ff76 beqw 46772 <pthread_create+0x42>
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
467fe: 486e fff8 pea %fp@(-8)
46802: 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 );
46806: 202e ffdc movel %fp@(-36),%d0
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
4680a: 2f0b movel %a3,%sp@-
4680c: 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);
46810: 1239 0005 f846 moveb 5f846 <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 );
46816: 2d40 ffd4 movel %d0,%fp@(-44)
4681a: 1d41 ffd3 moveb %d1,%fp@(-45)
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
4681e: 4eb9 0004 d0ec jsr 4d0ec <_POSIX_Thread_Translate_sched_param>
schedpolicy,
&schedparam,
&budget_algorithm,
&budget_callout
);
if ( rc )
46824: 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(
46828: 2400 movel %d0,%d2
schedpolicy,
&schedparam,
&budget_algorithm,
&budget_callout
);
if ( rc )
4682a: 6600 ff48 bnew 46774 <pthread_create+0x44>
#endif
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
4682e: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@-
46834: 4eb9 0004 8268 jsr 48268 <_API_Mutex_Lock>
* _POSIX_Threads_Allocate
*/
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
4683a: 4879 0006 128a pea 6128a <_POSIX_Threads_Information>
46840: 4eb9 0004 8cf8 jsr 48cf8 <_Objects_Allocate>
* Allocate the thread control block.
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
46846: 508f addql #8,%sp
46848: 2040 moveal %d0,%a0
4684a: 4a80 tstl %d0
4684c: 6700 01d4 beqw 46a22 <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(
46850: 222e fffc movel %fp@(-4),%d1
static inline size_t _POSIX_Threads_Ensure_minimum_stack (
size_t size
)
{
if ( size >= PTHREAD_MINIMUM_STACK_SIZE )
46854: 2039 0005 f842 movel 5f842 <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(
4685a: 2d41 ffce movel %d1,%fp@(-50)
4685e: 226e fff8 moveal %fp@(-8),%a1
static inline size_t _POSIX_Threads_Ensure_minimum_stack (
size_t size
)
{
if ( size >= PTHREAD_MINIMUM_STACK_SIZE )
46862: 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(
46864: 222a 0008 movel %a2@(8),%d1
46868: b280 cmpl %d0,%d1
4686a: 6302 blss 4686e <pthread_create+0x13e>
4686c: 2001 movel %d1,%d0
4686e: 42a7 clrl %sp@-
46870: 4281 clrl %d1
46872: 122e ffd3 moveb %fp@(-45),%d1
46876: 92ae ffd4 subl %fp@(-44),%d1
4687a: 42a7 clrl %sp@-
4687c: 2f09 movel %a1,%sp@-
4687e: 2f2e ffce movel %fp@(-50),%sp@-
46882: 4878 0001 pea 1 <ADD>
46886: 2f01 movel %d1,%sp@-
46888: 4878 0001 pea 1 <ADD>
4688c: 2f00 movel %d0,%sp@-
4688e: 2f2a 0004 movel %a2@(4),%sp@-
46892: 2f08 movel %a0,%sp@-
46894: 4879 0006 128a pea 6128a <_POSIX_Threads_Information>
4689a: 2d48 ffca movel %a0,%fp@(-54)
4689e: 4eb9 0004 9da8 jsr 49da8 <_Thread_Initialize>
budget_callout,
0, /* isr level */
name /* posix threads don't have a name */
);
if ( !status ) {
468a4: 206e ffca moveal %fp@(-54),%a0
468a8: 4fef 002c lea %sp@(44),%sp
468ac: 4a00 tstb %d0
468ae: 6600 009c bnew 4694c <pthread_create+0x21c>
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
468b2: 2f08 movel %a0,%sp@-
468b4: 4879 0006 128a pea 6128a <_POSIX_Threads_Information>
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
return EAGAIN;
468ba: 740b moveq #11,%d2
468bc: 4eb9 0004 904c jsr 4904c <_Objects_Free>
name /* posix threads don't have a name */
);
if ( !status ) {
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
468c2: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@-
468c8: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock>
return EAGAIN;
468ce: 4fef 000c lea %sp@(12),%sp
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
468d2: 2002 movel %d2,%d0
468d4: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5
468da: 4e5e unlk %fp
468dc: 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 ];
468de: 2079 0006 1552 moveal 61552 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
468e4: 47ee ffdc lea %fp@(-36),%a3 <== NOT EXECUTED
468e8: 2e0e movel %fp,%d7 <== NOT EXECUTED
468ea: 0687 ffff ffe0 addil #-32,%d7 <== NOT EXECUTED
468f0: 2247 moveal %d7,%a1 <== NOT EXECUTED
468f2: 2c0e movel %fp,%d6 <== NOT EXECUTED
468f4: 0686 ffff ffe4 addil #-28,%d6 <== NOT EXECUTED
468fa: 2a0e movel %fp,%d5 <== NOT EXECUTED
468fc: 0685 ffff ffe8 addil #-24,%d5 <== NOT EXECUTED
46902: 280e movel %fp,%d4 <== NOT EXECUTED
46904: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED
4690a: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED
4690e: 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 ];
46912: 2028 0102 movel %a0@(258),%d0 <== NOT EXECUTED
schedpolicy = api->schedpolicy;
schedparam = api->schedparam;
46916: 2040 moveal %d0,%a0 <== NOT EXECUTED
46918: 41e8 0088 lea %a0@(136),%a0 <== NOT EXECUTED
4691c: 2698 movel %a0@+,%a3@ <== NOT EXECUTED
4691e: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
46920: 2246 moveal %d6,%a1 <== NOT EXECUTED
46922: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
46924: 2245 moveal %d5,%a1 <== NOT EXECUTED
46926: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
46928: 2244 moveal %d4,%a1 <== NOT EXECUTED
4692a: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
4692c: 2a98 movel %a0@+,%a5@ <== NOT EXECUTED
4692e: 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;
46930: 2040 moveal %d0,%a0 <== NOT EXECUTED
46932: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
46936: 2d40 ffd8 movel %d0,%fp@(-40) <== NOT EXECUTED
schedparam = api->schedparam;
break;
4693a: 6000 fea4 braw 467e0 <pthread_create+0xb0> <== NOT EXECUTED
struct sched_param schedparam;
Objects_Name name;
int rc;
if ( !start_routine )
return EFAULT;
4693e: 740e moveq #14,%d2
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
46940: 2002 movel %d2,%d0
46942: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5
46948: 4e5e unlk %fp
4694a: 4e75 rts
}
/*
* finish initializing the per API structure
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4694c: 2268 0102 moveal %a0@(258),%a1
api->Attributes = *the_attr;
46950: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
46954: 2f0a movel %a2,%sp@-
46956: 2d48 ffca movel %a0,%fp@(-54)
4695a: 2f09 movel %a1,%sp@-
4695c: 2d49 ffc6 movel %a1,%fp@(-58)
46960: 4eb9 0005 0198 jsr 50198 <memcpy>
api->detachstate = the_attr->detachstate;
46966: 226e ffc6 moveal %fp@(-58),%a1
4696a: 236a 003c 0040 movel %a2@(60),%a1@(64)
api->schedpolicy = schedpolicy;
api->schedparam = schedparam;
46970: 45e9 0088 lea %a1@(136),%a2
46974: 24d3 movel %a3@,%a2@+
46976: 2647 moveal %d7,%a3
46978: 24d3 movel %a3@,%a2@+
4697a: 2646 moveal %d6,%a3
4697c: 24d3 movel %a3@,%a2@+
4697e: 2645 moveal %d5,%a3
46980: 24d3 movel %a3@,%a2@+
46982: 2644 moveal %d4,%a3
46984: 24d3 movel %a3@,%a2@+
46986: 24d5 movel %a5@,%a2@+
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
api->Attributes = *the_attr;
api->detachstate = the_attr->detachstate;
api->schedpolicy = schedpolicy;
46988: 202e ffd8 movel %fp@(-40),%d0
api->schedparam = schedparam;
4698c: 2494 movel %a4@,%a2@
/*
* POSIX threads are allocated and started in one operation.
*/
status = _Thread_Start(
4698e: 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;
46992: 2340 0084 movel %d0,%a1@(132)
api->schedparam = schedparam;
/*
* POSIX threads are allocated and started in one operation.
*/
status = _Thread_Start(
46996: 42a7 clrl %sp@-
46998: 2f2e 0014 movel %fp@(20),%sp@-
4699c: 2f03 movel %d3,%sp@-
4699e: 4878 0001 pea 1 <ADD>
469a2: 2f08 movel %a0,%sp@-
469a4: 4eb9 0004 a7a4 jsr 4a7a4 <_Thread_Start>
_RTEMS_Unlock_allocator();
return EINVAL;
}
#endif
if ( schedpolicy == SCHED_SPORADIC ) {
469aa: 206e ffca moveal %fp@(-54),%a0
469ae: 4fef 0020 lea %sp@(32),%sp
469b2: 7204 moveq #4,%d1
469b4: 226e ffc6 moveal %fp@(-58),%a1
469b8: b2ae ffd8 cmpl %fp@(-40),%d1
469bc: 6722 beqs 469e0 <pthread_create+0x2b0> <== NEVER TAKEN
}
/*
* Return the id and indicate we successfully created the thread
*/
*thread = the_thread->Object.id;
469be: 226e 0008 moveal %fp@(8),%a1
469c2: 22a8 0008 movel %a0@(8),%a1@
_RTEMS_Unlock_allocator();
469c6: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@-
469cc: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock>
return 0;
469d2: 588f addql #4,%sp
}
469d4: 2002 movel %d2,%d0
469d6: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5
469dc: 4e5e unlk %fp
469de: 4e75 rts
return EINVAL;
}
#endif
if ( schedpolicy == SCHED_SPORADIC ) {
_Watchdog_Insert_ticks(
469e0: 4869 0090 pea %a1@(144) <== NOT EXECUTED
469e4: 4eb9 0004 a9ac jsr 4a9ac <_Timespec_To_ticks> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
469ea: 226e ffc6 moveal %fp@(-58),%a1 <== NOT EXECUTED
469ee: 2340 00b4 movel %d0,%a1@(180) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
469f2: 4869 00a8 pea %a1@(168) <== NOT EXECUTED
469f6: 4879 0006 11a8 pea 611a8 <_Watchdog_Ticks_chain> <== NOT EXECUTED
469fc: 4eb9 0004 ad08 jsr 4ad08 <_Watchdog_Insert> <== NOT EXECUTED
46a02: 206e ffca moveal %fp@(-54),%a0 <== NOT EXECUTED
46a06: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Return the id and indicate we successfully created the thread
*/
*thread = the_thread->Object.id;
46a0a: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
46a0e: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
_RTEMS_Unlock_allocator();
46a12: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46a18: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock> <== NOT EXECUTED
return 0;
46a1e: 588f addql #4,%sp <== NOT EXECUTED
46a20: 60b2 bras 469d4 <pthread_create+0x2a4> <== NOT EXECUTED
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
46a22: 2f39 0006 1188 movel 61188 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
return EAGAIN;
46a28: 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();
46a2c: 4eb9 0004 82c8 jsr 482c8 <_API_Mutex_Unlock> <== NOT EXECUTED
return EAGAIN;
46a32: 588f addql #4,%sp <== NOT EXECUTED
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
46a34: 2002 movel %d2,%d0 <== NOT EXECUTED
46a36: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5 <== NOT EXECUTED
46a3c: 4e5e unlk %fp <== NOT EXECUTED
00046754 <pthread_detach>:
#include <rtems/posix/pthread.h>
int pthread_detach(
pthread_t thread
)
{
46754: 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 );
46758: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4675c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46760: 4879 0006 1d9a pea 61d9a <_POSIX_Threads_Information> <== NOT EXECUTED
46766: 4eb9 0004 8d18 jsr 48d18 <_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 ) {
4676c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46770: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46774: 6616 bnes 4678c <pthread_detach+0x38> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
api->detachstate = PTHREAD_CREATE_DETACHED;
46776: 2240 moveal %d0,%a1 <== NOT EXECUTED
46778: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
4677c: 42a8 0040 clrl %a0@(64) <== NOT EXECUTED
_Thread_Enable_dispatch();
46780: 4eb9 0004 984a jsr 4984a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46786: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
46788: 4e5e unlk %fp <== NOT EXECUTED
4678a: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
4678c: 7003 moveq #3,%d0 <== NOT EXECUTED
}
4678e: 4e5e unlk %fp <== NOT EXECUTED
...
00046a40 <pthread_equal>:
int pthread_equal(
pthread_t t1,
pthread_t t2
)
{
46a40: 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 );
46a44: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
46a48: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
46a4c: 57c0 seq %d0 <== NOT EXECUTED
break;
}
return status;
#endif
}
46a4e: 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 );
46a50: 49c0 extbl %d0 <== NOT EXECUTED
break;
}
return status;
#endif
}
46a52: 4480 negl %d0 <== NOT EXECUTED
...
0004e36c <pthread_exit>:
}
void pthread_exit(
void *value_ptr
)
{
4e36c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_Thread_Exit( _Thread_Executing, value_ptr );
4e370: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4e374: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4e37a: 4eb9 0004 e2fc jsr 4e2fc <_POSIX_Thread_Exit> <== NOT EXECUTED
4e380: 508f addql #8,%sp <== NOT EXECUTED
}
4e382: 4e5e unlk %fp <== NOT EXECUTED
...
00046228 <pthread_getcpuclockid>:
int pthread_getcpuclockid(
pthread_t pid,
clockid_t *clock_id
)
{
46228: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4622c: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
46232: 7258 moveq #88,%d1 <== NOT EXECUTED
46234: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46236: 70ff moveq #-1,%d0 <== NOT EXECUTED
46238: 4e5e unlk %fp <== NOT EXECUTED
int pthread_getcpuclockid(
pthread_t pid,
clockid_t *clock_id
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4623a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00048bc4 <pthread_getschedparam>:
int pthread_getschedparam(
pthread_t thread,
int *policy,
struct sched_param *param
)
{
48bc4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
48bc8: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
48bcc: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
48bd0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Objects_Locations location;
POSIX_API_Control *api;
register Thread_Control *the_thread;
if ( !policy || !param )
48bd4: 4a8b tstl %a3 <== NOT EXECUTED
48bd6: 676e beqs 48c46 <pthread_getschedparam+0x82> <== NOT EXECUTED
48bd8: 4a8a tstl %a2 <== NOT EXECUTED
48bda: 676a beqs 48c46 <pthread_getschedparam+0x82> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
48bdc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48be0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48be4: 4879 0006 518a pea 6518a <_POSIX_Threads_Information> <== NOT EXECUTED
48bea: 4eb9 0004 b234 jsr 4b234 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
48bf0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48bf4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48bf8: 6640 bnes 48c3a <pthread_getschedparam+0x76> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
48bfa: 2040 moveal %d0,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
48bfc: 4281 clrl %d1 <== NOT EXECUTED
48bfe: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED
if ( policy )
*policy = api->schedpolicy;
if ( param ) {
*param = api->schedparam;
48c02: 204a moveal %a2,%a0 <== NOT EXECUTED
48c04: 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;
48c08: 26ac 0084 movel %a4@(132),%a3@ <== NOT EXECUTED
48c0c: 1239 0006 36e6 moveb 636e6 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
if ( param ) {
*param = api->schedparam;
48c12: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
48c14: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
48c16: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
48c18: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
48c1a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
48c1c: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
48c1e: 2091 movel %a1@,%a0@ <== NOT EXECUTED
48c20: 2040 moveal %d0,%a0 <== NOT EXECUTED
48c22: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED
48c26: 2481 movel %d1,%a2@ <== NOT EXECUTED
param->sched_priority =
_POSIX_Priority_From_core( the_thread->current_priority );
}
_Thread_Enable_dispatch();
48c28: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
break;
}
return ESRCH;
}
48c2e: 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;
48c34: 4280 clrl %d0 <== NOT EXECUTED
break;
}
return ESRCH;
}
48c36: 4e5e unlk %fp <== NOT EXECUTED
48c38: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
48c3a: 7003 moveq #3,%d0 <== NOT EXECUTED
}
48c3c: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED
48c42: 4e5e unlk %fp <== NOT EXECUTED
48c44: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
POSIX_API_Control *api;
register Thread_Control *the_thread;
if ( !policy || !param )
return EINVAL;
48c46: 7016 moveq #22,%d0 <== NOT EXECUTED
break;
}
return ESRCH;
}
48c48: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED
48c4e: 4e5e unlk %fp <== NOT EXECUTED
...
00046530 <pthread_getspecific>:
*/
void *pthread_getspecific(
pthread_key_t key
)
{
46530: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
46534: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46536: 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 );
46538: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4653c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46540: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
46546: 4eb9 0004 8dfc jsr 48dfc <_Objects_Get> <== NOT EXECUTED
uint32_t index;
Objects_Locations location;
void *key_data;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
4654c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46550: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46554: 6640 bnes 46596 <pthread_getspecific+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
46556: 2079 0006 20c2 moveal 620c2 <_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);
4655c: 7618 moveq #24,%d3 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
key_data = (void *) the_key->Values[ api ][ index ];
4655e: 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 );
46560: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
46564: 2202 movel %d2,%d1 <== NOT EXECUTED
46566: e6a9 lsrl %d3,%d1 <== NOT EXECUTED
46568: 163c 0007 moveb #7,%d3 <== NOT EXECUTED
4656c: c283 andl %d3,%d1 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
4656e: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
key_data = (void *) the_key->Values[ api ][ index ];
46574: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED
46578: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
4657c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
46580: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED
return key_data;
46586: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return NULL;
}
4658a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4658e: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
46592: 4e5e unlk %fp <== NOT EXECUTED
46594: 4e75 rts <== NOT EXECUTED
46596: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return NULL;
4659a: 4280 clrl %d0 <== NOT EXECUTED
}
4659c: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
465a0: 4e5e unlk %fp <== NOT EXECUTED
0004b844 <pthread_join>:
int pthread_join(
pthread_t thread,
void **value_ptr
)
{
4b844: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4b848: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b84a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b84e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4b852: 4879 0006 8c76 pea 68c76 <_POSIX_Threads_Information> <== NOT EXECUTED
4b858: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b85c: 4eb9 0004 de74 jsr 4de74 <_Objects_Get> <== NOT EXECUTED
POSIX_API_Control *api;
Objects_Locations location;
void *return_pointer;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
4b862: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b866: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4b86a: 670a beqs 4b876 <pthread_join+0x32> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b86c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
4b870: 7003 moveq #3,%d0 <== NOT EXECUTED
}
4b872: 4e5e unlk %fp <== NOT EXECUTED
4b874: 4e75 rts <== NOT EXECUTED
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4b876: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b878: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
if ( api->detachstate == PTHREAD_CREATE_DETACHED ) {
4b87c: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED
4b880: 6746 beqs 4b8c8 <pthread_join+0x84> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Executing );
4b882: 2279 0006 8f3e moveal 68f3e <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
if ( _Thread_Is_executing( the_thread ) ) {
4b888: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
4b88a: 674c beqs 4b8d8 <pthread_join+0x94> <== NOT EXECUTED
/*
* Put ourself on the threads join list
*/
_Thread_Executing->Wait.return_argument = &return_pointer;
4b88c: 200e movel %fp,%d0 <== NOT EXECUTED
4b88e: 5180 subql #8,%d0 <== NOT EXECUTED
4b890: 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;
4b894: 7001 moveq #1,%d0 <== NOT EXECUTED
4b896: 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 );
4b89a: 4879 0004 f244 pea 4f244 <_Thread_queue_Timeout> <== NOT EXECUTED
4b8a0: 42a7 clrl %sp@- <== NOT EXECUTED
4b8a2: 4868 0044 pea %a0@(68) <== NOT EXECUTED
4b8a6: 4eb9 0004 ee80 jsr 4ee80 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
4b8ac: 4eb9 0004 e9a6 jsr 4e9a6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( value_ptr )
4b8b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b8b6: 4a8a tstl %a2 <== NOT EXECUTED
4b8b8: 672e beqs 4b8e8 <pthread_join+0xa4> <== NOT EXECUTED
*value_ptr = return_pointer;
4b8ba: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
return 0;
4b8be: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8c0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4b8c4: 4e5e unlk %fp <== NOT EXECUTED
4b8c6: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->detachstate == PTHREAD_CREATE_DETACHED ) {
_Thread_Enable_dispatch();
4b8c8: 4eb9 0004 e9a6 jsr 4e9a6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8ce: 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;
4b8d2: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8d4: 4e5e unlk %fp <== NOT EXECUTED
4b8d6: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
if ( _Thread_Is_executing( the_thread ) ) {
_Thread_Enable_dispatch();
4b8d8: 4eb9 0004 e9a6 jsr 4e9a6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8de: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
return EINVAL;
}
if ( _Thread_Is_executing( the_thread ) ) {
_Thread_Enable_dispatch();
return EDEADLK;
4b8e2: 702d moveq #45,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8e4: 4e5e unlk %fp <== NOT EXECUTED
4b8e6: 4e75 rts <== NOT EXECUTED
4b8e8: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( value_ptr )
*value_ptr = return_pointer;
return 0;
4b8ec: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4b8ee: 4e5e unlk %fp <== NOT EXECUTED
...
000463ac <pthread_key_create>:
int pthread_key_create(
pthread_key_t *key,
void (*destructor)( void * )
)
{
463ac: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
463b0: 2039 0006 1c38 movel 61c38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
463b6: 5280 addql #1,%d0 <== NOT EXECUTED
463b8: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
463bc: 23c0 0006 1c38 movel %d0,61c38 <_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 );
463c2: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
463c8: 4eb9 0004 893c jsr 4893c <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_key = _POSIX_Keys_Allocate();
if ( !the_key ) {
463ce: 588f addql #4,%sp <== NOT EXECUTED
463d0: 2840 moveal %d0,%a4 <== NOT EXECUTED
463d2: 4a80 tstl %d0 <== NOT EXECUTED
463d4: 677e beqs 46454 <pthread_key_create+0xa8> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
the_key->destructor = destructor;
463d6: 45f9 0006 1bf8 lea 61bf8 <_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,
463dc: 47ec 0018 lea %a4@(24),%a3 <== NOT EXECUTED
463e0: 4bf9 0004 ac7a lea 4ac7a <_Workspace_Allocate>,%a5 <== NOT EXECUTED
463e6: 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 );
463ec: 263c 0005 0024 movel #327716,%d3 <== NOT EXECUTED
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
463f2: 205a moveal %a2@+,%a0 <== NOT EXECUTED
463f4: 4282 clrl %d2 <== NOT EXECUTED
463f6: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
463fa: 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;
463fe: 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);
46400: 5282 addql #1,%d2 <== NOT EXECUTED
true,
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
46402: e58a lsll #2,%d2 <== NOT EXECUTED
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
table = _Workspace_Allocate( bytes_to_allocate );
46404: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46406: 4e95 jsr %a5@ <== NOT EXECUTED
if ( !table ) {
46408: 588f addql #4,%sp <== NOT EXECUTED
4640a: 4a80 tstl %d0 <== NOT EXECUTED
4640c: 6758 beqs 46466 <pthread_key_create+0xba> <== NOT EXECUTED
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
return ENOMEM;
}
the_key->Values[ the_api ] = table;
4640e: 26c0 movel %d0,%a3@+ <== NOT EXECUTED
memset( table, '\0', bytes_to_allocate );
46410: 2043 moveal %d3,%a0 <== NOT EXECUTED
46412: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46414: 42a7 clrl %sp@- <== NOT EXECUTED
46416: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46418: 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++ ) {
4641a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4641e: b5fc 0006 1c04 cmpal #400388,%a2 <== NOT EXECUTED
46424: 66cc bnes 463f2 <pthread_key_create+0x46> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46426: 202c 0008 movel %a4@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4642a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4642c: 2079 0006 1fc0 moveal 61fc0 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46432: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46434: 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;
46438: 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;
4643c: 42ac 000c clrl %a4@(12) <== NOT EXECUTED
46440: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
46442: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
46448: 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;
4644e: 4280 clrl %d0 <== NOT EXECUTED
}
46450: 4e5e unlk %fp <== NOT EXECUTED
46452: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
the_key = _POSIX_Keys_Allocate();
if ( !the_key ) {
_Thread_Enable_dispatch();
46454: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
4645a: 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;
}
4645c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
46462: 4e5e unlk %fp <== NOT EXECUTED
46464: 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 );
46466: 2f0c movel %a4,%sp@- <== NOT EXECUTED
46468: 4eb9 0004 64fc jsr 464fc <_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 );
4646e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
46470: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
46476: 4eb9 0004 8c90 jsr 48c90 <_Objects_Free> <== NOT EXECUTED
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
4647c: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED
return ENOMEM;
46482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46486: 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;
}
46488: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4648e: 4e5e unlk %fp <== NOT EXECUTED
...
00046494 <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
)
{
46494: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46498: 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 );
4649a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4649e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
464a2: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
464a8: 4eb9 0004 8dfc jsr 48dfc <_Objects_Get> <== NOT EXECUTED
POSIX_Keys_Control *the_key;
Objects_Locations location;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
464ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
464b2: 2400 movel %d0,%d2 <== NOT EXECUTED
464b4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
464b8: 6638 bnes 464f2 <pthread_key_delete+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_POSIX_Keys_Information, &the_key->Object );
464ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED
464bc: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
464c2: 4eb9 0004 89cc jsr 489cc <_Objects_Close> <== NOT EXECUTED
_POSIX_Keys_Free_memory( the_key );
464c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
464ca: 4eb9 0004 64fc jsr 464fc <_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 );
464d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
464d2: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
464d8: 4eb9 0004 8c90 jsr 48c90 <_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();
464de: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
464e4: 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;
464e8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
464ec: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
464ee: 4e5e unlk %fp <== NOT EXECUTED
464f0: 4e75 rts <== NOT EXECUTED
464f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
464f6: 7016 moveq #22,%d0 <== NOT EXECUTED
}
464f8: 4e5e unlk %fp <== NOT EXECUTED
0005c518 <pthread_kill>:
int pthread_kill(
pthread_t thread,
int sig
)
{
5c518: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
5c51c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5c520: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
POSIX_API_Control *api;
Thread_Control *the_thread;
Objects_Locations location;
if ( !sig )
5c524: 6700 0098 beqw 5c5be <pthread_kill+0xa6> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5c528: 2602 movel %d2,%d3 <== NOT EXECUTED
5c52a: 5383 subql #1,%d3 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5c52c: 701f moveq #31,%d0 <== NOT EXECUTED
5c52e: b083 cmpl %d3,%d0 <== NOT EXECUTED
5c530: 6500 008c bcsw 5c5be <pthread_kill+0xa6> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
5c534: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5c538: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5c53c: 4879 0005 fe3a pea 5fe3a <_POSIX_Threads_Information> <== NOT EXECUTED
5c542: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
5c548: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5c54c: 2440 moveal %d0,%a2 <== NOT EXECUTED
5c54e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
5c552: 6600 0082 bnew 5c5d6 <pthread_kill+0xbe> <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5c556: 2202 movel %d2,%d1 <== NOT EXECUTED
5c558: 2002 movel %d2,%d0 <== NOT EXECUTED
5c55a: e589 lsll #2,%d1 <== NOT EXECUTED
5c55c: e988 lsll #4,%d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* If sig == 0 then just validate arguments
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5c55e: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5c562: 9081 subl %d1,%d0 <== NOT EXECUTED
5c564: 0680 0006 013c addil #393532,%d0 <== NOT EXECUTED
5c56a: 7201 moveq #1,%d1 <== NOT EXECUTED
5c56c: 2240 moveal %d0,%a1 <== NOT EXECUTED
5c56e: b291 cmpl %a1@,%d1 <== NOT EXECUTED
5c570: 6728 beqs 5c59a <pthread_kill+0x82> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5c572: 7001 moveq #1,%d0 <== NOT EXECUTED
5c574: e7a8 lsll %d3,%d0 <== NOT EXECUTED
return 0;
}
/* XXX critical section */
api->signals_pending |= signo_to_mask( sig );
5c576: 81a8 00d4 orl %d0,%a0@(212) <== NOT EXECUTED
(void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
5c57a: 42a7 clrl %sp@- <== NOT EXECUTED
5c57c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c57e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5c580: 4eb9 0005 c3dc jsr 5c3dc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5c586: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5c58a: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8> <== NOT EXECUTED
5c590: 6708 beqs 5c59a <pthread_kill+0x82> <== NOT EXECUTED
5c592: b5f9 0006 0102 cmpal 60102 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
5c598: 6712 beqs 5c5ac <pthread_kill+0x94> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
_Thread_Enable_dispatch();
5c59a: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c5a0: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
}
5c5a2: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
5c5a8: 4e5e unlk %fp <== NOT EXECUTED
5c5aa: 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;
5c5ac: 7001 moveq #1,%d0 <== NOT EXECUTED
5c5ae: 13c0 0006 010e moveb %d0,6010e <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
5c5b4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5c5ba: 4280 clrl %d0 <== NOT EXECUTED
5c5bc: 60e4 bras 5c5a2 <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 );
5c5be: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c5c4: 7416 moveq #22,%d2 <== NOT EXECUTED
5c5c6: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c5c8: 70ff moveq #-1,%d0 <== NOT EXECUTED
5c5ca: 2082 movel %d2,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
}
5c5cc: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
5c5d2: 4e5e unlk %fp <== NOT EXECUTED
5c5d4: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5c5d6: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c5dc: 7203 moveq #3,%d1 <== NOT EXECUTED
5c5de: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c5e0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
5c5e2: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5c5e8: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
5c5ea: 4e5e unlk %fp <== NOT EXECUTED
...
00048240 <pthread_mutex_destroy>:
*/
int pthread_mutex_destroy(
pthread_mutex_t *mutex
)
{
48240: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48244: 2f0a movel %a2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
48246: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4824a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4824e: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
48254: 508f addql #8,%sp <== NOT EXECUTED
)
{
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
48256: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
48258: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4825c: 670a beqs 48268 <pthread_mutex_destroy+0x28> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4825e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
48262: 7016 moveq #22,%d0 <== NOT EXECUTED
}
48264: 4e5e unlk %fp <== NOT EXECUTED
48266: 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 ) ) {
48268: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED
4826c: 6610 bnes 4827e <pthread_mutex_destroy+0x3e> <== NOT EXECUTED
_Thread_Enable_dispatch();
4826e: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48274: 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;
48278: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4827a: 4e5e unlk %fp <== NOT EXECUTED
4827c: 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 );
4827e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48280: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED
48286: 4eb9 0004 ae04 jsr 4ae04 <_Objects_Close> <== NOT EXECUTED
_CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL );
4828c: 4878 0016 pea 16 <OPER2+0x2> <== NOT EXECUTED
48290: 42a7 clrl %sp@- <== NOT EXECUTED
48292: 486a 0014 pea %a2@(20) <== NOT EXECUTED
48296: 4eb9 0004 a37c jsr 4a37c <_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 );
4829c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4829e: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information> <== NOT EXECUTED
482a4: 4eb9 0004 b0c8 jsr 4b0c8 <_Objects_Free> <== NOT EXECUTED
_POSIX_Mutex_Free( the_mutex );
_Thread_Enable_dispatch();
482aa: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
482b0: 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;
482b4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
482b8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
482ba: 4e5e unlk %fp <== NOT EXECUTED
...
000483b4 <pthread_mutex_getprioceiling>:
int pthread_mutex_getprioceiling(
pthread_mutex_t *mutex,
int *prioceiling
)
{
483b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
483b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
483ba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
if ( !prioceiling )
483be: 4a8a tstl %a2 <== NOT EXECUTED
483c0: 6736 beqs 483f8 <pthread_mutex_getprioceiling+0x44><== NOT EXECUTED
return EINVAL;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
483c2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
483c6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
483ca: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
483d0: 508f addql #8,%sp <== NOT EXECUTED
483d2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
483d6: 6620 bnes 483f8 <pthread_mutex_getprioceiling+0x44><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
483d8: 4281 clrl %d1 <== NOT EXECUTED
483da: 1239 0006 36e6 moveb 636e6 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
483e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
483e2: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED
483e6: 2481 movel %d1,%a2@ <== NOT EXECUTED
case OBJECTS_LOCAL:
*prioceiling = _POSIX_Priority_From_core(
the_mutex->Mutex.Attributes.priority_ceiling
);
_Thread_Enable_dispatch();
483e8: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
483ee: 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;
483f2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
483f4: 4e5e unlk %fp <== NOT EXECUTED
483f6: 4e75 rts <== NOT EXECUTED
483f8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
483fc: 7016 moveq #22,%d0 <== NOT EXECUTED
}
483fe: 4e5e unlk %fp <== NOT EXECUTED
...
00048404 <pthread_mutex_init>:
int pthread_mutex_init(
pthread_mutex_t *mutex,
const pthread_mutexattr_t *attr
)
{
48404: 4e56 fff0 linkw %fp,#-16
48408: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
4840c: 266e 0008 moveal %fp@(8),%a3
48410: 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;
48414: 4a8a tstl %a2
48416: 6700 00f6 beqw 4850e <pthread_mutex_init+0x10a>
else the_attr = &_POSIX_Mutex_Default_attributes;
/* Check for NULL mutex */
if ( !mutex )
4841a: 4a8b tstl %a3
4841c: 6700 00e4 beqw 48502 <pthread_mutex_init+0xfe>
}
}
}
#endif
if ( !the_attr->is_initialized )
48420: 4a92 tstl %a2@
48422: 6700 00de beqw 48502 <pthread_mutex_init+0xfe>
return EINVAL;
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
48426: 202a 0004 movel %a2@(4),%d0
4842a: 7201 moveq #1,%d1
4842c: b280 cmpl %d0,%d1
4842e: 6700 00ee beqw 4851e <pthread_mutex_init+0x11a>
return ENOSYS;
if ( the_attr->process_shared != PTHREAD_PROCESS_PRIVATE )
48432: 4a80 tstl %d0
48434: 6600 00cc bnew 48502 <pthread_mutex_init+0xfe>
return EINVAL;
/*
* Determine the discipline of the mutex
*/
switch ( the_attr->protocol ) {
48438: 202a 000c movel %a2@(12),%d0
4843c: b280 cmpl %d0,%d1
4843e: 6700 00ea beqw 4852a <pthread_mutex_init+0x126>
48442: 123c 0002 moveb #2,%d1
48446: b280 cmpl %d0,%d1
48448: 6700 00ce beqw 48518 <pthread_mutex_init+0x114>
4844c: 4a80 tstl %d0
4844e: 6600 00b2 bnew 48502 <pthread_mutex_init+0xfe>
case PTHREAD_PRIO_NONE:
the_discipline = CORE_MUTEX_DISCIPLINES_FIFO;
48452: 4282 clrl %d2
}
/*
* Validate the priority ceiling field -- should always be valid.
*/
if ( !_POSIX_Priority_Is_valid( the_attr->prio_ceiling ) )
48454: 2f2a 0008 movel %a2@(8),%sp@-
48458: 4eb9 0004 8804 jsr 48804 <_POSIX_Priority_Is_valid>
4845e: 588f addql #4,%sp
48460: 4a00 tstb %d0
48462: 6700 009e beqw 48502 <pthread_mutex_init+0xfe>
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
/*
* Validate the mutex type and set appropriate SuperCore mutex
* attributes.
*/
switch ( the_attr->type ) {
48466: 7003 moveq #3,%d0
48468: b0aa 0010 cmpl %a2@(16),%d0
4846c: 6500 0094 bcsw 48502 <pthread_mutex_init+0xfe>
48470: 2039 0006 4fc8 movel 64fc8 <_Thread_Dispatch_disable_level>,%d0
48476: 5280 addql #1,%d0
48478: 23c0 0006 4fc8 movel %d0,64fc8 <_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 );
4847e: 4879 0006 52ac pea 652ac <_POSIX_Mutex_Information>
48484: 4eb9 0004 ad74 jsr 4ad74 <_Objects_Allocate>
*/
_Thread_Disable_dispatch();
the_mutex = _POSIX_Mutex_Allocate();
if ( !the_mutex ) {
4848a: 588f addql #4,%sp
4848c: 2840 moveal %d0,%a4
4848e: 4a80 tstl %d0
48490: 6700 009e beqw 48530 <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;
48494: 4aaa 0014 tstl %a2@(20)
48498: 57c0 seq %d0
if ( !the_mutex ) {
_Thread_Enable_dispatch();
return EAGAIN;
}
the_mutex->process_shared = the_attr->process_shared;
4849a: 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;
484a0: 49c0 extbl %d0
484a2: 4480 negl %d0
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
484a4: 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;
484a6: 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);
484aa: 4280 clrl %d0
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
484ac: 1941 0058 moveb %d1,%a4@(88)
484b0: 1039 0006 36e6 moveb 636e6 <rtems_maximum_priority>,%d0
484b6: 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;
484ba: 2942 005a movel %d2,%a4@(90)
484be: 2940 005e movel %d0,%a4@(94)
/*
* Must be initialized to unlocked.
*/
_CORE_mutex_Initialize(
484c2: 4878 0001 pea 1 <ADD>
484c6: 486c 0054 pea %a4@(84)
484ca: 486c 0014 pea %a4@(20)
484ce: 4eb9 0004 a388 jsr 4a388 <_CORE_mutex_Initialize>
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
484d4: 202c 0008 movel %a4@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
484d8: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
484da: 2079 0006 52c4 moveal 652c4 <_POSIX_Mutex_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
484e0: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
484e2: 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;
484e6: 42ac 000c clrl %a4@(12)
CORE_MUTEX_UNLOCKED
);
_Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 );
*mutex = the_mutex->Object.id;
484ea: 2680 movel %d0,%a3@
_Thread_Enable_dispatch();
484ec: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch>
return 0;
484f2: 4fef 000c lea %sp@(12),%sp
484f6: 4280 clrl %d0
}
484f8: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
484fe: 4e5e unlk %fp
48500: 4e75 rts
case PTHREAD_MUTEX_ERRORCHECK:
case PTHREAD_MUTEX_DEFAULT:
break;
default:
return EINVAL;
48502: 7016 moveq #22,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
48504: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
4850a: 4e5e unlk %fp <== NOT EXECUTED
4850c: 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;
4850e: 45f9 0006 5320 lea 65320 <_POSIX_Mutex_Default_attributes>,%a2
48514: 6000 ff04 braw 4841a <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;
48518: 7403 moveq #3,%d2 <== NOT EXECUTED
break;
4851a: 6000 ff38 braw 48454 <pthread_mutex_init+0x50> <== NOT EXECUTED
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
return ENOSYS;
4851e: 7058 moveq #88,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
48520: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
48526: 4e5e unlk %fp <== NOT EXECUTED
48528: 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;
4852a: 7402 moveq #2,%d2 <== NOT EXECUTED
4852c: 6000 ff26 braw 48454 <pthread_mutex_init+0x50> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_mutex = _POSIX_Mutex_Allocate();
if ( !the_mutex ) {
_Thread_Enable_dispatch();
48530: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
48536: 700b moveq #11,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
48538: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
4853e: 4e5e unlk %fp <== NOT EXECUTED
...
00048544 <pthread_mutex_lock>:
*/
int pthread_mutex_lock(
pthread_mutex_t *mutex
)
{
48544: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Mutex_Lock_support( mutex, true, THREAD_QUEUE_WAIT_FOREVER );
48548: 42a7 clrl %sp@- <== NOT EXECUTED
4854a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4854e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48552: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
}
48558: 4e5e unlk %fp <== NOT EXECUTED
000485c8 <pthread_mutex_setprioceiling>:
int pthread_mutex_setprioceiling(
pthread_mutex_t *mutex,
int prioceiling,
int *old_ceiling
)
{
485c8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
485cc: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
485d0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
485d4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
485d8: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
Priority_Control the_priority;
if ( !old_ceiling )
485dc: 4a8a tstl %a2 <== NOT EXECUTED
485de: 670e beqs 485ee <pthread_mutex_setprioceiling+0x26><== NOT EXECUTED
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
485e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
485e2: 4eb9 0004 8804 jsr 48804 <_POSIX_Priority_Is_valid> <== NOT EXECUTED
485e8: 588f addql #4,%sp <== NOT EXECUTED
485ea: 4a00 tstb %d0 <== NOT EXECUTED
485ec: 660c bnes 485fa <pthread_mutex_setprioceiling+0x32><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
485ee: 7016 moveq #22,%d0 <== NOT EXECUTED
}
485f0: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
485f6: 4e5e unlk %fp <== NOT EXECUTED
485f8: 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 );
485fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
485fc: 1839 0006 36e6 moveb 636e6 <rtems_maximum_priority>,%d4 <== NOT EXECUTED
48602: 4eb9 0004 8544 jsr 48544 <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 );
48608: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4860c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4860e: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
48614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48618: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4861c: 66d0 bnes 485ee <pthread_mutex_setprioceiling+0x26><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4861e: 4281 clrl %d1 <== NOT EXECUTED
48620: 1239 0006 36e6 moveb 636e6 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
48626: 2040 moveal %d0,%a0 <== NOT EXECUTED
48628: 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);
4862c: 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);
48632: 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);
48634: 9882 subl %d2,%d4 <== NOT EXECUTED
48636: 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(
4863a: 42a7 clrl %sp@- <== NOT EXECUTED
4863c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
48640: 4868 0014 pea %a0@(20) <== NOT EXECUTED
48644: 4eb9 0004 a5b4 jsr 4a5b4 <_CORE_mutex_Surrender> <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
4864a: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
48650: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48654: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48656: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
4865c: 4e5e unlk %fp <== NOT EXECUTED
00048660 <pthread_mutex_timedlock>:
int pthread_mutex_timedlock(
pthread_mutex_t *mutex,
const struct timespec *abstime
)
{
48660: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48664: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48666: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4866a: 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 );
4866c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48670: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
48674: 4eb9 0004 8774 jsr 48774 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
4867a: 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 );
4867c: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
4867e: 7003 moveq #3,%d0 <== NOT EXECUTED
48680: b082 cmpl %d2,%d0 <== NOT EXECUTED
48682: 673e beqs 486c2 <pthread_mutex_timedlock+0x62> <== NOT EXECUTED
do_wait = false;
lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );
48684: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
48688: 42a7 clrl %sp@- <== NOT EXECUTED
4868a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4868c: 4eb9 0004 855c jsr 4855c <_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) ) {
48692: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48696: 7210 moveq #16,%d1 <== NOT EXECUTED
48698: b280 cmpl %d0,%d1 <== NOT EXECUTED
4869a: 670c beqs 486a8 <pthread_mutex_timedlock+0x48> <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
4869c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
486a0: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
486a4: 4e5e unlk %fp <== NOT EXECUTED
486a6: 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 )
486a8: 4a82 tstl %d2 <== NOT EXECUTED
486aa: 6736 beqs 486e2 <pthread_mutex_timedlock+0x82> <== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
486ac: 5382 subql #1,%d2 <== NOT EXECUTED
486ae: 7201 moveq #1,%d1 <== NOT EXECUTED
486b0: b282 cmpl %d2,%d1 <== NOT EXECUTED
486b2: 65e8 bcss 4869c <pthread_mutex_timedlock+0x3c> <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486b4: 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;
486b8: 7074 moveq #116,%d0 <== NOT EXECUTED
}
return lock_status;
}
486ba: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
486be: 4e5e unlk %fp <== NOT EXECUTED
486c0: 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 );
486c2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
486c6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
486ca: 2f03 movel %d3,%sp@- <== NOT EXECUTED
486cc: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486d2: 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 );
486d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486da: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
486de: 4e5e unlk %fp <== NOT EXECUTED
486e0: 4e75 rts <== NOT EXECUTED
486e2: 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;
486e6: 7016 moveq #22,%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return lock_status;
}
486e8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
486ec: 4e5e unlk %fp <== NOT EXECUTED
00048708 <pthread_mutex_trylock>:
*/
int pthread_mutex_trylock(
pthread_mutex_t *mutex
)
{
48708: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER );
4870c: 42a7 clrl %sp@- <== NOT EXECUTED
4870e: 42a7 clrl %sp@- <== NOT EXECUTED
48710: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48714: 4eb9 0004 855c jsr 4855c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
}
4871a: 4e5e unlk %fp <== NOT EXECUTED
...
00048720 <pthread_mutex_unlock>:
*/
int pthread_mutex_unlock(
pthread_mutex_t *mutex
)
{
48720: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48724: 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 );
48726: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4872a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4872e: 4eb9 0004 82c0 jsr 482c0 <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
48734: 508f addql #8,%sp <== NOT EXECUTED
48736: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4873a: 662e bnes 4876a <pthread_mutex_unlock+0x4a> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_mutex_Surrender(
4873c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4873e: 42a7 clrl %sp@- <== NOT EXECUTED
48740: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
48744: 4868 0014 pea %a0@(20) <== NOT EXECUTED
48748: 4eb9 0004 a5b4 jsr 4a5b4 <_CORE_mutex_Surrender> <== NOT EXECUTED
4874e: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
48750: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Mutex_Translate_core_mutex_return_code( status );
48756: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48758: 4eb9 0004 86f0 jsr 486f0 <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4875e: 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 );
48762: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
48766: 4e5e unlk %fp <== NOT EXECUTED
48768: 4e75 rts <== NOT EXECUTED
4876a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4876e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
48770: 4e5e unlk %fp <== NOT EXECUTED
000480cc <pthread_mutexattr_destroy>:
*/
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
)
{
480cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
480d0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
480d4: 4a88 tstl %a0 <== NOT EXECUTED
480d6: 670c beqs 480e4 <pthread_mutexattr_destroy+0x18> <== NOT EXECUTED
480d8: 4a90 tstl %a0@ <== NOT EXECUTED
480da: 6708 beqs 480e4 <pthread_mutexattr_destroy+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
480dc: 4280 clrl %d0 <== NOT EXECUTED
}
480de: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->is_initialized = false;
480e0: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
480e2: 4e75 rts <== NOT EXECUTED
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
480e4: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
480e6: 4e5e unlk %fp <== NOT EXECUTED
...
000480ec <pthread_mutexattr_getprioceiling>:
int pthread_mutexattr_getprioceiling(
const pthread_mutexattr_t *attr,
int *prioceiling
)
{
480ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
480f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
480f4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !prioceiling )
480f8: 4a88 tstl %a0 <== NOT EXECUTED
480fa: 6712 beqs 4810e <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED
480fc: 4a90 tstl %a0@ <== NOT EXECUTED
480fe: 670e beqs 4810e <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED
48100: 4a89 tstl %a1 <== NOT EXECUTED
48102: 670a beqs 4810e <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED
return EINVAL;
*prioceiling = attr->prio_ceiling;
48104: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
48108: 4280 clrl %d0 <== NOT EXECUTED
}
4810a: 4e5e unlk %fp <== NOT EXECUTED
4810c: 4e75 rts <== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *prioceiling
)
{
if ( !attr || !attr->is_initialized || !prioceiling )
return EINVAL;
4810e: 7016 moveq #22,%d0 <== NOT EXECUTED
*prioceiling = attr->prio_ceiling;
return 0;
}
48110: 4e5e unlk %fp <== NOT EXECUTED
00048114 <pthread_mutexattr_getprotocol>:
int pthread_mutexattr_getprotocol(
const pthread_mutexattr_t *attr,
int *protocol
)
{
48114: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48118: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4811c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !protocol )
48120: 4a88 tstl %a0 <== NOT EXECUTED
48122: 6712 beqs 48136 <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED
48124: 4a90 tstl %a0@ <== NOT EXECUTED
48126: 670e beqs 48136 <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED
48128: 4a89 tstl %a1 <== NOT EXECUTED
4812a: 670a beqs 48136 <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED
return EINVAL;
*protocol = attr->protocol;
4812c: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
return 0;
48130: 4280 clrl %d0 <== NOT EXECUTED
}
48132: 4e5e unlk %fp <== NOT EXECUTED
48134: 4e75 rts <== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *protocol
)
{
if ( !attr || !attr->is_initialized || !protocol )
return EINVAL;
48136: 7016 moveq #22,%d0 <== NOT EXECUTED
*protocol = attr->protocol;
return 0;
}
48138: 4e5e unlk %fp <== NOT EXECUTED
0004813c <pthread_mutexattr_getpshared>:
int pthread_mutexattr_getpshared(
const pthread_mutexattr_t *attr,
int *pshared
)
{
4813c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48140: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
48144: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !pshared )
48148: 4a88 tstl %a0 <== NOT EXECUTED
4814a: 6712 beqs 4815e <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED
4814c: 4a90 tstl %a0@ <== NOT EXECUTED
4814e: 670e beqs 4815e <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED
48150: 4a89 tstl %a1 <== NOT EXECUTED
48152: 670a beqs 4815e <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
48154: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
48158: 4280 clrl %d0 <== NOT EXECUTED
}
4815a: 4e5e unlk %fp <== NOT EXECUTED
4815c: 4e75 rts <== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *pshared
)
{
if ( !attr || !attr->is_initialized || !pshared )
return EINVAL;
4815e: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
48160: 4e5e unlk %fp <== NOT EXECUTED
00046098 <pthread_mutexattr_gettype>:
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
int pthread_mutexattr_gettype(
const pthread_mutexattr_t *attr,
int *type
)
{
46098: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4609c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
460a0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr )
460a4: 4a88 tstl %a0 <== NOT EXECUTED
460a6: 6712 beqs 460ba <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
460a8: 4a90 tstl %a0@ <== NOT EXECUTED
460aa: 670e beqs 460ba <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
return EINVAL;
if ( !type )
460ac: 4a89 tstl %a1 <== NOT EXECUTED
460ae: 670a beqs 460ba <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
return EINVAL;
*type = attr->type;
460b0: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED
return 0;
460b4: 4280 clrl %d0 <== NOT EXECUTED
}
460b6: 4e5e unlk %fp <== NOT EXECUTED
460b8: 4e75 rts <== NOT EXECUTED
if ( !attr->is_initialized )
return EINVAL;
if ( !type )
return EINVAL;
460ba: 7016 moveq #22,%d0 <== NOT EXECUTED
*type = attr->type;
return 0;
}
460bc: 4e5e unlk %fp <== NOT EXECUTED
00048164 <pthread_mutexattr_init>:
*/
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
)
{
48164: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48168: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4816c: 4a88 tstl %a0 <== NOT EXECUTED
4816e: 672a beqs 4819a <pthread_mutexattr_init+0x36> <== NOT EXECUTED
return EINVAL;
*attr = _POSIX_Mutex_Default_attributes;
48170: 20f9 0006 5320 movel 65320 <_POSIX_Mutex_Default_attributes>,%a0@+<== NOT EXECUTED
return 0;
48176: 4280 clrl %d0 <== NOT EXECUTED
}
48178: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*attr = _POSIX_Mutex_Default_attributes;
4817a: 20f9 0006 5324 movel 65324 <_POSIX_Mutex_Default_attributes+0x4>,%a0@+<== NOT EXECUTED
48180: 20f9 0006 5328 movel 65328 <_POSIX_Mutex_Default_attributes+0x8>,%a0@+<== NOT EXECUTED
48186: 20f9 0006 532c movel 6532c <_POSIX_Mutex_Default_attributes+0xc>,%a0@+<== NOT EXECUTED
4818c: 20f9 0006 5330 movel 65330 <_POSIX_Mutex_Default_attributes+0x10>,%a0@+<== NOT EXECUTED
48192: 20b9 0006 5334 movel 65334 <_POSIX_Mutex_Default_attributes+0x14>,%a0@<== NOT EXECUTED
return 0;
}
48198: 4e75 rts <== NOT EXECUTED
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
)
{
if ( !attr )
return EINVAL;
4819a: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Mutex_Default_attributes;
return 0;
}
4819c: 4e5e unlk %fp <== NOT EXECUTED
000481a0 <pthread_mutexattr_setprioceiling>:
int pthread_mutexattr_setprioceiling(
pthread_mutexattr_t *attr,
int prioceiling
)
{
481a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
481a6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
481aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
481ac: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
481b0: 4a8a tstl %a2 <== NOT EXECUTED
481b2: 6704 beqs 481b8 <pthread_mutexattr_setprioceiling+0x18><== NOT EXECUTED
481b4: 4a92 tstl %a2@ <== NOT EXECUTED
481b6: 660e bnes 481c6 <pthread_mutexattr_setprioceiling+0x26><== NOT EXECUTED
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
attr->prio_ceiling = prioceiling;
return 0;
}
481b8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
481bc: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->prio_ceiling = prioceiling;
return 0;
}
481be: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
481c2: 4e5e unlk %fp <== NOT EXECUTED
481c4: 4e75 rts <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
481c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
481c8: 4eb9 0004 8804 jsr 48804 <_POSIX_Priority_Is_valid> <== NOT EXECUTED
481ce: 588f addql #4,%sp <== NOT EXECUTED
481d0: 4a00 tstb %d0 <== NOT EXECUTED
481d2: 67e4 beqs 481b8 <pthread_mutexattr_setprioceiling+0x18><== NOT EXECUTED
return EINVAL;
attr->prio_ceiling = prioceiling;
481d4: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return 0;
}
481d8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
481dc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
attr->prio_ceiling = prioceiling;
return 0;
481e0: 4280 clrl %d0 <== NOT EXECUTED
}
481e2: 4e5e unlk %fp <== NOT EXECUTED
...
000481e8 <pthread_mutexattr_setprotocol>:
int pthread_mutexattr_setprotocol(
pthread_mutexattr_t *attr,
int protocol
)
{
481e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481ec: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
481f0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
481f4: 4a88 tstl %a0 <== NOT EXECUTED
481f6: 670a beqs 48202 <pthread_mutexattr_setprotocol+0x1a><== NOT EXECUTED
481f8: 4a90 tstl %a0@ <== NOT EXECUTED
481fa: 6706 beqs 48202 <pthread_mutexattr_setprotocol+0x1a><== NOT EXECUTED
return EINVAL;
switch ( protocol ) {
481fc: 7202 moveq #2,%d1 <== NOT EXECUTED
481fe: b280 cmpl %d0,%d1 <== NOT EXECUTED
48200: 6406 bccs 48208 <pthread_mutexattr_setprotocol+0x20><== NOT EXECUTED
case PTHREAD_PRIO_PROTECT:
attr->protocol = protocol;
return 0;
default:
return EINVAL;
48202: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
48204: 4e5e unlk %fp <== NOT EXECUTED
48206: 4e75 rts <== NOT EXECUTED
switch ( protocol ) {
case PTHREAD_PRIO_NONE:
case PTHREAD_PRIO_INHERIT:
case PTHREAD_PRIO_PROTECT:
attr->protocol = protocol;
48208: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
return 0;
4820c: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4820e: 4e5e unlk %fp <== NOT EXECUTED
...
00048214 <pthread_mutexattr_setpshared>:
int pthread_mutexattr_setpshared(
pthread_mutexattr_t *attr,
int pshared
)
{
48214: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48218: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4821c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
48220: 4a88 tstl %a0 <== NOT EXECUTED
48222: 670a beqs 4822e <pthread_mutexattr_setpshared+0x1a><== NOT EXECUTED
48224: 4a90 tstl %a0@ <== NOT EXECUTED
48226: 6706 beqs 4822e <pthread_mutexattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
48228: 7201 moveq #1,%d1 <== NOT EXECUTED
4822a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4822c: 6406 bccs 48234 <pthread_mutexattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
4822e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
48230: 4e5e unlk %fp <== NOT EXECUTED
48232: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
48234: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
48238: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
4823a: 4e5e unlk %fp <== NOT EXECUTED
...
000460fc <pthread_mutexattr_settype>:
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
int pthread_mutexattr_settype(
pthread_mutexattr_t *attr,
int type
)
{
460fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46100: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46104: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
46108: 4a88 tstl %a0 <== NOT EXECUTED
4610a: 670a beqs 46116 <pthread_mutexattr_settype+0x1a> <== NOT EXECUTED
4610c: 4a90 tstl %a0@ <== NOT EXECUTED
4610e: 6706 beqs 46116 <pthread_mutexattr_settype+0x1a> <== NOT EXECUTED
return EINVAL;
switch ( type ) {
46110: 7203 moveq #3,%d1 <== NOT EXECUTED
46112: b280 cmpl %d0,%d1 <== NOT EXECUTED
46114: 6406 bccs 4611c <pthread_mutexattr_settype+0x20> <== NOT EXECUTED
case PTHREAD_MUTEX_DEFAULT:
attr->type = type;
return 0;
default:
return EINVAL;
46116: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
46118: 4e5e unlk %fp <== NOT EXECUTED
4611a: 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;
4611c: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
return 0;
46120: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
46122: 4e5e unlk %fp <== NOT EXECUTED
...
00046ee8 <pthread_once>:
int pthread_once(
pthread_once_t *once_control,
void (*init_routine)(void)
)
{
46ee8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
46eec: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
46ef0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
46ef4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
if ( !once_control || !init_routine )
46ef8: 4a8a tstl %a2 <== NOT EXECUTED
46efa: 6772 beqs 46f6e <pthread_once+0x86> <== NOT EXECUTED
46efc: 4a8b tstl %a3 <== NOT EXECUTED
46efe: 676e beqs 46f6e <pthread_once+0x86> <== NOT EXECUTED
return EINVAL;
if ( !once_control->init_executed ) {
46f00: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
46f04: 670c beqs 46f12 <pthread_once+0x2a> <== NOT EXECUTED
once_control->init_executed = true;
(*init_routine)();
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
}
return 0;
46f06: 4280 clrl %d0 <== NOT EXECUTED
}
46f08: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED
46f0e: 4e5e unlk %fp <== NOT EXECUTED
46f10: 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);
46f12: 240e movel %fp,%d2 <== NOT EXECUTED
46f14: 5982 subql #4,%d2 <== NOT EXECUTED
46f16: 49f9 0004 7bb0 lea 47bb0 <rtems_task_mode>,%a4 <== NOT EXECUTED
46f1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46f1e: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
46f22: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
46f26: 4e94 jsr %a4@ <== NOT EXECUTED
if ( !once_control->init_executed ) {
46f28: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46f2c: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
46f30: 671c beqs 46f4e <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);
46f32: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46f34: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
46f38: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
46f3c: 4e94 jsr %a4@ <== NOT EXECUTED
46f3e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
return 0;
46f42: 4280 clrl %d0 <== NOT EXECUTED
}
46f44: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED
46f4a: 4e5e unlk %fp <== NOT EXECUTED
46f4c: 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;
46f4e: 7001 moveq #1,%d0 <== NOT EXECUTED
46f50: 2480 movel %d0,%a2@ <== NOT EXECUTED
once_control->init_executed = true;
46f52: 7001 moveq #1,%d0 <== NOT EXECUTED
46f54: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
(*init_routine)();
46f58: 4e93 jsr %a3@ <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
46f5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46f5c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
46f60: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
46f64: 4e94 jsr %a4@ <== NOT EXECUTED
46f66: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
return 0;
46f6a: 4280 clrl %d0 <== NOT EXECUTED
46f6c: 60d6 bras 46f44 <pthread_once+0x5c> <== NOT EXECUTED
pthread_once_t *once_control,
void (*init_routine)(void)
)
{
if ( !once_control || !init_routine )
return EINVAL;
46f6e: 7016 moveq #22,%d0 <== NOT EXECUTED
(*init_routine)();
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
}
return 0;
}
46f70: 4cee 1c04 ffec moveml %fp@(-20),%d2/%a2-%a4 <== NOT EXECUTED
46f76: 4e5e unlk %fp <== NOT EXECUTED
...
00047494 <pthread_rwlock_destroy>:
*/
int pthread_rwlock_destroy(
pthread_rwlock_t *rwlock
)
{
47494: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47498: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4749c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock = NULL;
Objects_Locations location;
if ( !rwlock )
4749e: 4a88 tstl %a0 <== NOT EXECUTED
474a0: 673e beqs 474e0 <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(
474a2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
474a6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
474a8: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
474ae: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
474b4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
474b8: 2440 moveal %d0,%a2 <== NOT EXECUTED
474ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
474be: 6620 bnes 474e0 <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 ) {
474c0: 486a 0010 pea %a2@(16) <== NOT EXECUTED
474c4: 4eb9 0004 b744 jsr 4b744 <_Thread_queue_First> <== NOT EXECUTED
474ca: 588f addql #4,%sp <== NOT EXECUTED
474cc: 4a80 tstl %d0 <== NOT EXECUTED
474ce: 671a beqs 474ea <pthread_rwlock_destroy+0x56> <== NOT EXECUTED
_Thread_Enable_dispatch();
474d0: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
474d6: 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;
474da: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
474dc: 4e5e unlk %fp <== NOT EXECUTED
474de: 4e75 rts <== NOT EXECUTED
474e0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
474e4: 7016 moveq #22,%d0 <== NOT EXECUTED
}
474e6: 4e5e unlk %fp <== NOT EXECUTED
474e8: 4e75 rts <== NOT EXECUTED
/*
* POSIX doesn't require behavior when it is locked.
*/
_Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object );
474ea: 2f0a movel %a2,%sp@- <== NOT EXECUTED
474ec: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
474f2: 4eb9 0004 9f64 jsr 49f64 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free (
POSIX_RWLock_Control *the_RWLock
)
{
_Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object );
474f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
474fa: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
47500: 4eb9 0004 a228 jsr 4a228 <_Objects_Free> <== NOT EXECUTED
_POSIX_RWLock_Free( the_rwlock );
_Thread_Enable_dispatch();
47506: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4750c: 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;
47510: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47514: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47516: 4e5e unlk %fp <== NOT EXECUTED
...
0004751c <pthread_rwlock_init>:
int pthread_rwlock_init(
pthread_rwlock_t *rwlock,
const pthread_rwlockattr_t *attr
)
{
4751c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
47520: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
47524: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
47528: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const pthread_rwlockattr_t *the_attr;
/*
* Error check parameters
*/
if ( !rwlock )
4752c: 4a8a tstl %a2 <== NOT EXECUTED
4752e: 6772 beqs 475a2 <pthread_rwlock_init+0x86> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
47530: 4a82 tstl %d2 <== NOT EXECUTED
47532: 6700 008c beqw 475c0 <pthread_rwlock_init+0xa4> <== NOT EXECUTED
47536: 2042 moveal %d2,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
47538: 4a90 tstl %a0@ <== NOT EXECUTED
4753a: 6766 beqs 475a2 <pthread_rwlock_init+0x86> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
4753c: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
47540: 6660 bnes 475a2 <pthread_rwlock_init+0x86> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
47542: 2039 0006 2ddc movel 62ddc <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47548: 5280 addql #1,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(
CORE_RWLock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
4754a: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
4754e: 23c0 0006 2ddc movel %d0,62ddc <_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 );
47554: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
4755a: 4eb9 0004 9ed4 jsr 49ed4 <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
47560: 588f addql #4,%sp <== NOT EXECUTED
47562: 2640 moveal %d0,%a3 <== NOT EXECUTED
47564: 4a80 tstl %d0 <== NOT EXECUTED
47566: 6746 beqs 475ae <pthread_rwlock_init+0x92> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EAGAIN;
}
_CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );
47568: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4756c: 486b 0010 pea %a3@(16) <== NOT EXECUTED
47570: 4eb9 0004 95ec jsr 495ec <_CORE_RWLock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
47576: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4757a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4757c: 2079 0006 2f7c moveal 62f7c <_POSIX_RWLock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
47582: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47584: 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;
47588: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
&_POSIX_RWLock_Information,
&the_rwlock->Object,
0
);
*rwlock = the_rwlock->Object.id;
4758c: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4758e: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
47594: 508f addql #8,%sp <== NOT EXECUTED
47596: 4280 clrl %d0 <== NOT EXECUTED
}
47598: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED
4759e: 4e5e unlk %fp <== NOT EXECUTED
475a0: 4e75 rts <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
475a2: 7016 moveq #22,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
475a4: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED
475aa: 4e5e unlk %fp <== NOT EXECUTED
475ac: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
_Thread_Enable_dispatch();
475ae: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
475b4: 700b moveq #11,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
475b6: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED
475bc: 4e5e unlk %fp <== NOT EXECUTED
475be: 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 );
475c0: 240e movel %fp,%d2 <== NOT EXECUTED
475c2: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED
475c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
475ca: 4eb9 0004 8068 jsr 48068 <pthread_rwlockattr_init> <== NOT EXECUTED
475d0: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &default_attr;
475d2: 2042 moveal %d2,%a0 <== NOT EXECUTED
475d4: 6000 ff62 braw 47538 <pthread_rwlock_init+0x1c> <== NOT EXECUTED
000475d8 <pthread_rwlock_rdlock>:
*/
int pthread_rwlock_rdlock(
pthread_rwlock_t *rwlock
)
{
475d8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
475dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
475de: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
475e2: 4a8a tstl %a2 <== NOT EXECUTED
475e4: 6754 beqs 4763a <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(
475e6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
475ea: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
475ec: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
475f2: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
475f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
475fc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47600: 6638 bnes 4763a <pthread_rwlock_rdlock+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
47602: 42a7 clrl %sp@- <== NOT EXECUTED
47604: 2040 moveal %d0,%a0 <== NOT EXECUTED
47606: 42a7 clrl %sp@- <== NOT EXECUTED
47608: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4760c: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4760e: 4868 0010 pea %a0@(16) <== NOT EXECUTED
47612: 4eb9 0004 9620 jsr 49620 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
true, /* we are willing to wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
47618: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
4761e: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47624: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
47628: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4762e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47632: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47636: 4e5e unlk %fp <== NOT EXECUTED
47638: 4e75 rts <== NOT EXECUTED
4763a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4763e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47640: 4e5e unlk %fp <== NOT EXECUTED
00047644 <pthread_rwlock_timedrdlock>:
int pthread_rwlock_timedrdlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
47644: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47648: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4764c: 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 )
47650: 4a8a tstl %a2 <== NOT EXECUTED
47652: 6700 0082 beqw 476d6 <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 );
47656: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4765a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4765e: 4eb9 0004 e04c jsr 4e04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
47664: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47668: 2400 movel %d0,%d2 <== NOT EXECUTED
4766a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4766c: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
47672: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47678: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4767c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47680: 6654 bnes 476d6 <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,
47682: 7203 moveq #3,%d1 <== NOT EXECUTED
47684: b282 cmpl %d2,%d1 <== NOT EXECUTED
47686: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
47688: 42a7 clrl %sp@- <== NOT EXECUTED
4768a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
4768e: 4483 negl %d3 <== NOT EXECUTED
47690: 4281 clrl %d1 <== NOT EXECUTED
47692: 1203 moveb %d3,%d1 <== NOT EXECUTED
47694: 2040 moveal %d0,%a0 <== NOT EXECUTED
47696: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47698: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4769a: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4769e: 4eb9 0004 9620 jsr 49620 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
476a4: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait ) {
476aa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
476ae: 4a03 tstb %d3 <== NOT EXECUTED
476b0: 664a bnes 476fc <pthread_rwlock_timedrdlock+0xb8><== NOT EXECUTED
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
476b2: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
476b8: 7202 moveq #2,%d1 <== NOT EXECUTED
476ba: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
476be: b280 cmpl %d0,%d1 <== NOT EXECUTED
476c0: 6720 beqs 476e2 <pthread_rwlock_timedrdlock+0x9e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
476c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
476c4: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
476ca: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476cc: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
476d2: 4e5e unlk %fp <== NOT EXECUTED
476d4: 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;
476d6: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476d8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
476de: 4e5e unlk %fp <== NOT EXECUTED
476e0: 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 )
476e2: 4a82 tstl %d2 <== NOT EXECUTED
476e4: 67f0 beqs 476d6 <pthread_rwlock_timedrdlock+0x92><== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
476e6: 5382 subql #1,%d2 <== NOT EXECUTED
476e8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
476ec: b282 cmpl %d2,%d1 <== NOT EXECUTED
476ee: 65d2 bcss 476c2 <pthread_rwlock_timedrdlock+0x7e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
476f0: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
476f2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
476f8: 4e5e unlk %fp <== NOT EXECUTED
476fa: 4e75 rts <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait ) {
476fc: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
47702: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47706: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47708: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
4770e: 588f addql #4,%sp <== NOT EXECUTED
47710: 60ba bras 476cc <pthread_rwlock_timedrdlock+0x88><== NOT EXECUTED
...
00047714 <pthread_rwlock_timedwrlock>:
int pthread_rwlock_timedwrlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
47714: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47718: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4771c: 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 )
47720: 4a8a tstl %a2 <== NOT EXECUTED
47722: 6700 0082 beqw 477a6 <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 );
47726: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4772a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4772e: 4eb9 0004 e04c jsr 4e04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
47734: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47738: 2400 movel %d0,%d2 <== NOT EXECUTED
4773a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4773c: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
47742: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47748: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4774c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47750: 6654 bnes 477a6 <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,
47752: 7203 moveq #3,%d1 <== NOT EXECUTED
47754: b282 cmpl %d2,%d1 <== NOT EXECUTED
47756: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
47758: 42a7 clrl %sp@- <== NOT EXECUTED
4775a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
4775e: 4483 negl %d3 <== NOT EXECUTED
47760: 4281 clrl %d1 <== NOT EXECUTED
47762: 1203 moveb %d3,%d1 <== NOT EXECUTED
47764: 2040 moveal %d0,%a0 <== NOT EXECUTED
47766: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47768: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4776a: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4776e: 4eb9 0004 96e0 jsr 496e0 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
47774: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait &&
4777a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4777e: 4a03 tstb %d3 <== NOT EXECUTED
47780: 664a bnes 477cc <pthread_rwlock_timedwrlock+0xb8><== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
47782: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
47788: 7202 moveq #2,%d1 <== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
4778a: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
4778e: b280 cmpl %d0,%d1 <== NOT EXECUTED
47790: 6720 beqs 477b2 <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(
47792: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47794: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
4779a: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4779c: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
477a2: 4e5e unlk %fp <== NOT EXECUTED
477a4: 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;
477a6: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
477a8: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
477ae: 4e5e unlk %fp <== NOT EXECUTED
477b0: 4e75 rts <== NOT EXECUTED
);
_Thread_Enable_dispatch();
if ( !do_wait &&
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
477b2: 4a82 tstl %d2 <== NOT EXECUTED
477b4: 67f0 beqs 477a6 <pthread_rwlock_timedwrlock+0x92><== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
477b6: 5382 subql #1,%d2 <== NOT EXECUTED
477b8: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
477bc: b282 cmpl %d2,%d1 <== NOT EXECUTED
477be: 65d2 bcss 47792 <pthread_rwlock_timedwrlock+0x7e><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
477c0: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
477c2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
477c8: 4e5e unlk %fp <== NOT EXECUTED
477ca: 4e75 rts <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
477cc: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
477d2: 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(
477d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
477d8: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
477de: 588f addql #4,%sp <== NOT EXECUTED
477e0: 60ba bras 4779c <pthread_rwlock_timedwrlock+0x88><== NOT EXECUTED
...
000477fc <pthread_rwlock_tryrdlock>:
*/
int pthread_rwlock_tryrdlock(
pthread_rwlock_t *rwlock
)
{
477fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47800: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47802: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
47806: 4a8a tstl %a2 <== NOT EXECUTED
47808: 6752 beqs 4785c <pthread_rwlock_tryrdlock+0x60> <== NOT EXECUTED
4780a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4780e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
47810: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
47816: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
4781c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47820: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47824: 6636 bnes 4785c <pthread_rwlock_tryrdlock+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
47826: 42a7 clrl %sp@- <== NOT EXECUTED
47828: 2040 moveal %d0,%a0 <== NOT EXECUTED
4782a: 42a7 clrl %sp@- <== NOT EXECUTED
4782c: 42a7 clrl %sp@- <== NOT EXECUTED
4782e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
47830: 4868 0010 pea %a0@(16) <== NOT EXECUTED
47834: 4eb9 0004 9620 jsr 49620 <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
4783a: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
47840: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47846: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4784a: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47850: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
47854: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47858: 4e5e unlk %fp <== NOT EXECUTED
4785a: 4e75 rts <== NOT EXECUTED
4785c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47860: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47862: 4e5e unlk %fp <== NOT EXECUTED
...
00047868 <pthread_rwlock_trywrlock>:
*/
int pthread_rwlock_trywrlock(
pthread_rwlock_t *rwlock
)
{
47868: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4786c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4786e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
47872: 4a8a tstl %a2 <== NOT EXECUTED
47874: 6752 beqs 478c8 <pthread_rwlock_trywrlock+0x60> <== NOT EXECUTED
47876: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4787a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4787c: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
47882: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47888: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4788c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47890: 6636 bnes 478c8 <pthread_rwlock_trywrlock+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
47892: 42a7 clrl %sp@- <== NOT EXECUTED
47894: 2040 moveal %d0,%a0 <== NOT EXECUTED
47896: 42a7 clrl %sp@- <== NOT EXECUTED
47898: 42a7 clrl %sp@- <== NOT EXECUTED
4789a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4789c: 4868 0010 pea %a0@(16) <== NOT EXECUTED
478a0: 4eb9 0004 96e0 jsr 496e0 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
false, /* we are not willing to wait */
0,
NULL
);
_Thread_Enable_dispatch();
478a6: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
478ac: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
478b2: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
478b6: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
478bc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
478c0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
478c4: 4e5e unlk %fp <== NOT EXECUTED
478c6: 4e75 rts <== NOT EXECUTED
478c8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
478cc: 7016 moveq #22,%d0 <== NOT EXECUTED
}
478ce: 4e5e unlk %fp <== NOT EXECUTED
...
000478d4 <pthread_rwlock_unlock>:
*/
int pthread_rwlock_unlock(
pthread_rwlock_t *rwlock
)
{
478d4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
478d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
478dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
CORE_RWLock_Status status;
if ( !rwlock )
478de: 4a88 tstl %a0 <== NOT EXECUTED
478e0: 6742 beqs 47924 <pthread_rwlock_unlock+0x50> <== NOT EXECUTED
478e2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
478e6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
478e8: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
478ee: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
478f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
478f8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
478fc: 6626 bnes 47924 <pthread_rwlock_unlock+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_RWLock_Release( &the_rwlock->RWLock );
478fe: 2040 moveal %d0,%a0 <== NOT EXECUTED
47900: 4868 0010 pea %a0@(16) <== NOT EXECUTED
47904: 4eb9 0004 9770 jsr 49770 <_CORE_RWLock_Release> <== NOT EXECUTED
4790a: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
4790c: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code( status );
47912: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47914: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4791a: 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 );
4791e: 508f addql #8,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47920: 4e5e unlk %fp <== NOT EXECUTED
47922: 4e75 rts <== NOT EXECUTED
47924: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47928: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4792a: 4e5e unlk %fp <== NOT EXECUTED
...
00047930 <pthread_rwlock_wrlock>:
*/
int pthread_rwlock_wrlock(
pthread_rwlock_t *rwlock
)
{
47930: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47934: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47936: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
4793a: 4a8a tstl %a2 <== NOT EXECUTED
4793c: 6754 beqs 47992 <pthread_rwlock_wrlock+0x62> <== NOT EXECUTED
4793e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47942: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
47944: 4879 0006 2f64 pea 62f64 <_POSIX_RWLock_Information> <== NOT EXECUTED
4794a: 4eb9 0004 a394 jsr 4a394 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
47950: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47954: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47958: 6638 bnes 47992 <pthread_rwlock_wrlock+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
4795a: 42a7 clrl %sp@- <== NOT EXECUTED
4795c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4795e: 42a7 clrl %sp@- <== NOT EXECUTED
47960: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47964: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
47966: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4796a: 4eb9 0004 96e0 jsr 496e0 <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
true, /* do not timeout -- wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
47970: 4eb9 0004 aec6 jsr 4aec6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
47976: 2079 0006 3266 moveal 63266 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4797c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
47980: 4eb9 0004 77e4 jsr 477e4 <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
47986: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4798a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4798e: 4e5e unlk %fp <== NOT EXECUTED
47990: 4e75 rts <== NOT EXECUTED
47992: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47996: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47998: 4e5e unlk %fp <== NOT EXECUTED
00048024 <pthread_rwlockattr_destroy>:
*/
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
48024: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48028: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
4802c: 4a88 tstl %a0 <== NOT EXECUTED
4802e: 670c beqs 4803c <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED
48030: 4a90 tstl %a0@ <== NOT EXECUTED
48032: 6708 beqs 4803c <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
return 0;
48034: 4280 clrl %d0 <== NOT EXECUTED
}
48036: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
attr->is_initialized = false;
48038: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
4803a: 4e75 rts <== NOT EXECUTED
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
4803c: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4803e: 4e5e unlk %fp <== NOT EXECUTED
...
00048044 <pthread_rwlockattr_getpshared>:
int pthread_rwlockattr_getpshared(
const pthread_rwlockattr_t *attr,
int *pshared
)
{
48044: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48048: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
4804c: 4a88 tstl %a0 <== NOT EXECUTED
4804e: 6712 beqs 48062 <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
48050: 4a90 tstl %a0@ <== NOT EXECUTED
48052: 670e beqs 48062 <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
48054: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
48058: 4280 clrl %d0 <== NOT EXECUTED
}
4805a: 4e5e unlk %fp <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
4805c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
}
48060: 4e75 rts <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
48062: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
48064: 4e5e unlk %fp <== NOT EXECUTED
00048068 <pthread_rwlockattr_init>:
*/
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
48068: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4806c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
48070: 4a88 tstl %a0 <== NOT EXECUTED
48072: 670e beqs 48082 <pthread_rwlockattr_init+0x1a> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
48074: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
48076: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
48078: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
4807a: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
4807c: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
return 0;
}
48080: 4e75 rts <== NOT EXECUTED
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
if ( !attr )
return EINVAL;
48082: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
48084: 4e5e unlk %fp <== NOT EXECUTED
00048088 <pthread_rwlockattr_setpshared>:
int pthread_rwlockattr_setpshared(
pthread_rwlockattr_t *attr,
int pshared
)
{
48088: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4808c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
48090: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
48094: 4a88 tstl %a0 <== NOT EXECUTED
48096: 670a beqs 480a2 <pthread_rwlockattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
48098: 4a90 tstl %a0@ <== NOT EXECUTED
4809a: 6706 beqs 480a2 <pthread_rwlockattr_setpshared+0x1a><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
4809c: 7201 moveq #1,%d1 <== NOT EXECUTED
4809e: b280 cmpl %d0,%d1 <== NOT EXECUTED
480a0: 6406 bccs 480a8 <pthread_rwlockattr_setpshared+0x20><== NOT EXECUTED
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
return 0;
default:
return EINVAL;
480a2: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
480a4: 4e5e unlk %fp <== NOT EXECUTED
480a6: 4e75 rts <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
480a8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
480ac: 4280 clrl %d0 <== NOT EXECUTED
default:
return EINVAL;
}
}
480ae: 4e5e unlk %fp <== NOT EXECUTED
...
00045f9c <pthread_setcancelstate>:
int pthread_setcancelstate(
int state,
int *oldstate
)
{
45f9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45fa0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45fa4: 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() )
45fa8: 4ab9 0006 08f2 tstl 608f2 <_Per_CPU_Information+0x8> <== NOT EXECUTED
45fae: 6610 bnes 45fc0 <pthread_setcancelstate+0x24> <== NOT EXECUTED
return EPROTO;
if ( !oldstate )
45fb0: 4a88 tstl %a0 <== NOT EXECUTED
45fb2: 6706 beqs 45fba <pthread_setcancelstate+0x1e> <== NOT EXECUTED
return EINVAL;
if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE )
45fb4: 7201 moveq #1,%d1 <== NOT EXECUTED
45fb6: b280 cmpl %d0,%d1 <== NOT EXECUTED
45fb8: 640c bccs 45fc6 <pthread_setcancelstate+0x2a> <== NOT EXECUTED
return EINVAL;
45fba: 7016 moveq #22,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
45fbc: 4e5e unlk %fp <== NOT EXECUTED
45fbe: 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;
45fc0: 7047 moveq #71,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
45fc2: 4e5e unlk %fp <== NOT EXECUTED
45fc4: 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 ];
45fc6: 2279 0006 08f6 moveal 608f6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45fcc: 2239 0006 046c movel 6046c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
45fd2: 5281 addql #1,%d1 <== NOT EXECUTED
45fd4: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED
45fd8: 23c1 0006 046c movel %d1,6046c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
*oldstate = thread_support->cancelability_state;
45fde: 20a9 00d8 movel %a1@(216),%a0@ <== NOT EXECUTED
thread_support->cancelability_state = state;
45fe2: 2340 00d8 movel %d0,%a1@(216) <== NOT EXECUTED
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing);
45fe6: 2f39 0006 08f6 movel 608f6 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
45fec: 4eb9 0004 b95c jsr 4b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
45ff2: 588f addql #4,%sp <== NOT EXECUTED
45ff4: 4280 clrl %d0 <== NOT EXECUTED
}
45ff6: 4e5e unlk %fp <== NOT EXECUTED
...
00045ffc <pthread_setcanceltype>:
int pthread_setcanceltype(
int type,
int *oldtype
)
{
45ffc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46000: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46004: 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() )
46008: 4ab9 0006 08f2 tstl 608f2 <_Per_CPU_Information+0x8> <== NOT EXECUTED
4600e: 6610 bnes 46020 <pthread_setcanceltype+0x24> <== NOT EXECUTED
return EPROTO;
if ( !oldtype )
46010: 4a88 tstl %a0 <== NOT EXECUTED
46012: 6706 beqs 4601a <pthread_setcanceltype+0x1e> <== NOT EXECUTED
return EINVAL;
if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS )
46014: 7201 moveq #1,%d1 <== NOT EXECUTED
46016: b280 cmpl %d0,%d1 <== NOT EXECUTED
46018: 640c bccs 46026 <pthread_setcanceltype+0x2a> <== NOT EXECUTED
return EINVAL;
4601a: 7016 moveq #22,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
4601c: 4e5e unlk %fp <== NOT EXECUTED
4601e: 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;
46020: 7047 moveq #71,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
46022: 4e5e unlk %fp <== NOT EXECUTED
46024: 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 ];
46026: 2279 0006 08f6 moveal 608f6 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4602c: 2239 0006 046c movel 6046c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
46032: 5281 addql #1,%d1 <== NOT EXECUTED
46034: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED
46038: 23c1 0006 046c movel %d1,6046c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
*oldtype = thread_support->cancelability_type;
4603e: 20a9 00dc movel %a1@(220),%a0@ <== NOT EXECUTED
thread_support->cancelability_type = type;
46042: 2340 00dc movel %d0,%a1@(220) <== NOT EXECUTED
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing);
46046: 2f39 0006 08f6 movel 608f6 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4604c: 4eb9 0004 b95c jsr 4b95c <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
46052: 588f addql #4,%sp <== NOT EXECUTED
46054: 4280 clrl %d0 <== NOT EXECUTED
}
46056: 4e5e unlk %fp <== NOT EXECUTED
...
0004906c <pthread_setschedparam>:
int pthread_setschedparam(
pthread_t thread,
int policy,
struct sched_param *param
)
{
4906c: 4e56 ffe0 linkw %fp,#-32
49070: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
49074: 282e 000c movel %fp@(12),%d4
49078: 242e 0010 movel %fp@(16),%d2
int rc;
/*
* Check all the parameters
*/
if ( !param )
4907c: 6700 00c4 beqw 49142 <pthread_setschedparam+0xd6>
return EINVAL;
rc = _POSIX_Thread_Translate_sched_param(
49080: 486e fff8 pea %fp@(-8)
49084: 486e fffc pea %fp@(-4)
49088: 2f02 movel %d2,%sp@-
4908a: 2f04 movel %d4,%sp@-
4908c: 4eb9 0004 f1fc jsr 4f1fc <_POSIX_Thread_Translate_sched_param>
policy,
param,
&budget_algorithm,
&budget_callout
);
if ( rc )
49092: 4fef 0010 lea %sp@(16),%sp
* Check all the parameters
*/
if ( !param )
return EINVAL;
rc = _POSIX_Thread_Translate_sched_param(
49096: 2600 movel %d0,%d3
policy,
param,
&budget_algorithm,
&budget_callout
);
if ( rc )
49098: 670c beqs 490a6 <pthread_setschedparam+0x3a> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4909a: 2003 movel %d3,%d0 <== NOT EXECUTED
4909c: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED
490a2: 4e5e unlk %fp <== NOT EXECUTED
490a4: 4e75 rts <== NOT EXECUTED
490a6: 486e fff4 pea %fp@(-12)
490aa: 2f2e 0008 movel %fp@(8),%sp@-
490ae: 4879 0006 518a pea 6518a <_POSIX_Threads_Information>
490b4: 4eb9 0004 b234 jsr 4b234 <_Objects_Get>
/*
* Actually change the scheduling policy and parameters
*/
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
490ba: 4fef 000c lea %sp@(12),%sp
490be: 2440 moveal %d0,%a2
490c0: 4aae fff4 tstl %fp@(-12)
490c4: 6600 008a bnew 49150 <pthread_setschedparam+0xe4>
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
490c8: 266a 0102 moveal %a2@(258),%a3
if ( api->schedpolicy == SCHED_SPORADIC )
490cc: 7004 moveq #4,%d0
490ce: b0ab 0084 cmpl %a3@(132),%d0
490d2: 6700 00b8 beqw 4918c <pthread_setschedparam+0x120>
(void) _Watchdog_Remove( &api->Sporadic_timer );
api->schedpolicy = policy;
api->schedparam = *param;
490d6: 41eb 0088 lea %a3@(136),%a0
490da: 2242 moveal %d2,%a1
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
api->schedpolicy = policy;
490dc: 2744 0084 movel %d4,%a3@(132)
api->schedparam = *param;
490e0: 20d9 movel %a1@+,%a0@+
490e2: 20d9 movel %a1@+,%a0@+
490e4: 20d9 movel %a1@+,%a0@+
490e6: 20d9 movel %a1@+,%a0@+
490e8: 20d9 movel %a1@+,%a0@+
490ea: 20d9 movel %a1@+,%a0@+
490ec: 2091 movel %a1@,%a0@
the_thread->budget_algorithm = budget_algorithm;
490ee: 256e fffc 007a movel %fp@(-4),%a2@(122)
the_thread->budget_callout = budget_callout;
490f4: 256e fff8 007e movel %fp@(-8),%a2@(126)
switch ( api->schedpolicy ) {
490fa: 4a84 tstl %d4
490fc: 6d32 blts 49130 <pthread_setschedparam+0xc4> <== NEVER TAKEN
490fe: 7002 moveq #2,%d0
49100: b084 cmpl %d4,%d0
49102: 6d5a blts 4915e <pthread_setschedparam+0xf2> <== NEVER TAKEN
49104: 4280 clrl %d0
49106: 1039 0006 36e6 moveb 636e6 <rtems_maximum_priority>,%d0
case SCHED_OTHER:
case SCHED_FIFO:
case SCHED_RR:
the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
4910c: 41f9 0006 4f80 lea 64f80 <_Thread_Ticks_per_timeslice>,%a0
49112: 90ab 0088 subl %a3@(136),%d0
49116: 2550 0076 movel %a0@,%a2@(118)
the_thread->real_priority =
4911a: 2540 0018 movel %d0,%a2@(24)
_POSIX_Priority_To_core( api->schedparam.sched_priority );
_Thread_Change_priority(
4911e: 4878 0001 pea 1 <ADD>
49122: 2f00 movel %d0,%sp@-
49124: 2f0a movel %a2,%sp@-
49126: 4eb9 0004 b870 jsr 4b870 <_Thread_Change_priority>
the_thread,
the_thread->real_priority,
true
);
break;
4912c: 4fef 000c lea %sp@(12),%sp
_Watchdog_Remove( &api->Sporadic_timer );
_POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );
break;
}
_Thread_Enable_dispatch();
49130: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
49136: 2003 movel %d3,%d0
49138: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3
4913e: 4e5e unlk %fp
49140: 4e75 rts
/*
* Check all the parameters
*/
if ( !param )
return EINVAL;
49142: 7616 moveq #22,%d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
49144: 2003 movel %d3,%d0 <== NOT EXECUTED
49146: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4914c: 4e5e unlk %fp <== NOT EXECUTED
4914e: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
49150: 7603 moveq #3,%d3 <== NOT EXECUTED
}
49152: 2003 movel %d3,%d0 <== NOT EXECUTED
49154: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4915a: 4e5e unlk %fp <== NOT EXECUTED
4915c: 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 ) {
4915e: 103c 0004 moveb #4,%d0 <== NOT EXECUTED
49162: b084 cmpl %d4,%d0 <== NOT EXECUTED
49164: 66ca bnes 49130 <pthread_setschedparam+0xc4> <== NOT EXECUTED
true
);
break;
case SCHED_SPORADIC:
api->ss_high_priority = api->schedparam.sched_priority;
49166: 276b 0088 00a4 movel %a3@(136),%a3@(164) <== NOT EXECUTED
_Watchdog_Remove( &api->Sporadic_timer );
4916c: 486b 00a8 pea %a3@(168) <== NOT EXECUTED
49170: 4eb9 0004 cf90 jsr 4cf90 <_Watchdog_Remove> <== NOT EXECUTED
_POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );
49176: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49178: 42a7 clrl %sp@- <== NOT EXECUTED
4917a: 4eb9 0004 8f1c jsr 48f1c <_POSIX_Threads_Sporadic_budget_TSR><== NOT EXECUTED
break;
49180: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
_Thread_Enable_dispatch();
49184: 4eb9 0004 bd66 jsr 4bd66 <_Thread_Enable_dispatch> <== NOT EXECUTED
4918a: 60aa bras 49136 <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 );
4918c: 486b 00a8 pea %a3@(168) <== NOT EXECUTED
49190: 4eb9 0004 cf90 jsr 4cf90 <_Watchdog_Remove> <== NOT EXECUTED
49196: 588f addql #4,%sp <== NOT EXECUTED
api->schedpolicy = policy;
api->schedparam = *param;
49198: 41eb 0088 lea %a3@(136),%a0 <== NOT EXECUTED
4919c: 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;
4919e: 2744 0084 movel %d4,%a3@(132) <== NOT EXECUTED
api->schedparam = *param;
491a2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
491a4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
491a6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
491a8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
491aa: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
491ac: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
491ae: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_thread->budget_algorithm = budget_algorithm;
491b0: 256e fffc 007a movel %fp@(-4),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = budget_callout;
491b6: 256e fff8 007e movel %fp@(-8),%a2@(126) <== NOT EXECUTED
switch ( api->schedpolicy ) {
491bc: 4a84 tstl %d4 <== NOT EXECUTED
491be: 6c00 ff3e bgew 490fe <pthread_setschedparam+0x92> <== NOT EXECUTED
491c2: 6000 ff6c braw 49130 <pthread_setschedparam+0xc4> <== NOT EXECUTED
...
000465a4 <pthread_setspecific>:
int pthread_setspecific(
pthread_key_t key,
const void *value
)
{
465a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
465a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
465aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED
465b0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
465b4: 4879 0006 1fa8 pea 61fa8 <_POSIX_Keys_Information> <== NOT EXECUTED
465ba: 4eb9 0004 8dfc jsr 48dfc <_Objects_Get> <== NOT EXECUTED
uint32_t api;
uint32_t index;
Objects_Locations location;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
465c0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
465c4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
465c8: 663e bnes 46608 <pthread_setspecific+0x64> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
465ca: 2079 0006 20c2 moveal 620c2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
465d0: 7618 moveq #24,%d3 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
the_key->Values[ api ][ index ] = (void *) value;
465d2: 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 );
465d4: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
465d8: 2202 movel %d2,%d1 <== NOT EXECUTED
465da: e6a9 lsrl %d3,%d1 <== NOT EXECUTED
465dc: 163c 0007 moveb #7,%d3 <== NOT EXECUTED
465e0: c283 andl %d3,%d1 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
465e2: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_key->Values[ api ][ index ] = (void *) value;
465e8: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED
465ec: 43ee 000c lea %fp@(12),%a1 <== NOT EXECUTED
465f0: 2191 2c00 movel %a1@,%a0@(00000000,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
465f4: 4eb9 0004 992e jsr 4992e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
465fa: 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;
465fe: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46600: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
46604: 4e5e unlk %fp <== NOT EXECUTED
46606: 4e75 rts <== NOT EXECUTED
46608: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4660c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4660e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
46612: 4e5e unlk %fp <== NOT EXECUTED
...
0004d318 <pthread_sigmask>:
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
4d318: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d31c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4d320: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d322: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d326: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set && !oset )
4d32a: 4a89 tstl %a1 <== NOT EXECUTED
4d32c: 6700 0084 beqw 4d3b2 <pthread_sigmask+0x9a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4d330: 2079 0006 2142 moveal 62142 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4d336: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
if ( oset )
4d33a: 4a8a tstl %a2 <== NOT EXECUTED
4d33c: 6708 beqs 4d346 <pthread_sigmask+0x2e> <== NOT EXECUTED
*oset = api->signals_blocked;
4d33e: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4d342: 4a89 tstl %a1 <== NOT EXECUTED
4d344: 673a beqs 4d380 <pthread_sigmask+0x68> <== NOT EXECUTED
return 0;
switch ( how ) {
4d346: 7201 moveq #1,%d1 <== NOT EXECUTED
4d348: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d34a: 675e beqs 4d3aa <pthread_sigmask+0x92> <== NOT EXECUTED
4d34c: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
4d350: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d352: 6736 beqs 4d38a <pthread_sigmask+0x72> <== NOT EXECUTED
4d354: 4a80 tstl %d0 <== NOT EXECUTED
4d356: 663c bnes 4d394 <pthread_sigmask+0x7c> <== NOT EXECUTED
break;
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
break;
case SIG_SETMASK:
api->signals_blocked = *set;
4d358: 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) ) {
4d35c: 2039 0006 2368 movel 62368 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4d362: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED
4d366: 4681 notl %d1 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
4d368: 80a8 00d4 orl %a0@(212),%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4d36c: c081 andl %d1,%d0 <== NOT EXECUTED
4d36e: 6710 beqs 4d380 <pthread_sigmask+0x68> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
4d370: 4eb9 0004 993c jsr 4993c <_Thread_Dispatch> <== NOT EXECUTED
}
return 0;
}
4d376: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
4d37a: 4280 clrl %d0 <== NOT EXECUTED
}
4d37c: 4e5e unlk %fp <== NOT EXECUTED
4d37e: 4e75 rts <== NOT EXECUTED
4d380: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
4d384: 4280 clrl %d0 <== NOT EXECUTED
}
4d386: 4e5e unlk %fp <== NOT EXECUTED
4d388: 4e75 rts <== NOT EXECUTED
switch ( how ) {
case SIG_BLOCK:
api->signals_blocked |= *set;
break;
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
4d38a: 2011 movel %a1@,%d0 <== NOT EXECUTED
4d38c: 4680 notl %d0 <== NOT EXECUTED
4d38e: c1a8 00d0 andl %d0,%a0@(208) <== NOT EXECUTED
break;
4d392: 60c8 bras 4d35c <pthread_sigmask+0x44> <== NOT EXECUTED
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d394: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d39a: 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 );
4d39e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d3a0: 7216 moveq #22,%d1 <== NOT EXECUTED
4d3a2: 70ff moveq #-1,%d0 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d3a4: 4e5e unlk %fp <== NOT EXECUTED
break;
case SIG_SETMASK:
api->signals_blocked = *set;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4d3a6: 2081 movel %d1,%a0@ <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
}
return 0;
}
4d3a8: 4e75 rts <== NOT EXECUTED
if ( !set )
return 0;
switch ( how ) {
case SIG_BLOCK:
api->signals_blocked |= *set;
4d3aa: 2011 movel %a1@,%d0 <== NOT EXECUTED
4d3ac: 81a8 00d0 orl %d0,%a0@(208) <== NOT EXECUTED
break;
4d3b0: 60aa bras 4d35c <pthread_sigmask+0x44> <== NOT EXECUTED
sigset_t *oset
)
{
POSIX_API_Control *api;
if ( !set && !oset )
4d3b2: 4a8a tstl %a2 <== NOT EXECUTED
4d3b4: 67de beqs 4d394 <pthread_sigmask+0x7c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4d3b6: 2079 0006 2142 moveal 62142 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4d3bc: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
if ( oset )
*oset = api->signals_blocked;
4d3c0: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4d3c4: 4a89 tstl %a1 <== NOT EXECUTED
4d3c6: 6600 ff7e bnew 4d346 <pthread_sigmask+0x2e> <== NOT EXECUTED
4d3ca: 60b4 bras 4d380 <pthread_sigmask+0x68> <== NOT EXECUTED
00046594 <pthread_spin_destroy>:
*/
int pthread_spin_destroy(
pthread_spinlock_t *spinlock
)
{
46594: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
46598: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
if ( !spinlock )
4659c: 4a88 tstl %a0 <== NOT EXECUTED
4659e: 6730 beqs 465d0 <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(
465a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
465a4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
465a6: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
465ac: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
465b2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
465b6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
465ba: 6614 bnes 465d0 <pthread_spin_destroy+0x3c> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy(
CORE_spinlock_Control *the_spinlock
)
{
return (the_spinlock->users != 0);
465bc: 2040 moveal %d0,%a0 <== NOT EXECUTED
465be: 2228 0018 movel %a0@(24),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) {
465c2: 6712 beqs 465d6 <pthread_spin_destroy+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
465c4: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EBUSY;
465ca: 7010 moveq #16,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
465cc: 4e5e unlk %fp <== NOT EXECUTED
465ce: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
465d0: 7016 moveq #22,%d0 <== NOT EXECUTED
}
465d2: 4e5e unlk %fp <== NOT EXECUTED
465d4: 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 );
465d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465d8: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
465de: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
465e2: 4eb9 0004 8504 jsr 48504 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free (
POSIX_Spinlock_Control *the_spinlock
)
{
_Objects_Free( &_POSIX_Spinlock_Information, &the_spinlock->Object );
465e8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
465ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465ee: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
465f4: 4eb9 0004 87c8 jsr 487c8 <_Objects_Free> <== NOT EXECUTED
_POSIX_Spinlock_Free( the_spinlock );
_Thread_Enable_dispatch();
465fa: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46600: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46604: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46606: 4e5e unlk %fp <== NOT EXECUTED
...
0004660c <pthread_spin_init>:
int pthread_spin_init(
pthread_spinlock_t *spinlock,
int pshared
)
{
4660c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46610: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46612: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46614: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock;
CORE_spinlock_Attributes attributes;
if ( !spinlock )
46618: 4a8a tstl %a2 <== NOT EXECUTED
4661a: 6766 beqs 46682 <pthread_spin_init+0x76> <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
4661c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
46620: 6660 bnes 46682 <pthread_spin_init+0x76> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46622: 2039 0006 0e08 movel 60e08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46628: 5280 addql #1,%d0 <== NOT EXECUTED
4662a: 23c0 0006 0e08 movel %d0,60e08 <_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 );
46630: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
46636: 4eb9 0004 8474 jsr 48474 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
4663c: 588f addql #4,%sp <== NOT EXECUTED
4663e: 2640 moveal %d0,%a3 <== NOT EXECUTED
46640: 4a80 tstl %d0 <== NOT EXECUTED
46642: 674c beqs 46690 <pthread_spin_init+0x84> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes(
CORE_spinlock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
46644: 204e moveal %fp,%a0 <== NOT EXECUTED
46646: 42a0 clrl %a0@- <== NOT EXECUTED
return EAGAIN;
}
_CORE_spinlock_Initialize_attributes( &attributes );
_CORE_spinlock_Initialize( &the_spinlock->Spinlock, &attributes );
46648: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4664a: 486b 0010 pea %a3@(16) <== NOT EXECUTED
4664e: 4eb9 0004 7db8 jsr 47db8 <_CORE_spinlock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46654: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46658: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4665a: 2079 0006 101c moveal 6101c <_POSIX_Spinlock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46660: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46662: 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;
46666: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
_Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 );
*spinlock = the_spinlock->Object.id;
4666a: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4666c: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
46672: 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;
46676: 508f addql #8,%sp <== NOT EXECUTED
46678: 4280 clrl %d0 <== NOT EXECUTED
}
4667a: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4667e: 4e5e unlk %fp <== NOT EXECUTED
46680: 4e75 rts <== NOT EXECUTED
46682: 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;
46686: 7016 moveq #22,%d0 <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46688: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4668c: 4e5e unlk %fp <== NOT EXECUTED
4668e: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
_Thread_Enable_dispatch();
46690: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46696: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
_Thread_Enable_dispatch();
return EAGAIN;
4669a: 700b moveq #11,%d0 <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
4669c: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
466a0: 4e5e unlk %fp <== NOT EXECUTED
000466a4 <pthread_spin_lock>:
*/
int pthread_spin_lock(
pthread_spinlock_t *spinlock
)
{
466a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
466a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
466ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
466ae: 4a88 tstl %a0 <== NOT EXECUTED
466b0: 674a beqs 466fc <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(
466b2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
466b6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
466b8: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
466be: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
466c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
466c8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
466cc: 662e bnes 466fc <pthread_spin_lock+0x58> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 );
466ce: 42a7 clrl %sp@- <== NOT EXECUTED
466d0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
466d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
466d6: 4868 0010 pea %a0@(16) <== NOT EXECUTED
466da: 4eb9 0004 7e30 jsr 47e30 <_CORE_spinlock_Wait> <== NOT EXECUTED
466e0: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
466e2: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
466e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
466ea: 4eb9 0004 6708 jsr 46708 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
466f0: 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 );
466f4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
466f8: 4e5e unlk %fp <== NOT EXECUTED
466fa: 4e75 rts <== NOT EXECUTED
466fc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46700: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46702: 4e5e unlk %fp <== NOT EXECUTED
...
00046720 <pthread_spin_trylock>:
*/
int pthread_spin_trylock(
pthread_spinlock_t *spinlock
)
{
46720: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46724: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46728: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
4672a: 4a88 tstl %a0 <== NOT EXECUTED
4672c: 6748 beqs 46776 <pthread_spin_trylock+0x56> <== NOT EXECUTED
4672e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46732: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46734: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
4673a: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
46740: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46744: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46748: 662c bnes 46776 <pthread_spin_trylock+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 );
4674a: 42a7 clrl %sp@- <== NOT EXECUTED
4674c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4674e: 42a7 clrl %sp@- <== NOT EXECUTED
46750: 4868 0010 pea %a0@(16) <== NOT EXECUTED
46754: 4eb9 0004 7e30 jsr 47e30 <_CORE_spinlock_Wait> <== NOT EXECUTED
4675a: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
4675c: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
46762: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46764: 4eb9 0004 6708 jsr 46708 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
4676a: 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 );
4676e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46772: 4e5e unlk %fp <== NOT EXECUTED
46774: 4e75 rts <== NOT EXECUTED
46776: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4677a: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4677c: 4e5e unlk %fp <== NOT EXECUTED
00046780 <pthread_spin_unlock>:
*/
int pthread_spin_unlock(
pthread_spinlock_t *spinlock
)
{
46780: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46784: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46788: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
4678a: 4a88 tstl %a0 <== NOT EXECUTED
4678c: 6742 beqs 467d0 <pthread_spin_unlock+0x50> <== NOT EXECUTED
4678e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46792: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46794: 4879 0006 1004 pea 61004 <_POSIX_Spinlock_Information> <== NOT EXECUTED
4679a: 4eb9 0004 8934 jsr 48934 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
467a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
467a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
467a8: 6626 bnes 467d0 <pthread_spin_unlock+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Release( &the_spinlock->Spinlock );
467aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
467ac: 4868 0010 pea %a0@(16) <== NOT EXECUTED
467b0: 4eb9 0004 7dd8 jsr 47dd8 <_CORE_spinlock_Release> <== NOT EXECUTED
467b6: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
467b8: 4eb9 0004 9466 jsr 49466 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
467be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
467c0: 4eb9 0004 6708 jsr 46708 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
467c6: 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 );
467ca: 508f addql #8,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
467cc: 4e5e unlk %fp <== NOT EXECUTED
467ce: 4e75 rts <== NOT EXECUTED
467d0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
467d4: 7016 moveq #22,%d0 <== NOT EXECUTED
}
467d6: 4e5e unlk %fp <== NOT EXECUTED
...
00046b98 <pthread_testcancel>:
*
* 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183
*/
void pthread_testcancel( void )
{
46b98: 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() )
46b9c: 4ab9 0006 1318 tstl 61318 <_Per_CPU_Information+0x8> <== NOT EXECUTED
46ba2: 663c bnes 46be0 <pthread_testcancel+0x48> <== NOT EXECUTED
return;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
46ba4: 2079 0006 131c moveal 6131c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
46baa: 2039 0006 0e92 movel 60e92 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46bb0: 5280 addql #1,%d0 <== NOT EXECUTED
46bb2: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
46bb6: 23c0 0006 0e92 movel %d0,60e92 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
46bbc: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED
46bc0: 6622 bnes 46be4 <pthread_testcancel+0x4c> <== NOT EXECUTED
46bc2: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED
46bc6: 671c beqs 46be4 <pthread_testcancel+0x4c> <== NOT EXECUTED
thread_support->cancelation_requested )
cancel = true;
_Thread_Enable_dispatch();
46bc8: 4eb9 0004 96b6 jsr 496b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( cancel )
_POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );
46bce: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
46bd2: 2f39 0006 131c movel 6131c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
46bd8: 4eb9 0004 cc44 jsr 4cc44 <_POSIX_Thread_Exit> <== NOT EXECUTED
46bde: 508f addql #8,%sp <== NOT EXECUTED
}
46be0: 4e5e unlk %fp <== NOT EXECUTED
46be2: 4e75 rts <== NOT EXECUTED
46be4: 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();
46be6: 4ef9 0004 96b6 jmp 496b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
00043d94 <putk>:
* putk
*
* Kernel putk (e.g. puts) function requiring minimal infrastrure.
*/
void putk(const char *s)
{
43d94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43d98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43d9a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
const char *p;
for (p=s ; *p ; p++ )
43d9e: 1012 moveb %a2@,%d0 <== NOT EXECUTED
43da0: 6714 beqs 43db6 <putk+0x22> <== NOT EXECUTED
/*
* putk
*
* Kernel putk (e.g. puts) function requiring minimal infrastrure.
*/
void putk(const char *s)
43da2: 528a addql #1,%a2 <== NOT EXECUTED
{
const char *p;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
43da4: 49c0 extbl %d0 <== NOT EXECUTED
43da6: 2079 0005 e700 moveal 5e700 <BSP_output_char>,%a0 <== NOT EXECUTED
43dac: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43dae: 4e90 jsr %a0@ <== NOT EXECUTED
*/
void putk(const char *s)
{
const char *p;
for (p=s ; *p ; p++ )
43db0: 588f addql #4,%sp <== NOT EXECUTED
43db2: 101a moveb %a2@+,%d0 <== NOT EXECUTED
43db4: 66ee bnes 43da4 <putk+0x10> <== NOT EXECUTED
BSP_output_char(*p);
BSP_output_char('\n');
43db6: 700a moveq #10,%d0 <== NOT EXECUTED
}
43db8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
const char *p;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43dbc: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43dc0: 4e5e unlk %fp <== NOT EXECUTED
{
const char *p;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43dc2: 2279 0005 e700 moveal 5e700 <BSP_output_char>,%a1 <== NOT EXECUTED
43dc8: 4ed1 jmp %a1@ <== NOT EXECUTED
...
0005be14 <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
5be14: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5be18: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5be1c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
5be20: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
5be24: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5be28: b0b9 0005 e314 cmpl 5e314 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
5be2e: 646a bccs 5be9a <read+0x86> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5be30: 2400 movel %d0,%d2 <== NOT EXECUTED
5be32: ed88 lsll #6,%d0 <== NOT EXECUTED
5be34: e78a lsll #3,%d2 <== NOT EXECUTED
5be36: 2479 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5be3c: 9082 subl %d2,%d0 <== NOT EXECUTED
5be3e: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
5be40: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
5be44: 0800 0008 btst #8,%d0 <== NOT EXECUTED
5be48: 6750 beqs 5be9a <read+0x86> <== NOT EXECUTED
rtems_libio_check_buffer( buffer );
5be4a: 4a81 tstl %d1 <== NOT EXECUTED
5be4c: 6764 beqs 5beb2 <read+0x9e> <== NOT EXECUTED
rtems_libio_check_count( count );
5be4e: 4a88 tstl %a0 <== NOT EXECUTED
5be50: 673c beqs 5be8e <read+0x7a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
5be52: 0800 0001 btst #1,%d0 <== NOT EXECUTED
5be56: 675a beqs 5beb2 <read+0x9e> <== NOT EXECUTED
/*
* Now process the read().
*/
rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5be58: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
5be5c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5be5e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5be60: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5be62: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
5be66: 4e90 jsr %a0@ <== NOT EXECUTED
if ( rc > 0 )
5be68: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
/*
* Now process the read().
*/
rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5be6c: 2200 movel %d0,%d1 <== NOT EXECUTED
if ( rc > 0 )
5be6e: 6f14 bles 5be84 <read+0x70> <== NOT EXECUTED
iop->offset += rc;
5be70: 2401 movel %d1,%d2 <== NOT EXECUTED
5be72: 5bc1 smi %d1 <== NOT EXECUTED
5be74: 49c1 extbl %d1 <== NOT EXECUTED
5be76: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED
5be7a: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
5be7e: d781 addxl %d1,%d3 <== NOT EXECUTED
5be80: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5be84: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5be8a: 4e5e unlk %fp <== NOT EXECUTED
5be8c: 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 );
5be8e: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5be90: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5be96: 4e5e unlk %fp <== NOT EXECUTED
5be98: 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 );
5be9a: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5bea0: 7409 moveq #9,%d2 <== NOT EXECUTED
5bea2: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bea4: 70ff moveq #-1,%d0 <== NOT EXECUTED
5bea6: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bea8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5beae: 4e5e unlk %fp <== NOT EXECUTED
5beb0: 4e75 rts <== NOT EXECUTED
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
5beb2: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5beb8: 7216 moveq #22,%d1 <== NOT EXECUTED
5beba: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bebc: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bebe: 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 );
5bec4: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5bec6: 4e5e unlk %fp <== NOT EXECUTED
00046594 <readlink>:
ssize_t readlink(
const char *pathname,
char *buf,
size_t bufsize
)
{
46594: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
46598: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4659c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
465a0: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if (!buf)
465a4: 6774 beqs 4661a <readlink+0x86> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
465a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465a8: 260e movel %fp,%d3 <== NOT EXECUTED
465aa: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
465b0: 4eb9 0005 37c4 jsr 537c4 <strlen> <== NOT EXECUTED
465b6: 4297 clrl %sp@ <== NOT EXECUTED
465b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
465ba: 42a7 clrl %sp@- <== NOT EXECUTED
465bc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465c0: 4eb9 0004 5314 jsr 45314 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, false );
if ( result != 0 )
465c6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
465ca: 4a80 tstl %d0 <== NOT EXECUTED
465cc: 670c beqs 465da <readlink+0x46> <== NOT EXECUTED
return -1;
465ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
465d0: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED
465d6: 4e5e unlk %fp <== NOT EXECUTED
465d8: 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 ){
465da: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
465de: 2f03 movel %d3,%sp@- <== NOT EXECUTED
465e0: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
465e4: 4e90 jsr %a0@ <== NOT EXECUTED
465e6: 588f addql #4,%sp <== NOT EXECUTED
465e8: 7204 moveq #4,%d1 <== NOT EXECUTED
465ea: b280 cmpl %d0,%d1 <== NOT EXECUTED
465ec: 6644 bnes 46632 <readlink+0x9e> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( EINVAL );
}
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
465ee: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
465f2: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
465f6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
465f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
465fa: 2068 003c moveal %a0@(60),%a0 <== NOT EXECUTED
465fe: 4e90 jsr %a0@ <== NOT EXECUTED
46600: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
46602: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46604: 4eb9 0004 53f8 jsr 453f8 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
4660a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4660e: 2002 movel %d2,%d0 <== NOT EXECUTED
}
46610: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED
46616: 4e5e unlk %fp <== NOT EXECUTED
46618: 4e75 rts <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if (!buf)
rtems_set_errno_and_return_minus_one( EFAULT );
4661a: 4eb9 0005 1cf0 jsr 51cf0 <__errno> <== NOT EXECUTED
46620: 740e moveq #14,%d2 <== NOT EXECUTED
46622: 2040 moveal %d0,%a0 <== NOT EXECUTED
46624: 70ff moveq #-1,%d0 <== NOT EXECUTED
46626: 2082 movel %d2,%a0@ <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
46628: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED
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
46634: 4eb9 0004 53f8 jsr 453f8 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4663a: 4eb9 0005 1cf0 jsr 51cf0 <__errno> <== NOT EXECUTED
46640: 588f addql #4,%sp <== NOT EXECUTED
46642: 7216 moveq #22,%d1 <== NOT EXECUTED
46644: 2040 moveal %d0,%a0 <== NOT EXECUTED
46646: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
46648: 4cee 001c ffe0 moveml %fp@(-32),%d2-%d4 <== NOT EXECUTED
if ( result != 0 )
return -1;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( EINVAL );
4664e: 2081 movel %d1,%a0@ <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
46650: 4e5e unlk %fp <== NOT EXECUTED
00044e40 <readv>:
ssize_t readv(
int fd,
const struct iovec *iov,
int iovcnt
)
{
44e40: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
44e44: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
44e48: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
44e4c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
44e50: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int v;
int bytes;
rtems_libio_t *iop;
bool all_zeros;
rtems_libio_check_fd( fd );
44e54: b0b9 0005 f0e4 cmpl 5f0e4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
44e5a: 6400 00ec bccw 44f48 <readv+0x108> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
44e5e: 2200 movel %d0,%d1 <== NOT EXECUTED
44e60: ed88 lsll #6,%d0 <== NOT EXECUTED
44e62: e789 lsll #3,%d1 <== NOT EXECUTED
44e64: 2679 0006 08f4 moveal 608f4 <rtems_libio_iops>,%a3 <== NOT EXECUTED
44e6a: 9081 subl %d1,%d0 <== NOT EXECUTED
44e6c: d7c0 addal %d0,%a3 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
44e6e: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
44e72: 0800 0008 btst #8,%d0 <== NOT EXECUTED
44e76: 6700 00d0 beqw 44f48 <readv+0x108> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
44e7a: 0800 0001 btst #1,%d0 <== NOT EXECUTED
44e7e: 6700 0092 beqw 44f12 <readv+0xd2> <== NOT EXECUTED
/*
* Argument validation on IO vector
*/
if ( !iov )
44e82: 4a8a tstl %a2 <== NOT EXECUTED
44e84: 6700 008c beqw 44f12 <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
44e88: 4a82 tstl %d2 <== NOT EXECUTED
44e8a: 6f00 0086 blew 44f12 <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
44e8e: 0c82 0000 0400 cmpil #1024,%d2 <== NOT EXECUTED
44e94: 6e7c bgts 44f12 <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
44e96: 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 )
44e98: 4281 clrl %d1 <== NOT EXECUTED
44e9a: 4280 clrl %d0 <== NOT EXECUTED
44e9c: 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 )
44e9e: 4a90 tstl %a0@ <== NOT EXECUTED
44ea0: 6770 beqs 44f12 <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
44ea2: 2628 0004 movel %a0@(4),%d3 <== NOT EXECUTED
44ea6: 2240 moveal %d0,%a1 <== NOT EXECUTED
44ea8: 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++ ) {
44eaa: 5281 addql #1,%d1 <== NOT EXECUTED
44eac: 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 )
44eae: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
44eb0: 6d60 blts 44f12 <readv+0xd2> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
44eb2: 4a83 tstl %d3 <== NOT EXECUTED
44eb4: 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;
44eb6: 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;
44eb8: 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++ ) {
44eba: b282 cmpl %d2,%d1 <== NOT EXECUTED
44ebc: 6de0 blts 44e9e <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 ) {
44ebe: 4a04 tstb %d4 <== NOT EXECUTED
44ec0: 666a bnes 44f2c <readv+0xec> <== NOT EXECUTED
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t readv(
44ec2: 588a addql #4,%a2 <== NOT EXECUTED
44ec4: 4283 clrl %d3 <== NOT EXECUTED
44ec6: 4284 clrl %d4 <== NOT EXECUTED
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
bytes = (*iop->pathinfo.handlers->read_h)(
44ec8: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED
}
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
44ecc: 5283 addql #1,%d3 <== NOT EXECUTED
bytes = (*iop->pathinfo.handlers->read_h)(
44ece: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
44ed0: 2f2a fffc movel %a2@(-4),%sp@- <== NOT EXECUTED
44ed4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44ed6: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
44eda: 4e90 jsr %a0@ <== NOT EXECUTED
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
44edc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44ee0: 4a80 tstl %d0 <== NOT EXECUTED
44ee2: 6d56 blts 44f3a <readv+0xfa> <== NOT EXECUTED
return -1;
if ( bytes > 0 ) {
44ee4: 6716 beqs 44efc <readv+0xbc> <== NOT EXECUTED
iop->offset += bytes;
total += bytes;
44ee6: d880 addl %d0,%d4 <== NOT EXECUTED
if ( bytes < 0 )
return -1;
if ( bytes > 0 ) {
iop->offset += bytes;
44ee8: 2c00 movel %d0,%d6 <== NOT EXECUTED
44eea: 5bc5 smi %d5 <== NOT EXECUTED
44eec: 49c5 extbl %d5 <== NOT EXECUTED
44eee: ddab 0010 addl %d6,%a3@(16) <== NOT EXECUTED
44ef2: 222b 000c movel %a3@(12),%d1 <== NOT EXECUTED
44ef6: d385 addxl %d5,%d1 <== NOT EXECUTED
44ef8: 2741 000c movel %d1,%a3@(12) <== NOT EXECUTED
total += bytes;
}
if (bytes != iov[ v ].iov_len)
44efc: b092 cmpl %a2@,%d0 <== NOT EXECUTED
44efe: 6606 bnes 44f06 <readv+0xc6> <== NOT EXECUTED
}
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
44f00: 508a addql #8,%a2 <== NOT EXECUTED
44f02: b682 cmpl %d2,%d3 <== NOT EXECUTED
44f04: 6dc2 blts 44ec8 <readv+0x88> <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f06: 2004 movel %d4,%d0 <== NOT EXECUTED
44f08: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44f0e: 4e5e unlk %fp <== NOT EXECUTED
44f10: 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 );
44f12: 4eb9 0004 f970 jsr 4f970 <__errno> <== NOT EXECUTED
44f18: 78ff moveq #-1,%d4 <== NOT EXECUTED
44f1a: 2040 moveal %d0,%a0 <== NOT EXECUTED
44f1c: 7016 moveq #22,%d0 <== NOT EXECUTED
44f1e: 2080 movel %d0,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f20: 2004 movel %d4,%d0 <== NOT EXECUTED
44f22: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44f28: 4e5e unlk %fp <== NOT EXECUTED
44f2a: 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;
44f2c: 4284 clrl %d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f2e: 2004 movel %d4,%d0 <== NOT EXECUTED
44f30: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44f36: 4e5e unlk %fp <== NOT EXECUTED
44f38: 4e75 rts <== NOT EXECUTED
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
44f3a: 78ff moveq #-1,%d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f3c: 2004 movel %d4,%d0 <== NOT EXECUTED
44f3e: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44f44: 4e5e unlk %fp <== NOT EXECUTED
44f46: 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 );
44f48: 4eb9 0004 f970 jsr 4f970 <__errno> <== NOT EXECUTED
44f4e: 78ff moveq #-1,%d4 <== NOT EXECUTED
44f50: 7209 moveq #9,%d1 <== NOT EXECUTED
44f52: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f54: 2004 movel %d4,%d0 <== NOT EXECUTED
44f56: 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 );
44f5c: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
44f5e: 4e5e unlk %fp <== NOT EXECUTED
...
0005bf4c <realloc>:
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
5bf4c: 7003 moveq #3,%d0
void *realloc(
void *ptr,
size_t size
)
{
5bf4e: 4e56 fff0 linkw %fp,#-16
uintptr_t old_size;
char *new_area;
MSBUMP(realloc_calls, 1);
5bf52: 52b9 0005 fb4c addql #1,5fb4c <rtems_malloc_statistics+0x10>
void *realloc(
void *ptr,
size_t size
)
{
5bf58: 48d7 001c moveml %d2-%d4,%sp@
5bf5c: 242e 0008 movel %fp@(8),%d2
5bf60: 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())) {
5bf64: b0b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d0
5bf6a: 677a beqs 5bfe6 <realloc+0x9a> <== ALWAYS TAKEN
}
/*
* Continue with realloc().
*/
if ( !ptr )
5bf6c: 4a82 tstl %d2
5bf6e: 6700 00de beqw 5c04e <realloc+0x102>
return malloc( size );
if ( !size ) {
5bf72: 4a83 tstl %d3 <== NOT EXECUTED
5bf74: 673e beqs 5bfb4 <realloc+0x68> <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
5bf76: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5bf7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bf7c: 2f39 0005 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
5bf82: 4eb9 0005 c604 jsr 5c604 <_Protected_heap_Get_block_size> <== NOT EXECUTED
5bf88: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5bf8c: 4a00 tstb %d0 <== NOT EXECUTED
5bf8e: 673c beqs 5bfcc <realloc+0x80> <== NOT EXECUTED
}
/*
* Now resize it.
*/
if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
5bf90: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5bf92: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bf94: 2f39 0005 e320 movel 5e320 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
5bf9a: 4eb9 0005 c640 jsr 5c640 <_Protected_heap_Resize_block> <== NOT EXECUTED
5bfa0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5bfa4: 4a00 tstb %d0 <== NOT EXECUTED
5bfa6: 6754 beqs 5bffc <realloc+0xb0> <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bfa8: 2002 movel %d2,%d0 <== NOT EXECUTED
5bfaa: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5bfb0: 4e5e unlk %fp <== NOT EXECUTED
5bfb2: 4e75 rts <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5bfb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (void *) 0;
5bfb6: 4282 clrl %d2 <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5bfb8: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return (void *) 0;
5bfbe: 588f addql #4,%sp <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bfc0: 2002 movel %d2,%d0 <== NOT EXECUTED
5bfc2: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5bfc8: 4e5e unlk %fp <== NOT EXECUTED
5bfca: 4e75 rts <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5bfcc: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
return (void *) 0;
5bfd2: 4282 clrl %d2 <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5bfd4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5bfd6: 7016 moveq #22,%d0 <== NOT EXECUTED
5bfd8: 2080 movel %d0,%a0@ <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bfda: 2002 movel %d2,%d0 <== NOT EXECUTED
5bfdc: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5bfe2: 4e5e unlk %fp <== NOT EXECUTED
5bfe4: 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)
5bfe6: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
5bfec: 6752 beqs 5c040 <realloc+0xf4> <== ALWAYS TAKEN
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5bfee: 4282 clrl %d2 <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5bff0: 2002 movel %d2,%d0 <== NOT EXECUTED
5bff2: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5bff8: 4e5e unlk %fp <== NOT EXECUTED
5bffa: 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 );
5bffc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5bffe: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5c004: 588f addql #4,%sp <== NOT EXECUTED
* and the C Standard.
*/
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
5c006: 53b9 0005 fb40 subql #1,5fb40 <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 );
5c00c: 2800 movel %d0,%d4 <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5c00e: 67de beqs 5bfee <realloc+0xa2> <== NOT EXECUTED
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
5c010: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
5c014: b083 cmpl %d3,%d0 <== NOT EXECUTED
5c016: 6402 bccs 5c01a <realloc+0xce> <== NOT EXECUTED
5c018: 2600 movel %d0,%d3 <== NOT EXECUTED
5c01a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5c01c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5c01e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5c020: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
free( ptr );
5c026: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return new_area;
5c028: 2404 movel %d4,%d2 <== NOT EXECUTED
if ( !new_area ) {
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
5c02a: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return new_area;
5c030: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
5c034: 2002 movel %d2,%d0 <== NOT EXECUTED
5c036: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5c03c: 4e5e unlk %fp <== NOT EXECUTED
5c03e: 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)
5c040: 4ab9 0006 00fe tstl 600fe <_Per_CPU_Information+0x8>
5c046: 6700 ff24 beqw 5bf6c <realloc+0x20>
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5c04a: 4282 clrl %d2 <== NOT EXECUTED
5c04c: 60a2 bras 5bff0 <realloc+0xa4> <== NOT EXECUTED
/*
* Continue with realloc().
*/
if ( !ptr )
return malloc( size );
5c04e: 2f03 movel %d3,%sp@-
5c050: 4eb9 0004 302c jsr 4302c <malloc>
5c056: 588f addql #4,%sp
5c058: 2400 movel %d0,%d2
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5c05a: 2002 movel %d2,%d0
5c05c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5c062: 4e5e unlk %fp
...
000440ec <rmdir>:
#include <rtems/seterr.h>
int rmdir(
const char *pathname
)
{
440ec: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED
440f0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
440f4: 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 );
440f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
440fa: 4eb9 0004 3184 jsr 43184 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( parentpathlen == 0 )
44100: 588f addql #4,%sp <== NOT EXECUTED
44102: 4a80 tstl %d0 <== NOT EXECUTED
44104: 6600 0132 bnew 44238 <rmdir+0x14c> <== NOT EXECUTED
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
44108: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED
4410c: 4283 clrl %d3 <== NOT EXECUTED
4410e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44110: 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;
44114: 4204 clrb %d4 <== NOT EXECUTED
*/
parentpathlen = rtems_filesystem_dirname ( pathname );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
44116: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44118: 4eb9 0004 4260 jsr 44260 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
4411e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
44122: 2d52 ffd4 movel %a2@,%fp@(-44) <== NOT EXECUTED
name = pathname + parentpathlen;
44126: d682 addl %d2,%d3 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
44128: 47f9 0005 05b0 lea 505b0 <strlen>,%a3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4412e: 240e movel %fp,%d2 <== NOT EXECUTED
44130: 0682 ffff ffd4 addil #-44,%d2 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
44136: 2d6e ffec ffd8 movel %fp@(-20),%fp@(-40) <== NOT EXECUTED
4413c: 2d6e fff0 ffdc movel %fp@(-16),%fp@(-36) <== NOT EXECUTED
44142: 2d6e fff4 ffe0 movel %fp@(-12),%fp@(-32) <== NOT EXECUTED
44148: 2d6e fff8 ffe4 movel %fp@(-8),%fp@(-28) <== NOT EXECUTED
name = pathname + parentpathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
4414e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44150: 4e93 jsr %a3@ <== NOT EXECUTED
44152: 2e80 movel %d0,%sp@ <== NOT EXECUTED
44154: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44156: 4eb9 0004 31c6 jsr 431c6 <rtems_filesystem_prefix_separators><== NOT EXECUTED
4415c: d680 addl %d0,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4415e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44160: 4e93 jsr %a3@ <== NOT EXECUTED
44162: 4297 clrl %sp@ <== NOT EXECUTED
44164: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44166: 42a7 clrl %sp@- <== NOT EXECUTED
44168: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4416a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4416c: 4eb9 0004 30c8 jsr 430c8 <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &loc, false );
if ( result != 0 ) {
44172: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
44176: 4a80 tstl %d0 <== NOT EXECUTED
44178: 6654 bnes 441ce <rmdir+0xe2> <== NOT EXECUTED
}
/*
* Verify you can remove this node as a directory.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
4417a: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
4417e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44180: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
44184: 4e90 jsr %a0@ <== NOT EXECUTED
44186: 588f addql #4,%sp <== NOT EXECUTED
44188: 7201 moveq #1,%d1 <== NOT EXECUTED
4418a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4418c: 6652 bnes 441e0 <rmdir+0xf4> <== NOT EXECUTED
/*
* Use the filesystems rmnod to remove the node.
*/
result = (*loc.handlers->rmnod_h)( &parentloc, &loc );
4418e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44190: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
44194: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44196: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4419a: 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 );
441a0: 4e90 jsr %a0@ <== NOT EXECUTED
441a2: 2600 movel %d0,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
441a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
441a6: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
441a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
441ac: 4a04 tstb %d4 <== NOT EXECUTED
441ae: 660c bnes 441bc <rmdir+0xd0> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return result;
}
441b0: 2003 movel %d3,%d0 <== NOT EXECUTED
441b2: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
441b8: 4e5e unlk %fp <== NOT EXECUTED
441ba: 4e75 rts <== NOT EXECUTED
result = (*loc.handlers->rmnod_h)( &parentloc, &loc );
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
441bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
441be: 4e93 jsr %a3@ <== NOT EXECUTED
441c0: 588f addql #4,%sp <== NOT EXECUTED
return result;
}
441c2: 2003 movel %d3,%d0 <== NOT EXECUTED
441c4: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
441ca: 4e5e unlk %fp <== NOT EXECUTED
441cc: 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 )
441ce: 4a04 tstb %d4 <== NOT EXECUTED
441d0: 664e bnes 44220 <rmdir+0x134> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return -1;
441d2: 76ff moveq #-1,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
441d4: 2003 movel %d3,%d0 <== NOT EXECUTED
441d6: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
441dc: 4e5e unlk %fp <== NOT EXECUTED
441de: 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 );
441e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
441e2: 47f9 0004 321c lea 4321c <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
441e8: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
441ea: 588f addql #4,%sp <== NOT EXECUTED
441ec: 4a04 tstb %d4 <== NOT EXECUTED
441ee: 661a bnes 4420a <rmdir+0x11e> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
441f0: 4eb9 0004 f20c jsr 4f20c <__errno> <== NOT EXECUTED
441f6: 76ff moveq #-1,%d3 <== NOT EXECUTED
441f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
441fa: 7014 moveq #20,%d0 <== NOT EXECUTED
441fc: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
441fe: 2003 movel %d3,%d0 <== NOT EXECUTED
44200: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
44206: 4e5e unlk %fp <== NOT EXECUTED
44208: 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 );
4420a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4420c: 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 );
4420e: 4e93 jsr %a3@ <== NOT EXECUTED
44210: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
44212: 4eb9 0004 f20c jsr 4f20c <__errno> <== NOT EXECUTED
44218: 2040 moveal %d0,%a0 <== NOT EXECUTED
4421a: 7014 moveq #20,%d0 <== NOT EXECUTED
4421c: 2080 movel %d0,%a0@ <== NOT EXECUTED
4421e: 60de bras 441fe <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 );
44220: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return -1;
44222: 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 );
44224: 4eb9 0004 321c jsr 4321c <rtems_filesystem_freenode> <== NOT EXECUTED
4422a: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
4422c: 2003 movel %d3,%d0 <== NOT EXECUTED
4422e: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
44234: 4e5e unlk %fp <== NOT EXECUTED
44236: 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,
44238: 42a7 clrl %sp@- <== NOT EXECUTED
4423a: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED
4423e: 2600 movel %d0,%d3 <== NOT EXECUTED
44240: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44242: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
44246: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44248: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4424a: 4eb9 0004 3138 jsr 43138 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&parentloc,
false );
if ( result != 0 )
44250: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
44254: 4a80 tstl %d0 <== NOT EXECUTED
44256: 6600 ff7a bnew 441d2 <rmdir+0xe6> <== NOT EXECUTED
return -1;
free_parentloc = true;
4425a: 7801 moveq #1,%d4 <== NOT EXECUTED
4425c: 6000 fec4 braw 44122 <rmdir+0x36> <== NOT EXECUTED
0004766c <rtems_aio_enqueue>:
* errno - otherwise
*/
int
rtems_aio_enqueue (rtems_aio_request *req)
{
4766c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
47670: 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);
47674: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
4767a: 47f9 0004 80d8 lea 480d8 <pthread_mutex_lock>,%a3 <== NOT EXECUTED
* errno - otherwise
*/
int
rtems_aio_enqueue (rtems_aio_request *req)
{
47680: 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);
47684: 4e93 jsr %a3@ <== NOT EXECUTED
if (result != 0) {
47686: 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);
47688: 2400 movel %d0,%d2 <== NOT EXECUTED
if (result != 0) {
4768a: 6600 00ba bnew 47746 <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);
4768e: 49f9 0004 8a98 lea 48a98 <pthread_self>,%a4 <== NOT EXECUTED
47694: 4e94 jsr %a4@ <== NOT EXECUTED
47696: 486e ffdc pea %fp@(-36) <== NOT EXECUTED
4769a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4769e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
476a0: 4eb9 0004 8604 jsr 48604 <pthread_getschedparam> <== NOT EXECUTED
req->caller_thread = pthread_self ();
476a6: 4e94 jsr %a4@ <== NOT EXECUTED
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
476a8: 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) &&
476ac: 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;
476b0: 222e ffdc movel %fp@(-36),%d1 <== NOT EXECUTED
476b4: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED
req->policy = policy;
476b8: 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 ();
476be: 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;
476c2: 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;
476c4: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
req->policy = policy;
req->aiocbp->error_code = EINPROGRESS;
476c8: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
req->aiocbp->return_value = 0;
476cc: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
if ((aio_request_queue.idle_threads == 0) &&
476d0: 4ab9 0006 2e00 tstl 62e00 <aio_request_queue+0x68> <== NOT EXECUTED
476d6: 660a bnes 476e2 <rtems_aio_enqueue+0x76> <== NOT EXECUTED
476d8: 7204 moveq #4,%d1 <== NOT EXECUTED
476da: b2b9 0006 2dfc cmpl 62dfc <aio_request_queue+0x64>,%d1 <== NOT EXECUTED
476e0: 6c7a bges 4775c <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,
476e2: 42a7 clrl %sp@- <== NOT EXECUTED
476e4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
476e6: 4bf9 0004 71d6 lea 471d6 <rtems_aio_search_fd>,%a5 <== NOT EXECUTED
476ec: 4879 0006 2de0 pea 62de0 <aio_request_queue+0x48> <== NOT EXECUTED
476f2: 4e95 jsr %a5@ <== NOT EXECUTED
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
476f4: 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,
476f8: 2840 moveal %d0,%a4 <== NOT EXECUTED
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
476fa: 4a80 tstl %d0 <== NOT EXECUTED
476fc: 6700 00e0 beqw 477de <rtems_aio_enqueue+0x172> <== NOT EXECUTED
{
pthread_mutex_lock (&r_chain->mutex);
47700: 260c movel %a4,%d3 <== NOT EXECUTED
47702: 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);
47708: 4bf9 0004 8174 lea 48174 <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);
4770e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47710: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_aio_insert_prio (&r_chain->perfd, req);
47712: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47714: 486c 0008 pea %a4@(8) <== NOT EXECUTED
47718: 4eb9 0004 7538 jsr 47538 <rtems_aio_insert_prio> <== NOT EXECUTED
pthread_cond_signal (&r_chain->cond);
4771e: 486c 0020 pea %a4@(32) <== NOT EXECUTED
47722: 4eb9 0004 7c60 jsr 47c60 <pthread_cond_signal> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
47728: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4772a: 4e95 jsr %a5@ <== NOT EXECUTED
4772c: 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);
47730: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
47736: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
47738: 588f addql #4,%sp <== NOT EXECUTED
}
4773a: 2002 movel %d2,%d0 <== NOT EXECUTED
4773c: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED
47742: 4e5e unlk %fp <== NOT EXECUTED
47744: 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);
47746: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47748: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
return result;
4774e: 588f addql #4,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
return 0;
}
47750: 2002 movel %d2,%d0 <== NOT EXECUTED
47752: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED
47758: 4e5e unlk %fp <== NOT EXECUTED
4775a: 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);
4775c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47760: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
47762: 4879 0006 2de0 pea 62de0 <aio_request_queue+0x48> <== NOT EXECUTED
47768: 4eb9 0004 71d6 jsr 471d6 <rtems_aio_search_fd> <== NOT EXECUTED
if (r_chain->new_fd == 1) {
4776e: 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);
47772: 2840 moveal %d0,%a4 <== NOT EXECUTED
if (r_chain->new_fd == 1) {
47774: 7001 moveq #1,%d0 <== NOT EXECUTED
47776: b0ac 0018 cmpl %a4@(24),%d0 <== NOT EXECUTED
4777a: 6684 bnes 47700 <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);
4777c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4777e: 486c 0008 pea %a4@(8) <== NOT EXECUTED
47782: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED
rtems_chain_prepend (&r_chain->perfd, &req->next_prio);
r_chain->new_fd = 0;
47788: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
4778c: 42a7 clrl %sp@- <== NOT EXECUTED
4778e: 486c 001c pea %a4@(28) <== NOT EXECUTED
47792: 4eb9 0004 7f98 jsr 47f98 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
47798: 42a7 clrl %sp@- <== NOT EXECUTED
4779a: 486c 0020 pea %a4@(32) <== NOT EXECUTED
4779e: 4eb9 0004 7ba0 jsr 47ba0 <pthread_cond_init> <== NOT EXECUTED
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
477a4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
477a6: 487a faec pea %pc@(47294 <rtems_aio_handle>) <== NOT EXECUTED
477aa: 4879 0006 2da0 pea 62da0 <aio_request_queue+0x8> <== NOT EXECUTED
477b0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
477b4: 4eb9 0004 82f4 jsr 482f4 <pthread_create> <== NOT EXECUTED
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
477ba: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
477be: 4a80 tstl %d0 <== NOT EXECUTED
477c0: 6600 00b0 bnew 47872 <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);
477c4: 4879 0006 2d98 pea 62d98 <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;
477ca: 52b9 0006 2dfc addql #1,62dfc <aio_request_queue+0x64> <== NOT EXECUTED
477d0: 4bf9 0004 8174 lea 48174 <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);
477d6: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
477d8: 588f addql #4,%sp <== NOT EXECUTED
477da: 6000 ff5e braw 4773a <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);
477de: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
477e2: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
477e6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
477e8: 4879 0006 2dec pea 62dec <aio_request_queue+0x54> <== NOT EXECUTED
477ee: 4e95 jsr %a5@ <== NOT EXECUTED
if (r_chain->new_fd == 1) {
477f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
477f4: 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);
477f6: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (r_chain->new_fd == 1) {
477f8: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED
477fc: 6722 beqs 47820 <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);
477fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47800: 486b 0008 pea %a3@(8) <== NOT EXECUTED
47804: 4bf9 0004 8174 lea 48174 <pthread_mutex_unlock>,%a5 <== NOT EXECUTED
4780a: 4eb9 0004 7538 jsr 47538 <rtems_aio_insert_prio> <== NOT EXECUTED
47810: 508f addql #8,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
47812: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
47818: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4781a: 588f addql #4,%sp <== NOT EXECUTED
4781c: 6000 ff1c braw 4773a <rtems_aio_enqueue+0xce> <== NOT EXECUTED
47820: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47822: 486b 0008 pea %a3@(8) <== NOT EXECUTED
47826: 4bf9 0004 8174 lea 48174 <pthread_mutex_unlock>,%a5 <== NOT EXECUTED
4782c: 4eb9 0004 9d8c jsr 49d8c <_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;
47832: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
47836: 42a7 clrl %sp@- <== NOT EXECUTED
47838: 486b 001c pea %a3@(28) <== NOT EXECUTED
4783c: 4eb9 0004 7f98 jsr 47f98 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
47842: 42a7 clrl %sp@- <== NOT EXECUTED
47844: 486b 0020 pea %a3@(32) <== NOT EXECUTED
47848: 4eb9 0004 7ba0 jsr 47ba0 <pthread_cond_init> <== NOT EXECUTED
pthread_cond_signal (&aio_request_queue.new_req);
4784e: 4879 0006 2d9c pea 62d9c <aio_request_queue+0x4> <== NOT EXECUTED
47854: 4eb9 0004 7c60 jsr 47c60 <pthread_cond_signal> <== NOT EXECUTED
++aio_request_queue.idle_threads;
4785a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4785e: 52b9 0006 2e00 addql #1,62e00 <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);
47864: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
4786a: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4786c: 588f addql #4,%sp <== NOT EXECUTED
4786e: 6000 feca braw 4773a <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);
47872: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
return result;
47878: 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);
4787a: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
return result;
47880: 588f addql #4,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
return 0;
}
47882: 2002 movel %d2,%d0 <== NOT EXECUTED
47884: 4cee 3c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4788a: 4e5e unlk %fp <== NOT EXECUTED
...
00047294 <rtems_aio_handle>:
* NULL - if error
*/
static void *
rtems_aio_handle (void *arg)
{
47294: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED
47298: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
rtems_aio_request_chain *r_chain = arg;
4729c: 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);
472a0: 260e movel %fp,%d3 <== NOT EXECUTED
472a2: 240c movel %a4,%d2 <== NOT EXECUTED
472a4: 2e0e movel %fp,%d7 <== NOT EXECUTED
472a6: 4bf9 0004 80d8 lea 480d8 <pthread_mutex_lock>,%a5 <== NOT EXECUTED
472ac: 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);
472b2: 2a3c 0004 8174 movel #295284,%d5 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
472b8: 2c3c 0004 9d28 movel #302376,%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);
472be: 0683 ffff ffd8 addil #-40,%d3 <== NOT EXECUTED
472c4: 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);
472c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
472c8: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
472ca: 588f addql #4,%sp <== NOT EXECUTED
472cc: 4a80 tstl %d0 <== NOT EXECUTED
472ce: 6600 008c bnew 4735c <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 );
472d2: 200c movel %a4,%d0 <== NOT EXECUTED
472d4: 0680 0000 000c addil #12,%d0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
472da: 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)) {
472de: b08a cmpl %a2,%d0 <== NOT EXECUTED
472e0: 6700 00e4 beqw 473c6 <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);
472e4: 47f9 0004 8a98 lea 48a98 <pthread_self>,%a3 <== NOT EXECUTED
472ea: 4e93 jsr %a3@ <== NOT EXECUTED
472ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED
472ee: 2f07 movel %d7,%sp@- <== NOT EXECUTED
472f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
472f2: 4eb9 0004 8604 jsr 48604 <pthread_getschedparam> <== NOT EXECUTED
param.sched_priority = req->priority;
472f8: 2d6a 000c ffd8 movel %a2@(12),%fp@(-40) <== NOT EXECUTED
pthread_setschedparam (pthread_self(), req->policy, ¶m);
472fe: 282a 0008 movel %a2@(8),%d4 <== NOT EXECUTED
47302: 4e93 jsr %a3@ <== NOT EXECUTED
47304: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47306: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47308: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4730a: 4eb9 0004 8aac jsr 48aac <pthread_setschedparam> <== NOT EXECUTED
47310: 2046 moveal %d6,%a0 <== NOT EXECUTED
47312: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47314: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_chain_extract (node);
pthread_mutex_unlock (&r_chain->mutex);
47316: 2045 moveal %d5,%a0 <== NOT EXECUTED
47318: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4731a: 4e90 jsr %a0@ <== NOT EXECUTED
switch (req->aiocbp->aio_lio_opcode) {
4731c: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED
47320: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
47324: 7202 moveq #2,%d1 <== NOT EXECUTED
47326: 202b 002c movel %a3@(44),%d0 <== NOT EXECUTED
4732a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4732c: 677a beqs 473a8 <rtems_aio_handle+0x114> <== NOT EXECUTED
4732e: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
47332: b280 cmpl %d0,%d1 <== NOT EXECUTED
47334: 6766 beqs 4739c <rtems_aio_handle+0x108> <== NOT EXECUTED
47336: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
4733a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4733c: 672a beqs 47368 <rtems_aio_handle+0xd4> <== NOT EXECUTED
default:
result = -1;
}
if (result == -1) {
req->aiocbp->return_value = -1;
4733e: 70ff moveq #-1,%d0 <== NOT EXECUTED
47340: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED
req->aiocbp->error_code = errno;
47344: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
4734a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4734c: 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);
47350: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47352: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
47354: 588f addql #4,%sp <== NOT EXECUTED
47356: 4a80 tstl %d0 <== NOT EXECUTED
47358: 6700 ff78 beqw 472d2 <rtems_aio_handle+0x3e> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4735c: 4280 clrl %d0 <== NOT EXECUTED
4735e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
47364: 4e5e unlk %fp <== NOT EXECUTED
47366: 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,
47368: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
4736c: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED
47370: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED
47374: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
47378: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4737a: 4eb9 0005 216a jsr 5216a <pread> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
47380: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
break;
default:
result = -1;
}
if (result == -1) {
47384: 72ff moveq #-1,%d1 <== NOT EXECUTED
47386: b280 cmpl %d0,%d1 <== NOT EXECUTED
47388: 6700 017a beqw 47504 <rtems_aio_handle+0x270> <== NOT EXECUTED
req->aiocbp->return_value = -1;
req->aiocbp->error_code = errno;
} else {
req->aiocbp->return_value = result;
4738c: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
47390: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
req->aiocbp->error_code = 0;
47394: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
47398: 6000 ff2c braw 472c6 <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);
4739c: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4739e: 4eb9 0004 e20c jsr 4e20c <fsync> <== NOT EXECUTED
break;
473a4: 588f addql #4,%sp <== NOT EXECUTED
473a6: 60dc bras 47384 <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,
473a8: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
473ac: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED
473b0: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED
473b4: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
473b8: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
473ba: 4eb9 0005 2232 jsr 52232 <pwrite> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
473c0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
473c4: 60be bras 47384 <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);
473c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
473c8: 2045 moveal %d5,%a0 <== NOT EXECUTED
473ca: 4e90 jsr %a0@ <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
473cc: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
473d2: 4eb9 0004 80d8 jsr 480d8 <pthread_mutex_lock> <== NOT EXECUTED
if (rtems_chain_is_empty (chain))
473d8: 508f addql #8,%sp <== NOT EXECUTED
473da: b5ec 0008 cmpal %a4@(8),%a2 <== NOT EXECUTED
473de: 6600 fee6 bnew 472c6 <rtems_aio_handle+0x32> <== NOT EXECUTED
{
clock_gettime (CLOCK_REALTIME, &timeout);
473e2: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
473e6: 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);
473e8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
473ec: 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);
473f2: 4eb9 0004 7a30 jsr 47a30 <clock_gettime> <== NOT EXECUTED
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
473f8: 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;
473fc: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
47400: 4879 0006 2d98 pea 62d98 <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;
47406: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
result = pthread_cond_timedwait (&r_chain->cond,
4740a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4740c: 4eb9 0004 7cdc jsr 47cdc <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) {
47412: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
47416: 7274 moveq #116,%d1 <== NOT EXECUTED
47418: b280 cmpl %d0,%d1 <== NOT EXECUTED
4741a: 6600 feaa bnew 472c6 <rtems_aio_handle+0x32> <== NOT EXECUTED
4741e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47420: 2046 moveal %d6,%a0 <== NOT EXECUTED
47422: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
pthread_mutex_destroy (&r_chain->mutex);
47424: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47426: 4eb9 0004 7e24 jsr 47e24 <pthread_mutex_destroy> <== NOT EXECUTED
pthread_cond_destroy (&r_chain->cond);
4742c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4742e: 4eb9 0004 7ab0 jsr 47ab0 <pthread_cond_destroy> <== NOT EXECUTED
free (r_chain);
47434: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47436: 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)) {
4743c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47440: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED
47446: b0b9 0006 2dec cmpl 62dec <aio_request_queue+0x54>,%d0 <== NOT EXECUTED
4744c: 6710 beqs 4745e <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);
4744e: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
47454: 2045 moveal %d5,%a0 <== NOT EXECUTED
47456: 4e90 jsr %a0@ <== NOT EXECUTED
47458: 588f addql #4,%sp <== NOT EXECUTED
4745a: 6000 fe6a braw 472c6 <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);
4745e: 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;
47462: 52b9 0006 2e00 addql #1,62e00 <aio_request_queue+0x68> <== NOT EXECUTED
clock_gettime (CLOCK_REALTIME, &timeout);
47468: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4746c: 4eb9 0004 7a30 jsr 47a30 <clock_gettime> <== NOT EXECUTED
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&aio_request_queue.new_req,
47472: 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;
47476: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&aio_request_queue.new_req,
4747a: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
47480: 4879 0006 2d9c pea 62d9c <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;
47486: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
result = pthread_cond_timedwait (&aio_request_queue.new_req,
4748a: 4eb9 0004 7cdc jsr 47cdc <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) {
47490: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
47494: 7274 moveq #116,%d1 <== NOT EXECUTED
47496: b280 cmpl %d0,%d1 <== NOT EXECUTED
47498: 6700 0084 beqw 4751e <rtems_aio_handle+0x28a> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4749c: 2479 0006 2dec moveal 62dec <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;
474a2: 53b9 0006 2e00 subql #1,62e00 <aio_request_queue+0x68> <== NOT EXECUTED
474a8: 2046 moveal %d6,%a0 <== NOT EXECUTED
474aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
474ac: 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,
474ae: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
474b2: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
474b6: 4879 0006 2de0 pea 62de0 <aio_request_queue+0x48> <== NOT EXECUTED
474bc: 4eb9 0004 71d6 jsr 471d6 <rtems_aio_search_fd> <== NOT EXECUTED
474c2: 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);
474c4: 2400 movel %d0,%d2 <== NOT EXECUTED
474c6: 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;
474cc: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
474d0: 42a7 clrl %sp@- <== NOT EXECUTED
474d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474d4: 4eb9 0004 7f98 jsr 47f98 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
474da: 42a7 clrl %sp@- <== NOT EXECUTED
474dc: 486c 0020 pea %a4@(32) <== NOT EXECUTED
474e0: 4eb9 0004 7ba0 jsr 47ba0 <pthread_cond_init> <== NOT EXECUTED
r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd;
474e6: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
474ea: 4878 000c pea c <OPER1> <== NOT EXECUTED
474ee: 486a 0008 pea %a2@(8) <== NOT EXECUTED
474f2: 486c 0008 pea %a4@(8) <== NOT EXECUTED
474f6: 4eb9 0005 1ff0 jsr 51ff0 <memcpy> <== NOT EXECUTED
474fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47500: 6000 fdc4 braw 472c6 <rtems_aio_handle+0x32> <== NOT EXECUTED
break;
default:
result = -1;
}
if (result == -1) {
47504: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED
req->aiocbp->return_value = -1;
47508: 70ff moveq #-1,%d0 <== NOT EXECUTED
4750a: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED
req->aiocbp->error_code = errno;
4750e: 4eb9 0005 16c4 jsr 516c4 <__errno> <== NOT EXECUTED
47514: 2040 moveal %d0,%a0 <== NOT EXECUTED
47516: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED
4751a: 6000 fe34 braw 47350 <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);
4751e: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
47524: 4eb9 0004 8174 jsr 48174 <pthread_mutex_unlock> <== NOT EXECUTED
return NULL;
4752a: 588f addql #4,%sp <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4752c: 4280 clrl %d0 <== NOT EXECUTED
4752e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
47534: 4e5e unlk %fp <== NOT EXECUTED
00047058 <rtems_aio_init>:
* 0 - if initialization succeeded
*/
int
rtems_aio_init (void)
{
47058: 4e56 0000 linkw %fp,#0
4705c: 2f02 movel %d2,%sp@-
int result = 0;
result = pthread_attr_init (&aio_request_queue.attr);
4705e: 4879 0006 2da0 pea 62da0 <aio_request_queue+0x8>
47064: 4eb9 0004 829c jsr 4829c <pthread_attr_init>
if (result != 0)
4706a: 588f addql #4,%sp
int
rtems_aio_init (void)
{
int result = 0;
result = pthread_attr_init (&aio_request_queue.attr);
4706c: 2400 movel %d0,%d2
if (result != 0)
4706e: 670a beqs 4707a <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;
}
47070: 2002 movel %d2,%d0 <== NOT EXECUTED
47072: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47076: 4e5e unlk %fp <== NOT EXECUTED
47078: 4e75 rts <== NOT EXECUTED
result = pthread_attr_init (&aio_request_queue.attr);
if (result != 0)
return result;
result =
4707a: 42a7 clrl %sp@-
4707c: 4879 0006 2da0 pea 62da0 <aio_request_queue+0x8>
47082: 4eb9 0004 82c8 jsr 482c8 <pthread_attr_setdetachstate>
pthread_attr_setdetachstate (&aio_request_queue.attr,
PTHREAD_CREATE_DETACHED);
if (result != 0)
47088: 508f addql #8,%sp
4708a: 4a80 tstl %d0
4708c: 6600 0122 bnew 471b0 <rtems_aio_init+0x158>
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
47090: 42a7 clrl %sp@-
47092: 4879 0006 2d98 pea 62d98 <aio_request_queue>
47098: 4eb9 0004 7f98 jsr 47f98 <pthread_mutex_init>
if (result != 0)
4709e: 508f addql #8,%sp
470a0: 4a80 tstl %d0
470a2: 6600 00e4 bnew 47188 <rtems_aio_init+0x130>
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
470a6: 42a7 clrl %sp@-
470a8: 4879 0006 2d9c pea 62d9c <aio_request_queue+0x4>
470ae: 4eb9 0004 7ba0 jsr 47ba0 <pthread_cond_init>
if (result != 0) {
470b4: 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);
470b6: 2400 movel %d0,%d2
if (result != 0) {
470b8: 665e bnes 47118 <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;
470ba: 42b9 0006 2de4 clrl 62de4 <aio_request_queue+0x4c>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
470c0: 203c 0006 2de4 movel #404964,%d0
470c6: 23c0 0006 2de0 movel %d0,62de0 <aio_request_queue+0x48>
head->previous = NULL;
tail->previous = head;
470cc: 203c 0006 2de0 movel #404960,%d0
470d2: 23c0 0006 2de8 movel %d0,62de8 <aio_request_queue+0x50>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
470d8: 203c 0006 2df0 movel #404976,%d0
470de: 23c0 0006 2dec movel %d0,62dec <aio_request_queue+0x54>
head->previous = NULL;
tail->previous = head;
470e4: 203c 0006 2dec movel #404972,%d0
470ea: 23c0 0006 2df4 movel %d0,62df4 <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;
470f0: 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;
470f6: 42b9 0006 2df0 clrl 62df0 <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;
470fc: 42b9 0006 2dfc clrl 62dfc <aio_request_queue+0x64>
aio_request_queue.idle_threads = 0;
47102: 42b9 0006 2e00 clrl 62e00 <aio_request_queue+0x68>
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
47108: 23c0 0006 2df8 movel %d0,62df8 <aio_request_queue+0x60>
return result;
}
4710e: 2002 movel %d2,%d0
47110: 242e fffc movel %fp@(-4),%d2
47114: 4e5e unlk %fp
47116: 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);
47118: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
4711e: 4eb9 0004 7e24 jsr 47e24 <pthread_mutex_destroy> <== NOT EXECUTED
pthread_attr_destroy (&aio_request_queue.attr);
47124: 4879 0006 2da0 pea 62da0 <aio_request_queue+0x8> <== NOT EXECUTED
4712a: 4eb9 0004 827c jsr 4827c <pthread_attr_destroy> <== NOT EXECUTED
47130: 508f addql #8,%sp <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
47132: 203c 0006 2de4 movel #404964,%d0 <== NOT EXECUTED
47138: 23c0 0006 2de0 movel %d0,62de0 <aio_request_queue+0x48> <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
4713e: 203c 0006 2de0 movel #404960,%d0 <== NOT EXECUTED
47144: 23c0 0006 2de8 movel %d0,62de8 <aio_request_queue+0x50> <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4714a: 203c 0006 2df0 movel #404976,%d0 <== NOT EXECUTED
47150: 23c0 0006 2dec movel %d0,62dec <aio_request_queue+0x54> <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
47156: 203c 0006 2dec movel #404972,%d0 <== NOT EXECUTED
4715c: 23c0 0006 2df4 movel %d0,62df4 <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;
47162: 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;
47168: 42b9 0006 2de4 clrl 62de4 <aio_request_queue+0x4c> <== NOT EXECUTED
4716e: 42b9 0006 2df0 clrl 62df0 <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;
47174: 42b9 0006 2dfc clrl 62dfc <aio_request_queue+0x64> <== NOT EXECUTED
aio_request_queue.idle_threads = 0;
4717a: 42b9 0006 2e00 clrl 62e00 <aio_request_queue+0x68> <== NOT EXECUTED
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
47180: 23c0 0006 2df8 movel %d0,62df8 <aio_request_queue+0x60> <== NOT EXECUTED
47186: 6086 bras 4710e <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);
47188: 4879 0006 2da0 pea 62da0 <aio_request_queue+0x8> <== NOT EXECUTED
4718e: 4eb9 0004 827c jsr 4827c <pthread_attr_destroy> <== NOT EXECUTED
47194: 588f addql #4,%sp <== NOT EXECUTED
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
47196: 42a7 clrl %sp@- <== NOT EXECUTED
47198: 4879 0006 2d9c pea 62d9c <aio_request_queue+0x4> <== NOT EXECUTED
4719e: 4eb9 0004 7ba0 jsr 47ba0 <pthread_cond_init> <== NOT EXECUTED
if (result != 0) {
471a4: 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);
471a6: 2400 movel %d0,%d2 <== NOT EXECUTED
if (result != 0) {
471a8: 6700 ff10 beqw 470ba <rtems_aio_init+0x62> <== NOT EXECUTED
471ac: 6000 ff6a braw 47118 <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);
471b0: 4879 0006 2da0 pea 62da0 <aio_request_queue+0x8> <== NOT EXECUTED
471b6: 4eb9 0004 827c jsr 4827c <pthread_attr_destroy> <== NOT EXECUTED
471bc: 588f addql #4,%sp <== NOT EXECUTED
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
471be: 42a7 clrl %sp@- <== NOT EXECUTED
471c0: 4879 0006 2d98 pea 62d98 <aio_request_queue> <== NOT EXECUTED
471c6: 4eb9 0004 7f98 jsr 47f98 <pthread_mutex_init> <== NOT EXECUTED
if (result != 0)
471cc: 508f addql #8,%sp <== NOT EXECUTED
471ce: 4a80 tstl %d0 <== NOT EXECUTED
471d0: 6700 fed4 beqw 470a6 <rtems_aio_init+0x4e> <== NOT EXECUTED
471d4: 60b2 bras 47188 <rtems_aio_init+0x130> <== NOT EXECUTED
00047538 <rtems_aio_insert_prio>:
* NONE
*/
void
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{
47538: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4753c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
47540: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47544: 2640 moveal %d0,%a3 <== NOT EXECUTED
* NONE
*/
void
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{
47546: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4754a: 225b moveal %a3@+,%a1 <== NOT EXECUTED
rtems_chain_node *node;
AIO_printf ("FD exists \n");
node = rtems_chain_first (chain);
if (rtems_chain_is_empty (chain)) {
4754c: b7c9 cmpal %a1,%a3 <== NOT EXECUTED
4754e: 6730 beqs 47580 <rtems_aio_insert_prio+0x48> <== 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 &&
47550: 246c 0014 moveal %a4@(20),%a2 <== 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;
47554: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
while (req->aiocbp->aio_reqprio > prio &&
47558: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4755c: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
47560: 6f2a bles 4758c <rtems_aio_insert_prio+0x54> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47562: 2051 moveal %a1@,%a0 <== 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 &&
47564: 2248 moveal %a0,%a1 <== NOT EXECUTED
!rtems_chain_is_tail (chain, node)) {
node = rtems_chain_next (node);
prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
47566: 2468 0014 moveal %a0@(20),%a2 <== 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 &&
4756a: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4756e: 6f06 bles 47576 <rtems_aio_insert_prio+0x3e> <== NOT EXECUTED
47570: b7c8 cmpal %a0,%a3 <== NOT EXECUTED
47572: 66ee bnes 47562 <rtems_aio_insert_prio+0x2a> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47574: 204b moveal %a3,%a0 <== 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 );
47576: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED
4757a: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED
}
rtems_chain_insert (node->previous, &req->next_prio);
}
}
47580: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED
47584: 4e5e unlk %fp <== NOT EXECUTED
47586: 4ef9 0004 9d8c jmp 49d8c <_Chain_Insert> <== 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 &&
4758c: 2049 moveal %a1,%a0 <== NOT EXECUTED
4758e: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED
47592: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED
47598: 60e6 bras 47580 <rtems_aio_insert_prio+0x48> <== NOT EXECUTED
0004759a <rtems_aio_remove_fd>:
* Output parameters:
* NONE
*/
void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain)
{
4759a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4759e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
475a2: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%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));
475a6: 2608 movel %a0,%d3 <== NOT EXECUTED
475a8: 0683 0000 000c addil #12,%d3 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
475ae: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
rtems_chain_control *chain;
rtems_chain_node *node;
chain = &r_chain->perfd;
node = rtems_chain_first (chain);
while (!rtems_chain_is_tail (chain, node))
475b2: b68a cmpl %a2,%d3 <== NOT EXECUTED
475b4: 6732 beqs 475e8 <rtems_aio_remove_fd+0x4e> <== NOT EXECUTED
475b6: 49f9 0004 9d28 lea 49d28 <_Chain_Extract>,%a4 <== NOT EXECUTED
475bc: 47f9 0004 3978 lea 43978 <free>,%a3 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
475c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
475c4: 4e94 jsr %a4@ <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
475c6: 2412 movel %a2@,%d2 <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
node = rtems_chain_next (node);
req->aiocbp->error_code = ECANCELED;
475c8: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED
475ce: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
475d2: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
req->aiocbp->return_value = -1;
475d6: 70ff moveq #-1,%d0 <== NOT EXECUTED
475d8: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
free (req);
475dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
node = rtems_chain_next (node);
475de: 2442 moveal %d2,%a2 <== NOT EXECUTED
req->aiocbp->error_code = ECANCELED;
req->aiocbp->return_value = -1;
free (req);
475e0: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_chain_control *chain;
rtems_chain_node *node;
chain = &r_chain->perfd;
node = rtems_chain_first (chain);
while (!rtems_chain_is_tail (chain, node))
475e2: 508f addql #8,%sp <== NOT EXECUTED
475e4: b682 cmpl %d2,%d3 <== NOT EXECUTED
475e6: 66da bnes 475c2 <rtems_aio_remove_fd+0x28> <== NOT EXECUTED
node = rtems_chain_next (node);
req->aiocbp->error_code = ECANCELED;
req->aiocbp->return_value = -1;
free (req);
}
}
475e8: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
475ee: 4e5e unlk %fp <== NOT EXECUTED
000475f2 <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)
{
475f2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
475f6: 226e 0008 moveal %fp@(8),%a1 <== 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)
{
475fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
475fc: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47600: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
* AIO_CANCELED - if request was canceled
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
if (rtems_chain_is_empty (chain))
47602: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
47604: 675c beqs 47662 <rtems_aio_remove_req+0x70> <== NOT EXECUTED
return AIO_ALLDONE;
rtems_chain_node *node = rtems_chain_first (chain);
rtems_aio_request *current;
current = (rtems_aio_request *) node;
47606: 2448 moveal %a0,%a2 <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
47608: b2a8 0014 cmpl %a0@(20),%d1 <== NOT EXECUTED
4760c: 6722 beqs 47630 <rtems_aio_remove_req+0x3e> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4760e: 2010 movel %a0@,%d0 <== NOT EXECUTED
current = (rtems_aio_request *) node;
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
node = rtems_chain_next (node);
current = (rtems_aio_request *) node;
47610: 2440 moveal %d0,%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) {
47612: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
47614: 6710 beqs 47626 <rtems_aio_remove_req+0x34> <== NOT EXECUTED
47616: b2aa 0014 cmpl %a2@(20),%d1 <== NOT EXECUTED
4761a: 6716 beqs 47632 <rtems_aio_remove_req+0x40> <== NOT EXECUTED
4761c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4761e: 2010 movel %a0@,%d0 <== NOT EXECUTED
current = (rtems_aio_request *) node;
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
node = rtems_chain_next (node);
current = (rtems_aio_request *) node;
47620: 2440 moveal %d0,%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) {
47622: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
47624: 66f0 bnes 47616 <rtems_aio_remove_req+0x24> <== NOT EXECUTED
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
}
47626: 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;
4762a: 7001 moveq #1,%d0 <== NOT EXECUTED
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
}
4762c: 4e5e unlk %fp <== NOT EXECUTED
4762e: 4e75 rts <== 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) {
47630: 2008 movel %a0,%d0 <== NOT EXECUTED
47632: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47634: 4eb9 0004 9d28 jsr 49d28 <_Chain_Extract> <== NOT EXECUTED
if (rtems_chain_is_tail (chain, node))
return AIO_NOTCANCELED;
else
{
rtems_chain_extract (node);
current->aiocbp->error_code = ECANCELED;
4763a: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
4763e: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED
47644: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
current->aiocbp->return_value = -1;
47648: 70ff moveq #-1,%d0 <== NOT EXECUTED
4764a: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
free (current);
4764e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47650: 4eb9 0004 3978 jsr 43978 <free> <== NOT EXECUTED
}
return AIO_CANCELED;
}
47656: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
current->aiocbp->error_code = ECANCELED;
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
4765a: 508f addql #8,%sp <== NOT EXECUTED
4765c: 4280 clrl %d0 <== NOT EXECUTED
}
4765e: 4e5e unlk %fp <== NOT EXECUTED
47660: 4e75 rts <== NOT EXECUTED
47662: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
if (rtems_chain_is_empty (chain))
return AIO_ALLDONE;
47666: 7002 moveq #2,%d0 <== NOT EXECUTED
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
}
47668: 4e5e unlk %fp <== NOT EXECUTED
000471d6 <rtems_aio_search_fd>:
*
*/
rtems_aio_request_chain *
rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create)
{
471d6: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
471da: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
471de: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
471e2: 2852 moveal %a2@,%a4 <== NOT EXECUTED
*
*/
rtems_aio_request_chain *
rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create)
{
471e4: 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)) {
471e8: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED
471ec: b082 cmpl %d2,%d0 <== NOT EXECUTED
471ee: 6c12 bges 47202 <rtems_aio_search_fd+0x2c> <== 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));
471f0: 220a movel %a2,%d1 <== NOT EXECUTED
471f2: 5881 addql #4,%d1 <== NOT EXECUTED
471f4: b28c cmpl %a4,%d1 <== NOT EXECUTED
471f6: 6720 beqs 47218 <rtems_aio_search_fd+0x42> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
471f8: 2854 moveal %a4@,%a4 <== 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)) {
471fa: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED
471fe: b480 cmpl %d0,%d2 <== NOT EXECUTED
47200: 6ef2 bgts 471f4 <rtems_aio_search_fd+0x1e> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
47202: 264c moveal %a4,%a3 <== NOT EXECUTED
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
node = rtems_chain_next (node);
r_chain = (rtems_aio_request_chain *) node;
}
if (r_chain->fildes == fildes)
47204: b082 cmpl %d2,%d0 <== NOT EXECUTED
47206: 6612 bnes 4721a <rtems_aio_search_fd+0x44> <== NOT EXECUTED
r_chain->new_fd = 1;
r_chain->fildes = fildes;
}
}
return r_chain;
}
47208: 200c movel %a4,%d0 <== NOT EXECUTED
node = rtems_chain_next (node);
r_chain = (rtems_aio_request_chain *) node;
}
if (r_chain->fildes == fildes)
r_chain->new_fd = 0;
4720a: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED
r_chain->new_fd = 1;
r_chain->fildes = fildes;
}
}
return r_chain;
}
4720e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
47214: 4e5e unlk %fp <== NOT EXECUTED
47216: 4e75 rts <== 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)) {
47218: 264c moveal %a4,%a3 <== NOT EXECUTED
}
if (r_chain->fildes == fildes)
r_chain->new_fd = 0;
else {
if (create == 0)
4721a: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
4721e: 660e bnes 4722e <rtems_aio_search_fd+0x58> <== NOT EXECUTED
r_chain = NULL;
47220: 99cc subal %a4,%a4 <== NOT EXECUTED
r_chain->new_fd = 1;
r_chain->fildes = fildes;
}
}
return r_chain;
}
47222: 200c movel %a4,%d0 <== NOT EXECUTED
47224: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4722a: 4e5e unlk %fp <== NOT EXECUTED
4722c: 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));
4722e: 4878 0024 pea 24 <OPER2+0x10> <== NOT EXECUTED
47232: 4eb9 0004 3f84 jsr 43f84 <malloc> <== NOT EXECUTED
rtems_chain_initialize_empty (&r_chain->perfd);
if (rtems_chain_is_empty (chain))
47238: 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));
4723a: 2a40 moveal %d0,%a5 <== NOT EXECUTED
4723c: 2840 moveal %d0,%a4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4723e: 5080 addql #8,%d0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
47240: 41ed 000c lea %a5@(12),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47244: 2b40 0010 movel %d0,%a5@(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 );
47248: 200a movel %a2,%d0 <== NOT EXECUTED
4724a: 5880 addql #4,%d0 <== 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 );
4724c: 2b48 0008 movel %a0,%a5@(8) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
47250: 42ad 000c clrl %a5@(12) <== NOT EXECUTED
rtems_chain_initialize_empty (&r_chain->perfd);
if (rtems_chain_is_empty (chain))
47254: b092 cmpl %a2@,%d0 <== NOT EXECUTED
47256: 6724 beqs 4727c <rtems_aio_search_fd+0xa6> <== 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 );
47258: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4725a: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED
4725e: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED
47264: 508f addql #8,%sp <== 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;
47266: 7001 moveq #1,%d0 <== NOT EXECUTED
r_chain->fildes = fildes;
47268: 2b42 0014 movel %d2,%a5@(20) <== 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;
4726c: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED
r_chain->fildes = fildes;
}
}
return r_chain;
}
47270: 200c movel %a4,%d0 <== NOT EXECUTED
47272: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
47278: 4e5e unlk %fp <== NOT EXECUTED
4727a: 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);
4727c: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4727e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47280: 4eb9 0004 9d8c jsr 49d8c <_Chain_Insert> <== NOT EXECUTED
47286: 508f addql #8,%sp <== 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;
47288: 7001 moveq #1,%d0 <== NOT EXECUTED
r_chain->fildes = fildes;
4728a: 2b42 0014 movel %d2,%a5@(20) <== 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;
4728e: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED
47292: 60dc bras 47270 <rtems_aio_search_fd+0x9a> <== 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
0004ad68 <rtems_assoc_local_by_remote>:
uint32_t rtems_assoc_local_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4ad68: 4e56 0000 linkw %fp,#0
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4ad6c: 2f2e 000c movel %fp@(12),%sp@-
4ad70: 2f2e 0008 movel %fp@(8),%sp@-
4ad74: 4eb9 0004 ae30 jsr 4ae30 <rtems_assoc_ptr_by_remote>
if (nap)
4ad7a: 508f addql #8,%sp
4ad7c: 4a80 tstl %d0
4ad7e: 670a beqs 4ad8a <rtems_assoc_local_by_remote+0x22><== NEVER TAKEN
return nap->local_value;
4ad80: 2040 moveal %d0,%a0
return 0;
}
4ad82: 4e5e unlk %fp
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
4ad84: 2028 0004 movel %a0@(4),%d0
return 0;
}
4ad88: 4e75 rts
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
return 0;
4ad8a: 4280 clrl %d0 <== NOT EXECUTED
}
4ad8c: 4e5e unlk %fp <== NOT EXECUTED
0004dee4 <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4dee4: 4e56 ffe8 linkw %fp,#-24
4dee8: 48d7 047c moveml %d2-%d6/%a2,%sp@
4deec: 2c2e 0008 movel %fp@(8),%d6
4def0: 7620 moveq #32,%d3
uint32_t b;
uint32_t local_value = 0;
4def2: 4285 clrl %d5
for (b = 1; b; b <<= 1) {
4def4: 7401 moveq #1,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4def6: 45f9 0004 ad68 lea 4ad68 <rtems_assoc_local_by_remote>,%a2
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4defc: 282e 000c movel %fp@(12),%d4
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
if (b & remote_value)
4df00: 2002 movel %d2,%d0
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df02: 5383 subql #1,%d3
if (b & remote_value)
4df04: c084 andl %d4,%d0
4df06: 6612 bnes 4df1a <rtems_assoc_local_by_remote_bitfield+0x36>
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df08: d482 addl %d2,%d2
4df0a: 4a83 tstl %d3
4df0c: 66f2 bnes 4df00 <rtems_assoc_local_by_remote_bitfield+0x1c>
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
}
return local_value;
}
4df0e: 2005 movel %d5,%d0
4df10: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4df16: 4e5e unlk %fp
4df18: 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);
4df1a: 2f02 movel %d2,%sp@-
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df1c: d482 addl %d2,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4df1e: 2f06 movel %d6,%sp@-
4df20: 4e92 jsr %a2@
4df22: 508f addql #8,%sp
4df24: 8a80 orl %d0,%d5
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4df26: 4a83 tstl %d3
4df28: 66d6 bnes 4df00 <rtems_assoc_local_by_remote_bitfield+0x1c><== ALWAYS TAKEN
4df2a: 60e2 bras 4df0e <rtems_assoc_local_by_remote_bitfield+0x2a><== NOT EXECUTED
0004df2c <rtems_assoc_name_bad>:
uint32_t bad_value
#else
uint32_t bad_value __attribute((unused))
#endif
)
{
4df2c: 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;
}
4df30: 203c 0005 e5cc movel #386508,%d0 <== NOT EXECUTED
4df36: 4e5e unlk %fp <== NOT EXECUTED
...
0004ad90 <rtems_assoc_name_by_local>:
const char *rtems_assoc_name_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4ad90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ad94: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ad96: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
4ad9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ad9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4ada0: 4eb9 0004 adc8 jsr 4adc8 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
4ada6: 508f addql #8,%sp <== NOT EXECUTED
4ada8: 4a80 tstl %d0 <== NOT EXECUTED
4adaa: 670c beqs 4adb8 <rtems_assoc_name_by_local+0x28> <== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(local_value);
}
4adac: 2040 moveal %d0,%a0 <== NOT EXECUTED
4adae: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4adb2: 4e5e unlk %fp <== NOT EXECUTED
4adb4: 2010 movel %a0@,%d0 <== NOT EXECUTED
4adb6: 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);
4adb8: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
4adbc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4adc0: 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);
4adc2: 4ef9 0004 df2c jmp 4df2c <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 057c lea 5057c <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43560: 4bf9 0005 0b40 lea 50b40 <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 bd2c jmp 4bd2c <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 057c lea 5057c <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43614: 4bf9 0005 0b40 lea 50b40 <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
...
0004adc8 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4adc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4adcc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4adce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4add2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4add4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4add8: 2012 movel %a2@,%d0 <== NOT EXECUTED
4adda: 6742 beqs 4ae1e <rtems_assoc_ptr_by_local+0x56> <== NOT EXECUTED
4addc: 4879 0005 d742 pea 5d742 <IMFS_memfile_handlers+0x38> <== NOT EXECUTED
4ade2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ade4: 4eb9 0004 f7e4 jsr 4f7e4 <strcmp> <== NOT EXECUTED
4adea: 508f addql #8,%sp <== NOT EXECUTED
4adec: 4a80 tstl %d0 <== NOT EXECUTED
4adee: 662a bnes 4ae1a <rtems_assoc_ptr_by_local+0x52> <== NOT EXECUTED
default_ap = ap++;
4adf0: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4adf4: 4a90 tstl %a0@ <== NOT EXECUTED
4adf6: 6714 beqs 4ae0c <rtems_assoc_ptr_by_local+0x44> <== NOT EXECUTED
4adf8: 200a movel %a2,%d0 <== NOT EXECUTED
4adfa: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
4adfc: b4aa 0004 cmpl %a2@(4),%d2 <== NOT EXECUTED
4ae00: 670a beqs 4ae0c <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++)
4ae02: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED
4ae06: 4a92 tstl %a2@ <== NOT EXECUTED
4ae08: 66f2 bnes 4adfc <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED
4ae0a: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ae0c: 200a movel %a2,%d0 <== NOT EXECUTED
4ae0e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ae12: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ae16: 4e5e unlk %fp <== NOT EXECUTED
4ae18: 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;
4ae1a: 4280 clrl %d0 <== NOT EXECUTED
4ae1c: 60de bras 4adfc <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED
4ae1e: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ae20: 200a movel %a2,%d0 <== NOT EXECUTED
4ae22: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ae26: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ae2a: 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 deb3 pea 5deb3 <_rodata_start+0x603> <== NOT EXECUTED
4372e: 47f9 0005 05e8 lea 505e8 <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
...
0004ae30 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4ae30: 4e56 0000 linkw %fp,#0
4ae34: 2f0a movel %a2,%sp@-
4ae36: 246e 0008 moveal %fp@(8),%a2
4ae3a: 2f02 movel %d2,%sp@-
4ae3c: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4ae40: 2012 movel %a2@,%d0
4ae42: 6742 beqs 4ae86 <rtems_assoc_ptr_by_remote+0x56> <== NEVER TAKEN
4ae44: 4879 0005 d742 pea 5d742 <IMFS_memfile_handlers+0x38>
4ae4a: 2f00 movel %d0,%sp@-
4ae4c: 4eb9 0004 f7e4 jsr 4f7e4 <strcmp>
4ae52: 508f addql #8,%sp
4ae54: 4a80 tstl %d0
4ae56: 662a bnes 4ae82 <rtems_assoc_ptr_by_remote+0x52> <== ALWAYS TAKEN
default_ap = ap++;
4ae58: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4ae5c: 4a90 tstl %a0@ <== NOT EXECUTED
4ae5e: 6714 beqs 4ae74 <rtems_assoc_ptr_by_remote+0x44> <== NOT EXECUTED
4ae60: 200a movel %a2,%d0 <== NOT EXECUTED
4ae62: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
4ae64: b4aa 0008 cmpl %a2@(8),%d2
4ae68: 670a beqs 4ae74 <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++)
4ae6a: 45ea 000c lea %a2@(12),%a2
4ae6e: 4a92 tstl %a2@
4ae70: 66f2 bnes 4ae64 <rtems_assoc_ptr_by_remote+0x34> <== ALWAYS TAKEN
4ae72: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4ae74: 200a movel %a2,%d0
4ae76: 242e fff8 movel %fp@(-8),%d2
4ae7a: 246e fffc moveal %fp@(-4),%a2
4ae7e: 4e5e unlk %fp
4ae80: 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;
4ae82: 4280 clrl %d0
4ae84: 60de bras 4ae64 <rtems_assoc_ptr_by_remote+0x34>
4ae86: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4ae88: 200a movel %a2,%d0 <== NOT EXECUTED
4ae8a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ae8e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ae92: 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
0004edb4 <rtems_barrier_create>:
rtems_name name,
rtems_attribute attribute_set,
uint32_t maximum_waiters,
rtems_id *id
)
{
4edb4: 4e56 ffe8 linkw %fp,#-24
4edb8: 202e 0010 movel %fp@(16),%d0
4edbc: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4edc0: 242e 0008 movel %fp@(8),%d2
4edc4: 262e 000c movel %fp@(12),%d3
4edc8: 246e 0014 moveal %fp@(20),%a2
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
4edcc: 4a82 tstl %d2
4edce: 677a beqs 4ee4a <rtems_barrier_create+0x96> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
4edd0: 4a8a tstl %a2
4edd2: 6700 00cc beqw 4eea0 <rtems_barrier_create+0xec>
return RTEMS_INVALID_ADDRESS;
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
4edd6: 0803 0004 btst #4,%d3
4edda: 677a beqs 4ee56 <rtems_barrier_create+0xa2> <== NEVER TAKEN
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
4eddc: 42ae fff8 clrl %fp@(-8)
if ( maximum_waiters == 0 )
4ede0: 4a80 tstl %d0
4ede2: 6700 00b0 beqw 4ee94 <rtems_barrier_create+0xe0>
4ede6: 2239 0006 265c movel 6265c <_Thread_Dispatch_disable_level>,%d1
4edec: 5281 addql #1,%d1
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
the_attributes.maximum_count = maximum_waiters;
4edee: 2d40 fffc movel %d0,%fp@(-4)
4edf2: 23c1 0006 265c movel %d1,6265c <_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 );
4edf8: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information>
4edfe: 4eb9 0004 9c18 jsr 49c18 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4ee04: 588f addql #4,%sp
4ee06: 2640 moveal %d0,%a3
4ee08: 4a80 tstl %d0
4ee0a: 6776 beqs 4ee82 <rtems_barrier_create+0xce> <== NEVER TAKEN
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_barrier->attribute_set = attribute_set;
4ee0c: 2743 0010 movel %d3,%a3@(16)
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
4ee10: 486e fff8 pea %fp@(-8)
4ee14: 486b 0014 pea %a3@(20)
4ee18: 4eb9 0004 f664 jsr 4f664 <_CORE_barrier_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee1e: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee22: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee24: 2079 0006 2ed0 moveal 62ed0 <_Barrier_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee2a: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee2c: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee30: 2742 000c movel %d2,%a3@(12)
&_Barrier_Information,
&the_barrier->Object,
(Objects_Name) name
);
*id = the_barrier->Object.id;
4ee34: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
4ee36: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4ee3c: 508f addql #8,%sp
4ee3e: 4280 clrl %d0
}
4ee40: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3
4ee46: 4e5e unlk %fp
4ee48: 4e75 rts
{
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4ee4a: 7003 moveq #3,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee4c: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4ee52: 4e5e unlk %fp <== NOT EXECUTED
4ee54: 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;
4ee56: 7201 moveq #1,%d1 <== NOT EXECUTED
4ee58: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
4ee5c: 2239 0006 265c movel 6265c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
4ee62: 5281 addql #1,%d1 <== NOT EXECUTED
the_attributes.maximum_count = maximum_waiters;
4ee64: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4ee68: 23c1 0006 265c movel %d1,6265c <_Thread_Dispatch_disable_level><== NOT EXECUTED
4ee6e: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4ee74: 4eb9 0004 9c18 jsr 49c18 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4ee7a: 588f addql #4,%sp <== NOT EXECUTED
4ee7c: 2640 moveal %d0,%a3 <== NOT EXECUTED
4ee7e: 4a80 tstl %d0 <== NOT EXECUTED
4ee80: 668a bnes 4ee0c <rtems_barrier_create+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
4ee82: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4ee88: 7005 moveq #5,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee8a: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4ee90: 4e5e unlk %fp <== NOT EXECUTED
4ee92: 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;
4ee94: 700a moveq #10,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee96: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4ee9c: 4e5e unlk %fp <== NOT EXECUTED
4ee9e: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4eea0: 7009 moveq #9,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4eea2: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4eea8: 4e5e unlk %fp <== NOT EXECUTED
0004eeac <rtems_barrier_delete>:
*/
rtems_status_code rtems_barrier_delete(
rtems_id id
)
{
4eeac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4eeb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4eeb2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4eeb6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4eeba: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4eec0: 4eb9 0004 a0d8 jsr 4a0d8 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4eec6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4eeca: 2440 moveal %d0,%a2 <== NOT EXECUTED
4eecc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4eed0: 6640 bnes 4ef12 <rtems_barrier_delete+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Flush(
4eed2: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4eed6: 42a7 clrl %sp@- <== NOT EXECUTED
4eed8: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4eedc: 4eb9 0004 b390 jsr 4b390 <_Thread_queue_Flush> <== NOT EXECUTED
&the_barrier->Barrier,
NULL,
CORE_BARRIER_WAS_DELETED
);
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
4eee2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4eee4: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4eeea: 4eb9 0004 9ca8 jsr 49ca8 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Barrier_Free (
Barrier_Control *the_barrier
)
{
_Objects_Free( &_Barrier_Information, &the_barrier->Object );
4eef0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4eef2: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4eef8: 4eb9 0004 9f6c jsr 49f6c <_Objects_Free> <== NOT EXECUTED
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4eefe: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef04: 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;
4ef08: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4ef0c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef0e: 4e5e unlk %fp <== NOT EXECUTED
4ef10: 4e75 rts <== NOT EXECUTED
4ef12: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef16: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef18: 4e5e unlk %fp <== NOT EXECUTED
00047324 <rtems_barrier_ident>:
rtems_status_code rtems_barrier_ident(
rtems_name name,
rtems_id *id
)
{
47324: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47328: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4732c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
47332: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47336: 4879 0006 1968 pea 61968 <_Barrier_Information> <== NOT EXECUTED
4733c: 4eb9 0004 9710 jsr 49710 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47342: 41f9 0005 f26e lea 5f26e <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
47348: 4e5e unlk %fp <== NOT EXECUTED
4734a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
0004ef4c <rtems_barrier_release>:
rtems_status_code rtems_barrier_release(
rtems_id id,
uint32_t *released
)
{
4ef4c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4ef50: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ef52: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4ef56: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef58: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
4ef5c: 4a8a tstl %a2 <== NOT EXECUTED
4ef5e: 6754 beqs 4efb4 <rtems_barrier_release+0x68> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4ef60: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ef64: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef66: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4ef6c: 4eb9 0004 a0d8 jsr 4a0d8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4ef72: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ef76: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4ef7a: 662a bnes 4efa6 <rtems_barrier_release+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
4ef7c: 42a7 clrl %sp@- <== NOT EXECUTED
4ef7e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ef80: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef82: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4ef86: 4eb9 0004 f6a0 jsr 4f6a0 <_CORE_barrier_Release> <== NOT EXECUTED
4ef8c: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4ef8e: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef94: 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;
4ef98: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ef9c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef9e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4efa2: 4e5e unlk %fp <== NOT EXECUTED
4efa4: 4e75 rts <== NOT EXECUTED
4efa6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4efaa: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4efac: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4efb0: 4e5e unlk %fp <== NOT EXECUTED
4efb2: 4e75 rts <== NOT EXECUTED
4efb4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
{
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
return RTEMS_INVALID_ADDRESS;
4efb8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4efba: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4efbe: 4e5e unlk %fp <== NOT EXECUTED
...
0004efc4 <rtems_barrier_wait>:
rtems_status_code rtems_barrier_wait(
rtems_id id,
rtems_interval timeout
)
{
4efc4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4efc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4efca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4efce: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4efd2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4efd4: 4879 0006 2eb8 pea 62eb8 <_Barrier_Information> <== NOT EXECUTED
4efda: 4eb9 0004 a0d8 jsr 4a0d8 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4efe0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4efe4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4efe8: 663a bnes 4f024 <rtems_barrier_wait+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
4efea: 42a7 clrl %sp@- <== NOT EXECUTED
4efec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4eff0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4eff2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4eff6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4eff8: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4effc: 4eb9 0004 f6dc jsr 4f6dc <_CORE_barrier_Wait> <== NOT EXECUTED
id,
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
4f002: 4eb9 0004 ac3a jsr 4ac3a <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4f008: 2079 0006 2ae6 moveal 62ae6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4f00e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4f012: 4eb9 0005 0af4 jsr 50af4 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f018: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4f01c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f020: 4e5e unlk %fp <== NOT EXECUTED
4f022: 4e75 rts <== NOT EXECUTED
4f024: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f028: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f02a: 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 0950 movel 60950 <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: 660c bnes 42850 <rtems_bsp_cmdline_get_param+0x20><== NOT EXECUTED
value[0] = '\0';
p = rtems_bsp_cmdline_get_param_raw( name );
if ( !p )
return NULL;
42844: 4280 clrl %d0 <== NOT EXECUTED
copy_string( p, value, length );
return value;
}
42846: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4284c: 4e5e unlk %fp <== NOT EXECUTED
4284e: 4e75 rts <== NOT EXECUTED
const char *p;
if ( !name )
return NULL;
if ( !value )
42850: 4a8a tstl %a2 <== NOT EXECUTED
42852: 67f0 beqs 42844 <rtems_bsp_cmdline_get_param+0x14><== NOT EXECUTED
return NULL;
if ( !length )
42854: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
42858: 67ea beqs 42844 <rtems_bsp_cmdline_get_param+0x14><== NOT EXECUTED
return NULL;
value[0] = '\0';
p = rtems_bsp_cmdline_get_param_raw( name );
4285a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
return NULL;
if ( !length )
return NULL;
value[0] = '\0';
4285c: 4212 clrb %a2@ <== NOT EXECUTED
p = rtems_bsp_cmdline_get_param_raw( name );
4285e: 4eb9 0004 28c0 jsr 428c0 <rtems_bsp_cmdline_get_param_raw> <== NOT EXECUTED
if ( !p )
42864: 588f addql #4,%sp <== NOT EXECUTED
42866: 4a80 tstl %d0 <== NOT EXECUTED
42868: 67da 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; ) {
4286a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4286c: 1210 moveb %a0@,%d1 <== NOT EXECUTED
4286e: 673e beqs 428ae <rtems_bsp_cmdline_get_param+0x7e><== NOT EXECUTED
42870: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
42874: 5384 subql #1,%d4 <== NOT EXECUTED
42876: 6736 beqs 428ae <rtems_bsp_cmdline_get_param+0x7e><== NOT EXECUTED
value[i] = '\0';
}
}
const char *rtems_bsp_cmdline_get_param(
42878: 2240 moveal %d0,%a1 <== NOT EXECUTED
4287a: 47ea 0001 lea %a2@(1),%a3 <== NOT EXECUTED
4287e: 5289 addql #1,%a1 <== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42880: 91c8 subal %a0,%a0 <== NOT EXECUTED
value[i] = '\0';
}
}
const char *rtems_bsp_cmdline_get_param(
42882: 4280 clrl %d0 <== NOT EXECUTED
42884: 4283 clrl %d3 <== NOT EXECUTED
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
42886: 7a22 moveq #34,%d5 <== NOT EXECUTED
42888: 1401 moveb %d1,%d2 <== NOT EXECUTED
4288a: 49c2 extbl %d2 <== NOT EXECUTED
4288c: ba82 cmpl %d2,%d5 <== NOT EXECUTED
4288e: 672a beqs 428ba <rtems_bsp_cmdline_get_param+0x8a><== NOT EXECUTED
quotes++;
} else if ( ((quotes % 2) == 0) && *p == ' ' )
42890: 0803 0000 btst #0,%d3 <== NOT EXECUTED
42894: 6606 bnes 4289c <rtems_bsp_cmdline_get_param+0x6c><== NOT EXECUTED
42896: 7a20 moveq #32,%d5 <== NOT EXECUTED
42898: ba82 cmpl %d2,%d5 <== NOT EXECUTED
4289a: 6712 beqs 428ae <rtems_bsp_cmdline_get_param+0x7e><== NOT EXECUTED
break;
value[i++] = *p++;
4289c: 5280 addql #1,%d0 <== NOT EXECUTED
4289e: 1581 8800 moveb %d1,%a2@(00000000,%a0:l) <== NOT EXECUTED
value[i] = '\0';
428a2: 421b clrb %a3@+ <== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
428a4: 2040 moveal %d0,%a0 <== NOT EXECUTED
428a6: 1219 moveb %a1@+,%d1 <== NOT EXECUTED
428a8: 6704 beqs 428ae <rtems_bsp_cmdline_get_param+0x7e><== NOT EXECUTED
428aa: b880 cmpl %d0,%d4 <== NOT EXECUTED
428ac: 62d8 bhis 42886 <rtems_bsp_cmdline_get_param+0x56><== NOT EXECUTED
428ae: 200a movel %a2,%d0 <== NOT EXECUTED
return NULL;
copy_string( p, value, length );
return value;
}
428b0: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
428b6: 4e5e unlk %fp <== NOT EXECUTED
428b8: 4e75 rts <== NOT EXECUTED
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
if ( *p == '\"' ) {
quotes++;
428ba: 5283 addql #1,%d3 <== NOT EXECUTED
428bc: 60de bras 4289c <rtems_bsp_cmdline_get_param+0x6c><== 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 0950 movel 60950 <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 08c0 jsr 508c0 <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: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
428f8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
428fc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
428fe: 2f03 movel %d3,%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: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( !p )
4290c: 660c bnes 4291a <rtems_bsp_cmdline_get_param_rhs+0x32><== NOT EXECUTED
return NULL;
rhs = &p[strlen(name)];
if ( *rhs != '=' )
return NULL;
4290e: 4280 clrl %d0 <== NOT EXECUTED
if ( *(d-1) == '\"' )
d--;
*d = '\0';
return value;
}
42910: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
42916: 4e5e unlk %fp <== NOT EXECUTED
42918: 4e75 rts <== NOT EXECUTED
p = rtems_bsp_cmdline_get_param( name, value, length );
if ( !p )
return NULL;
rhs = &p[strlen(name)];
4291a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4291c: 4eb9 0005 0434 jsr 50434 <strlen> <== NOT EXECUTED
42922: 588f addql #4,%sp <== NOT EXECUTED
42924: 2242 moveal %d2,%a1 <== NOT EXECUTED
42926: d3c0 addal %d0,%a1 <== NOT EXECUTED
if ( *rhs != '=' )
42928: 723d moveq #61,%d1 <== NOT EXECUTED
4292a: 1011 moveb %a1@,%d0 <== NOT EXECUTED
4292c: 49c0 extbl %d0 <== NOT EXECUTED
4292e: b280 cmpl %d0,%d1 <== NOT EXECUTED
42930: 66dc bnes 4290e <rtems_bsp_cmdline_get_param_rhs+0x26><== NOT EXECUTED
return NULL;
rhs++;
42932: 5289 addql #1,%a1 <== NOT EXECUTED
if ( *rhs == '\"' )
42934: 7422 moveq #34,%d2 <== NOT EXECUTED
42936: 1011 moveb %a1@,%d0 <== NOT EXECUTED
42938: 1200 moveb %d0,%d1 <== NOT EXECUTED
4293a: 49c1 extbl %d1 <== NOT EXECUTED
4293c: b481 cmpl %d1,%d2 <== NOT EXECUTED
4293e: 6732 beqs 42972 <rtems_bsp_cmdline_get_param_rhs+0x8a><== NOT EXECUTED
rhs++;
for ( d=value ; *rhs ; )
42940: 4a00 tstb %d0 <== NOT EXECUTED
42942: 6734 beqs 42978 <rtems_bsp_cmdline_get_param_rhs+0x90><== NOT EXECUTED
42944: 2044 moveal %d4,%a0 <== NOT EXECUTED
#include <string.h>
#include <rtems/bspcmdline.h>
const char *rtems_bsp_cmdline_get_param_rhs(
42946: 5289 addql #1,%a1 <== NOT EXECUTED
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
42948: 10c0 moveb %d0,%a0@+ <== NOT EXECUTED
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
4294a: 1019 moveb %a1@+,%d0 <== NOT EXECUTED
*d++ = *rhs++;
4294c: 2448 moveal %a0,%a2 <== NOT EXECUTED
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
4294e: 66f8 bnes 42948 <rtems_bsp_cmdline_get_param_rhs+0x60><== NOT EXECUTED
*d++ = *rhs++;
if ( *(d-1) == '\"' )
42950: 204a moveal %a2,%a0 <== NOT EXECUTED
42952: 7222 moveq #34,%d1 <== NOT EXECUTED
42954: 1020 moveb %a0@-,%d0 <== NOT EXECUTED
42956: 49c0 extbl %d0 <== NOT EXECUTED
42958: b280 cmpl %d0,%d1 <== NOT EXECUTED
4295a: 670e beqs 4296a <rtems_bsp_cmdline_get_param_rhs+0x82><== NOT EXECUTED
d--;
*d = '\0';
return value;
4295c: 2004 movel %d4,%d0 <== NOT EXECUTED
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
if ( *(d-1) == '\"' )
d--;
*d = '\0';
4295e: 4212 clrb %a2@ <== NOT EXECUTED
return value;
}
42960: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
42966: 4e5e unlk %fp <== NOT EXECUTED
42968: 4e75 rts <== NOT EXECUTED
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
if ( *(d-1) == '\"' )
4296a: 2448 moveal %a0,%a2 <== NOT EXECUTED
d--;
*d = '\0';
return value;
4296c: 2004 movel %d4,%d0 <== NOT EXECUTED
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
if ( *(d-1) == '\"' )
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: 60c8 bras 42940 <rtems_bsp_cmdline_get_param_rhs+0x58><== NOT EXECUTED
for ( d=value ; *rhs ; )
42978: 2444 moveal %d4,%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: 66d6 bnes 4295c <rtems_bsp_cmdline_get_param_rhs+0x74><== NOT EXECUTED
42986: 60e2 bras 4296a <rtems_bsp_cmdline_get_param_rhs+0x82><== NOT EXECUTED
00047df8 <rtems_build_id>:
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47df8: 7218 moveq #24,%d1 <== NOT EXECUTED
uint32_t api,
uint32_t class,
uint32_t node,
uint32_t index
)
{
47dfa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47dfe: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
47e02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47e04: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47e08: e3aa lsll %d1,%d2 <== NOT EXECUTED
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e0a: 123c 001b moveb #27,%d1 <== NOT EXECUTED
47e0e: e3a8 lsll %d1,%d0 <== NOT EXECUTED
47e10: 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) |
47e14: 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) |
47e16: 4841 swap %d1 <== NOT EXECUTED
47e18: 4241 clrw %d1 <== NOT EXECUTED
return _Objects_Build_id( api, class, node, index );
}
47e1a: 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) |
47e1c: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED
47e20: 4e5e unlk %fp <== NOT EXECUTED
47e22: 8081 orl %d1,%d0 <== NOT EXECUTED
...
00047e28 <rtems_build_name>:
char C1,
char C2,
char C3,
char C4
)
{
47e28: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
47e2c: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED
char C1,
char C2,
char C3,
char C4
)
{
47e30: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
47e34: 142e 000b moveb %fp@(11),%d2 <== NOT EXECUTED
47e38: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED
47e3c: 7818 moveq #24,%d4 <== NOT EXECUTED
47e3e: 49c0 extbl %d0 <== NOT EXECUTED
47e40: 49c2 extbl %d2 <== NOT EXECUTED
47e42: 49c1 extbl %d1 <== NOT EXECUTED
47e44: e9aa lsll %d4,%d2 <== NOT EXECUTED
47e46: 4840 swap %d0 <== NOT EXECUTED
47e48: 4240 clrw %d0 <== NOT EXECUTED
47e4a: e189 lsll #8,%d1 <== NOT EXECUTED
47e4c: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED
47e50: 8082 orl %d2,%d0 <== NOT EXECUTED
47e52: 49c3 extbl %d3 <== NOT EXECUTED
47e54: 8081 orl %d1,%d0 <== NOT EXECUTED
}
47e56: 8083 orl %d3,%d0 <== NOT EXECUTED
47e58: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
47e5c: 4e5e unlk %fp <== NOT EXECUTED
00047010 <rtems_chain_append_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
47010: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47014: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47016: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
4701a: 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 );
4701c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47020: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47024: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
47028: 4eb9 0004 75d4 jsr 475d4 <_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 ) {
4702e: 508f addql #8,%sp <== NOT EXECUTED
47030: 4a00 tstb %d0 <== NOT EXECUTED
47032: 660e bnes 47042 <rtems_chain_append_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47034: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47038: 4280 clrl %d0 <== NOT EXECUTED
4703a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4703e: 4e5e unlk %fp <== NOT EXECUTED
47040: 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 );
47042: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47046: 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 );
4704a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4704e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47052: 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 );
47054: 4ef9 0004 6540 jmp 46540 <rtems_event_send> <== NOT EXECUTED
...
0004705c <rtems_chain_get_with_notification>:
rtems_chain_control *chain,
rtems_id task,
rtems_event_set events,
rtems_chain_node **node
)
{
4705c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47060: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47062: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
47066: 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 );
47068: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4706c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47070: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
47074: 4eb9 0004 7674 jsr 47674 <_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 ) {
4707a: 508f addql #8,%sp <== NOT EXECUTED
4707c: 4a00 tstb %d0 <== NOT EXECUTED
4707e: 660e bnes 4708e <rtems_chain_get_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47080: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47084: 4280 clrl %d0 <== NOT EXECUTED
47086: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4708a: 4e5e unlk %fp <== NOT EXECUTED
4708c: 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 );
4708e: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47092: 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 );
47096: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4709a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4709e: 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 );
470a0: 4ef9 0004 6540 jmp 46540 <rtems_event_send> <== NOT EXECUTED
...
000470a8 <rtems_chain_get_with_wait>:
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
470a8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
470ac: 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(
470b0: 2c0e movel %fp,%d6 <== NOT EXECUTED
470b2: 45f9 0004 76c4 lea 476c4 <_Chain_Get>,%a2 <== NOT EXECUTED
470b8: 5986 subql #4,%d6 <== NOT EXECUTED
470ba: 47f9 0004 6398 lea 46398 <rtems_event_receive>,%a3 <== NOT EXECUTED
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
470c0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
470c4: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
470c8: 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 );
470cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
470ce: 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
470d0: 588f addql #4,%sp <== NOT EXECUTED
470d2: 2400 movel %d0,%d2 <== NOT EXECUTED
470d4: 6622 bnes 470f8 <rtems_chain_get_with_wait+0x50> <== NOT EXECUTED
) {
rtems_event_set out;
sc = rtems_event_receive(
470d6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
470d8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
470da: 42a7 clrl %sp@- <== NOT EXECUTED
470dc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
470de: 4e93 jsr %a3@ <== NOT EXECUTED
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
470e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
470e4: 4a80 tstl %d0 <== NOT EXECUTED
470e6: 67e4 beqs 470cc <rtems_chain_get_with_wait+0x24> <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
470e8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
470ec: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
470ee: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
470f4: 4e5e unlk %fp <== NOT EXECUTED
470f6: 4e75 rts <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
470f8: 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
470fc: 4280 clrl %d0 <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
470fe: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
47100: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
47106: 4e5e unlk %fp <== NOT EXECUTED
...
0004710c <rtems_chain_prepend_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
4710c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47110: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47112: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
47116: 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 );
47118: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4711c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47120: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
47124: 4eb9 0004 7730 jsr 47730 <_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) {
4712a: 508f addql #8,%sp <== NOT EXECUTED
4712c: 4a00 tstb %d0 <== NOT EXECUTED
4712e: 660e bnes 4713e <rtems_chain_prepend_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47130: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47134: 4280 clrl %d0 <== NOT EXECUTED
47136: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4713a: 4e5e unlk %fp <== NOT EXECUTED
4713c: 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 );
4713e: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47142: 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 );
47146: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4714a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4714e: 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 );
47150: 4ef9 0004 6540 jmp 46540 <rtems_event_send> <== NOT EXECUTED
...
00055798 <rtems_clock_get>:
rtems_status_code rtems_clock_get(
rtems_clock_get_options option,
void *time_buffer
)
{
55798: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5579c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
557a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
557a2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if ( !time_buffer )
557a6: 4a8a tstl %a2 <== NOT EXECUTED
557a8: 6748 beqs 557f2 <rtems_clock_get+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
557aa: 4a80 tstl %d0 <== NOT EXECUTED
557ac: 6734 beqs 557e2 <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 )
557ae: 7201 moveq #1,%d1 <== NOT EXECUTED
557b0: b280 cmpl %d0,%d1 <== NOT EXECUTED
557b2: 674a beqs 557fe <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 ) {
557b4: 7202 moveq #2,%d1 <== NOT EXECUTED
557b6: b280 cmpl %d0,%d1 <== NOT EXECUTED
557b8: 6754 beqs 5580e <rtems_clock_get+0x76> <== NOT EXECUTED
*interval = rtems_clock_get_ticks_since_boot();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
557ba: 7203 moveq #3,%d1 <== NOT EXECUTED
557bc: b280 cmpl %d0,%d1 <== NOT EXECUTED
557be: 6762 beqs 55822 <rtems_clock_get+0x8a> <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
557c0: 7204 moveq #4,%d1 <== NOT EXECUTED
557c2: b280 cmpl %d0,%d1 <== NOT EXECUTED
557c4: 670c beqs 557d2 <rtems_clock_get+0x3a> <== NOT EXECUTED
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
557c6: 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;
557ca: 720a moveq #10,%d1 <== NOT EXECUTED
}
557cc: 2001 movel %d1,%d0 <== NOT EXECUTED
557ce: 4e5e unlk %fp <== NOT EXECUTED
557d0: 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 );
557d2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
}
557d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
557da: 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 );
557dc: 4ef9 0005 5950 jmp 55950 <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 );
557e2: 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;
}
557e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
557ea: 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 );
557ec: 4ef9 0005 588c jmp 5588c <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;
}
557f2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_clock_get_options option,
void *time_buffer
)
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
557f6: 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;
}
557f8: 2001 movel %d1,%d0 <== NOT EXECUTED
557fa: 4e5e unlk %fp <== NOT EXECUTED
557fc: 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);
557fe: 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;
}
55802: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
55806: 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);
55808: 4ef9 0005 5838 jmp 55838 <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();
5580e: 4eb9 0005 587c jsr 5587c <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55814: 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();
55816: 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;
}
55818: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5581c: 2001 movel %d1,%d0 <== NOT EXECUTED
5581e: 4e5e unlk %fp <== NOT EXECUTED
55820: 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();
55822: 4eb9 0005 5864 jsr 55864 <rtems_clock_get_ticks_per_second><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55828: 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();
5582a: 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;
}
5582c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
55830: 2001 movel %d1,%d0 <== NOT EXECUTED
55832: 4e5e unlk %fp <== NOT EXECUTED
...
00047064 <rtems_clock_get_seconds_since_epoch>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
47064: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47068: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !the_interval )
4706c: 4a88 tstl %a0 <== NOT EXECUTED
4706e: 671a beqs 4708a <rtems_clock_get_seconds_since_epoch+0x26><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
47070: 4a39 0006 a228 tstb 6a228 <_TOD_Is_set> <== NOT EXECUTED
47076: 670c beqs 47084 <rtems_clock_get_seconds_since_epoch+0x20><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
47078: 20b9 0006 a2c2 movel 6a2c2 <_TOD_Now>,%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4707e: 4280 clrl %d0 <== NOT EXECUTED
}
47080: 4e5e unlk %fp <== NOT EXECUTED
47082: 4e75 rts <== NOT EXECUTED
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47084: 700b moveq #11,%d0 <== NOT EXECUTED
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
47086: 4e5e unlk %fp <== NOT EXECUTED
47088: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
4708a: 7009 moveq #9,%d0 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
4708c: 4e5e unlk %fp <== NOT EXECUTED
00045d1c <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();
}
45d1c: 41f9 0005 e3d0 lea 5e3d0 <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)
{
45d22: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
}
45d26: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
45d2c: 4e5e unlk %fp <== NOT EXECUTED
45d2e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00045d34 <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)
{
45d34: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Watchdog_Ticks_since_boot;
45d38: 2039 0005 fda2 movel 5fda2 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
}
45d3e: 4e5e unlk %fp <== NOT EXECUTED
...
000470b8 <rtems_clock_get_tod>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod(
rtems_time_of_day *time_buffer
)
{
470b8: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
470bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470be: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
470c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
470c4: 4a8a tstl %a2 <== NOT EXECUTED
470c6: 6700 00a6 beqw 4716e <rtems_clock_get_tod+0xb6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
470ca: 4a39 0006 a228 tstb 6a228 <_TOD_Is_set> <== NOT EXECUTED
470d0: 660e bnes 470e0 <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;
}
470d2: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
470d6: 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;
}
470d8: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
470dc: 4e5e unlk %fp <== NOT EXECUTED
470de: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
470e0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
470e6: 40c2 movew %sr,%d2 <== NOT EXECUTED
470e8: 8082 orl %d2,%d0 <== NOT EXECUTED
470ea: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
470ec: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
470f0: 4eb9 0004 8bf4 jsr 48bf4 <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
470f6: 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;
470f8: 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 );
470fe: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
47102: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
47106: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
4710a: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED
time->tv_usec = useconds;
47110: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED
47114: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
47118: 4eb9 0005 0bf8 jsr 50bf8 <gmtime_r> <== NOT EXECUTED
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
4711e: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
47122: 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;
47124: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47128: 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;
4712a: 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;
4712e: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
47132: 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 /
47136: 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;
4713a: 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 /
4713c: 41f9 0006 0bb0 lea 60bb0 <Configuration+0xc>,%a0 <== NOT EXECUTED
47142: 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;
47146: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED
tmbuf->hour = time.tm_hour;
4714c: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED
tmbuf->minute = time.tm_min;
47152: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED
tmbuf->second = time.tm_sec;
47158: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED
tmbuf->ticks = now.tv_usec /
4715e: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
47162: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
47166: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
4716a: 4e5e unlk %fp <== NOT EXECUTED
4716c: 4e75 rts <== NOT EXECUTED
4716e: 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;
47172: 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;
}
47174: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
47178: 4e5e unlk %fp <== NOT EXECUTED
00055950 <rtems_clock_get_tod_timeval>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
55950: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
55954: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
55958: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !time )
5595c: 4a8a tstl %a2 <== NOT EXECUTED
5595e: 6750 beqs 559b0 <rtems_clock_get_tod_timeval+0x60><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
55960: 4a39 0007 eafc tstb 7eafc <_TOD_Is_set> <== NOT EXECUTED
55966: 660c bnes 55974 <rtems_clock_get_tod_timeval+0x24><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
55968: 700b moveq #11,%d0 <== NOT EXECUTED
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
5596a: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
55970: 4e5e unlk %fp <== NOT EXECUTED
55972: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
55974: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
5597a: 40c2 movew %sr,%d2 <== NOT EXECUTED
5597c: 8082 orl %d2,%d0 <== NOT EXECUTED
5597e: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
55980: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
55984: 4eb9 0005 a5a8 jsr 5a5a8 <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
5598a: 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;
5598c: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
55992: 588f addql #4,%sp <== NOT EXECUTED
55994: 4280 clrl %d0 <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
55996: 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;
5599a: 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;
5599e: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
time->tv_usec = useconds;
559a2: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
559a6: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
559ac: 4e5e unlk %fp <== NOT EXECUTED
559ae: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
if ( !time )
return RTEMS_INVALID_ADDRESS;
559b0: 7009 moveq #9,%d0 <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
559b2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
559b8: 4e5e unlk %fp <== NOT EXECUTED
00045f18 <rtems_clock_get_uptime>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
45f18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45f1c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !uptime )
45f20: 6710 beqs 45f32 <rtems_clock_get_uptime+0x1a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_TOD_Get_uptime_as_timespec( uptime );
45f22: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45f24: 4eb9 0004 7778 jsr 47778 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45f2a: 588f addql #4,%sp <== NOT EXECUTED
45f2c: 4280 clrl %d0 <== NOT EXECUTED
}
45f2e: 4e5e unlk %fp <== NOT EXECUTED
45f30: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
if ( !uptime )
return RTEMS_INVALID_ADDRESS;
45f32: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Get_uptime_as_timespec( uptime );
return RTEMS_SUCCESSFUL;
}
45f34: 4e5e unlk %fp <== NOT EXECUTED
00047198 <rtems_clock_set>:
*/
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
)
{
47198: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4719c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4719e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
471a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
struct timespec newtime;
if ( !time_buffer )
471a4: 4a8a tstl %a2 <== NOT EXECUTED
471a6: 6772 beqs 4721a <rtems_clock_set+0x82> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
471a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471aa: 4eb9 0004 7370 jsr 47370 <_TOD_Validate> <== NOT EXECUTED
471b0: 588f addql #4,%sp <== NOT EXECUTED
471b2: 4a00 tstb %d0 <== NOT EXECUTED
471b4: 660e bnes 471c4 <rtems_clock_set+0x2c> <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
471b6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
471ba: 7014 moveq #20,%d0 <== NOT EXECUTED
}
471bc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
471c0: 4e5e unlk %fp <== NOT EXECUTED
471c2: 4e75 rts <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
471c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471c6: 4eb9 0004 7268 jsr 47268 <_TOD_To_seconds> <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471cc: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED
471d0: 41f9 0006 0bb0 lea 60bb0 <Configuration+0xc>,%a0 <== NOT EXECUTED
471d6: 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 );
471da: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471de: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
471e4: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471e8: 2239 0006 a218 movel 6a218 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
471ee: 5281 addql #1,%d1 <== NOT EXECUTED
471f0: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
471f4: 23c1 0006 a218 movel %d1,6a218 <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
471fa: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
471fe: 4eb9 0004 8cec jsr 48cec <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
47204: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
4720a: 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;
4720e: 508f addql #8,%sp <== NOT EXECUTED
47210: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_INVALID_CLOCK;
}
47212: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
47216: 4e5e unlk %fp <== NOT EXECUTED
47218: 4e75 rts <== NOT EXECUTED
4721a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
)
{
struct timespec newtime;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
4721e: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
47220: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
47224: 4e5e unlk %fp <== NOT EXECUTED
00045d44 <rtems_clock_set_nanoseconds_extension>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
45d44: 4e56 0000 linkw %fp,#0
45d48: 202e 0008 movel %fp@(8),%d0
if ( !routine )
45d4c: 670c beqs 45d5a <rtems_clock_set_nanoseconds_extension+0x16><== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_Watchdog_Nanoseconds_since_tick_handler = routine;
45d4e: 23c0 0005 e534 movel %d0,5e534 <_Watchdog_Nanoseconds_since_tick_handler>
return RTEMS_SUCCESSFUL;
45d54: 4280 clrl %d0
}
45d56: 4e5e unlk %fp
45d58: 4e75 rts
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
if ( !routine )
return RTEMS_INVALID_ADDRESS;
45d5a: 7009 moveq #9,%d0 <== NOT EXECUTED
_Watchdog_Nanoseconds_since_tick_handler = routine;
return RTEMS_SUCCESSFUL;
}
45d5c: 4e5e unlk %fp <== NOT EXECUTED
00045d60 <rtems_clock_tick>:
*
* NOTE: This routine only works for leap-years through 2099.
*/
rtems_status_code rtems_clock_tick( void )
{
45d60: 4e56 0000 linkw %fp,#0
_TOD_Tickle_ticks();
45d64: 4eb9 0004 73dc jsr 473dc <_TOD_Tickle_ticks>
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
45d6a: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain> <== NOT EXECUTED
45d70: 4eb9 0004 9a70 jsr 49a70 <_Watchdog_Tickle> <== NOT EXECUTED
_Watchdog_Tickle_ticks();
_Thread_Tickle_timeslice();
45d76: 4eb9 0004 94a4 jsr 494a4 <_Thread_Tickle_timeslice> <== NOT EXECUTED
if ( _Thread_Is_context_switch_necessary() &&
45d7c: 588f addql #4,%sp <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void )
{
return ( _Thread_Dispatch_necessary );
45d7e: 1039 0006 010e moveb 6010e <_Per_CPU_Information+0x18>,%d0 <== NOT EXECUTED
45d84: 6708 beqs 45d8e <rtems_clock_tick+0x2e> <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void )
{
return ( _Thread_Dispatch_disable_level == 0 );
45d86: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45d8c: 6706 beqs 45d94 <rtems_clock_tick+0x34> <== NOT EXECUTED
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
return RTEMS_SUCCESSFUL;
}
45d8e: 4280 clrl %d0 <== NOT EXECUTED
45d90: 4e5e unlk %fp <== NOT EXECUTED
45d92: 4e75 rts <== NOT EXECUTED
_Thread_Tickle_timeslice();
if ( _Thread_Is_context_switch_necessary() &&
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
45d94: 4eb9 0004 87d4 jsr 487d4 <_Thread_Dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
45d9a: 4280 clrl %d0 <== NOT EXECUTED
45d9c: 4e5e unlk %fp <== NOT EXECUTED
000433d8 <rtems_cpu_usage_report>:
);
#endif
}
void rtems_cpu_usage_report( void )
{
433d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );
433dc: 4879 0004 4ee8 pea 44ee8 <printk_plugin> <== NOT EXECUTED
433e2: 42a7 clrl %sp@- <== NOT EXECUTED
433e4: 4eb9 0004 3210 jsr 43210 <rtems_cpu_usage_report_with_plugin><== NOT EXECUTED
433ea: 508f addql #8,%sp <== NOT EXECUTED
}
433ec: 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 ff94 linkw %fp,#-108 <== 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, last_context_switch;
#else
uint32_t total_units = 0;
#endif
if ( !print )
43220: 4a8c tstl %a4 <== NOT EXECUTED
43222: 6700 014c beqw 43370 <rtems_cpu_usage_report_with_plugin+0x160><== 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__
last_context_switch = _Thread_Time_of_last_context_switch;
_TOD_Get_uptime( &uptime );
43226: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
}
}
}
#endif
(*print)(
4322a: 41f9 0006 a1d8 lea 6a1d8 <_Objects_Information_table+0x4>,%a0<== NOT EXECUTED
* guideline as to what each number means proportionally.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
last_context_switch = _Thread_Time_of_last_context_switch;
_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
*/
ran = the_thread->cpu_time_used;
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract( &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 ffc3 addil #-61,%d4 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract( &last_context_switch, &uptime, &used );
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
43242: 4bf9 0004 b048 lea 4b048 <_Timespec_Divide>,%a5 <== NOT EXECUTED
*/
ran = the_thread->cpu_time_used;
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract( &last_context_switch, &uptime, &used );
_Timestamp_Add_to( &ran, &used );
43248: 0685 ffff ffe0 addil #-32,%d5 <== 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__
last_context_switch = _Thread_Time_of_last_context_switch;
4324e: 2039 0006 a2e4 movel 6a2e4 <_Thread_Time_of_last_context_switch>,%d0<== NOT EXECUTED
43254: 2239 0006 a2e8 movel 6a2e8 <_Thread_Time_of_last_context_switch+0x4>,%d1<== NOT EXECUTED
}
}
}
#endif
(*print)(
4325a: 2d48 ffbc movel %a0,%fp@(-68) <== 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__
last_context_switch = _Thread_Time_of_last_context_switch;
4325e: 2d40 ffd8 movel %d0,%fp@(-40) <== NOT EXECUTED
43262: 2d41 ffdc movel %d1,%fp@(-36) <== NOT EXECUTED
_TOD_Get_uptime( &uptime );
43266: 4eb9 0004 8c58 jsr 48c58 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract( &CPU_usage_Uptime_at_last_reset, &uptime, &total );
4326c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4326e: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
43272: 4879 0006 a710 pea 6a710 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED
43278: 4eb9 0004 b12c jsr 4b12c <_Timespec_Subtract> <== NOT EXECUTED
}
}
}
#endif
(*print)(
4327e: 4879 0005 f2de pea 5f2de <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
43284: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43286: 4e94 jsr %a4@ <== NOT EXECUTED
/*PAGE
*
* rtems_cpu_usage_report
*/
void rtems_cpu_usage_report_with_plugin(
43288: 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 ];
4328c: 226e ffbc moveal %fp@(-68),%a1 <== NOT EXECUTED
43290: 58ae ffbc addql #4,%fp@(-68) <== NOT EXECUTED
43294: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
43296: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
if ( information ) {
4329a: 4a8b tstl %a3 <== NOT EXECUTED
4329c: 6700 00a2 beqw 43340 <rtems_cpu_usage_report_with_plugin+0x130><== NOT EXECUTED
for ( i=1 ; i <= information->maximum ; i++ ) {
432a0: 4a6b 000e tstw %a3@(14) <== NOT EXECUTED
432a4: 6700 009a beqw 43340 <rtems_cpu_usage_report_with_plugin+0x130><== NOT EXECUTED
432a8: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
432aa: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED
432ae: 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++ ) {
432b2: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
432b4: 4a8a tstl %a2 <== NOT EXECUTED
432b6: 677c beqs 43334 <rtems_cpu_usage_report_with_plugin+0x124><== NOT EXECUTED
continue;
rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
432b8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432ba: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
432be: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
432c2: 4eb9 0004 781c jsr 4781c <rtems_object_get_name> <== NOT EXECUTED
(*print)(
432c8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432ca: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
432ce: 4879 0005 f450 pea 5f450 <IntUartPollCallbacks.6370+0x192> <== NOT EXECUTED
432d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
432d6: 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 ) {
432d8: 2079 0006 a6dc moveal 6a6dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
432de: 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;
432e2: 202a 0082 movel %a2@(130),%d0 <== NOT EXECUTED
432e6: 222a 0086 movel %a2@(134),%d1 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432ea: 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;
432ee: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
432f2: 2d41 ffe4 movel %d1,%fp@(-28) <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432f6: b5e8 0008 cmpal %a0@(8),%a2 <== NOT EXECUTED
432fa: 677e beqs 4337a <rtems_cpu_usage_report_with_plugin+0x16a><== NOT EXECUTED
Timestamp_Control used;
_Timestamp_Subtract( &last_context_switch, &uptime, &used );
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
432fc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
43300: 2e3c 0000 03e8 movel #1000,%d7 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
Timestamp_Control used;
_Timestamp_Subtract( &last_context_switch, &uptime, &used );
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
43306: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4330a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4330c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4330e: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
43310: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
43314: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED
43318: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4331c: 4c47 0000 remul %d7,%d0,%d0 <== NOT EXECUTED
43320: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43322: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
43326: 4879 0005 f463 pea 5f463 <IntUartPollCallbacks.6370+0x1a5> <== NOT EXECUTED
4332c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4332e: 4e94 jsr %a4@ <== NOT EXECUTED
43330: 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++ ) {
43334: 4280 clrl %d0 <== NOT EXECUTED
43336: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED
4333a: b480 cmpl %d0,%d2 <== NOT EXECUTED
4333c: 6300 ff6c blsw 432aa <rtems_cpu_usage_report_with_plugin+0x9a><== NOT EXECUTED
" ID | NAME | TICKS | PERCENT\n"
#endif
"------------+----------------------------------------+---------------+---------\n"
);
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
43340: 206e ffbc moveal %fp@(-68),%a0 <== NOT EXECUTED
43344: b1fc 0006 a1e4 cmpal #434660,%a0 <== NOT EXECUTED
4334a: 6600 ff40 bnew 4328c <rtems_cpu_usage_report_with_plugin+0x7c><== NOT EXECUTED
}
}
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)(
4334e: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
43352: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
43358: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
4335c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4335e: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
43362: 4879 0005 f47b pea 5f47b <IntUartPollCallbacks.6370+0x1bd> <== NOT EXECUTED
43368: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4336a: 4e94 jsr %a4@ <== NOT EXECUTED
4336c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
"-------------------------------------------------------------------------------\n",
_Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,
total_units
);
#endif
}
43370: 4cee 3cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a5 <== NOT EXECUTED
43376: 4e5e unlk %fp <== NOT EXECUTED
43378: 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( &last_context_switch, &uptime, &used );
4337a: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
4337e: 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( &last_context_switch, &uptime, &used );
43384: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
43388: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
4338c: 4eb9 0004 b12c jsr 4b12c <_Timespec_Subtract> <== NOT EXECUTED
_Timestamp_Add_to( &ran, &used );
43392: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
43396: 2f05 movel %d5,%sp@- <== NOT EXECUTED
43398: 4eb9 0004 b000 jsr 4b000 <_Timespec_Add_to> <== NOT EXECUTED
4339e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
433a2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
433a6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
433aa: 2f06 movel %d6,%sp@- <== NOT EXECUTED
433ac: 2f05 movel %d5,%sp@- <== NOT EXECUTED
433ae: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
433b0: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
433b4: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED
433b8: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
433bc: 4c47 0000 remul %d7,%d0,%d0 <== NOT EXECUTED
433c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
433c2: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
433c6: 4879 0005 f463 pea 5f463 <IntUartPollCallbacks.6370+0x1a5> <== NOT EXECUTED
433cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
433ce: 4e94 jsr %a4@ <== NOT EXECUTED
433d0: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
433d4: 6000 ff5e braw 43334 <rtems_cpu_usage_report_with_plugin+0x124><== NOT EXECUTED
00043404 <rtems_cpu_usage_reset>:
/*
* rtems_cpu_usage_reset
*/
void rtems_cpu_usage_reset( void )
{
43404: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
43408: 4879 0006 a710 pea 6a710 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED
4340e: 4eb9 0004 8c58 jsr 48c58 <_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);
43414: 487a ffda pea %pc@(433f0 <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;
43418: 2039 0006 a710 movel 6a710 <CPU_usage_Uptime_at_last_reset>,%d0<== NOT EXECUTED
4341e: 2239 0006 a714 movel 6a714 <CPU_usage_Uptime_at_last_reset+0x4>,%d1<== NOT EXECUTED
43424: 23c0 0006 a2e4 movel %d0,6a2e4 <_Thread_Time_of_last_context_switch><== NOT EXECUTED
4342a: 23c1 0006 a2e8 movel %d1,6a2e8 <_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);
43430: 4eb9 0004 9274 jsr 49274 <rtems_iterate_over_all_threads> <== NOT EXECUTED
43436: 508f addql #8,%sp <== NOT EXECUTED
}
43438: 4e5e unlk %fp <== NOT EXECUTED
0004c364 <rtems_debug_disable>:
* rtems_debug_disable
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
4c364: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level &= ~to_be_disabled;
4c368: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4c36c: 4680 notl %d0 <== NOT EXECUTED
}
4c36e: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
_Debug_Level &= ~to_be_disabled;
4c370: c1b9 0005 fd40 andl %d0,5fd40 <_Debug_Level> <== NOT EXECUTED
}
0004c352 <rtems_debug_enable>:
* rtems_debug_enable
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
4c352: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level |= to_be_enabled;
4c356: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4c35a: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
_Debug_Level |= to_be_enabled;
4c35c: 81b9 0005 fd40 orl %d0,5fd40 <_Debug_Level> <== NOT EXECUTED
}
0004c378 <rtems_debug_is_enabled>:
* rtems_debug_is_enabled
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
4c378: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (_Debug_Level & level) ? true : false;
4c37c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4c380: 4e5e unlk %fp <== NOT EXECUTED
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
return (_Debug_Level & level) ? true : false;
4c382: c0b9 0005 fd40 andl 5fd40 <_Debug_Level>,%d0 <== NOT EXECUTED
4c388: 56c0 sne %d0 <== NOT EXECUTED
}
4c38a: 4480 negl %d0 <== NOT EXECUTED
...
0004e800 <rtems_deviceio_errno>:
[RTEMS_IO_ERROR] = EIO,
[RTEMS_PROXY_BLOCKING] = EIO
};
int rtems_deviceio_errno(rtems_status_code sc)
{
4e800: 4e56 0000 linkw %fp,#0
4e804: 202e 0008 movel %fp@(8),%d0
4e808: 2f02 movel %d2,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
4e80a: 4a80 tstl %d0
4e80c: 660a bnes 4e818 <rtems_deviceio_errno+0x18> <== NEVER TAKEN
errno = eno;
return -1;
}
}
4e80e: 242e fffc movel %fp@(-4),%d2
};
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4e812: 4280 clrl %d0
errno = eno;
return -1;
}
}
4e814: 4e5e unlk %fp
4e816: 4e75 rts
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
4e818: 721c moveq #28,%d1 <== NOT EXECUTED
4e81a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4e81c: 651e bcss 4e83c <rtems_deviceio_errno+0x3c> <== NOT EXECUTED
eno = status_code_to_errno [sc];
4e81e: 41f9 0005 d9a0 lea 5d9a0 <status_code_to_errno>,%a0 <== NOT EXECUTED
4e824: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED
}
errno = eno;
4e828: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4e82e: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e830: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e832: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
}
}
4e834: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4e838: 4e5e unlk %fp <== NOT EXECUTED
4e83a: 4e75 rts <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e83c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
4e842: 7416 moveq #22,%d2 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e844: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4e846: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4e848: 2082 movel %d2,%a0@ <== NOT EXECUTED
4e84a: 60e8 bras 4e834 <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 cf1e pea 5cf1e <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 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
42b42: 2040 moveal %d0,%a0 <== NOT EXECUTED
42b44: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
42b46: 4eb9 0004 3602 jsr 43602 <_exit> <== NOT EXECUTED
}
if (error_flag & RTEMS_ERROR_ABORT) {
rtems_error(0, "fatal error, aborting");
42b4c: 4879 0005 cf33 pea 5cf33 <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 e8b4 jsr 4e8b4 <abort> <== NOT EXECUTED
00045da0 <rtems_event_receive>:
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45da0: 4e56 0000 linkw %fp,#0
45da4: 202e 0008 movel %fp@(8),%d0
45da8: 206e 0014 moveal %fp@(20),%a0
RTEMS_API_Control *api;
if ( !event_out )
45dac: 4a88 tstl %a0
45dae: 674c beqs 45dfc <rtems_event_receive+0x5c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
45db0: 2279 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a1
45db6: 2269 00fe moveal %a1@(254),%a1
if ( _Event_sets_Is_empty( event_in ) ) {
45dba: 4a80 tstl %d0
45dbc: 6606 bnes 45dc4 <rtems_event_receive+0x24> <== ALWAYS TAKEN
*event_out = api->pending_events;
45dbe: 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 );
}
45dc0: 4e5e unlk %fp <== NOT EXECUTED
45dc2: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45dc4: 2239 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d1
45dca: 5281 addql #1,%d1
45dcc: 23c1 0005 fc78 movel %d1,5fc78 <_Thread_Dispatch_disable_level>
*event_out = api->pending_events;
return RTEMS_SUCCESSFUL;
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
45dd2: 2f08 movel %a0,%sp@-
45dd4: 2f2e 0010 movel %fp@(16),%sp@-
45dd8: 2f2e 000c movel %fp@(12),%sp@-
45ddc: 2f00 movel %d0,%sp@-
45dde: 4eb9 0004 5e04 jsr 45e04 <_Event_Seize>
_Thread_Enable_dispatch();
45de4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return( _Thread_Executing->Wait.return_code );
45dea: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
45df0: 4fef 0010 lea %sp@(16),%sp
}
45df4: 4e5e unlk %fp
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
45df6: 2028 0034 movel %a0@(52),%d0
}
45dfa: 4e75 rts
)
{
RTEMS_API_Control *api;
if ( !event_out )
return RTEMS_INVALID_ADDRESS;
45dfc: 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 );
}
45dfe: 4e5e unlk %fp <== NOT EXECUTED
...
00045f48 <rtems_event_send>:
rtems_status_code rtems_event_send(
rtems_id id,
rtems_event_set event_in
)
{
45f48: 4e56 fffc linkw %fp,#-4
45f4c: 2f02 movel %d2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
the_thread = _Thread_Get( id, &location );
45f4e: 486e fffc pea %fp@(-4)
45f52: 2f2e 0008 movel %fp@(8),%sp@-
45f56: 4eb9 0004 8964 jsr 48964 <_Thread_Get>
switch ( location ) {
45f5c: 508f addql #8,%sp
45f5e: 4aae fffc tstl %fp@(-4)
45f62: 6634 bnes 45f98 <rtems_event_send+0x50> <== NEVER TAKEN
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
45f64: 2240 moveal %d0,%a1
rtems_event_set *the_event_set
)
{
ISR_Level level;
_ISR_Disable( level );
45f66: 223c 0000 0700 movel #1792,%d1
45f6c: 2069 00fe moveal %a1@(254),%a0
45f70: 40c2 movew %sr,%d2
45f72: 8282 orl %d2,%d1
45f74: 46c1 movew %d1,%sr
*the_event_set |= the_new_events;
45f76: 222e 000c movel %fp@(12),%d1
45f7a: 8390 orl %d1,%a0@
_ISR_Enable( level );
45f7c: 46c2 movew %d2,%sr
_Event_sets_Post( event_in, &api->pending_events );
_Event_Surrender( the_thread );
45f7e: 2f00 movel %d0,%sp@-
45f80: 4eb9 0004 5fa4 jsr 45fa4 <_Event_Surrender>
_Thread_Enable_dispatch();
45f86: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45f8c: 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;
45f90: 588f addql #4,%sp
45f92: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45f94: 4e5e unlk %fp
45f96: 4e75 rts
45f98: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45f9c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45f9e: 4e5e unlk %fp <== NOT EXECUTED
...
00048368 <rtems_extension_create>:
rtems_status_code rtems_extension_create(
rtems_name name,
const rtems_extensions_table *extension_table,
rtems_id *id
)
{
48368: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4836c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
48370: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
48374: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Extension_Control *the_extension;
if ( !id )
48378: 4a8a tstl %a2 <== NOT EXECUTED
4837a: 6700 00a0 beqw 4841c <rtems_extension_create+0xb4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
4837e: 4a82 tstl %d2 <== NOT EXECUTED
48380: 660c bnes 4838e <rtems_extension_create+0x26> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
48382: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48384: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4838a: 4e5e unlk %fp <== NOT EXECUTED
4838c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4838e: 2039 0006 a218 movel 6a218 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
48394: 5280 addql #1,%d0 <== NOT EXECUTED
48396: 23c0 0006 a218 movel %d0,6a218 <_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 );
4839c: 4879 0006 a3a0 pea 6a3a0 <_Extension_Information> <== NOT EXECUTED
483a2: 4eb9 0004 92cc jsr 492cc <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
483a8: 588f addql #4,%sp <== NOT EXECUTED
483aa: 2640 moveal %d0,%a3 <== NOT EXECUTED
483ac: 4a80 tstl %d0 <== NOT EXECUTED
483ae: 675a beqs 4840a <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;
483b0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
483b4: 2758 0024 movel %a0@+,%a3@(36) <== NOT EXECUTED
483b8: 2758 0028 movel %a0@+,%a3@(40) <== NOT EXECUTED
483bc: 2758 002c movel %a0@+,%a3@(44) <== NOT EXECUTED
483c0: 2758 0030 movel %a0@+,%a3@(48) <== NOT EXECUTED
483c4: 2758 0034 movel %a0@+,%a3@(52) <== NOT EXECUTED
483c8: 2758 0038 movel %a0@+,%a3@(56) <== NOT EXECUTED
483cc: 2758 003c movel %a0@+,%a3@(60) <== NOT EXECUTED
483d0: 2750 0040 movel %a0@,%a3@(64) <== NOT EXECUTED
_User_extensions_Add_set( extension );
483d4: 486b 0010 pea %a3@(16) <== NOT EXECUTED
483d8: 4eb9 0004 b17c jsr 4b17c <_User_extensions_Add_set> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
483de: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483e2: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483e4: 2079 0006 a3b8 moveal 6a3b8 <_Extension_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483ea: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483ec: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
483f0: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Extension_Information,
&the_extension->Object,
(Objects_Name) name
);
*id = the_extension->Object.id;
483f4: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
483f6: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
483fc: 588f addql #4,%sp <== NOT EXECUTED
483fe: 4280 clrl %d0 <== NOT EXECUTED
}
48400: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48406: 4e5e unlk %fp <== NOT EXECUTED
48408: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
_Thread_Enable_dispatch();
4840a: 4eb9 0004 a3c2 jsr 4a3c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
48410: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48412: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48418: 4e5e unlk %fp <== NOT EXECUTED
4841a: 4e75 rts <== NOT EXECUTED
)
{
Extension_Control *the_extension;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4841c: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4841e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48424: 4e5e unlk %fp <== NOT EXECUTED
00048200 <rtems_extension_delete>:
#include <rtems/extension.h>
rtems_status_code rtems_extension_delete(
rtems_id id
)
{
48200: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48204: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Extension_Control *)
_Objects_Get( &_Extension_Information, id, location );
48206: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4820a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4820e: 4879 0006 9ce0 pea 69ce0 <_Extension_Information> <== NOT EXECUTED
48214: 4eb9 0004 9514 jsr 49514 <_Objects_Get> <== NOT EXECUTED
Extension_Control *the_extension;
Objects_Locations location;
the_extension = _Extension_Get( id, &location );
switch ( location ) {
4821a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4821e: 2440 moveal %d0,%a2 <== NOT EXECUTED
48220: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48224: 663a bnes 48260 <rtems_extension_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
48226: 486a 0010 pea %a2@(16) <== NOT EXECUTED
4822a: 4eb9 0004 ae24 jsr 4ae24 <_User_extensions_Remove_set> <== NOT EXECUTED
_Objects_Close( &_Extension_Information, &the_extension->Object );
48230: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48232: 4879 0006 9ce0 pea 69ce0 <_Extension_Information> <== NOT EXECUTED
48238: 4eb9 0004 90e4 jsr 490e4 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Extension_Free (
Extension_Control *the_extension
)
{
_Objects_Free( &_Extension_Information, &the_extension->Object );
4823e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48240: 4879 0006 9ce0 pea 69ce0 <_Extension_Information> <== NOT EXECUTED
48246: 4eb9 0004 93a8 jsr 493a8 <_Objects_Free> <== NOT EXECUTED
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
4824c: 4eb9 0004 a046 jsr 4a046 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48252: 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;
48256: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4825a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4825c: 4e5e unlk %fp <== NOT EXECUTED
4825e: 4e75 rts <== NOT EXECUTED
48260: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48264: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48266: 4e5e unlk %fp <== NOT EXECUTED
...
000492fc <rtems_extension_ident>:
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
)
{
492fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
49300: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49304: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
4930a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4930e: 4879 0006 35a0 pea 635a0 <_Extension_Information> <== NOT EXECUTED
49314: 4eb9 0004 a6e8 jsr 4a6e8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
4931a: 41f9 0006 0a0a lea 60a0a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
49320: 4e5e unlk %fp <== NOT EXECUTED
49322: 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 fd3c jsr 4fd3c <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 3c2c lea 43c2c <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
0004b3dc <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4b3dc: 4e56 fff8 linkw %fp,#-8
4b3e0: 202e 0008 movel %fp@(8),%d0
find_arg fa = {
4b3e4: 42ae fffc clrl %fp@(-4)
4b3e8: 2d40 fff8 movel %d0,%fp@(-8)
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b3ec: 6718 beqs 4b406 <rtems_filesystem_get_mount_handler+0x2a><== NEVER TAKEN
rtems_filesystem_iterate( find_handler, &fa );
4b3ee: 486e fff8 pea %fp@(-8)
4b3f2: 487a fefc pea %pc@(4b2f0 <find_handler>)
4b3f6: 4eb9 0004 b332 jsr 4b332 <rtems_filesystem_iterate>
4b3fc: 202e fffc movel %fp@(-4),%d0
4b400: 508f addql #8,%sp
}
return fa.mount_h;
}
4b402: 4e5e unlk %fp
4b404: 4e75 rts
find_arg fa = {
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b406: 4280 clrl %d0 <== NOT EXECUTED
rtems_filesystem_iterate( find_handler, &fa );
}
return fa.mount_h;
}
4b408: 4e5e unlk %fp <== NOT EXECUTED
00043bb8 <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)
{
43bb8: 4e56 0000 linkw %fp,#0
43bbc: 206e 0008 moveal %fp@(8),%a0
43bc0: 2f0a movel %a2,%sp@-
43bc2: 246e 000c moveal %fp@(12),%a2
43bc6: 2f02 movel %d2,%sp@-
43bc8: 242e 0010 movel %fp@(16),%d2
if (rtems_filesystem_is_separator(path[0])) {
43bcc: 1010 moveb %a0@,%d0
43bce: 49c0 extbl %d0
43bd0: 2f00 movel %d0,%sp@-
43bd2: 4eb9 0004 3c2c jsr 43c2c <rtems_filesystem_is_separator>
43bd8: 588f addql #4,%sp
43bda: 4a80 tstl %d0
43bdc: 6622 bnes 43c00 <rtems_filesystem_get_start_loc+0x48><== ALWAYS TAKEN
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*loc = rtems_filesystem_current;
43bde: 2279 0005 e530 moveal 5e530 <rtems_current_user_env>,%a1 <== NOT EXECUTED
43be4: 2042 moveal %d2,%a0 <== NOT EXECUTED
43be6: 5889 addql #4,%a1 <== NOT EXECUTED
43be8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
43bea: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
43bec: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
43bee: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
43bf0: 2091 movel %a1@,%a0@ <== NOT EXECUTED
*index = 0;
}
}
43bf2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*loc = rtems_filesystem_current;
*index = 0;
43bf6: 4292 clrl %a2@ <== NOT EXECUTED
}
}
43bf8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
43bfc: 4e5e unlk %fp <== NOT EXECUTED
43bfe: 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;
43c00: 2279 0005 e530 moveal 5e530 <rtems_current_user_env>,%a1
43c06: 2042 moveal %d2,%a0
*index = 1;
43c08: 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;
43c0a: 20e9 0018 movel %a1@(24),%a0@+
43c0e: 20e9 001c movel %a1@(28),%a0@+
43c12: 20e9 0020 movel %a1@(32),%a0@+
43c16: 20e9 0024 movel %a1@(36),%a0@+
43c1a: 20a9 0028 movel %a1@(40),%a0@
}
else {
*loc = rtems_filesystem_current;
*index = 0;
}
}
43c1e: 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;
43c22: 2480 movel %d0,%a2@
}
else {
*loc = rtems_filesystem_current;
*index = 0;
}
}
43c24: 246e fffc moveal %fp@(-4),%a2
43c28: 4e5e unlk %fp <== NOT EXECUTED
0004b5a4 <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)
{
4b5a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b5a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b5ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b5ae: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_filesystem_is_separator(path[0])) {
4b5b2: 1010 moveb %a0@,%d0 <== NOT EXECUTED
4b5b4: 49c0 extbl %d0 <== NOT EXECUTED
4b5b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b5b8: 4eb9 0004 3c2c jsr 43c2c <rtems_filesystem_is_separator> <== NOT EXECUTED
4b5be: 588f addql #4,%sp <== NOT EXECUTED
4b5c0: 4a80 tstl %d0 <== NOT EXECUTED
4b5c2: 660a bnes 4b5ce <rtems_filesystem_get_sym_start_loc+0x2a><== NOT EXECUTED
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*index = 0;
4b5c4: 4292 clrl %a2@ <== NOT EXECUTED
}
}
4b5c6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b5ca: 4e5e unlk %fp <== NOT EXECUTED
4b5cc: 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;
4b5ce: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
*index = 1;
4b5d2: 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;
4b5d4: 2279 0005 e530 moveal 5e530 <rtems_current_user_env>,%a1 <== NOT EXECUTED
4b5da: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED
4b5de: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED
4b5e2: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED
4b5e6: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED
4b5ea: 20a9 0028 movel %a1@(40),%a0@ <== NOT EXECUTED
*index = 1;
4b5ee: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
else {
*index = 0;
}
}
4b5f0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b5f4: 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 e530 moveal 5e530 <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 cb2e tstl 5cb2e <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 e31c moveal 5e31c <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 e530 moveal 5e530 <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 cee8 pea 5cee8 <IMFS_ops+0x48>
4285a: 4e94 jsr %a4@
rtems_filesystem_root = loc;
4285c: 2079 0005 e530 moveal 5e530 <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 cee8 pea 5cee8 <IMFS_ops+0x48>
4288c: 4e94 jsr %a4@
rtems_filesystem_current = loc;
4288e: 2079 0005 e530 moveal 5e530 <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 ceea pea 5ceea <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 6bac jsr 46bac <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 6bac jsr 46bac <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 6bac jsr 46bac <rtems_fatal_error_occurred> <== NOT EXECUTED
...
00043c2c <rtems_filesystem_is_separator>:
*
* NOTE: This function handles MS-DOS and UNIX style names.
*/
int rtems_filesystem_is_separator(char ch)
{
43c2c: 4e56 0000 linkw %fp,#0
43c30: 122e 000b moveb %fp@(11),%d1
43c34: 2f02 movel %d2,%sp@-
return ((ch == '/') || (ch == '\\') || (ch == '\0'));
43c36: 742f moveq #47,%d2
43c38: 1001 moveb %d1,%d0
43c3a: 49c0 extbl %d0
43c3c: b480 cmpl %d0,%d2
43c3e: 6716 beqs 43c56 <rtems_filesystem_is_separator+0x2a>
43c40: 143c 005c moveb #92,%d2
43c44: b480 cmpl %d0,%d2
43c46: 670e beqs 43c56 <rtems_filesystem_is_separator+0x2a><== NEVER TAKEN
43c48: 4a01 tstb %d1
43c4a: 57c0 seq %d0
}
43c4c: 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'));
43c4e: 49c0 extbl %d0
43c50: 4480 negl %d0
}
43c52: 4e5e unlk %fp
43c54: 4e75 rts
43c56: 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'));
43c58: 7001 moveq #1,%d0
}
43c5a: 4e5e unlk %fp
...
0004b332 <rtems_filesystem_iterate>:
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
4b332: 4e56 fff0 linkw %fp,#-16
4b336: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4b33a: 266e 0008 moveal %fp@(8),%a3
4b33e: 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 ) {
4b342: 4ab9 0005 cb0e tstl 5cb0e <rtems_filesystem_table>
4b348: 672a beqs 4b374 <rtems_filesystem_iterate+0x42> <== NEVER TAKEN
4b34a: 45f9 0005 cb0e lea 5cb0e <rtems_filesystem_table>,%a2
stop = (*routine)( table_entry, routine_arg );
4b350: 2f03 movel %d3,%sp@-
4b352: 2f0a movel %a2,%sp@-
++table_entry;
4b354: 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 );
4b356: 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 ) {
4b358: 508f addql #8,%sp
stop = (*routine)( table_entry, routine_arg );
4b35a: 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 ) {
4b35c: 4a92 tstl %a2@
4b35e: 6710 beqs 4b370 <rtems_filesystem_iterate+0x3e>
4b360: 4a00 tstb %d0
4b362: 67ec beqs 4b350 <rtems_filesystem_iterate+0x1e> <== NEVER TAKEN
}
rtems_libio_unlock();
}
return stop;
}
4b364: 1002 moveb %d2,%d0
4b366: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4b36c: 4e5e unlk %fp
4b36e: 4e75 rts
while ( table_entry->type && !stop ) {
stop = (*routine)( table_entry, routine_arg );
++table_entry;
}
if ( !stop ) {
4b370: 4a00 tstb %d0
4b372: 66f0 bnes 4b364 <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 );
4b374: 42a7 clrl %sp@- <== NOT EXECUTED
4b376: 42a7 clrl %sp@- <== NOT EXECUTED
4b378: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b37e: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b384: 2479 0005 e538 moveal 5e538 <filesystem_chain>,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b38a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b38e: b5fc 0005 e53c cmpal #386364,%a2 <== NOT EXECUTED
4b394: 6734 beqs 4b3ca <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 );
4b396: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b398: 486a 0008 pea %a2@(8) <== NOT EXECUTED
4b39c: 4e93 jsr %a3@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b39e: 2452 moveal %a2@,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3a0: 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 );
4b3a2: 1400 moveb %d0,%d2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3a4: b5fc 0005 e53c cmpal #386364,%a2 <== NOT EXECUTED
4b3aa: 6704 beqs 4b3b0 <rtems_filesystem_iterate+0x7e> <== NOT EXECUTED
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
4b3ac: 4a00 tstb %d0 <== NOT EXECUTED
4b3ae: 67e6 beqs 4b396 <rtems_filesystem_iterate+0x64> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b3b0: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b3b6: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b3bc: 588f addql #4,%sp <== NOT EXECUTED
}
rtems_libio_unlock();
}
return stop;
}
4b3be: 1002 moveb %d2,%d0 <== NOT EXECUTED
4b3c0: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b3c6: 4e5e unlk %fp <== NOT EXECUTED
4b3c8: 4e75 rts <== NOT EXECUTED
4b3ca: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b3d0: 4202 clrb %d2 <== NOT EXECUTED
4b3d2: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b3d8: 588f addql #4,%sp <== NOT EXECUTED
4b3da: 60e2 bras 4b3be <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 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
431f6: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
431fa: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
stop = (*routine)( mt_entry, routine_arg );
}
rtems_libio_unlock();
return stop;
}
43200: 2479 0005 e414 moveal 5e414 <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 e418 cmpal #386072,%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 e418 cmpal #386072,%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 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
43230: 4eb9 0004 6598 jsr 46598 <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 fb2c movel 5fb2c <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 6598 jsr 46598 <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 3c2c lea 43c2c <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
...
0004b40c <rtems_filesystem_register>:
int
rtems_filesystem_register(
const char *type,
rtems_filesystem_fsmount_me_t mount_h
)
{
4b40c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b410: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4b414: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
size_t type_size = strlen(type) + 1;
4b418: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b41a: 4eb9 0004 fd3c jsr 4fd3c <strlen> <== NOT EXECUTED
4b420: 588f addql #4,%sp <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
4b422: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b424: 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;
4b428: 2600 movel %d0,%d3 <== NOT EXECUTED
4b42a: 5283 addql #1,%d3 <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
4b42c: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b432: 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 );
4b434: 2440 moveal %d0,%a2 <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b436: 4a80 tstl %d0 <== NOT EXECUTED
4b438: 6700 0098 beqw 4b4d2 <rtems_filesystem_register+0xc6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
4b43c: 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 );
4b43e: 2600 movel %d0,%d3 <== NOT EXECUTED
4b440: 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);
4b446: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b448: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b44a: 4eb9 0004 f190 jsr 4f190 <memcpy> <== NOT EXECUTED
fsn->entry.type = type_storage;
fsn->entry.mount_h = mount_h;
4b450: 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 );
4b456: 42a7 clrl %sp@- <== NOT EXECUTED
4b458: 42a7 clrl %sp@- <== NOT EXECUTED
4b45a: 2f39 0005 fb2c movel 5fb2c <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;
4b460: 2543 0008 movel %d3,%a2@(8) <== NOT EXECUTED
4b464: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
fsn->entry.mount_h = mount_h;
rtems_libio_lock();
if ( rtems_filesystem_get_mount_handler( type ) == NULL ) {
4b46a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b46c: 4eb9 0004 b3dc jsr 4b3dc <rtems_filesystem_get_mount_handler><== NOT EXECUTED
4b472: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4b476: 4a80 tstl %d0 <== NOT EXECUTED
4b478: 662a bnes 4b4a4 <rtems_filesystem_register+0x98> <== NOT EXECUTED
4b47a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b47c: 4879 0005 e538 pea 5e538 <filesystem_chain> <== NOT EXECUTED
4b482: 4eb9 0004 6ed0 jsr 46ed0 <_Chain_Append> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b488: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b48e: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b494: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
4b498: 4280 clrl %d0 <== NOT EXECUTED
}
4b49a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4b4a0: 4e5e unlk %fp <== NOT EXECUTED
4b4a2: 4e75 rts <== NOT EXECUTED
4b4a4: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b4aa: 4eb9 0004 6598 jsr 46598 <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 );
4b4b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b4b2: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4b4b8: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4b4be: 508f addql #8,%sp <== NOT EXECUTED
4b4c0: 7216 moveq #22,%d1 <== NOT EXECUTED
4b4c2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b4c4: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b4c6: 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 );
4b4cc: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b4ce: 4e5e unlk %fp <== NOT EXECUTED
4b4d0: 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 );
4b4d2: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4b4d8: 740c moveq #12,%d2 <== NOT EXECUTED
4b4da: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b4dc: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b4de: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
}
4b4e0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4b4e6: 4e5e unlk %fp <== NOT EXECUTED
0004b4ea <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
4b4ea: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b4ee: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4b4f2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_chain_node *node = NULL;
if ( type == NULL ) {
4b4f6: 6700 0094 beqw 4b58c <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 );
4b4fa: 42a7 clrl %sp@- <== NOT EXECUTED
4b4fc: 42a7 clrl %sp@- <== NOT EXECUTED
4b4fe: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b504: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b50a: 2479 0005 e538 moveal 5e538 <filesystem_chain>,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b510: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b514: b5fc 0005 e53c cmpal #386364,%a2 <== NOT EXECUTED
4b51a: 671e beqs 4b53a <rtems_filesystem_unregister+0x50><== NOT EXECUTED
4b51c: 47f9 0004 f7e4 lea 4f7e4 <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 ) {
4b522: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b524: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
4b528: 4e93 jsr %a3@ <== NOT EXECUTED
4b52a: 508f addql #8,%sp <== NOT EXECUTED
4b52c: 4a80 tstl %d0 <== NOT EXECUTED
4b52e: 6730 beqs 4b560 <rtems_filesystem_unregister+0x76><== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b530: 2452 moveal %a2@,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b532: b5fc 0005 e53c cmpal #386364,%a2 <== NOT EXECUTED
4b538: 66e8 bnes 4b522 <rtems_filesystem_unregister+0x38><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b53a: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b540: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b546: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4b54c: 588f addql #4,%sp <== NOT EXECUTED
4b54e: 7202 moveq #2,%d1 <== NOT EXECUTED
4b550: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b552: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4b554: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b55a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4b55c: 4e5e unlk %fp <== NOT EXECUTED
4b55e: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4b560: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b562: 4eb9 0004 6f08 jsr 46f08 <_Chain_Extract> <== NOT EXECUTED
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
rtems_chain_extract( node );
free( fsn );
4b568: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b56a: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
4b570: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b576: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b57c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_libio_unlock();
return 0;
4b580: 4280 clrl %d0 <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b582: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4b588: 4e5e unlk %fp <== NOT EXECUTED
4b58a: 4e75 rts <== NOT EXECUTED
)
{
rtems_chain_node *node = NULL;
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
4b58c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4b592: 7416 moveq #22,%d2 <== NOT EXECUTED
4b594: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b596: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b598: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b59a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4b5a0: 4e5e unlk %fp <== NOT EXECUTED
00048b4c <rtems_get_version_string>:
#endif
#include <rtems/system.h>
const char *rtems_get_version_string(void)
{
48b4c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _RTEMS_version;
}
48b50: 203c 0006 132a movel #398122,%d0 <== NOT EXECUTED
48b56: 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 790c jsr 4790c <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 77a8 jsr 477a8 <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 882c jsr 4882c <_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 77a8 jsr 477a8 <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 7864 jsr 47864 <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 7038 jsr 47038 <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 6e74 jsr 46e74 <rtems_semaphore_create>
RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE|
RTEMS_INHERIT_PRIORITY|RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL,
0,
(rtems_id *)mutex
);
if ( status != RTEMS_SUCCESSFUL ) {
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 882c jsr 4882c <_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 7110 jsr 47110 <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 7110 jsr 47110 <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 7250 jsr 47250 <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 756c lea 4756c <rtems_task_mode>,%a3 <== NOT EXECUTED
4385a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4385c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
43860: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
43864: 4e93 jsr %a3@ <== NOT EXECUTED
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
43866: 2012 movel %a2@,%d0 <== NOT EXECUTED
43868: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4386c: 6626 bnes 43894 <rtems_gxx_once+0x60> <== NOT EXECUTED
*(volatile __gthread_once_t *)once = 1;
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
4386e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43870: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
*(volatile __gthread_once_t *)once = 1;
43874: 7001 moveq #1,%d0 <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
43876: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
*(volatile __gthread_once_t *)once = 1;
4387a: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
4387c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( o == 0 )
(*func)();
4387e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
43882: 4e90 jsr %a0@ <== NOT EXECUTED
43884: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
return 0;
}
43888: 4280 clrl %d0 <== NOT EXECUTED
4388a: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
43890: 4e5e unlk %fp <== NOT EXECUTED
43892: 4e75 rts <== NOT EXECUTED
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
*(volatile __gthread_once_t *)once = 1;
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
43894: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43896: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
4389a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4389e: 4e93 jsr %a3@ <== NOT EXECUTED
438a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( o == 0 )
(*func)();
}
return 0;
}
438a4: 4280 clrl %d0 <== NOT EXECUTED
438a6: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
438ac: 4e5e unlk %fp <== NOT EXECUTED
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 77a8 jsr 477a8 <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
00047c64 <rtems_heap_allocate_aligned_with_boundary>:
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
if (
47c64: 7003 moveq #3,%d0 <== NOT EXECUTED
void *rtems_heap_allocate_aligned_with_boundary(
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
47c66: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (
47c6a: b0b9 0006 6220 cmpl 66220 <_System_state_Current>,%d0 <== NOT EXECUTED
47c70: 6726 beqs 47c98 <rtems_heap_allocate_aligned_with_boundary+0x34><== NOT EXECUTED
&& !malloc_is_system_state_OK()
) {
return NULL;
}
malloc_deferred_frees_process();
47c72: 4eb9 0004 6ba4 jsr 46ba4 <malloc_deferred_frees_process> <== NOT EXECUTED
/* FIXME: Statistics, boundary checks */
return _Protected_heap_Allocate_aligned_with_boundary(
47c78: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
47c7c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47c80: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47c84: 2f39 0006 3e80 movel 63e80 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
47c8a: 4eb9 0004 cea4 jsr 4cea4 <_Protected_heap_Allocate_aligned_with_boundary><== NOT EXECUTED
47c90: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
47c94: 4e5e unlk %fp <== NOT EXECUTED
47c96: 4e75 rts <== NOT EXECUTED
uintptr_t boundary
)
{
if (
_System_state_Is_up( _System_state_Get() )
&& !malloc_is_system_state_OK()
47c98: 4eb9 0004 6b64 jsr 46b64 <malloc_is_system_state_OK> <== NOT EXECUTED
47c9e: 4a00 tstb %d0 <== NOT EXECUTED
47ca0: 66d0 bnes 47c72 <rtems_heap_allocate_aligned_with_boundary+0xe><== NOT EXECUTED
) {
return NULL;
47ca2: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
47ca4: 4e5e unlk %fp <== NOT EXECUTED
00046178 <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
)
{
46178: 4e56 0000 linkw %fp,#0
4617c: 222e 0008 movel %fp@(8),%d1
46180: 202e 000c movel %fp@(12),%d0
46184: 206e 0010 moveal %fp@(16),%a0
if ( !_ISR_Is_vector_number_valid( vector ) )
46188: 0c80 0000 00ff cmpil #255,%d0
4618e: 621e bhis 461ae <rtems_interrupt_catch+0x36> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
46190: 4a81 tstl %d1
46192: 6720 beqs 461b4 <rtems_interrupt_catch+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
46194: 4a88 tstl %a0
46196: 671c beqs 461b4 <rtems_interrupt_catch+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_ISR_Install_vector(
46198: 2f08 movel %a0,%sp@-
4619a: 2f01 movel %d1,%sp@-
4619c: 2f00 movel %d0,%sp@-
4619e: 4eb9 0004 9caa jsr 49caa <_CPU_ISR_install_vector>
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
461a4: 4fef 000c lea %sp@(12),%sp
461a8: 4280 clrl %d0
}
461aa: 4e5e unlk %fp
461ac: 4e75 rts
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
if ( !_ISR_Is_vector_number_valid( vector ) )
return RTEMS_INVALID_NUMBER;
461ae: 700a moveq #10,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
461b0: 4e5e unlk %fp <== NOT EXECUTED
461b2: 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;
461b4: 7009 moveq #9,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
461b6: 4e5e unlk %fp <== NOT EXECUTED
...
000471c0 <rtems_interrupt_disable>:
rtems_interrupt_level rtems_interrupt_disable( void )
{
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
471c0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
*/
#undef rtems_interrupt_disable
rtems_interrupt_level rtems_interrupt_disable( void )
{
471c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
471ca: 40c0 movew %sr,%d0 <== NOT EXECUTED
471cc: 8280 orl %d0,%d1 <== NOT EXECUTED
471ce: 46c1 movew %d1,%sr <== NOT EXECUTED
return previous_level;
}
471d0: 4e5e unlk %fp <== NOT EXECUTED
000471d4 <rtems_interrupt_enable>:
#undef rtems_interrupt_enable
void rtems_interrupt_enable(
rtems_interrupt_level previous_level
)
{
471d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Enable( previous_level );
471d8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
471dc: 46c0 movew %d0,%sr <== NOT EXECUTED
}
471de: 4e5e unlk %fp <== NOT EXECUTED
000471e2 <rtems_interrupt_flash>:
#undef rtems_interrupt_flash
void rtems_interrupt_flash(
rtems_interrupt_level previous_level
)
{
471e2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Flash( previous_level );
471e6: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
471ea: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
471f0: 46c1 movew %d1,%sr <== NOT EXECUTED
471f2: 8081 orl %d1,%d0 <== NOT EXECUTED
471f4: 46c0 movew %d0,%sr <== NOT EXECUTED
}
471f6: 4e5e unlk %fp <== NOT EXECUTED
000471fa <rtems_interrupt_is_in_progress>:
*/
#undef rtems_interrupt_is_in_progress
bool rtems_interrupt_is_in_progress( void )
{
471fa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _ISR_Is_in_progress();
471fe: 4ab9 0006 182e tstl 6182e <_Per_CPU_Information+0x8> <== NOT EXECUTED
47204: 56c0 sne %d0 <== NOT EXECUTED
}
47206: 4e5e unlk %fp <== NOT EXECUTED
47208: 4480 negl %d0 <== NOT EXECUTED
00046b2c <rtems_interrupt_level_attribute>:
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
return RTEMS_INTERRUPT_LEVEL(level);
}
46b2c: 7007 moveq #7,%d0 <== NOT EXECUTED
uint32_t rtems_interrupt_mask = RTEMS_INTERRUPT_MASK;
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
46b2e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return RTEMS_INTERRUPT_LEVEL(level);
}
46b32: c0ae 0008 andl %fp@(8),%d0 <== NOT EXECUTED
46b36: 4e5e unlk %fp <== NOT EXECUTED
...
0004e508 <rtems_io_close>:
rtems_status_code rtems_io_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e508: 4e56 0000 linkw %fp,#0
4e50c: 202e 0008 movel %fp@(8),%d0
4e510: 2f03 movel %d3,%sp@-
4e512: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e514: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0
4e51a: 6420 bccs 4e53c <rtems_io_close+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
4e51c: 2600 movel %d0,%d3
4e51e: 2400 movel %d0,%d2
4e520: e78b lsll #3,%d3
4e522: eb8a lsll #5,%d2
4e524: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1
4e52a: 9483 subl %d3,%d2
4e52c: 2271 2808 moveal %a1@(00000008,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e530: 4a89 tstl %a1
4e532: 6712 beqs 4e546 <rtems_io_close+0x3e> <== NEVER TAKEN
}
4e534: 241f movel %sp@+,%d2
4e536: 261f movel %sp@+,%d3
4e538: 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;
4e53a: 4ed1 jmp %a1@
}
4e53c: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e53e: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e540: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e542: 4e5e unlk %fp <== NOT EXECUTED
4e544: 4e75 rts <== NOT EXECUTED
4e546: 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;
4e548: 4280 clrl %d0 <== NOT EXECUTED
}
4e54a: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e54c: 4e5e unlk %fp <== NOT EXECUTED
0004e550 <rtems_io_control>:
rtems_status_code rtems_io_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e550: 4e56 0000 linkw %fp,#0
4e554: 202e 0008 movel %fp@(8),%d0
4e558: 2f03 movel %d3,%sp@-
4e55a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e55c: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0
4e562: 6420 bccs 4e584 <rtems_io_control+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
4e564: 2600 movel %d0,%d3
4e566: 2400 movel %d0,%d2
4e568: e78b lsll #3,%d3
4e56a: eb8a lsll #5,%d2
4e56c: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1
4e572: 9483 subl %d3,%d2
4e574: 2271 2814 moveal %a1@(00000014,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e578: 4a89 tstl %a1
4e57a: 6712 beqs 4e58e <rtems_io_control+0x3e> <== NEVER TAKEN
}
4e57c: 241f movel %sp@+,%d2
4e57e: 261f movel %sp@+,%d3
4e580: 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;
4e582: 4ed1 jmp %a1@
}
4e584: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e586: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e588: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e58a: 4e5e unlk %fp <== NOT EXECUTED
4e58c: 4e75 rts <== NOT EXECUTED
4e58e: 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;
4e590: 4280 clrl %d0 <== NOT EXECUTED
}
4e592: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e594: 4e5e unlk %fp <== NOT EXECUTED
0004c390 <rtems_io_initialize>:
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c390: 4e56 0000 linkw %fp,#0
4c394: 202e 0008 movel %fp@(8),%d0
4c398: 2f03 movel %d3,%sp@-
4c39a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c39c: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0
4c3a2: 6420 bccs 4c3c4 <rtems_io_initialize+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
4c3a4: 2600 movel %d0,%d3
4c3a6: 2400 movel %d0,%d2
4c3a8: e78b lsll #3,%d3
4c3aa: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1
4c3b0: 93c3 subal %d3,%a1
4c3b2: eb8a lsll #5,%d2
4c3b4: 2271 2800 moveal %a1@(00000000,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c3b8: 4a89 tstl %a1
4c3ba: 6712 beqs 4c3ce <rtems_io_initialize+0x3e>
}
4c3bc: 241f movel %sp@+,%d2
4c3be: 261f movel %sp@+,%d3
4c3c0: 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;
4c3c2: 4ed1 jmp %a1@
}
4c3c4: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c3c6: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4c3c8: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c3ca: 4e5e unlk %fp <== NOT EXECUTED
4c3cc: 4e75 rts <== NOT EXECUTED
4c3ce: 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;
4c3d0: 4280 clrl %d0
}
4c3d2: 261f movel %sp@+,%d3
4c3d4: 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 fd3c lea 4fd3c <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
0004e598 <rtems_io_open>:
rtems_status_code rtems_io_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e598: 4e56 0000 linkw %fp,#0
4e59c: 202e 0008 movel %fp@(8),%d0
4e5a0: 2f03 movel %d3,%sp@-
4e5a2: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e5a4: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0
4e5aa: 6420 bccs 4e5cc <rtems_io_open+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
4e5ac: 2600 movel %d0,%d3
4e5ae: 2400 movel %d0,%d2
4e5b0: e78b lsll #3,%d3
4e5b2: eb8a lsll #5,%d2
4e5b4: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1
4e5ba: 9483 subl %d3,%d2
4e5bc: 2271 2804 moveal %a1@(00000004,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e5c0: 4a89 tstl %a1
4e5c2: 6712 beqs 4e5d6 <rtems_io_open+0x3e> <== NEVER TAKEN
}
4e5c4: 241f movel %sp@+,%d2
4e5c6: 261f movel %sp@+,%d3
4e5c8: 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;
4e5ca: 4ed1 jmp %a1@
}
4e5cc: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e5ce: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e5d0: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e5d2: 4e5e unlk %fp <== NOT EXECUTED
4e5d4: 4e75 rts <== NOT EXECUTED
4e5d6: 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;
4e5d8: 4280 clrl %d0 <== NOT EXECUTED
}
4e5da: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e5dc: 4e5e unlk %fp <== NOT EXECUTED
0004e5e0 <rtems_io_read>:
rtems_status_code rtems_io_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e5e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4e5e4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4e5e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e5ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e5ec: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
4e5f2: 6420 bccs 4e614 <rtems_io_read+0x34> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
4e5f4: 2600 movel %d0,%d3 <== NOT EXECUTED
4e5f6: 2400 movel %d0,%d2 <== NOT EXECUTED
4e5f8: e78b lsll #3,%d3 <== NOT EXECUTED
4e5fa: eb8a lsll #5,%d2 <== NOT EXECUTED
4e5fc: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1 <== NOT EXECUTED
4e602: 9483 subl %d3,%d2 <== NOT EXECUTED
4e604: 2271 280c moveal %a1@(0000000c,%d2:l),%a1 <== NOT EXECUTED
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e608: 4a89 tstl %a1 <== NOT EXECUTED
4e60a: 6712 beqs 4e61e <rtems_io_read+0x3e> <== NOT EXECUTED
}
4e60c: 241f movel %sp@+,%d2 <== NOT EXECUTED
4e60e: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e610: 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;
4e612: 4ed1 jmp %a1@ <== NOT EXECUTED
}
4e614: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e616: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e618: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e61a: 4e5e unlk %fp <== NOT EXECUTED
4e61c: 4e75 rts <== NOT EXECUTED
4e61e: 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;
4e620: 4280 clrl %d0 <== NOT EXECUTED
}
4e622: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e624: 4e5e unlk %fp <== NOT EXECUTED
00048080 <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
)
{
48080: 4e56 fff4 linkw %fp,#-12
48084: 226e 000c moveal %fp@(12),%a1
48088: 48d7 040c moveml %d2-%d3/%a2,%sp@
4808c: 242e 0008 movel %fp@(8),%d2
48090: 246e 0010 moveal %fp@(16),%a2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
48094: 2039 0006 476a movel 6476a <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
4809a: 4ab9 0006 4356 tstl 64356 <_Per_CPU_Information+0x8>
480a0: 6600 009c bnew 4813e <rtems_io_register_driver+0xbe>
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
480a4: 4a8a tstl %a2
480a6: 6700 00ea beqw 48192 <rtems_io_register_driver+0x112>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
480aa: 2480 movel %d0,%a2@
if ( driver_table == NULL )
480ac: 4a89 tstl %a1
480ae: 6700 00e2 beqw 48192 <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;
480b2: 4a91 tstl %a1@
480b4: 6700 00d4 beqw 4818a <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 )
480b8: b480 cmpl %d0,%d2
480ba: 6476 bccs 48132 <rtems_io_register_driver+0xb2> <== NEVER TAKEN
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
480bc: 2039 0006 3ed0 movel 63ed0 <_Thread_Dispatch_disable_level>,%d0
480c2: 5280 addql #1,%d0
480c4: 23c0 0006 3ed0 movel %d0,63ed0 <_Thread_Dispatch_disable_level>
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
480ca: 4a82 tstl %d2
480cc: 667c bnes 4814a <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;
480ce: 2039 0006 476a movel 6476a <_IO_Number_of_drivers>,%d0
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
480d4: 6700 0106 beqw 481dc <rtems_io_register_driver+0x15c>
480d8: 2239 0006 476e movel 6476e <_IO_Driver_address_table>,%d1
480de: 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;
480e0: 4a90 tstl %a0@
480e2: 6700 008e beqw 48172 <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 ) {
480e6: 5282 addql #1,%d2
480e8: 41e8 0018 lea %a0@(24),%a0
480ec: b480 cmpl %d0,%d2
480ee: 65f0 bcss 480e0 <rtems_io_register_driver+0x60> <== ALWAYS TAKEN
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
480f0: 2482 movel %d2,%a2@
if ( m != n )
480f2: b480 cmpl %d0,%d2
480f4: 6700 00e8 beqw 481de <rtems_io_register_driver+0x15e>
480f8: 2602 movel %d2,%d3
480fa: 2002 movel %d2,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
480fc: 2041 moveal %d1,%a0
}
/* Assigns invalid value in case of failure */
*major = m;
if ( m != n )
480fe: e78b lsll #3,%d3
48100: eb88 lsll #5,%d0
48102: 9083 subl %d3,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48104: d1c0 addal %d0,%a0
48106: 20d9 movel %a1@+,%a0@+
48108: 20d9 movel %a1@+,%a0@+
4810a: 20d9 movel %a1@+,%a0@+
4810c: 20d9 movel %a1@+,%a0@+
4810e: 20d9 movel %a1@+,%a0@+
48110: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
48112: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
48118: 2d42 0008 movel %d2,%fp@(8)
}
4811c: 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 );
48122: 42ae 0010 clrl %fp@(16)
48126: 42ae 000c clrl %fp@(12)
}
4812a: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
4812c: 4ef9 0005 0740 jmp 50740 <rtems_io_initialize>
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
48132: 700a moveq #10,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48134: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4813a: 4e5e unlk %fp <== NOT EXECUTED
4813c: 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;
4813e: 7012 moveq #18,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48140: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48146: 4e5e unlk %fp <== NOT EXECUTED
48148: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
4814a: 2202 movel %d2,%d1 <== NOT EXECUTED
4814c: 2002 movel %d2,%d0 <== NOT EXECUTED
4814e: e789 lsll #3,%d1 <== NOT EXECUTED
48150: eb88 lsll #5,%d0 <== NOT EXECUTED
48152: 2079 0006 476e moveal 6476e <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
48158: 9081 subl %d1,%d0 <== NOT EXECUTED
4815a: 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;
4815c: 4a90 tstl %a0@ <== NOT EXECUTED
4815e: 673e beqs 4819e <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();
48160: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
48166: 700c moveq #12,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48168: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4816e: 4e5e unlk %fp <== NOT EXECUTED
48170: 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;
48172: 4aa8 0004 tstl %a0@(4)
48176: 6700 ff78 beqw 480f0 <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 ) {
4817a: 5282 addql #1,%d2
4817c: 41e8 0018 lea %a0@(24),%a0
48180: b480 cmpl %d0,%d2
48182: 6500 ff5c bcsw 480e0 <rtems_io_register_driver+0x60>
48186: 6000 ff68 braw 480f0 <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;
4818a: 4aa9 0004 tstl %a1@(4)
4818e: 6600 ff28 bnew 480b8 <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;
48192: 7009 moveq #9,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48194: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4819a: 4e5e unlk %fp <== NOT EXECUTED
4819c: 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;
4819e: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
481a2: 66bc bnes 48160 <rtems_io_register_driver+0xe0> <== NOT EXECUTED
481a4: 2239 0006 476e movel 6476e <_IO_Driver_address_table>,%d1 <== NOT EXECUTED
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
481aa: 2041 moveal %d1,%a0 <== NOT EXECUTED
481ac: d1c0 addal %d0,%a0 <== NOT EXECUTED
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
*registered_major = major;
481ae: 2482 movel %d2,%a2@ <== NOT EXECUTED
}
_IO_Driver_address_table [major] = *driver_table;
481b0: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b6: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b8: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481ba: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
481bc: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED
return rtems_io_initialize( major, 0, NULL );
481c2: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
481c6: 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 );
481cc: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED
481d0: 42ae 000c clrl %fp@(12) <== NOT EXECUTED
}
481d4: 4e5e unlk %fp <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481d6: 4ef9 0005 0740 jmp 50740 <rtems_io_initialize> <== NOT EXECUTED
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
481dc: 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();
481de: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
481e4: 7005 moveq #5,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
481e6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
481ec: 4e5e unlk %fp <== NOT EXECUTED
000481f0 <rtems_io_unregister_driver>:
*/
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
481f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481f4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
481f8: 4ab9 0006 4356 tstl 64356 <_Per_CPU_Information+0x8> <== NOT EXECUTED
481fe: 6644 bnes 48244 <rtems_io_unregister_driver+0x54><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
48200: b0b9 0006 476a cmpl 6476a <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
48206: 6506 bcss 4820e <rtems_io_unregister_driver+0x1e><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
48208: 700d moveq #13,%d0 <== NOT EXECUTED
}
4820a: 4e5e unlk %fp <== NOT EXECUTED
4820c: 4e75 rts <== NOT EXECUTED
4820e: 2239 0006 3ed0 movel 63ed0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
48214: 5281 addql #1,%d1 <== NOT EXECUTED
48216: 23c1 0006 3ed0 movel %d1,63ed0 <_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],
4821c: 2200 movel %d0,%d1 <== NOT EXECUTED
4821e: eb88 lsll #5,%d0 <== NOT EXECUTED
48220: 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(
48222: 2079 0006 476e moveal 6476e <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
&_IO_Driver_address_table[major],
48228: 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(
4822a: d1c0 addal %d0,%a0 <== NOT EXECUTED
4822c: 4298 clrl %a0@+ <== NOT EXECUTED
4822e: 4298 clrl %a0@+ <== NOT EXECUTED
48230: 4298 clrl %a0@+ <== NOT EXECUTED
48232: 4298 clrl %a0@+ <== NOT EXECUTED
48234: 4298 clrl %a0@+ <== NOT EXECUTED
48236: 4290 clrl %a0@ <== NOT EXECUTED
&_IO_Driver_address_table[major],
0,
sizeof( rtems_driver_address_table )
);
_Thread_Enable_dispatch();
48238: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4823e: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_UNSATISFIED;
}
48240: 4e5e unlk %fp <== NOT EXECUTED
48242: 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;
48244: 7012 moveq #18,%d0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
}
48246: 4e5e unlk %fp <== NOT EXECUTED
...
0004e628 <rtems_io_write>:
rtems_status_code rtems_io_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4e628: 4e56 0000 linkw %fp,#0
4e62c: 202e 0008 movel %fp@(8),%d0
4e630: 2f03 movel %d3,%sp@-
4e632: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4e634: b0b9 0006 0512 cmpl 60512 <_IO_Number_of_drivers>,%d0
4e63a: 6420 bccs 4e65c <rtems_io_write+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
4e63c: 2600 movel %d0,%d3
4e63e: 2400 movel %d0,%d2
4e640: e78b lsll #3,%d3
4e642: eb8a lsll #5,%d2
4e644: 2279 0006 0516 moveal 60516 <_IO_Driver_address_table>,%a1
4e64a: 9483 subl %d3,%d2
4e64c: 2271 2810 moveal %a1@(00000010,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4e650: 4a89 tstl %a1
4e652: 6712 beqs 4e666 <rtems_io_write+0x3e> <== NEVER TAKEN
}
4e654: 241f movel %sp@+,%d2
4e656: 261f movel %sp@+,%d3
4e658: 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;
4e65a: 4ed1 jmp %a1@
}
4e65c: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4e65e: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4e660: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e662: 4e5e unlk %fp <== NOT EXECUTED
4e664: 4e75 rts <== NOT EXECUTED
4e666: 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;
4e668: 4280 clrl %d0 <== NOT EXECUTED
}
4e66a: 261f movel %sp@+,%d3 <== NOT EXECUTED
4e66c: 4e5e unlk %fp <== NOT EXECUTED
00049274 <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)
{
49274: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
49278: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
4927c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
49280: 4a8b tstl %a3 <== NOT EXECUTED
49282: 673e beqs 492c2 <rtems_iterate_over_all_threads+0x4e><== NOT EXECUTED
49284: 49f9 0006 a1d8 lea 6a1d8 <_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 ];
4928a: 205c moveal %a4@+,%a0 <== NOT EXECUTED
4928c: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED
if ( !information )
49290: 4a8a tstl %a2 <== NOT EXECUTED
49292: 6726 beqs 492ba <rtems_iterate_over_all_threads+0x46><== NOT EXECUTED
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49294: 4a6a 000e tstw %a2@(14) <== NOT EXECUTED
49298: 6720 beqs 492ba <rtems_iterate_over_all_threads+0x46><== NOT EXECUTED
4929a: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
4929c: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED
492a0: 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++ ) {
492a4: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
492a6: 4a80 tstl %d0 <== NOT EXECUTED
492a8: 6706 beqs 492b0 <rtems_iterate_over_all_threads+0x3c><== NOT EXECUTED
continue;
(*routine)(the_thread);
492aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
492ac: 4e93 jsr %a3@ <== NOT EXECUTED
492ae: 588f addql #4,%sp <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
492b0: 4280 clrl %d0 <== NOT EXECUTED
492b2: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
492b6: b480 cmpl %d0,%d2 <== NOT EXECUTED
492b8: 63e2 blss 4929c <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++ ) {
492ba: b9fc 0006 a1e4 cmpal #434660,%a4 <== NOT EXECUTED
492c0: 66c8 bnes 4928a <rtems_iterate_over_all_threads+0x16><== NOT EXECUTED
(*routine)(the_thread);
}
}
}
492c2: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
492c8: 4e5e unlk %fp <== NOT EXECUTED
0004b0a2 <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 )
{
4b0a2: 4e56 fffc linkw %fp,#-4
4b0a6: 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 );
4b0a8: 42a7 clrl %sp@-
4b0aa: 42a7 clrl %sp@-
4b0ac: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
4b0b2: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
rtems_status_code rc;
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
4b0b8: 2039 0005 fb28 movel 5fb28 <rtems_libio_iop_freelist>,%d0
4b0be: 4fef 000c lea %sp@(12),%sp
4b0c2: 6618 bnes 4b0dc <rtems_libio_allocate+0x3a> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b0c4: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
rtems_libio_iop_freelist = next;
goto done;
}
failed:
iop = 0;
4b0ca: 95ca subal %a2,%a2
4b0cc: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
done:
rtems_libio_unlock();
return iop;
}
4b0d2: 200a movel %a2,%d0
4b0d4: 246e fff8 moveal %fp@(-8),%a2
4b0d8: 4e5e unlk %fp
4b0da: 4e75 rts
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b0dc: 486e fffc pea %fp@(-4)
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4b0e0: 90b9 0005 fb24 subl 5fb24 <rtems_libio_iops>,%d0
4b0e6: 223c b6db 6db7 movel #-1227133513,%d1
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b0ec: 42a7 clrl %sp@-
4b0ee: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4b0f2: e680 asrl #3,%d0
4b0f4: 4c01 0800 mulsl %d1,%d0
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4b0f8: 4878 0001 pea 1 <ADD>
4b0fc: 0080 4c42 4900 oril #1279412480,%d0
4b102: 2f00 movel %d0,%sp@-
4b104: 4eb9 0004 61bc jsr 461bc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
0,
&sema
);
if (rc != RTEMS_SUCCESSFUL)
4b10a: 4fef 0014 lea %sp@(20),%sp
4b10e: 4a80 tstl %d0
4b110: 66b2 bnes 4b0c4 <rtems_libio_allocate+0x22>
goto failed;
iop = rtems_libio_iop_freelist;
4b112: 2479 0005 fb28 moveal 5fb28 <rtems_libio_iop_freelist>,%a2
next = iop->data1;
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4b118: 204a moveal %a2,%a0
iop->flags = LIBIO_FLAGS_OPEN;
4b11a: 223c 0000 0100 movel #256,%d1
&sema
);
if (rc != RTEMS_SUCCESSFUL)
goto failed;
iop = rtems_libio_iop_freelist;
next = iop->data1;
4b120: 202a 0034 movel %a2@(52),%d0
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4b124: 4298 clrl %a0@+
4b126: 4298 clrl %a0@+
4b128: 4298 clrl %a0@+
4b12a: 4298 clrl %a0@+
4b12c: 4298 clrl %a0@+
4b12e: 4298 clrl %a0@+
4b130: 4298 clrl %a0@+
4b132: 4298 clrl %a0@+
4b134: 4298 clrl %a0@+
4b136: 4298 clrl %a0@+
4b138: 4298 clrl %a0@+
4b13a: 4298 clrl %a0@+
4b13c: 4298 clrl %a0@+
4b13e: 4290 clrl %a0@
iop->flags = LIBIO_FLAGS_OPEN;
iop->sem = sema;
4b140: 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;
4b146: 2541 0014 movel %d1,%a2@(20)
4b14a: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
iop->sem = sema;
rtems_libio_iop_freelist = next;
4b150: 23c0 0005 fb28 movel %d0,5fb28 <rtems_libio_iop_freelist>
4b156: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
iop = 0;
done:
rtems_libio_unlock();
return iop;
}
4b15c: 200a movel %a2,%d0
4b15e: 246e fff8 moveal %fp@(-8),%a2
4b162: 4e5e unlk %fp <== NOT EXECUTED
0004b166 <rtems_libio_free>:
*/
void rtems_libio_free(
rtems_libio_t *iop
)
{
4b166: 4e56 0000 linkw %fp,#0
4b16a: 2f0a movel %a2,%sp@-
4b16c: 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 );
4b170: 42a7 clrl %sp@-
4b172: 42a7 clrl %sp@-
4b174: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
4b17a: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
rtems_libio_lock();
if (iop->sem)
4b180: 202a 002c movel %a2@(44),%d0
4b184: 4fef 000c lea %sp@(12),%sp
4b188: 6630 bnes 4b1ba <rtems_libio_free+0x54> <== ALWAYS TAKEN
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b18a: 41f9 0005 fb28 lea 5fb28 <rtems_libio_iop_freelist>,%a0 <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b190: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
4b196: 2550 0034 movel %a0@,%a2@(52) <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b19a: 41f9 0005 fb2c lea 5fb2c <rtems_libio_semaphore>,%a0 <== NOT EXECUTED
4b1a0: 2d50 0008 movel %a0@,%fp@(8) <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b1a4: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b1a8: 23ca 0005 fb28 movel %a2,5fb28 <rtems_libio_iop_freelist> <== NOT EXECUTED
rtems_libio_unlock();
}
4b1ae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b1b2: 4e5e unlk %fp <== NOT EXECUTED
4b1b4: 4ef9 0004 6598 jmp 46598 <rtems_semaphore_release> <== NOT EXECUTED
)
{
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
4b1ba: 2f00 movel %d0,%sp@-
4b1bc: 4eb9 0004 6380 jsr 46380 <rtems_semaphore_delete>
4b1c2: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b1c4: 41f9 0005 fb28 lea 5fb28 <rtems_libio_iop_freelist>,%a0
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b1ca: 203c ffff feff movel #-257,%d0
iop->data1 = rtems_libio_iop_freelist;
4b1d0: 2550 0034 movel %a0@,%a2@(52)
4b1d4: 41f9 0005 fb2c lea 5fb2c <rtems_libio_semaphore>,%a0
4b1da: 2d50 0008 movel %a0@,%fp@(8)
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b1de: c1aa 0014 andl %d0,%a2@(20)
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b1e2: 23ca 0005 fb28 movel %a2,5fb28 <rtems_libio_iop_freelist>
rtems_libio_unlock();
}
4b1e8: 246e fffc moveal %fp@(-4),%a2
4b1ec: 4e5e unlk %fp
4b1ee: 4ef9 0004 6598 jmp 46598 <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 e314 movel 5e314 <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 fb24 movel %d0,5fb24 <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 fb28 movel %d0,5fb28 <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 fb2c pea 5fb2c <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 61bc jsr 461bc <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 e310 moveal 5e310 <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 6bac jsr 46bac <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 6bac jsr 46bac <rtems_fatal_error_occurred> <== NOT EXECUTED
0004b272 <rtems_libio_is_file_open>:
*/
int rtems_libio_is_file_open(
void *node_access
)
{
4b272: 4e56 0000 linkw %fp,#0
4b276: 2f02 movel %d2,%sp@-
4b278: 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 );
4b27c: 42a7 clrl %sp@-
4b27e: 42a7 clrl %sp@-
4b280: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@-
4b286: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
4b28c: 2079 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a0
4b292: 4fef 000c lea %sp@(12),%sp
4b296: 2279 0005 e314 moveal 5e314 <rtems_libio_number_iops>,%a1
4b29c: 4a89 tstl %a1
4b29e: 6720 beqs 4b2c0 <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(
4b2a0: 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++){
4b2a4: 4280 clrl %d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b2a6: 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++){
4b2a8: 5280 addql #1,%d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b2aa: 0281 0000 0100 andil #256,%d1
4b2b0: 6706 beqs 4b2b8 <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 ) {
4b2b2: b4a8 0004 cmpl %a0@(4),%d2
4b2b6: 6720 beqs 4b2d8 <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++){
4b2b8: 41e8 0038 lea %a0@(56),%a0
4b2bc: b3c0 cmpal %d0,%a1
4b2be: 62e6 bhis 4b2a6 <rtems_libio_is_file_open+0x34> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b2c0: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
int rtems_libio_is_file_open(
void *node_access
)
{
rtems_libio_t *iop;
int result=0;
4b2c6: 4282 clrl %d2 <== NOT EXECUTED
4b2c8: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b2ce: 2002 movel %d2,%d0 <== NOT EXECUTED
4b2d0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4b2d4: 4e5e unlk %fp <== NOT EXECUTED
4b2d6: 4e75 rts <== NOT EXECUTED
4b2d8: 2f39 0005 fb2c movel 5fb2c <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;
4b2de: 7401 moveq #1,%d2
4b2e0: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
}
rtems_libio_unlock();
return result;
}
4b2e6: 2002 movel %d2,%d0
4b2e8: 242e fffc movel %fp@(-4),%d2
4b2ec: 4e5e unlk %fp <== NOT EXECUTED
0004b1f4 <rtems_libio_is_open_files_in_fs>:
*/
int rtems_libio_is_open_files_in_fs(
rtems_filesystem_mount_table_entry_t * fs_mt_entry
)
{
4b1f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b1f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b1fa: 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 );
4b1fe: 42a7 clrl %sp@- <== NOT EXECUTED
4b200: 42a7 clrl %sp@- <== NOT EXECUTED
4b202: 2f39 0005 fb2c movel 5fb2c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b208: 4eb9 0004 6458 jsr 46458 <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++){
4b20e: 2079 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a0 <== NOT EXECUTED
4b214: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b218: 2279 0005 e314 moveal 5e314 <rtems_libio_number_iops>,%a1 <== NOT EXECUTED
4b21e: 4a89 tstl %a1 <== NOT EXECUTED
4b220: 6720 beqs 4b242 <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(
4b222: 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++){
4b226: 4280 clrl %d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b228: 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++){
4b22a: 5280 addql #1,%d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b22c: 0281 0000 0100 andil #256,%d1 <== NOT EXECUTED
4b232: 6706 beqs 4b23a <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 ) {
4b234: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED
4b238: 6720 beqs 4b25a <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++){
4b23a: 41e8 0038 lea %a0@(56),%a0 <== NOT EXECUTED
4b23e: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
4b240: 62e6 bhis 4b228 <rtems_libio_is_open_files_in_fs+0x34><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b242: 2f39 0005 fb2c movel 5fb2c <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;
4b248: 4282 clrl %d2 <== NOT EXECUTED
4b24a: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b250: 2002 movel %d2,%d0 <== NOT EXECUTED
4b252: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4b256: 4e5e unlk %fp <== NOT EXECUTED
4b258: 4e75 rts <== NOT EXECUTED
4b25a: 2f39 0005 fb2c movel 5fb2c <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;
4b260: 7401 moveq #1,%d2 <== NOT EXECUTED
4b262: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b268: 2002 movel %d2,%d0 <== NOT EXECUTED
4b26a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4b26e: 4e5e unlk %fp <== NOT EXECUTED
00044444 <rtems_libio_set_private_env>:
rtems_status_code rtems_libio_set_private_env(void)
{
44444: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
44448: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id task_id = rtems_task_self();
4444c: 4eb9 0004 739c jsr 4739c <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);
44452: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED
44456: 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();
4445c: 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);
4445e: 42a7 clrl %sp@- <== NOT EXECUTED
44460: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44462: 42a7 clrl %sp@- <== NOT EXECUTED
44464: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44468: 4879 0005 d8ce pea 5d8ce <IMFS_ops+0x48> <== NOT EXECUTED
4446e: 4e93 jsr %a3@ <== NOT EXECUTED
if (rv != 0)
44470: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
44474: 4a80 tstl %d0 <== NOT EXECUTED
44476: 670c beqs 44484 <rtems_libio_set_private_env+0x40><== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
error_0:
return RTEMS_NO_MEMORY;
44478: 701a moveq #26,%d0 <== NOT EXECUTED
}
4447a: 4cee 1c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a4 <== NOT EXECUTED
44480: 4e5e unlk %fp <== NOT EXECUTED
44482: 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);
44484: 42a7 clrl %sp@- <== NOT EXECUTED
44486: 49ee ffd8 lea %fp@(-40),%a4 <== NOT EXECUTED
4448a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4448c: 42a7 clrl %sp@- <== NOT EXECUTED
4448e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44492: 4879 0005 d8ce pea 5d8ce <IMFS_ops+0x48> <== NOT EXECUTED
44498: 4e93 jsr %a3@ <== NOT EXECUTED
if (rv != 0)
4449a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4449e: 47f9 0004 3234 lea 43234 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
444a4: 4a80 tstl %d0 <== NOT EXECUTED
444a6: 6600 00b4 bnew 4455c <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
444aa: 2679 0005 ef08 moveal 5ef08 <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 (
444b0: b7fc 0006 0544 cmpal #394564,%a3 <== NOT EXECUTED
444b6: 6704 beqs 444bc <rtems_libio_set_private_env+0x78><== NOT EXECUTED
rtems_current_user_env == &rtems_global_user_env
|| rtems_current_user_env->task_id != task_id
444b8: b493 cmpl %a3@,%d2 <== NOT EXECUTED
444ba: 6734 beqs 444f0 <rtems_libio_set_private_env+0xac><== NOT EXECUTED
) {
new_env = malloc(sizeof(rtems_user_env_t));
444bc: 4878 0048 pea 48 <DBL_MANT_DIG+0x13> <== NOT EXECUTED
444c0: 4eb9 0004 3870 jsr 43870 <malloc> <== NOT EXECUTED
if (new_env == NULL)
444c6: 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));
444c8: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (new_env == NULL)
444ca: 4a80 tstl %d0 <== NOT EXECUTED
444cc: 6700 0082 beqw 44550 <rtems_libio_set_private_env+0x10c><== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
new_env->refcnt = 1;
#endif
sc = rtems_task_variable_add(
444d0: 487a ff2a pea %pc@(443fc <free_user_env>) <== NOT EXECUTED
444d4: 4879 0005 ef08 pea 5ef08 <rtems_current_user_env> <== NOT EXECUTED
444da: 42a7 clrl %sp@- <== NOT EXECUTED
444dc: 4eb9 0004 746c jsr 4746c <rtems_task_variable_add> <== NOT EXECUTED
RTEMS_SELF,
(void*)&rtems_current_user_env,
(void(*)(void *))free_user_env
);
if (sc != RTEMS_SUCCESSFUL)
444e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
444e6: 4a80 tstl %d0 <== NOT EXECUTED
444e8: 665c bnes 44546 <rtems_libio_set_private_env+0x102><== NOT EXECUTED
goto error_3;
rtems_current_user_env = new_env;
444ea: 23cb 0005 ef08 movel %a3,5ef08 <rtems_current_user_env> <== NOT EXECUTED
}
/* Inherit the global values */
*rtems_current_user_env = rtems_global_user_env;
444f0: 4878 0048 pea 48 <DBL_MANT_DIG+0x13> <== NOT EXECUTED
444f4: 4879 0006 0544 pea 60544 <rtems_global_user_env> <== NOT EXECUTED
444fa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
444fc: 4eb9 0004 fb04 jsr 4fb04 <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;
44502: 276e fff4 0020 movel %fp@(-12),%a3@(32) <== NOT EXECUTED
rtems_filesystem_current = current_loc;
44508: 41eb 0004 lea %a3@(4),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4450c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44510: 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;
44512: 276e fff8 0024 movel %fp@(-8),%a3@(36) <== NOT EXECUTED
44518: 276e fffc 0028 movel %fp@(-4),%a3@(40) <== NOT EXECUTED
4451e: 276e fff0 001c movel %fp@(-16),%a3@(28) <== NOT EXECUTED
44524: 2752 0018 movel %a2@,%a3@(24) <== NOT EXECUTED
rtems_filesystem_current = current_loc;
44528: 20d4 movel %a4@,%a0@+ <== NOT EXECUTED
4452a: 20ee ffdc movel %fp@(-36),%a0@+ <== NOT EXECUTED
4452e: 20ee ffe0 movel %fp@(-32),%a0@+ <== NOT EXECUTED
44532: 20ee ffe4 movel %fp@(-28),%a0@+ <== NOT EXECUTED
44536: 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;
4453a: 2682 movel %d2,%a3@ <== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
error_0:
return RTEMS_NO_MEMORY;
}
4453c: 4cee 1c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a4 <== NOT EXECUTED
44542: 4e5e unlk %fp <== NOT EXECUTED
44544: 4e75 rts <== NOT EXECUTED
rtems_filesystem_current = current_loc;
return RTEMS_SUCCESSFUL;
error_3:
free(new_env);
44546: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44548: 4eb9 0004 3248 jsr 43248 <free> <== NOT EXECUTED
4454e: 588f addql #4,%sp <== NOT EXECUTED
error_2:
rtems_filesystem_freenode(¤t_loc);
44550: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44552: 47f9 0004 3234 lea 43234 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
44558: 4e93 jsr %a3@ <== NOT EXECUTED
4455a: 588f addql #4,%sp <== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
4455c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4455e: 4e93 jsr %a3@ <== NOT EXECUTED
44560: 588f addql #4,%sp <== NOT EXECUTED
error_0:
return RTEMS_NO_MEMORY;
44562: 701a moveq #26,%d0 <== NOT EXECUTED
}
44564: 4cee 1c0c ffc4 moveml %fp@(-60),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4456a: 4e5e unlk %fp <== NOT EXECUTED
0004456e <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)
{
4456e: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
44572: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44574: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44576: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_id current_task_id;
/*
* get current task id
*/
current_task_id = rtems_task_self();
4457a: 4eb9 0004 739c jsr 4739c <rtems_task_self> <== NOT EXECUTED
44580: 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 )
44582: b082 cmpl %d2,%d0 <== NOT EXECUTED
44584: 673a beqs 445c0 <rtems_libio_share_private_env+0x52><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
/*
* Try to get the requested user environment
*/
sc = rtems_task_variable_get(
44586: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4458a: 4879 0005 ef08 pea 5ef08 <rtems_current_user_env> <== NOT EXECUTED
44590: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44592: 4eb9 0004 7528 jsr 47528 <rtems_task_variable_get> <== NOT EXECUTED
(void*)&shared_user_env );
/*
* If it was not successful, return the error code
*/
if (sc != RTEMS_SUCCESSFUL)
44598: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4459c: 4a80 tstl %d0 <== NOT EXECUTED
4459e: 6614 bnes 445b4 <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) {
445a0: 2079 0005 ef08 moveal 5ef08 <rtems_current_user_env>,%a0 <== NOT EXECUTED
445a6: b690 cmpl %a0@,%d3 <== NOT EXECUTED
445a8: 6724 beqs 445ce <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;
445aa: 41ee fffc lea %fp@(-4),%a0 <== NOT EXECUTED
445ae: 23d0 0005 ef08 movel %a0@,5ef08 <rtems_current_user_env> <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
rtems_current_user_env->refcnt++;
#endif
return RTEMS_SUCCESSFUL;
}
445b4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
445b8: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
445bc: 4e5e unlk %fp <== NOT EXECUTED
445be: 4e75 rts <== NOT EXECUTED
445c0: 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;
445c4: 4280 clrl %d0 <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
rtems_current_user_env->refcnt++;
#endif
return RTEMS_SUCCESSFUL;
}
445c6: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
445ca: 4e5e unlk %fp <== NOT EXECUTED
445cc: 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 );
445ce: 2f08 movel %a0,%sp@- <== NOT EXECUTED
445d0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
445d4: 4eba fe26 jsr %pc@(443fc <free_user_env>) <== NOT EXECUTED
445d8: 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;
445dc: 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 );
445e0: 588f addql #4,%sp <== NOT EXECUTED
}
/* the current_user_env is the same pointer that remote env */
rtems_current_user_env = shared_user_env;
445e2: 23d0 0005 ef08 movel %a0@,5ef08 <rtems_current_user_env> <== NOT EXECUTED
445e8: 60ca bras 445b4 <rtems_libio_share_private_env+0x46><== NOT EXECUTED
...
0004b054 <rtems_libio_to_fcntl_flags>:
uint32_t flags
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b054: 7006 moveq #6,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4b056: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b05a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b05e: c081 andl %d1,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4b060: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4b062: 7406 moveq #6,%d2 <== NOT EXECUTED
4b064: b480 cmpl %d0,%d2 <== NOT EXECUTED
4b066: 6736 beqs 4b09e <rtems_libio_to_fcntl_flags+0x4a><== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4b068: 0801 0001 btst #1,%d1 <== NOT EXECUTED
4b06c: 6726 beqs 4b094 <rtems_libio_to_fcntl_flags+0x40><== NOT EXECUTED
fcntl_flags |= O_RDONLY;
4b06e: 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 ) {
4b070: 0801 0000 btst #0,%d1 <== NOT EXECUTED
4b074: 6704 beqs 4b07a <rtems_libio_to_fcntl_flags+0x26><== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
4b076: 08c0 000e bset #14,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4b07a: 0801 0009 btst #9,%d1 <== NOT EXECUTED
4b07e: 6704 beqs 4b084 <rtems_libio_to_fcntl_flags+0x30><== NOT EXECUTED
fcntl_flags |= O_APPEND;
4b080: 7408 moveq #8,%d2 <== NOT EXECUTED
4b082: 8082 orl %d2,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {
4b084: 0801 000a btst #10,%d1 <== NOT EXECUTED
4b088: 6704 beqs 4b08e <rtems_libio_to_fcntl_flags+0x3a><== NOT EXECUTED
fcntl_flags |= O_CREAT;
4b08a: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
}
return fcntl_flags;
}
4b08e: 241f movel %sp@+,%d2 <== NOT EXECUTED
4b090: 4e5e unlk %fp <== NOT EXECUTED
4b092: 4e75 rts <== NOT EXECUTED
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
4b094: 44c1 movew %d1,%ccr <== NOT EXECUTED
4b096: 57c0 seq %d0 <== NOT EXECUTED
4b098: 49c0 extbl %d0 <== NOT EXECUTED
4b09a: 4480 negl %d0 <== NOT EXECUTED
4b09c: 60d2 bras 4b070 <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED
4b09e: 7002 moveq #2,%d0 <== NOT EXECUTED
4b0a0: 60ce bras 4b070 <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 3e80 movel 63e80 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46f1a: 4eb9 0004 cf5c jsr 4cf5c <_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 5fa0 addl %d3,65fa0 <rtems_malloc_statistics+0x28><== NOT EXECUTED
46f34: 2039 0006 5f9c movel 65f9c <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED
46f3a: d182 addxl %d2,%d0 <== NOT EXECUTED
46f3c: 23c0 0006 5f9c movel %d0,65f9c <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 3e80 movel 63e80 <RTEMS_Malloc_Heap>,%sp@-
46f70: 4eb9 0004 cf5c jsr 4cf5c <_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 5f94 movel 65f94 <rtems_malloc_statistics+0x1c>,%d0
46f84: d6b9 0006 5f98 addl 65f98 <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 5fa0 subl 65fa0 <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 5f94 movel %d2,65f94 <rtems_malloc_statistics+0x1c>
46f9a: 23c3 0006 5f98 movel %d3,65f98 <rtems_malloc_statistics+0x20>
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
46fa0: b0b9 0006 5f90 cmpl 65f90 <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 5f90 movel %d0,65f90 <rtems_malloc_statistics+0x18>
}
46fae: 242e fff4 movel %fp@(-12),%d2
46fb2: 262e fff8 movel %fp@(-8),%d3
46fb6: 4e5e unlk %fp <== NOT EXECUTED
0004f6c0 <rtems_memalign>:
int rtems_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
4f6c0: 4e56 0000 linkw %fp,#0
4f6c4: 2f0a movel %a2,%sp@-
4f6c6: 246e 0008 moveal %fp@(8),%a2
4f6ca: 2f02 movel %d2,%sp@-
void *return_this;
/*
* Parameter error checks
*/
if ( !pointer )
4f6cc: 4a8a tstl %a2
4f6ce: 675e beqs 4f72e <rtems_memalign+0x6e> <== NEVER TAKEN
return EINVAL;
*pointer = NULL;
4f6d0: 4292 clrl %a2@
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
4f6d2: 7003 moveq #3,%d0
4f6d4: b0b9 0006 403c cmpl 6403c <_System_state_Current>,%d0
4f6da: 6748 beqs 4f724 <rtems_memalign+0x64> <== ALWAYS TAKEN
return EINVAL;
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
4f6dc: 4eb9 0004 4098 jsr 44098 <malloc_deferred_frees_process>
Heap_Control *heap,
uintptr_t size,
uintptr_t alignment
)
{
return
4f6e2: 42a7 clrl %sp@-
4f6e4: 2f2e 000c movel %fp@(12),%sp@-
4f6e8: 2f2e 0010 movel %fp@(16),%sp@-
4f6ec: 2f39 0006 24c0 movel 624c0 <RTEMS_Malloc_Heap>,%sp@-
4f6f2: 4eb9 0004 95b0 jsr 495b0 <_Protected_heap_Allocate_aligned_with_boundary>
return_this = _Protected_heap_Allocate_aligned(
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
4f6f8: 4fef 0010 lea %sp@(16),%sp
4f6fc: 2400 movel %d0,%d2
4f6fe: 673c beqs 4f73c <rtems_memalign+0x7c> <== NEVER TAKEN
return ENOMEM;
/*
* If configured, update the more involved statistics
*/
if ( rtems_malloc_statistics_helpers )
4f700: 2079 0006 2c76 moveal 62c76 <rtems_malloc_statistics_helpers>,%a0
4f706: 4a88 tstl %a0
4f708: 670a beqs 4f714 <rtems_memalign+0x54> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
4f70a: 2f0a movel %a2,%sp@-
4f70c: 2068 0004 moveal %a0@(4),%a0
4f710: 4e90 jsr %a0@
4f712: 588f addql #4,%sp <== NOT EXECUTED
*pointer = return_this;
4f714: 2482 movel %d2,%a2@
return 0;
}
4f716: 242e fff8 movel %fp@(-8),%d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
4f71a: 4280 clrl %d0
}
4f71c: 246e fffc moveal %fp@(-4),%a2
4f720: 4e5e unlk %fp
4f722: 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() )
4f724: 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()) &&
4f72a: 4a00 tstb %d0
4f72c: 66ae bnes 4f6dc <rtems_memalign+0x1c> <== ALWAYS TAKEN
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f72e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
!malloc_is_system_state_OK() )
return EINVAL;
4f732: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f734: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4f738: 4e5e unlk %fp <== NOT EXECUTED
4f73a: 4e75 rts <== NOT EXECUTED
4f73c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
return ENOMEM;
4f740: 700c moveq #12,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f742: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4f746: 4e5e unlk %fp <== NOT EXECUTED
...
000562bc <rtems_message_queue_broadcast>:
rtems_id id,
const void *buffer,
size_t size,
uint32_t *count
)
{
562bc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
562c0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
562c4: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
562c8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
562cc: 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 )
562d0: 4a82 tstl %d2 <== NOT EXECUTED
562d2: 6762 beqs 56336 <rtems_message_queue_broadcast+0x7a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !count )
562d4: 4a83 tstl %d3 <== NOT EXECUTED
562d6: 675e beqs 56336 <rtems_message_queue_broadcast+0x7a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
562d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
562dc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
562de: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
562e4: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
562ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
562ee: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
562f2: 6636 bnes 5632a <rtems_message_queue_broadcast+0x6e><== NOT EXECUTED
case OBJECTS_LOCAL:
core_status = _CORE_message_queue_Broadcast(
562f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
562f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
562f8: 42a7 clrl %sp@- <== NOT EXECUTED
562fa: 2f04 movel %d4,%sp@- <== NOT EXECUTED
562fc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
56300: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56302: 4868 0014 pea %a0@(20) <== NOT EXECUTED
56306: 4eb9 0005 9d3c jsr 59d3c <_CORE_message_queue_Broadcast> <== NOT EXECUTED
5630c: 2400 movel %d0,%d2 <== NOT EXECUTED
NULL,
#endif
count
);
_Thread_Enable_dispatch();
5630e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return
56314: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56316: 4eb9 0005 66c0 jsr 566c0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
5631c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56320: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
56326: 4e5e unlk %fp <== NOT EXECUTED
56328: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5632a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5632c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
56332: 4e5e unlk %fp <== NOT EXECUTED
56334: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56336: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56338: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5633e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ed40 <rtems_message_queue_create>:
uint32_t count,
size_t max_message_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
4ed40: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4ed44: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
4ed48: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4ed4c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
4ed50: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
4ed54: 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 ) )
4ed58: 4a82 tstl %d2 <== NOT EXECUTED
4ed5a: 6726 beqs 4ed82 <rtems_message_queue_create+0x42><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4ed5c: 4a8a tstl %a2 <== NOT EXECUTED
4ed5e: 6700 009c beqw 4edfc <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 )
4ed62: 4a83 tstl %d3 <== NOT EXECUTED
4ed64: 6710 beqs 4ed76 <rtems_message_queue_create+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( max_message_size == 0 )
4ed66: 4a84 tstl %d4 <== NOT EXECUTED
4ed68: 6624 bnes 4ed8e <rtems_message_queue_create+0x4e><== NOT EXECUTED
return RTEMS_INVALID_SIZE;
4ed6a: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed6c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ed72: 4e5e unlk %fp <== NOT EXECUTED
4ed74: 4e75 rts <== NOT EXECUTED
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
return RTEMS_INVALID_NUMBER;
4ed76: 700a moveq #10,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed78: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ed7e: 4e5e unlk %fp <== NOT EXECUTED
4ed80: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4ed82: 7003 moveq #3,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed84: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ed8a: 4e5e unlk %fp <== NOT EXECUTED
4ed8c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4ed8e: 2039 0006 9c90 movel 69c90 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4ed94: 5280 addql #1,%d0 <== NOT EXECUTED
4ed96: 23c0 0006 9c90 movel %d0,69c90 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#endif
#endif
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
4ed9c: 4eb9 0005 5598 jsr 55598 <_Message_queue_Allocate> <== NOT EXECUTED
4eda2: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( !the_message_queue ) {
4eda4: 4a80 tstl %d0 <== NOT EXECUTED
4eda6: 6700 008a beqw 4ee32 <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;
4edaa: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
4edae: 204e moveal %fp,%a0 <== NOT EXECUTED
4edb0: 44c0 movew %d0,%ccr <== NOT EXECUTED
4edb2: 56c0 sne %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4edb4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edb8: 49c0 extbl %d0 <== NOT EXECUTED
4edba: 5280 addql #1,%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4edbc: 2741 0010 movel %d1,%a3@(16) <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edc0: 2100 movel %d0,%a0@- <== NOT EXECUTED
else
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
if ( ! _CORE_message_queue_Initialize(
4edc2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4edc4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4edc6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4edc8: 486b 0014 pea %a3@(20) <== NOT EXECUTED
4edcc: 4eb9 0005 0154 jsr 50154 <_CORE_message_queue_Initialize> <== NOT EXECUTED
4edd2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4edd6: 4a00 tstb %d0 <== NOT EXECUTED
4edd8: 662e bnes 4ee08 <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 );
4edda: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4eddc: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED
4ede2: 4eb9 0005 1140 jsr 51140 <_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();
4ede8: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4edee: 508f addql #8,%sp <== NOT EXECUTED
4edf0: 700d moveq #13,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4edf2: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4edf8: 4e5e unlk %fp <== NOT EXECUTED
4edfa: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4edfc: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4edfe: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ee04: 4e5e unlk %fp <== NOT EXECUTED
4ee06: 4e75 rts <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee08: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee0c: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee0e: 2079 0006 a508 moveal 6a508 <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee14: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee16: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee1a: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Message_queue_Information,
&the_message_queue->Object,
(Objects_Name) name
);
*id = the_message_queue->Object.id;
4ee1e: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0
);
#endif
_Thread_Enable_dispatch();
4ee20: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4ee26: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ee2c: 4280 clrl %d0 <== NOT EXECUTED
}
4ee2e: 4e5e unlk %fp <== NOT EXECUTED
4ee30: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
if ( !the_message_queue ) {
_Thread_Enable_dispatch();
4ee32: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4ee38: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee3a: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ee40: 4e5e unlk %fp <== NOT EXECUTED
00056448 <rtems_message_queue_delete>:
*/
rtems_status_code rtems_message_queue_delete(
rtems_id id
)
{
56448: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5644c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
5644e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56452: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56456: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
5645c: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
56462: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56466: 2440 moveal %d0,%a2 <== NOT EXECUTED
56468: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
5646c: 6640 bnes 564ae <rtems_message_queue_delete+0x66><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Message_queue_Information,
5646e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
56470: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
56476: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED
&the_message_queue->Object );
_CORE_message_queue_Close(
5647c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
56480: 42a7 clrl %sp@- <== NOT EXECUTED
56482: 486a 0014 pea %a2@(20) <== NOT EXECUTED
56486: 4eb9 0005 9dc8 jsr 59dc8 <_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 );
5648c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5648e: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
56494: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
0, /* Not used */
0
);
}
#endif
_Thread_Enable_dispatch();
5649a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564a0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0
);
}
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
564a4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
564a8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564aa: 4e5e unlk %fp <== NOT EXECUTED
564ac: 4e75 rts <== NOT EXECUTED
564ae: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
564b2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
564b4: 4e5e unlk %fp <== NOT EXECUTED
000564b8 <rtems_message_queue_flush>:
rtems_status_code rtems_message_queue_flush(
rtems_id id,
uint32_t *count
)
{
564b8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
564bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
564be: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
564c2: 4a8a tstl %a2 <== NOT EXECUTED
564c4: 6748 beqs 5650e <rtems_message_queue_flush+0x56> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
564c6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
564ca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
564ce: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
564d4: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
564da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
564de: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
564e2: 6620 bnes 56504 <rtems_message_queue_flush+0x4c> <== NOT EXECUTED
case OBJECTS_LOCAL:
*count = _CORE_message_queue_Flush( &the_message_queue->message_queue );
564e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
564e6: 4868 0014 pea %a0@(20) <== NOT EXECUTED
564ea: 4eb9 0005 9e1c jsr 59e1c <_CORE_message_queue_Flush> <== NOT EXECUTED
564f0: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
564f2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564f8: 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;
564fc: 588f addql #4,%sp <== NOT EXECUTED
564fe: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56500: 4e5e unlk %fp <== NOT EXECUTED
56502: 4e75 rts <== NOT EXECUTED
56504: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56508: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5650a: 4e5e unlk %fp <== NOT EXECUTED
5650c: 4e75 rts <== NOT EXECUTED
5650e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56512: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56514: 4e5e unlk %fp <== NOT EXECUTED
00056518 <rtems_message_queue_get_number_pending>:
rtems_status_code rtems_message_queue_get_number_pending(
rtems_id id,
uint32_t *count
)
{
56518: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5651c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5651e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
56522: 4a8a tstl %a2 <== NOT EXECUTED
56524: 673e beqs 56564 <rtems_message_queue_get_number_pending+0x4c><== NOT EXECUTED
56526: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5652a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5652e: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
56534: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5653a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5653e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56542: 6616 bnes 5655a <rtems_message_queue_get_number_pending+0x42><== NOT EXECUTED
case OBJECTS_LOCAL:
*count = the_message_queue->message_queue.number_of_pending_messages;
56544: 2040 moveal %d0,%a0 <== NOT EXECUTED
56546: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
5654a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56550: 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;
56554: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56556: 4e5e unlk %fp <== NOT EXECUTED
56558: 4e75 rts <== NOT EXECUTED
5655a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5655e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56560: 4e5e unlk %fp <== NOT EXECUTED
56562: 4e75 rts <== NOT EXECUTED
56564: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56568: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5656a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ee44 <rtems_message_queue_ident>:
rtems_status_code rtems_message_queue_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4ee44: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4ee48: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ee4c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4ee50: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4ee54: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED
4ee5a: 4eb9 0005 145c jsr 5145c <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
node,
id
);
return _Status_Object_name_errors_to_status[ status ];
4ee60: 41f9 0006 7372 lea 67372 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4ee66: 4e5e unlk %fp <== NOT EXECUTED
4ee68: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004ee70 <rtems_message_queue_receive>:
void *buffer,
size_t *size,
rtems_option option_set,
rtems_interval timeout
)
{
4ee70: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4ee74: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4ee78: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4ee7c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
bool wait;
if ( !buffer )
4ee80: 4a82 tstl %d2 <== NOT EXECUTED
4ee82: 6776 beqs 4eefa <rtems_message_queue_receive+0x8a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
4ee84: 4a83 tstl %d3 <== NOT EXECUTED
4ee86: 6772 beqs 4eefa <rtems_message_queue_receive+0x8a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4ee88: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ee8c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4ee90: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED
4ee96: 4eb9 0005 12ac jsr 512ac <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4ee9c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4eea0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4eea4: 6648 bnes 4eeee <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;
4eea6: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( _Options_Is_no_wait( option_set ) )
wait = false;
else
wait = true;
_CORE_message_queue_Seize(
4eea8: 7801 moveq #1,%d4 <== NOT EXECUTED
4eeaa: 2040 moveal %d0,%a0 <== NOT EXECUTED
4eeac: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED
4eeb0: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4eeb4: b384 eorl %d1,%d4 <== NOT EXECUTED
4eeb6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4eeb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4eeba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4eebc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4eec0: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4eec4: 4eb9 0005 0214 jsr 50214 <_CORE_message_queue_Seize> <== NOT EXECUTED
buffer,
size,
wait,
timeout
);
_Thread_Enable_dispatch();
4eeca: 4eb9 0005 1ee6 jsr 51ee6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
4eed0: 2079 0006 a11a moveal 6a11a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
size,
wait,
timeout
);
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
4eed6: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4eeda: 4eb9 0004 ef94 jsr 4ef94 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4eee0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4eee4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4eeea: 4e5e unlk %fp <== NOT EXECUTED
4eeec: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4eeee: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4eef0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4eef6: 4e5e unlk %fp <== NOT EXECUTED
4eef8: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
4eefa: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4eefc: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4ef02: 4e5e unlk %fp <== NOT EXECUTED
...
0004ef08 <rtems_message_queue_send>:
rtems_status_code rtems_message_queue_send(
rtems_id id,
const void *buffer,
size_t size
)
{
4ef08: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4ef0c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ef0e: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4ef12: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef14: 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 )
4ef18: 676c beqs 4ef86 <rtems_message_queue_send+0x7e> <== NOT EXECUTED
4ef1a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ef1e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ef20: 4879 0006 a4f0 pea 6a4f0 <_Message_queue_Information> <== NOT EXECUTED
4ef26: 4eb9 0005 12ac jsr 512ac <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4ef2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ef30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4ef34: 6642 bnes 4ef78 <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(
4ef36: 42a7 clrl %sp@- <== NOT EXECUTED
4ef38: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ef3a: 42a7 clrl %sp@- <== NOT EXECUTED
4ef3c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
4ef42: 42a7 clrl %sp@- <== NOT EXECUTED
4ef44: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ef46: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ef4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef4c: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4ef50: 4eb9 0005 034c jsr 5034c <_CORE_message_queue_Submit> <== NOT EXECUTED
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
4ef56: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4ef5a: 2400 movel %d0,%d2 <== NOT EXECUTED
4ef5c: 4eb9 0005 1ee6 jsr 51ee6 <_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);
4ef62: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef64: 4eb9 0004 ef94 jsr 4ef94 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef6a: 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);
4ef6e: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef70: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4ef74: 4e5e unlk %fp <== NOT EXECUTED
4ef76: 4e75 rts <== NOT EXECUTED
4ef78: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef7c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef7e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4ef82: 4e5e unlk %fp <== NOT EXECUTED
4ef84: 4e75 rts <== NOT EXECUTED
4ef86: 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;
4ef8a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef8c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4ef90: 4e5e unlk %fp <== NOT EXECUTED
000566d8 <rtems_message_queue_urgent>:
rtems_status_code rtems_message_queue_urgent(
rtems_id id,
const void *buffer,
size_t size
)
{
566d8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
566dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
566de: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
566e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
566e4: 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 )
566e8: 676c beqs 56756 <rtems_message_queue_urgent+0x7e><== NOT EXECUTED
566ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED
566ee: 2f03 movel %d3,%sp@- <== NOT EXECUTED
566f0: 4879 0007 f354 pea 7f354 <_Message_queue_Information> <== NOT EXECUTED
566f6: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
566fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56700: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56704: 6642 bnes 56748 <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(
56706: 42a7 clrl %sp@- <== NOT EXECUTED
56708: 2040 moveal %d0,%a0 <== NOT EXECUTED
5670a: 42a7 clrl %sp@- <== NOT EXECUTED
5670c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
56712: 42a7 clrl %sp@- <== NOT EXECUTED
56714: 2f03 movel %d3,%sp@- <== NOT EXECUTED
56716: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5671a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5671c: 4868 0014 pea %a0@(20) <== NOT EXECUTED
56720: 4eb9 0005 a08c jsr 5a08c <_CORE_message_queue_Submit> <== NOT EXECUTED
id,
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
56726: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
5672a: 2400 movel %d0,%d2 <== NOT EXECUTED
5672c: 4eb9 0005 c49a jsr 5c49a <_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);
56732: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56734: 4eb9 0005 66c0 jsr 566c0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5673a: 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);
5673e: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56740: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
56744: 4e5e unlk %fp <== NOT EXECUTED
56746: 4e75 rts <== NOT EXECUTED
56748: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5674c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5674e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
56752: 4e5e unlk %fp <== NOT EXECUTED
56754: 4e75 rts <== NOT EXECUTED
56756: 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;
5675a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5675c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
56760: 4e5e unlk %fp <== NOT EXECUTED
0004da7c <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4da7c: 4e56 ff90 linkw %fp,#-112 <== NOT EXECUTED
4da80: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
4da84: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4da88: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
4da8c: 4eb9 0005 1730 jsr 51730 <strdup> <== NOT EXECUTED
if (dup_path != NULL) {
4da92: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_mkdir(const char *path, mode_t mode)
{
int success = 0;
char *dup_path = strdup(path);
4da94: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (dup_path != NULL) {
4da96: 4a80 tstl %d0 <== NOT EXECUTED
4da98: 6700 0138 beqw 4dbd2 <rtems_mkdir+0x156> <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4da9c: 742f moveq #47,%d2 <== NOT EXECUTED
4da9e: 1013 moveb %a3@,%d0 <== NOT EXECUTED
4daa0: 1200 moveb %d0,%d1 <== NOT EXECUTED
4daa2: 49c1 extbl %d1 <== NOT EXECUTED
4daa4: b481 cmpl %d1,%d2 <== NOT EXECUTED
4daa6: 6700 014a beqw 4dbf2 <rtems_mkdir+0x176> <== NOT EXECUTED
4daaa: 244b moveal %a3,%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4daac: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED
4dab0: 4283 clrl %d3 <== NOT EXECUTED
4dab2: 7201 moveq #1,%d1 <== NOT EXECUTED
4dab4: 4bf9 0004 47f0 lea 447f0 <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) {
4daba: 2e3c 0005 0780 movel #329600,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4dac0: 283c 0004 dce0 movel #318688,%d4 <== NOT EXECUTED
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
4dac6: 4a00 tstb %d0 <== NOT EXECUTED
4dac8: 6710 beqs 4dada <rtems_mkdir+0x5e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
4daca: 49c0 extbl %d0 <== NOT EXECUTED
4dacc: 742f moveq #47,%d2 <== NOT EXECUTED
4dace: b480 cmpl %d0,%d2 <== NOT EXECUTED
4dad0: 6738 beqs 4db0a <rtems_mkdir+0x8e> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
4dad2: 528a addql #1,%a2 <== NOT EXECUTED
4dad4: 101c moveb %a4@+,%d0 <== NOT EXECUTED
if (p[0] == '\0')
4dad6: 4a00 tstb %d0 <== NOT EXECUTED
4dad8: 66f0 bnes 4daca <rtems_mkdir+0x4e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4dada: 7401 moveq #1,%d2 <== NOT EXECUTED
4dadc: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
last = 1;
if (first) {
4dade: 4a81 tstl %d1 <== NOT EXECUTED
4dae0: 6650 bnes 4db32 <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) {
4dae2: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4dae8: 4a82 tstl %d2 <== NOT EXECUTED
4daea: 662e bnes 4db1a <rtems_mkdir+0x9e> <== NOT EXECUTED
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4daec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4daee: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4daf0: 4e95 jsr %a5@ <== NOT EXECUTED
4daf2: 508f addql #8,%sp <== NOT EXECUTED
4daf4: 4a80 tstl %d0 <== NOT EXECUTED
4daf6: 6d5c blts 4db54 <rtems_mkdir+0xd8> <== NOT EXECUTED
} else {
retval = 0;
break;
}
}
if (!last)
4daf8: 4a82 tstl %d2 <== NOT EXECUTED
4dafa: 6600 00c0 bnew 4dbbc <rtems_mkdir+0x140> <== NOT EXECUTED
*p = '/';
4dafe: 4281 clrl %d1 <== NOT EXECUTED
4db00: 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) {
4db04: 528a addql #1,%a2 <== NOT EXECUTED
4db06: 101c moveb %a4@+,%d0 <== NOT EXECUTED
4db08: 60cc bras 4dad6 <rtems_mkdir+0x5a> <== NOT EXECUTED
if (p[0] == '\0')
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4db0a: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
4db0c: 4a14 tstb %a4@ <== NOT EXECUTED
4db0e: 57c2 seq %d2 <== NOT EXECUTED
4db10: 49c2 extbl %d2 <== NOT EXECUTED
4db12: 4482 negl %d2 <== NOT EXECUTED
last = 1;
if (first) {
4db14: 4a81 tstl %d1 <== NOT EXECUTED
4db16: 67ca beqs 4dae2 <rtems_mkdir+0x66> <== NOT EXECUTED
4db18: 6018 bras 4db32 <rtems_mkdir+0xb6> <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4db1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4db1c: 2044 moveal %d4,%a0 <== NOT EXECUTED
4db1e: 4e90 jsr %a0@ <== NOT EXECUTED
4db20: 588f addql #4,%sp <== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4db22: 2005 movel %d5,%d0 <== NOT EXECUTED
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: 6cc8 bges 4daf8 <rtems_mkdir+0x7c> <== NOT EXECUTED
4db30: 6022 bras 4db54 <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);
4db32: 42a7 clrl %sp@- <== NOT EXECUTED
4db34: 2044 moveal %d4,%a0 <== NOT EXECUTED
4db36: 4e90 jsr %a0@ <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4db38: 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);
4db3a: 2600 movel %d0,%d3 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4db3c: 0280 ffff ff3f andil #-193,%d0 <== NOT EXECUTED
4db42: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4db44: 4e90 jsr %a0@ <== NOT EXECUTED
4db46: 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) {
4db48: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4db4e: 4a82 tstl %d2 <== NOT EXECUTED
4db50: 679a beqs 4daec <rtems_mkdir+0x70> <== NOT EXECUTED
4db52: 60c6 bras 4db1a <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) {
4db54: 2047 moveal %d7,%a0 <== NOT EXECUTED
4db56: 2c3c 0005 0780 movel #329600,%d6 <== NOT EXECUTED
4db5c: 4e90 jsr %a0@ <== NOT EXECUTED
4db5e: 7211 moveq #17,%d1 <== NOT EXECUTED
4db60: 2040 moveal %d0,%a0 <== NOT EXECUTED
4db62: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4db64: 670c beqs 4db72 <rtems_mkdir+0xf6> <== NOT EXECUTED
4db66: 2046 moveal %d6,%a0 <== NOT EXECUTED
4db68: 4e90 jsr %a0@ <== NOT EXECUTED
4db6a: 7215 moveq #21,%d1 <== NOT EXECUTED
4db6c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4db6e: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4db70: 6664 bnes 4dbd6 <rtems_mkdir+0x15a> <== NOT EXECUTED
if (stat(path, &sb) < 0) {
4db72: 486e ffba pea %fp@(-70) <== NOT EXECUTED
4db76: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4db78: 4eb9 0004 dc2c jsr 4dc2c <stat> <== NOT EXECUTED
4db7e: 508f addql #8,%sp <== NOT EXECUTED
4db80: 4a80 tstl %d0 <== NOT EXECUTED
4db82: 6d52 blts 4dbd6 <rtems_mkdir+0x15a> <== NOT EXECUTED
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
4db84: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
4db88: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
4db8e: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
4db94: 6700 ff62 beqw 4daf8 <rtems_mkdir+0x7c> <== NOT EXECUTED
if (last)
4db98: 4a82 tstl %d2 <== NOT EXECUTED
4db9a: 677a beqs 4dc16 <rtems_mkdir+0x19a> <== NOT EXECUTED
errno = EEXIST;
4db9c: 2046 moveal %d6,%a0 <== NOT EXECUTED
4db9e: 4e90 jsr %a0@ <== NOT EXECUTED
4dba0: 7211 moveq #17,%d1 <== NOT EXECUTED
4dba2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dba4: 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);
4dba6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4dba8: 4eb9 0004 40d0 jsr 440d0 <free> <== NOT EXECUTED
4dbae: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dbb0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4dbb2: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4dbb8: 4e5e unlk %fp <== NOT EXECUTED
4dbba: 4e75 rts <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4dbbc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4dbbe: 4eb9 0004 40d0 jsr 440d0 <free> <== NOT EXECUTED
4dbc4: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dbc6: 4280 clrl %d0 <== NOT EXECUTED
}
4dbc8: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4dbce: 4e5e unlk %fp <== NOT EXECUTED
4dbd0: 4e75 rts <== NOT EXECUTED
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
}
return success != 0 ? 0 : -1;
4dbd2: 70ff moveq #-1,%d0 <== NOT EXECUTED
4dbd4: 60dc bras 4dbb2 <rtems_mkdir+0x136> <== NOT EXECUTED
}
}
if (!last)
*p = '/';
}
if (!first && !last)
4dbd6: 4a82 tstl %d2 <== NOT EXECUTED
4dbd8: 66cc bnes 4dba6 <rtems_mkdir+0x12a> <== NOT EXECUTED
(void)umask(oumask);
4dbda: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4dbdc: 4eb9 0004 dce0 jsr 4dce0 <umask> <== NOT EXECUTED
4dbe2: 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);
4dbe4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4dbe6: 4eb9 0004 40d0 jsr 440d0 <free> <== NOT EXECUTED
4dbec: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4dbee: 70ff moveq #-1,%d0 <== NOT EXECUTED
4dbf0: 60c0 bras 4dbb2 <rtems_mkdir+0x136> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4dbf2: 45eb 0001 lea %a3@(1),%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4dbf6: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED
4dbfa: 4283 clrl %d3 <== NOT EXECUTED
4dbfc: 7201 moveq #1,%d1 <== NOT EXECUTED
4dbfe: 4bf9 0004 47f0 lea 447f0 <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) {
4dc04: 2e3c 0005 0780 movel #329600,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4dc0a: 283c 0004 dce0 movel #318688,%d4 <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4dc10: 1012 moveb %a2@,%d0 <== NOT EXECUTED
4dc12: 6000 feb2 braw 4dac6 <rtems_mkdir+0x4a> <== NOT EXECUTED
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
errno = EEXIST;
else
errno = ENOTDIR;
4dc16: 2046 moveal %d6,%a0 <== NOT EXECUTED
4dc18: 4e90 jsr %a0@ <== NOT EXECUTED
4dc1a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dc1c: 7014 moveq #20,%d0 <== NOT EXECUTED
4dc1e: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
if (!last)
*p = '/';
}
if (!first && !last)
(void)umask(oumask);
4dc20: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4dc22: 4eb9 0004 dce0 jsr 4dce0 <umask> <== NOT EXECUTED
4dc28: 588f addql #4,%sp <== NOT EXECUTED
4dc2a: 60b8 bras 4dbe4 <rtems_mkdir+0x168> <== NOT EXECUTED
0004642c <rtems_object_api_maximum_class>:
#include <rtems/rtems/types.h>
int rtems_object_api_maximum_class(
int api
)
{
4642c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_API_maximum_class(api);
}
46430: 4e5e unlk %fp <== NOT EXECUTED
int rtems_object_api_maximum_class(
int api
)
{
return _Objects_API_maximum_class(api);
46432: 4ef9 0004 7c3c jmp 47c3c <_Objects_API_maximum_class> <== NOT EXECUTED
00046438 <rtems_object_api_minimum_class>:
uint32_t api
)
{
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
46438: 7203 moveq #3,%d1 <== NOT EXECUTED
#include <rtems/rtems/types.h>
uint32_t rtems_object_api_minimum_class(
uint32_t api
)
{
4643a: 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 )
4643e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46442: 5380 subql #1,%d0 <== NOT EXECUTED
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
46444: b280 cmpl %d0,%d1 <== NOT EXECUTED
46446: 53c0 sls %d0 <== NOT EXECUTED
46448: 49c0 extbl %d0 <== NOT EXECUTED
}
4644a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
4644e: 4e5e unlk %fp <== NOT EXECUTED
46450: 8081 orl %d1,%d0 <== NOT EXECUTED
00046454 <rtems_object_get_api_class_name>:
)
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
46454: 7001 moveq #1,%d0 <== NOT EXECUTED
const char *rtems_object_get_api_class_name(
int the_api,
int the_class
)
{
46456: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4645a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
4645e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
46460: b081 cmpl %d1,%d0 <== NOT EXECUTED
46462: 674e beqs 464b2 <rtems_object_get_api_class_name+0x5e><== NOT EXECUTED
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
46464: 7402 moveq #2,%d2 <== NOT EXECUTED
46466: b481 cmpl %d1,%d2 <== NOT EXECUTED
46468: 6740 beqs 464aa <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 )
4646a: 143c 0003 moveb #3,%d2 <== NOT EXECUTED
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
4646e: 203c 0005 de62 movel #384610,%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 )
46474: b481 cmpl %d1,%d2 <== NOT EXECUTED
46476: 6708 beqs 46480 <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";
}
46478: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4647c: 4e5e unlk %fp <== NOT EXECUTED
4647e: 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;
46480: 203c 0005 f0a8 movel #389288,%d0 <== NOT EXECUTED
#endif
else
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
46486: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4648a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4648c: 4eb9 0004 b248 jsr 4b248 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( class_assoc )
46492: 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 );
46494: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
46496: 203c 0005 de6a movel #384618,%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 )
4649c: 4a88 tstl %a0 <== NOT EXECUTED
4649e: 67d8 beqs 46478 <rtems_object_get_api_class_name+0x24><== NOT EXECUTED
return class_assoc->name;
return "BAD CLASS";
}
464a0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
464a4: 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;
464a6: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
464a8: 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;
464aa: 203c 0005 f030 movel #389168,%d0 <== NOT EXECUTED
464b0: 60d4 bras 46486 <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;
464b2: 203c 0005 f018 movel #389144,%d0 <== NOT EXECUTED
464b8: 60cc bras 46486 <rtems_object_get_api_class_name+0x32><== NOT EXECUTED
...
000464bc <rtems_object_get_api_name>:
};
const char *rtems_object_get_api_name(
int api
)
{
464bc: 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 );
464c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
464c4: 4879 0005 f138 pea 5f138 <rtems_objects_api_assoc> <== NOT EXECUTED
464ca: 4eb9 0004 b248 jsr 4b248 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( api_assoc )
464d0: 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 );
464d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( api_assoc )
return api_assoc->name;
return "BAD CLASS";
464d4: 203c 0005 de6a movel #384618,%d0 <== NOT EXECUTED
)
{
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
if ( api_assoc )
464da: 4a88 tstl %a0 <== NOT EXECUTED
464dc: 6702 beqs 464e0 <rtems_object_get_api_name+0x24> <== NOT EXECUTED
return api_assoc->name;
464de: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
464e0: 4e5e unlk %fp <== NOT EXECUTED
00047f58 <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
)
{
47f58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47f5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47f5e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
47f62: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int i;
/*
* Validate parameters and look up information structure.
*/
if ( !info )
47f64: 4a8a tstl %a2 <== NOT EXECUTED
47f66: 6768 beqs 47fd0 <rtems_object_get_class_information+0x78><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
47f68: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED
47f6c: 4267 clrw %sp@- <== NOT EXECUTED
47f6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47f72: 4eb9 0004 9c90 jsr 49c90 <_Objects_Get_information> <== NOT EXECUTED
if ( !obj_info )
47f78: 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 );
47f7a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !obj_info )
47f7c: 4a80 tstl %d0 <== NOT EXECUTED
47f7e: 675e beqs 47fde <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;
47f80: 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;
47f84: 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;
47f86: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
47f8c: 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;
47f90: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED
info->maximum = obj_info->maximum;
47f96: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47f9a: 6750 beqs 47fec <rtems_object_get_class_information+0x94><== NOT EXECUTED
47f9c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
47fa0: 7201 moveq #1,%d1 <== NOT EXECUTED
47fa2: 7001 moveq #1,%d0 <== NOT EXECUTED
47fa4: 93c9 subal %a1,%a1 <== NOT EXECUTED
47fa6: 5280 addql #1,%d0 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
47fa8: 4ab0 1c00 tstl %a0@(00000000,%d1:l:4) <== NOT EXECUTED
47fac: 6718 beqs 47fc6 <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++ )
47fae: 2200 movel %d0,%d1 <== NOT EXECUTED
47fb0: b082 cmpl %d2,%d0 <== NOT EXECUTED
47fb2: 63f2 blss 47fa6 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
47fb4: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47fb8: 4280 clrl %d0 <== NOT EXECUTED
}
47fba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47fbe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fc2: 4e5e unlk %fp <== NOT EXECUTED
47fc4: 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++;
47fc6: 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++ )
47fc8: 2200 movel %d0,%d1 <== NOT EXECUTED
47fca: b082 cmpl %d2,%d0 <== NOT EXECUTED
47fcc: 63d8 blss 47fa6 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
47fce: 60e4 bras 47fb4 <rtems_object_get_class_information+0x5c><== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fd0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
47fd4: 7009 moveq #9,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fd6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fda: 4e5e unlk %fp <== NOT EXECUTED
47fdc: 4e75 rts <== NOT EXECUTED
47fde: 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;
47fe2: 700a moveq #10,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fe4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fe8: 4e5e unlk %fp <== NOT EXECUTED
47fea: 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++ )
47fec: 93c9 subal %a1,%a1 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
47fee: 4280 clrl %d0 <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
47ff0: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
47ff4: 60c4 bras 47fba <rtems_object_get_class_information+0x62><== NOT EXECUTED
...
000477cc <rtems_object_get_classic_name>:
rtems_status_code rtems_object_get_classic_name(
rtems_id id,
rtems_name *name
)
{
477cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
477d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
477d2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
477d6: 4a8a tstl %a2 <== NOT EXECUTED
477d8: 6726 beqs 47800 <rtems_object_get_classic_name+0x34><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
status = _Objects_Id_to_name( id, &name_u );
477da: 486e fffc pea %fp@(-4) <== NOT EXECUTED
477de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
477e2: 4eb9 0004 94e8 jsr 494e8 <_Objects_Id_to_name> <== NOT EXECUTED
*name = name_u.name_u32;
477e8: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
477ec: 41f9 0005 f190 lea 5f190 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
477f2: 508f addql #8,%sp <== NOT EXECUTED
}
477f4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
477f8: 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 ];
477fa: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
}
477fe: 4e75 rts <== NOT EXECUTED
47800: 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;
47804: 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 ];
}
47806: 4e5e unlk %fp <== NOT EXECUTED
...
0004781c <rtems_object_get_name>:
char *rtems_object_get_name(
Objects_Id id,
size_t length,
char *name
)
{
4781c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_name_as_string( id, length, name );
}
47820: 4e5e unlk %fp <== NOT EXECUTED
Objects_Id id,
size_t length,
char *name
)
{
return _Objects_Get_name_as_string( id, length, name );
47822: 4ef9 0004 978c jmp 4978c <_Objects_Get_name_as_string> <== NOT EXECUTED
00048004 <rtems_object_id_api_maximum>:
#undef rtems_object_id_api_maximum
int rtems_object_id_api_maximum(void)
{
return OBJECTS_APIS_LAST;
}
48004: 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)
{
48006: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_APIS_LAST;
}
4800a: 4e5e unlk %fp <== NOT EXECUTED
...
00048010 <rtems_object_id_api_minimum>:
#undef rtems_object_id_api_minimum
int rtems_object_id_api_minimum(void)
{
return OBJECTS_INTERNAL_API;
}
48010: 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)
{
48012: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_INTERNAL_API;
}
48016: 4e5e unlk %fp <== NOT EXECUTED
...
0004801c <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);
4801c: 4280 clrl %d0 <== NOT EXECUTED
int rtems_object_id_get_api(
rtems_id id
)
{
return _Objects_Get_API( id );
}
4801e: 7207 moveq #7,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_api
int rtems_object_id_get_api(
rtems_id id
)
{
48020: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48024: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_API( id );
}
48028: 4e5e unlk %fp <== NOT EXECUTED
4802a: c081 andl %d1,%d0 <== NOT EXECUTED
...
00048030 <rtems_object_id_get_class>:
int rtems_object_id_get_class(
rtems_id id
)
{
return _Objects_Get_class( id );
}
48030: 721b moveq #27,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_class
int rtems_object_id_get_class(
rtems_id id
)
{
48032: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48036: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_class( id );
}
4803a: 4e5e unlk %fp <== NOT EXECUTED
4803c: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
00048040 <rtems_object_id_get_index>:
int rtems_object_id_get_index(
rtems_id id
)
{
return _Objects_Get_index( id );
}
48040: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_index
int rtems_object_id_get_index(
rtems_id id
)
{
48042: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_index( id );
}
48046: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
4804a: 4e5e unlk %fp <== NOT EXECUTED
...
00048050 <rtems_object_id_get_node>:
int rtems_object_id_get_node(
rtems_id id
)
{
return _Objects_Get_node( id );
}
48050: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_node
int rtems_object_id_get_node(
rtems_id id
)
{
48052: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_node( id );
}
48056: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED
4805a: 4e5e unlk %fp <== NOT EXECUTED
...
000464f0 <rtems_object_set_name>:
*/
rtems_status_code rtems_object_set_name(
rtems_id id,
const char *name
)
{
464f0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
464f4: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
464f8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
464fc: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
Objects_Information *information;
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
46500: 6764 beqs 46566 <rtems_object_set_name+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
46502: 4a83 tstl %d3 <== NOT EXECUTED
46504: 6754 beqs 4655a <rtems_object_set_name+0x6a> <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
46506: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46508: 4eb9 0004 7fa8 jsr 47fa8 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
4650e: 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 );
46510: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( !information )
46512: 673a beqs 4654e <rtems_object_set_name+0x5e> <== NOT EXECUTED
return RTEMS_INVALID_ID;
the_object = _Objects_Get( information, tmpId, &location );
46514: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46518: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4651a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4651c: 4eb9 0004 8194 jsr 48194 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
46522: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46526: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4652a: 6622 bnes 4654e <rtems_object_set_name+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
4652c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4652e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46530: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46532: 4eb9 0004 8344 jsr 48344 <_Objects_Set_name> <== NOT EXECUTED
_Thread_Enable_dispatch();
46538: 4eb9 0004 8dbe jsr 48dbe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4653e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46542: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46544: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4654a: 4e5e unlk %fp <== NOT EXECUTED
4654c: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4654e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46550: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
46556: 4e5e unlk %fp <== NOT EXECUTED
46558: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4655a: 2079 0006 0cfa moveal 60cfa <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
46560: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
46564: 60a0 bras 46506 <rtems_object_set_name+0x16> <== NOT EXECUTED
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
46566: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46568: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4656e: 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 cf1e pea 5cf1e <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 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
42b8a: 2040 moveal %d0,%a0 <== NOT EXECUTED
42b8c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
42b8e: 4eb9 0004 3602 jsr 43602 <_exit> <== NOT EXECUTED
00056764 <rtems_partition_create>:
uint32_t length,
uint32_t buffer_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
56764: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
56768: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
5676c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
56770: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
56774: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
56778: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
5677c: 246e 001c moveal %fp@(28),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
56780: 4a82 tstl %d2 <== NOT EXECUTED
56782: 673a beqs 567be <rtems_partition_create+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
56784: 4a85 tstl %d5 <== NOT EXECUTED
56786: 671e beqs 567a6 <rtems_partition_create+0x42> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
56788: 4a8a tstl %a2 <== NOT EXECUTED
5678a: 671a beqs 567a6 <rtems_partition_create+0x42> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
5678c: 4a84 tstl %d4 <== NOT EXECUTED
5678e: 6722 beqs 567b2 <rtems_partition_create+0x4e> <== NOT EXECUTED
56790: 4a83 tstl %d3 <== NOT EXECUTED
56792: 671e beqs 567b2 <rtems_partition_create+0x4e> <== NOT EXECUTED
56794: b684 cmpl %d4,%d3 <== NOT EXECUTED
56796: 621a bhis 567b2 <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);
56798: 7003 moveq #3,%d0 <== NOT EXECUTED
5679a: c083 andl %d3,%d0 <== NOT EXECUTED
5679c: 6614 bnes 567b2 <rtems_partition_create+0x4e> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
5679e: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
567a2: c085 andl %d5,%d0 <== NOT EXECUTED
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
if ( !_Addresses_Is_aligned( starting_address ) )
567a4: 6724 beqs 567ca <rtems_partition_create+0x66> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
567a6: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567a8: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
567ae: 4e5e unlk %fp <== NOT EXECUTED
567b0: 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;
567b2: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567b4: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
567ba: 4e5e unlk %fp <== NOT EXECUTED
567bc: 4e75 rts <== NOT EXECUTED
)
{
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
567be: 7003 moveq #3,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567c0: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
567c6: 4e5e unlk %fp <== NOT EXECUTED
567c8: 4e75 rts <== NOT EXECUTED
567ca: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
567d0: 5280 addql #1,%d0 <== NOT EXECUTED
567d2: 23c0 0007 eaec movel %d0,7eaec <_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 );
567d8: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
567de: 4eb9 0005 b3ec jsr 5b3ec <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
567e4: 588f addql #4,%sp <== NOT EXECUTED
567e6: 2640 moveal %d0,%a3 <== NOT EXECUTED
567e8: 4a80 tstl %d0 <== NOT EXECUTED
567ea: 6758 beqs 56844 <rtems_partition_create+0xe0> <== NOT EXECUTED
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
567ec: 2744 0014 movel %d4,%a3@(20) <== NOT EXECUTED
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
567f0: 276e 0018 001c movel %fp@(24),%a3@(28) <== NOT EXECUTED
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
567f6: 4c43 4004 remul %d3,%d4,%d4 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
567fa: 2745 0010 movel %d5,%a3@(16) <== NOT EXECUTED
the_partition->length = length;
the_partition->buffer_size = buffer_size;
567fe: 2743 0018 movel %d3,%a3@(24) <== NOT EXECUTED
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
56802: 42ab 0020 clrl %a3@(32) <== NOT EXECUTED
_Chain_Initialize( &the_partition->Memory, starting_address,
56806: 2f03 movel %d3,%sp@- <== NOT EXECUTED
56808: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5680a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5680c: 486b 0024 pea %a3@(36) <== NOT EXECUTED
56810: 4eb9 0005 9cc8 jsr 59cc8 <_Chain_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
56816: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
5681a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5681c: 2079 0007 e99a moveal 7e99a <_Partition_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
56822: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
56824: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
56828: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Partition_Information,
&the_partition->Object,
(Objects_Name) name
);
*id = the_partition->Object.id;
5682c: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
5682e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
56834: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
56838: 4280 clrl %d0 <== NOT EXECUTED
}
5683a: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
56840: 4e5e unlk %fp <== NOT EXECUTED
56842: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
_Thread_Enable_dispatch();
56844: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
5684a: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
5684c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
56852: 4e5e unlk %fp <== NOT EXECUTED
...
00056858 <rtems_partition_delete>:
*/
rtems_status_code rtems_partition_delete(
rtems_id id
)
{
56858: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
5685c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56860: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56864: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
5686a: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
56870: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56874: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56878: 6706 beqs 56880 <rtems_partition_delete+0x28> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5687a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5687c: 4e5e unlk %fp <== NOT EXECUTED
5687e: 4e75 rts <== NOT EXECUTED
the_partition = _Partition_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_partition->number_of_used_blocks == 0 ) {
56880: 2040 moveal %d0,%a0 <== NOT EXECUTED
56882: 4aa8 0020 tstl %a0@(32) <== NOT EXECUTED
56886: 670c beqs 56894 <rtems_partition_delete+0x3c> <== NOT EXECUTED
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56888: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
5688e: 700c moveq #12,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56890: 4e5e unlk %fp <== NOT EXECUTED
56892: 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 );
56894: 2f00 movel %d0,%sp@- <== NOT EXECUTED
56896: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
5689c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
568a0: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Partition_Free (
Partition_Control *the_partition
)
{
_Objects_Free( &_Partition_Information, &the_partition->Object );
568a6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
568aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
568ac: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
568b2: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
568b8: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
568be: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
568c2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
568c4: 4e5e unlk %fp <== NOT EXECUTED
000568c8 <rtems_partition_get_buffer>:
rtems_status_code rtems_partition_get_buffer(
rtems_id id,
void **buffer
)
{
568c8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
568cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
568d0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
568d4: 4a8a tstl %a2 <== NOT EXECUTED
568d6: 6754 beqs 5692c <rtems_partition_get_buffer+0x64><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
568d8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
568dc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
568e0: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
568e6: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
568ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
568f0: 2640 moveal %d0,%a3 <== NOT EXECUTED
568f2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
568f6: 6628 bnes 56920 <rtems_partition_get_buffer+0x58><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
Partition_Control *the_partition
)
{
return _Chain_Get( &the_partition->Memory );
568f8: 486b 0024 pea %a3@(36) <== NOT EXECUTED
568fc: 4eb9 0005 9c8c jsr 59c8c <_Chain_Get> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_buffer = _Partition_Allocate_buffer( the_partition );
if ( the_buffer ) {
56902: 588f addql #4,%sp <== NOT EXECUTED
56904: 2400 movel %d0,%d2 <== NOT EXECUTED
56906: 6730 beqs 56938 <rtems_partition_get_buffer+0x70><== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
56908: 52ab 0020 addql #1,%a3@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
5690c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
56912: 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;
56914: 2482 movel %d2,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56916: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
5691c: 4e5e unlk %fp <== NOT EXECUTED
5691e: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56920: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56922: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
56928: 4e5e unlk %fp <== NOT EXECUTED
5692a: 4e75 rts <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
5692c: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5692e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
56934: 4e5e unlk %fp <== NOT EXECUTED
56936: 4e75 rts <== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
_Thread_Enable_dispatch();
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56938: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
5693e: 700d moveq #13,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56940: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
56946: 4e5e unlk %fp <== NOT EXECUTED
...
0005694c <rtems_partition_ident>:
rtems_status_code rtems_partition_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
5694c: 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 );
56950: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
56954: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
56958: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5695c: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
56962: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
56968: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
5696e: 4e5e unlk %fp <== NOT EXECUTED
56970: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00056978 <rtems_partition_return_buffer>:
rtems_status_code rtems_partition_return_buffer(
rtems_id id,
void *buffer
)
{
56978: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5697c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5697e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
56980: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56984: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56988: 4879 0007 e982 pea 7e982 <_Partition_Information> <== NOT EXECUTED
5698e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
56992: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
56998: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5699c: 2440 moveal %d0,%a2 <== NOT EXECUTED
5699e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
569a2: 670e beqs 569b2 <rtems_partition_return_buffer+0x3a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
569a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
569a8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
569aa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
569ae: 4e5e unlk %fp <== NOT EXECUTED
569b0: 4e75 rts <== NOT EXECUTED
)
{
void *starting;
void *ending;
starting = the_partition->starting_address;
569b2: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
ending = _Addresses_Add_offset( starting, the_partition->length );
569b6: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
569ba: b082 cmpl %d2,%d0 <== NOT EXECUTED
569bc: 623c bhis 569fa <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);
569be: d280 addl %d0,%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
569c0: b282 cmpl %d2,%d1 <== NOT EXECUTED
569c2: 6536 bcss 569fa <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);
569c4: 2202 movel %d2,%d1 <== NOT EXECUTED
569c6: 9280 subl %d0,%d1 <== NOT EXECUTED
569c8: 2001 movel %d1,%d0 <== NOT EXECUTED
offset = (uint32_t) _Addresses_Subtract(
the_buffer,
the_partition->starting_address
);
return ((offset % the_partition->buffer_size) == 0);
569ca: 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 ) &&
569d0: 4a81 tstl %d1 <== NOT EXECUTED
569d2: 6626 bnes 569fa <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 );
569d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
569d6: 486a 0024 pea %a2@(36) <== NOT EXECUTED
569da: 4eb9 0005 9c2c jsr 59c2c <_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;
569e0: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
569e4: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
569ea: 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;
569ee: 508f addql #8,%sp <== NOT EXECUTED
569f0: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
569f2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
569f6: 4e5e unlk %fp <== NOT EXECUTED
569f8: 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();
569fa: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a00: 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;
56a04: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a06: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
56a0a: 4e5e unlk %fp <== NOT EXECUTED
...
00055c60 <rtems_port_create>:
void *internal_start,
void *external_start,
uint32_t length,
rtems_id *id
)
{
55c60: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
55c64: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
55c68: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
55c6c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
55c70: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
55c74: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
55c78: 4a82 tstl %d2 <== NOT EXECUTED
55c7a: 671a beqs 55c96 <rtems_port_create+0x36> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
55c7c: 4a8a tstl %a2 <== NOT EXECUTED
55c7e: 670a beqs 55c8a <rtems_port_create+0x2a> <== NOT EXECUTED
* id - port id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_port_create(
55c80: 2003 movel %d3,%d0 <== NOT EXECUTED
55c82: 7203 moveq #3,%d1 <== NOT EXECUTED
55c84: 8084 orl %d4,%d0 <== NOT EXECUTED
55c86: c081 andl %d1,%d0 <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !_Addresses_Is_aligned( internal_start ) ||
55c88: 6718 beqs 55ca2 <rtems_port_create+0x42> <== NOT EXECUTED
!_Addresses_Is_aligned( external_start ) )
return RTEMS_INVALID_ADDRESS;
55c8a: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55c8c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
55c92: 4e5e unlk %fp <== NOT EXECUTED
55c94: 4e75 rts <== NOT EXECUTED
)
{
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
55c96: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55c98: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
55c9e: 4e5e unlk %fp <== NOT EXECUTED
55ca0: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
55ca2: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
55ca8: 5280 addql #1,%d0 <== NOT EXECUTED
55caa: 23c0 0007 eaec movel %d0,7eaec <_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 );
55cb0: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55cb6: 4eb9 0005 b3ec jsr 5b3ec <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
55cbc: 588f addql #4,%sp <== NOT EXECUTED
55cbe: 2040 moveal %d0,%a0 <== NOT EXECUTED
55cc0: 4a80 tstl %d0 <== NOT EXECUTED
55cc2: 673c beqs 55d00 <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;
55cc4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
55cc8: 5381 subql #1,%d1 <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
55cca: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
55cce: 2141 0018 movel %d1,%a0@(24) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55cd2: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
55cd4: 2279 0007 e960 moveal 7e960 <_Dual_ported_memory_Information+0x18>,%a1<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55cda: 3200 movew %d0,%d1 <== NOT EXECUTED
if ( !the_port ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_port->internal_base = internal_start;
55cdc: 2144 0010 movel %d4,%a0@(16) <== NOT EXECUTED
the_port->external_base = external_start;
55ce0: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
55ce4: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
55ce8: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Dual_ported_memory_Information,
&the_port->Object,
(Objects_Name) name
);
*id = the_port->Object.id;
55cec: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
55cee: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
55cf4: 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;
55cfa: 4280 clrl %d0 <== NOT EXECUTED
}
55cfc: 4e5e unlk %fp <== NOT EXECUTED
55cfe: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
_Thread_Enable_dispatch();
55d00: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
55d06: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55d08: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
55d0e: 4e5e unlk %fp <== NOT EXECUTED
...
00055d14 <rtems_port_delete>:
*/
rtems_status_code rtems_port_delete(
rtems_id id
)
{
55d14: 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 );
55d18: 486e fffc pea %fp@(-4) <== NOT EXECUTED
55d1c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55d20: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55d26: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55d2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
55d30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
55d34: 6634 bnes 55d6a <rtems_port_delete+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Dual_ported_memory_Information, &the_port->Object );
55d36: 2f00 movel %d0,%sp@- <== NOT EXECUTED
55d38: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55d3e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
55d42: 4eb9 0005 b47c jsr 5b47c <_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 );
55d48: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
55d4c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
55d4e: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55d54: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
_Dual_ported_memory_Free( the_port );
_Thread_Enable_dispatch();
55d5a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55d60: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
55d64: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55d66: 4e5e unlk %fp <== NOT EXECUTED
55d68: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55d6a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55d6c: 4e5e unlk %fp <== NOT EXECUTED
00055d70 <rtems_port_external_to_internal>:
rtems_status_code rtems_port_external_to_internal(
rtems_id id,
void *external,
void **internal
)
{
55d70: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
55d74: 2f0a movel %a2,%sp@- <== NOT EXECUTED
55d76: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
55d7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
55d7c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
55d80: 4a8a tstl %a2 <== NOT EXECUTED
55d82: 6762 beqs 55de6 <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 );
55d84: 486e fffc pea %fp@(-4) <== NOT EXECUTED
55d88: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55d8c: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55d92: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55d98: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
55d9c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
55da0: 6624 bnes 55dc6 <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);
55da2: 2202 movel %d2,%d1 <== NOT EXECUTED
55da4: 2040 moveal %d0,%a0 <== NOT EXECUTED
55da6: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( external, the_port->external_base );
if ( ending > the_port->length )
55daa: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED
55dae: 6324 blss 55dd4 <rtems_port_external_to_internal+0x64><== NOT EXECUTED
*internal = external;
55db0: 2482 movel %d2,%a2@ <== NOT EXECUTED
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
55db2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55db8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55dba: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
55dbe: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55dc2: 4e5e unlk %fp <== NOT EXECUTED
55dc4: 4e75 rts <== NOT EXECUTED
55dc6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55dca: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55dcc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55dd0: 4e5e unlk %fp <== NOT EXECUTED
55dd2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55dd4: 2040 moveal %d0,%a0 <== NOT EXECUTED
55dd6: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
55dda: 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();
55ddc: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55de2: 4280 clrl %d0 <== NOT EXECUTED
55de4: 60d4 bras 55dba <rtems_port_external_to_internal+0x4a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55de6: 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;
55dea: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55dec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55df0: 4e5e unlk %fp <== NOT EXECUTED
00055df4 <rtems_port_ident>:
rtems_status_code rtems_port_ident(
rtems_name name,
rtems_id *id
)
{
55df4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
55df8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
55dfc: 42a7 clrl %sp@- <== NOT EXECUTED
55dfe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55e02: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55e08: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_ALL_NODES,
id
);
return _Status_Object_name_errors_to_status[ status ];
55e0e: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
55e14: 4e5e unlk %fp <== NOT EXECUTED
55e16: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00055e1c <rtems_port_internal_to_external>:
rtems_status_code rtems_port_internal_to_external(
rtems_id id,
void *internal,
void **external
)
{
55e1c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
55e20: 2f0a movel %a2,%sp@- <== NOT EXECUTED
55e22: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
55e26: 2f02 movel %d2,%sp@- <== NOT EXECUTED
55e28: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
55e2c: 4a8a tstl %a2 <== NOT EXECUTED
55e2e: 6762 beqs 55e92 <rtems_port_internal_to_external+0x76><== NOT EXECUTED
55e30: 486e fffc pea %fp@(-4) <== NOT EXECUTED
55e34: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55e38: 4879 0007 e948 pea 7e948 <_Dual_ported_memory_Information> <== NOT EXECUTED
55e3e: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55e44: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
55e48: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
55e4c: 6624 bnes 55e72 <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);
55e4e: 2202 movel %d2,%d1 <== NOT EXECUTED
55e50: 2040 moveal %d0,%a0 <== NOT EXECUTED
55e52: 92a8 0010 subl %a0@(16),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( internal, the_port->internal_base );
if ( ending > the_port->length )
55e56: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED
55e5a: 6324 blss 55e80 <rtems_port_internal_to_external+0x64><== NOT EXECUTED
*external = internal;
55e5c: 2482 movel %d2,%a2@ <== NOT EXECUTED
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
55e5e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55e64: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e66: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
55e6a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55e6e: 4e5e unlk %fp <== NOT EXECUTED
55e70: 4e75 rts <== NOT EXECUTED
55e72: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55e76: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55e78: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55e7c: 4e5e unlk %fp <== NOT EXECUTED
55e7e: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55e80: 2040 moveal %d0,%a0 <== NOT EXECUTED
55e82: d2a8 0014 addl %a0@(20),%d1 <== NOT EXECUTED
55e86: 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();
55e88: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55e8e: 4280 clrl %d0 <== NOT EXECUTED
55e90: 60d4 bras 55e66 <rtems_port_internal_to_external+0x4a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e92: 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;
55e96: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55e9c: 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 f790 lea 4f790 <sprintf>,%a4 <== NOT EXECUTED
4214a: 4bf9 0004 feac lea 4feac <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 cfbc pea 5cfbc <IntUartPollCallbacks.6370+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 e74c moveal 5e74c <__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 cfc4 pea 5cfc4 <IntUartPollCallbacks.6370+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 3df8 jsr 43df8 <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 f790 lea 4f790 <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 cfbc pea 5cfbc <IntUartPollCallbacks.6370+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 feac lea 4feac <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 f790 lea 4f790 <sprintf>,%a4 <== NOT EXECUTED
4226a: 4eb9 0004 feac jsr 4feac <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 e74c moveal 5e74c <__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 cfc4 pea 5cfc4 <IntUartPollCallbacks.6370+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 3df8 jsr 43df8 <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 feac lea 4feac <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 feac lea 4feac <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
...
00056a10 <rtems_rate_monotonic_cancel>:
*/
rtems_status_code rtems_rate_monotonic_cancel(
rtems_id id
)
{
56a10: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
56a14: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
56a16: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56a1a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56a1e: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED
56a24: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
56a2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56a2e: 2440 moveal %d0,%a2 <== NOT EXECUTED
56a30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56a34: 670a beqs 56a40 <rtems_rate_monotonic_cancel+0x30><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a36: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56a3a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56a3c: 4e5e unlk %fp <== NOT EXECUTED
56a3e: 4e75 rts <== NOT EXECUTED
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
56a40: 2039 0007 ef7e movel 7ef7e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
56a46: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
56a4a: 6710 beqs 56a5c <rtems_rate_monotonic_cancel+0x4c><== NOT EXECUTED
_Thread_Enable_dispatch();
56a4c: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a52: 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;
56a56: 7017 moveq #23,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a58: 4e5e unlk %fp <== NOT EXECUTED
56a5a: 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 );
56a5c: 486a 0010 pea %a2@(16) <== NOT EXECUTED
56a60: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56a66: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a6a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a70: 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;
56a74: 588f addql #4,%sp <== NOT EXECUTED
56a76: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a78: 4e5e unlk %fp <== NOT EXECUTED
00047188 <rtems_rate_monotonic_create>:
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
rtems_id *id
)
{
47188: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4718c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
47190: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47194: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
47198: 6700 00ae beqw 47248 <rtems_rate_monotonic_create+0xc0><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4719c: 4a8a tstl %a2 <== NOT EXECUTED
4719e: 6700 00c6 beqw 47266 <rtems_rate_monotonic_create+0xde><== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471a2: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
471a8: 5280 addql #1,%d0 <== NOT EXECUTED
471aa: 23c0 0006 1de2 movel %d0,61de2 <_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 );
471b0: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
471b6: 4eb9 0004 9304 jsr 49304 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
471bc: 588f addql #4,%sp <== NOT EXECUTED
471be: 2040 moveal %d0,%a0 <== NOT EXECUTED
471c0: 4a80 tstl %d0 <== NOT EXECUTED
471c2: 6700 0090 beqw 47254 <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 );
471c6: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
471ca: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED
471ce: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
471d2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
471d6: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED
if ( !the_period ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
471da: 47f9 0006 226c lea 6226c <_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 );
471e0: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
471e4: 4281 clrl %d1 <== NOT EXECUTED
471e6: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
if ( !the_period ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
471ea: 2153 0040 movel %a3@,%a0@(64) <== NOT EXECUTED
471ee: 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 );
471f0: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED
471f4: 4299 clrl %a1@+ <== NOT EXECUTED
471f6: 4299 clrl %a1@+ <== NOT EXECUTED
471f8: 4299 clrl %a1@+ <== NOT EXECUTED
471fa: 4291 clrl %a1@ <== NOT EXECUTED
471fc: 227c 7fff ffff moveal #2147483647,%a1 <== NOT EXECUTED
47202: 2149 005c movel %a1,%a0@(92) <== NOT EXECUTED
47206: 2149 0060 movel %a1,%a0@(96) <== NOT EXECUTED
4720a: 2149 0074 movel %a1,%a0@(116) <== NOT EXECUTED
4720e: 2149 0078 movel %a1,%a0@(120) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47212: 2279 0006 1d04 moveal 61d04 <_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;
47218: 42a8 0038 clrl %a0@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4721c: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
47220: 42a8 002c clrl %a0@(44) <== NOT EXECUTED
the_watchdog->id = id;
47224: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47228: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
4722c: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
47230: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Rate_monotonic_Information,
&the_period->Object,
(Objects_Name) name
);
*id = the_period->Object.id;
47234: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47236: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4723c: 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;
47242: 4280 clrl %d0 <== NOT EXECUTED
}
47244: 4e5e unlk %fp <== NOT EXECUTED
47246: 4e75 rts <== NOT EXECUTED
)
{
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
47248: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4724a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
47250: 4e5e unlk %fp <== NOT EXECUTED
47252: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
_Thread_Enable_dispatch();
47254: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4725a: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4725c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
47262: 4e5e unlk %fp <== NOT EXECUTED
47264: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
47266: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47268: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4726e: 4e5e unlk %fp <== NOT EXECUTED
...
00056b68 <rtems_rate_monotonic_delete>:
*/
rtems_status_code rtems_rate_monotonic_delete(
rtems_id id
)
{
56b68: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
56b6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
56b6e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56b72: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56b76: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED
56b7c: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
56b82: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56b86: 2440 moveal %d0,%a2 <== NOT EXECUTED
56b88: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56b8c: 663e bnes 56bcc <rtems_rate_monotonic_delete+0x64><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
56b8e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
56b90: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED
56b96: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_period->Timer );
56b9c: 486a 0010 pea %a2@(16) <== NOT EXECUTED
56ba0: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56ba6: 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 );
56baa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
56bac: 4879 0007 e9bc pea 7e9bc <_Rate_monotonic_Information> <== NOT EXECUTED
56bb2: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
56bb8: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56bbe: 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;
56bc2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
56bc6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56bc8: 4e5e unlk %fp <== NOT EXECUTED
56bca: 4e75 rts <== NOT EXECUTED
56bcc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56bd0: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56bd2: 4e5e unlk %fp <== NOT EXECUTED
...
0004dc6c <rtems_rate_monotonic_get_statistics>:
rtems_status_code rtems_rate_monotonic_get_statistics(
rtems_id id,
rtems_rate_monotonic_period_statistics *statistics
)
{
4dc6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4dc70: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4dc72: 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 )
4dc76: 4a8a tstl %a2 <== NOT EXECUTED
4dc78: 6700 00a6 beqw 4dd20 <rtems_rate_monotonic_get_statistics+0xb4><== NOT EXECUTED
4dc7c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4dc80: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4dc84: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
4dc8a: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4dc90: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4dc94: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dc96: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4dc9a: 667a bnes 4dd16 <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
case OBJECTS_LOCAL:
dst = statistics;
src = &the_period->Statistics;
dst->count = src->count;
4dc9c: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED
dst->missed_count = src->missed_count;
4dca0: 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 );
4dca6: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
4dcaa: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED
4dcae: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4dcb2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
4dcb6: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED
4dcba: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED
4dcbe: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4dcc2: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
4dcc6: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED
4dcca: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED
4dcce: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
4dcd2: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED
_Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
4dcd6: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED
4dcda: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED
4dcde: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
4dce2: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
4dce6: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED
4dcea: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED
4dcee: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
4dcf2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
4dcf6: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
4dcfa: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED
4dcfe: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4dd02: 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();
4dd06: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dd0c: 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;
4dd10: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dd12: 4e5e unlk %fp <== NOT EXECUTED
4dd14: 4e75 rts <== NOT EXECUTED
4dd16: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4dd1a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4dd1c: 4e5e unlk %fp <== NOT EXECUTED
4dd1e: 4e75 rts <== NOT EXECUTED
4dd20: 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;
4dd24: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dd26: 4e5e unlk %fp <== NOT EXECUTED
...
0004dd2c <rtems_rate_monotonic_get_status>:
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
)
{
4dd2c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4dd30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4dd32: 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 )
4dd36: 4a8a tstl %a2 <== NOT EXECUTED
4dd38: 6700 00a0 beqw 4ddda <rtems_rate_monotonic_get_status+0xae><== NOT EXECUTED
4dd3c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4dd40: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4dd44: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
4dd4a: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4dd50: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4dd54: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dd56: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4dd5a: 6632 bnes 4dd8e <rtems_rate_monotonic_get_status+0x62><== NOT EXECUTED
case OBJECTS_LOCAL:
status->owner = the_period->owner->Object.id;
4dd5c: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED
4dd60: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED
status->state = the_period->state;
4dd64: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
4dd68: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
/*
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
4dd6c: 662a bnes 4dd98 <rtems_rate_monotonic_get_status+0x6c><== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timespec_Set_to_zero( &status->since_last_period );
4dd6e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
4dd72: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Timespec_Set_to_zero( &status->executed_since_last_period );
4dd76: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
4dd7a: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
status->since_last_period = since_last_period;
status->executed_since_last_period = executed;
#endif
}
_Thread_Enable_dispatch();
4dd7e: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4dd84: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dd86: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4dd8a: 4e5e unlk %fp <== NOT EXECUTED
4dd8c: 4e75 rts <== NOT EXECUTED
4dd8e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4dd92: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4dd94: 4e5e unlk %fp <== NOT EXECUTED
4dd96: 4e75 rts <== NOT EXECUTED
} else {
/*
* Grab the current status.
*/
valid_status =
4dd98: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
4dd9c: 486e ffec pea %fp@(-20) <== NOT EXECUTED
4dda0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4dda2: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
4dda8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ddac: 4a00 tstb %d0 <== NOT EXECUTED
4ddae: 6734 beqs 4dde4 <rtems_rate_monotonic_get_status+0xb8><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec(
4ddb0: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
4ddb4: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
4ddb8: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4ddbc: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
&since_last_period, &status->since_last_period
);
_Timestamp_To_timespec(
4ddc0: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4ddc4: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
4ddc8: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4ddcc: 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();
4ddd0: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4ddd6: 4280 clrl %d0 <== NOT EXECUTED
4ddd8: 60ac bras 4dd86 <rtems_rate_monotonic_get_status+0x5a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddda: 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;
4ddde: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4dde0: 4e5e unlk %fp <== NOT EXECUTED
4dde2: 4e75 rts <== NOT EXECUTED
valid_status =
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
4dde4: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddea: 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;
4ddee: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ddf0: 4e5e unlk %fp <== NOT EXECUTED
00047274 <rtems_rate_monotonic_ident>:
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
rtems_id *id
)
{
47274: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47278: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4727c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
47282: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47286: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
4728c: 4eb9 0004 9a78 jsr 49a78 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47292: 41f9 0005 f566 lea 5f566 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
47298: 4e5e unlk %fp <== NOT EXECUTED
4729a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
000474f0 <rtems_rate_monotonic_period>:
rtems_status_code rtems_rate_monotonic_period(
rtems_id id,
rtems_interval length
)
{
474f0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
474f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
474f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
474f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
474fc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47500: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47502: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
47508: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED
rtems_rate_monotonic_period_states local_state;
ISR_Level level;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4750e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47512: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47516: 6624 bnes 4753c <rtems_rate_monotonic_period+0x4c><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
47518: 2279 0006 226c moveal 6226c <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4751e: 2040 moveal %d0,%a0 <== NOT EXECUTED
47520: b3e8 0040 cmpal %a0@(64),%a1 <== NOT EXECUTED
47524: 6726 beqs 4754c <rtems_rate_monotonic_period+0x5c><== NOT EXECUTED
_Thread_Enable_dispatch();
47526: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
4752c: 7617 moveq #23,%d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4752e: 2003 movel %d3,%d0 <== NOT EXECUTED
47530: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
47534: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47538: 4e5e unlk %fp <== NOT EXECUTED
4753a: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4753c: 7604 moveq #4,%d3 <== NOT EXECUTED
}
4753e: 2003 movel %d3,%d0 <== NOT EXECUTED
47540: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
47544: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47548: 4e5e unlk %fp <== NOT EXECUTED
4754a: 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 ) {
4754c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
47550: 6624 bnes 47576 <rtems_rate_monotonic_period+0x86><== NOT EXECUTED
switch ( the_period->state ) {
47552: 2040 moveal %d0,%a0 <== NOT EXECUTED
47554: 7204 moveq #4,%d1 <== NOT EXECUTED
47556: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
4755a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4755c: 6400 008a bccw 475e8 <rtems_rate_monotonic_period+0xf8><== NOT EXECUTED
47560: 4283 clrl %d3 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
47562: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47568: 2003 movel %d3,%d0 <== NOT EXECUTED
4756a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4756e: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47572: 4e5e unlk %fp <== NOT EXECUTED
47574: 4e75 rts <== NOT EXECUTED
}
_Thread_Enable_dispatch();
return( return_value );
}
_ISR_Disable( level );
47576: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
4757c: 40c3 movew %sr,%d3 <== NOT EXECUTED
4757e: 8283 orl %d3,%d1 <== NOT EXECUTED
47580: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
47582: 2040 moveal %d0,%a0 <== NOT EXECUTED
47584: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
47588: 6772 beqs 475fc <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 ) {
4758a: 7402 moveq #2,%d2 <== NOT EXECUTED
4758c: b481 cmpl %d1,%d2 <== NOT EXECUTED
4758e: 6700 00d2 beqw 47662 <rtems_rate_monotonic_period+0x172><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {
47592: 7404 moveq #4,%d2 <== NOT EXECUTED
47594: b481 cmpl %d1,%d2 <== NOT EXECUTED
47596: 66a4 bnes 4753c <rtems_rate_monotonic_period+0x4c><== NOT EXECUTED
/*
* Update statistics from the concluding period
*/
_Rate_monotonic_Update_statistics( the_period );
47598: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4759a: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
4759e: 4eb9 0004 73d6 jsr 473d6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED
_ISR_Enable( level );
475a4: 46c3 movew %d3,%sr <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
475a6: 7202 moveq #2,%d1 <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
475a8: 7606 moveq #6,%d3 <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
475aa: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
475ae: 2040 moveal %d0,%a0 <== NOT EXECUTED
the_period->next_length = length;
475b0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
475b4: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED
the_period->next_length = length;
475b8: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
475bc: 2149 001c movel %a1,%a0@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
475c0: 4868 0010 pea %a0@(16) <== NOT EXECUTED
475c4: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED
475ca: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
475d0: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
475d6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
475da: 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;
475dc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
475e0: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
475e4: 4e5e unlk %fp <== NOT EXECUTED
475e6: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
switch ( the_period->state ) {
475e8: 41f9 0005 f386 lea 5f386 <CSWTCH.2>,%a0 <== NOT EXECUTED
475ee: 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();
475f2: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
475f8: 6000 ff6e braw 47568 <rtems_rate_monotonic_period+0x78><== NOT EXECUTED
return( return_value );
}
_ISR_Disable( level );
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
_ISR_Enable( level );
475fc: 46c3 movew %d3,%sr <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
475fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47600: 4283 clrl %d3 <== NOT EXECUTED
_ISR_Enable( level );
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
47602: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
47606: 4eb9 0004 7358 jsr 47358 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4760c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47610: 2240 moveal %d0,%a1 <== NOT EXECUTED
47612: 223c 0004 7974 movel #293236,%d1 <== NOT EXECUTED
the_watchdog->id = id;
47618: 2342 0030 movel %d2,%a1@(48) <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
4761c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
47620: 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;
47624: 7202 moveq #2,%d1 <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
47626: 2342 003c movel %d2,%a1@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4762a: 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;
4762e: 2341 0038 movel %d1,%a1@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
47632: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
47636: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4763a: 4869 0010 pea %a1@(16) <== NOT EXECUTED
4763e: 4879 0006 1ec2 pea 61ec2 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47644: 4eb9 0004 b4b0 jsr 4b4b0 <_Watchdog_Insert> <== NOT EXECUTED
);
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
4764a: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47650: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
47654: 2003 movel %d3,%d0 <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47656: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4765a: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
4765e: 4e5e unlk %fp <== NOT EXECUTED
47660: 4e75 rts <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
/*
* Update statistics from the concluding period.
*/
_Rate_monotonic_Update_statistics( the_period );
47662: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47664: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
47668: 4eb9 0004 73d6 jsr 473d6 <_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;
4766e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47672: 7201 moveq #1,%d1 <== NOT EXECUTED
47674: 2040 moveal %d0,%a0 <== NOT EXECUTED
the_period->next_length = length;
47676: 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;
4767a: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED
the_period->next_length = length;
4767e: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED
_ISR_Enable( level );
47682: 46c3 movew %d3,%sr <== NOT EXECUTED
_Thread_Executing->Wait.id = the_period->Object.id;
47684: 2079 0006 226c moveal 6226c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4768a: 2240 moveal %d0,%a1 <== NOT EXECUTED
4768c: 5089 addql #8,%a1 <== NOT EXECUTED
4768e: 2151 0020 movel %a1@,%a0@(32) <== NOT EXECUTED
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
47692: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
47696: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
4769a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4769c: 4eb9 0004 ad78 jsr 4ad78 <_Thread_Set_state> <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
476a2: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
476a8: 40c2 movew %sr,%d2 <== NOT EXECUTED
476aa: 8282 orl %d2,%d1 <== NOT EXECUTED
476ac: 46c1 movew %d1,%sr <== NOT EXECUTED
local_state = the_period->state;
the_period->state = RATE_MONOTONIC_ACTIVE;
476ae: 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;
476b0: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
476b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
476b6: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
476ba: 2143 0038 movel %d3,%a0@(56) <== NOT EXECUTED
_ISR_Enable( level );
476be: 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 )
476c0: 7003 moveq #3,%d0 <== NOT EXECUTED
476c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
476c6: b081 cmpl %d1,%d0 <== NOT EXECUTED
476c8: 6716 beqs 476e0 <rtems_rate_monotonic_period+0x1f0><== NOT EXECUTED
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
_Thread_Enable_dispatch();
476ca: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
476d0: 4283 clrl %d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
476d2: 2003 movel %d3,%d0 <== NOT EXECUTED
476d4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
476d8: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
476dc: 4e5e unlk %fp <== NOT EXECUTED
476de: 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 );
476e0: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
476e4: 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 );
476e6: 2f39 0006 226c movel 6226c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
476ec: 4eb9 0004 a0c4 jsr 4a0c4 <_Thread_Clear_state> <== NOT EXECUTED
476f2: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
476f4: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
476fa: 60d6 bras 476d2 <rtems_rate_monotonic_period+0x1e2><== NOT EXECUTED
0004789e <rtems_rate_monotonic_report_statistics>:
}
}
}
void rtems_rate_monotonic_report_statistics( void )
{
4789e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin );
478a2: 4879 0004 d1d8 pea 4d1d8 <printk_plugin> <== NOT EXECUTED
478a8: 42a7 clrl %sp@- <== NOT EXECUTED
478aa: 4eb9 0004 76fc jsr 476fc <rtems_rate_monotonic_report_statistics_with_plugin><== NOT EXECUTED
478b0: 508f addql #8,%sp <== NOT EXECUTED
}
478b2: 4e5e unlk %fp <== NOT EXECUTED
...
000476fc <rtems_rate_monotonic_report_statistics_with_plugin>:
*/
void rtems_rate_monotonic_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
476fc: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED
47700: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
47704: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
47708: 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 )
4770c: 4a8a tstl %a2 <== NOT EXECUTED
4770e: 6700 0082 beqw 47792 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
return;
(*print)( context, "Period information by period\n" );
47712: 4879 0005 f39a pea 5f39a <CSWTCH.2+0x14> <== NOT EXECUTED
47718: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4771a: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)( context, "--- CPU times are in seconds ---\n" );
4771c: 4879 0005 f3b8 pea 5f3b8 <CSWTCH.2+0x32> <== NOT EXECUTED
47722: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47724: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context, "--- Wall times are in seconds ---\n" );
47726: 4879 0005 f3da pea 5f3da <CSWTCH.2+0x54> <== NOT EXECUTED
4772c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4772e: 4e92 jsr %a2@ <== NOT EXECUTED
Be sure to test the various cases.
(*print)( context,"\
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");
*/
(*print)( context, " ID OWNER COUNT MISSED "
47730: 4879 0005 f3fd pea 5f3fd <CSWTCH.2+0x77> <== NOT EXECUTED
47736: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47738: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
" "
#endif
" WALL TIME\n"
);
(*print)( context, " "
4773a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4773e: 2ebc 0005 f448 movel #390216,%sp@ <== NOT EXECUTED
47744: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47746: 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 ;
47748: 2439 0006 1cf2 movel 61cf2 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
4774e: 508f addql #8,%sp <== NOT EXECUTED
47750: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
47756: 623a bhis 47792 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
47758: 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 );
4775a: 2a0e movel %fp,%d5 <== NOT EXECUTED
4775c: 0684 ffff ffa2 addil #-94,%d4 <== NOT EXECUTED
47762: 47f9 0004 dc6c lea 4dc6c <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 );
47768: 4bf9 0004 dd2c lea 4dd2c <rtems_rate_monotonic_get_status>,%a5<== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
4776e: 5b85 subql #5,%d5 <== NOT EXECUTED
47770: 49f9 0004 7a54 lea 47a54 <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 );
47776: 2e3c 0004 b0b0 movel #307376,%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 );
4777c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4777e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47780: 4e93 jsr %a3@ <== NOT EXECUTED
if ( status != RTEMS_SUCCESSFUL )
47782: 508f addql #8,%sp <== NOT EXECUTED
47784: 4a80 tstl %d0 <== NOT EXECUTED
47786: 6714 beqs 4779c <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++ ) {
47788: 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 ;
4778a: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
47790: 63ea blss 4777c <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
}
}
}
47792: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED
47798: 4e5e unlk %fp <== NOT EXECUTED
4779a: 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 );
4779c: 486e ffda pea %fp@(-38) <== NOT EXECUTED
477a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
477a2: 4e95 jsr %a5@ <== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
477a4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
477a6: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
477aa: 2f2e ffda movel %fp@(-38),%sp@- <== NOT EXECUTED
477ae: 4e94 jsr %a4@ <== NOT EXECUTED
/*
* Print part of report line that is not dependent on granularity
*/
(*print)( context,
477b0: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED
477b4: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED
477b8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
477ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
477bc: 4879 0005 f494 pea 5f494 <CSWTCH.2+0x10e> <== NOT EXECUTED
477c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477c4: 4e92 jsr %a2@ <== NOT EXECUTED
);
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
477c6: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED
477ca: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
477ce: 6618 bnes 477e8 <rtems_rate_monotonic_report_statistics_with_plugin+0xec><== NOT EXECUTED
(*print)( context, "\n" );
477d0: 4879 0005 f2be pea 5f2be <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++ ) {
477d6: 5282 addql #1,%d2 <== NOT EXECUTED
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
(*print)( context, "\n" );
477d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477da: 4e92 jsr %a2@ <== NOT EXECUTED
continue;
477dc: 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 ;
477de: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
477e4: 6396 blss 4777c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED
477e6: 60aa bras 47792 <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 );
477e8: 486e fff2 pea %fp@(-14) <== NOT EXECUTED
477ec: 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++ ) {
477ee: 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 );
477f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
477f2: 486e ffba pea %fp@(-70) <== NOT EXECUTED
477f6: 4e90 jsr %a0@ <== NOT EXECUTED
(*print)( context,
477f8: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED
477fc: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
47802: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
47806: 2c2e ffb6 movel %fp@(-74),%d6 <== NOT EXECUTED
4780a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4780c: 2001 movel %d1,%d0 <== NOT EXECUTED
4780e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED
47812: 4c40 6806 remsl %d0,%d6,%d6 <== NOT EXECUTED
47816: 202e ffae movel %fp@(-82),%d0 <== NOT EXECUTED
4781a: 2246 moveal %d6,%a1 <== NOT EXECUTED
4781c: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
47822: 2f09 movel %a1,%sp@- <== NOT EXECUTED
47824: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED
47828: 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,
4782c: 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,
47832: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47834: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED
47838: 4879 0005 f4ab pea 5f4ab <CSWTCH.2+0x125> <== NOT EXECUTED
4783e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47840: 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);
47842: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
47846: 2047 moveal %d7,%a0 <== NOT EXECUTED
47848: 486e fff2 pea %fp@(-14) <== NOT EXECUTED
4784c: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED
47850: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED
47854: 4e90 jsr %a0@ <== NOT EXECUTED
(*print)( context,
47856: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED
4785a: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED
4785e: 222e ffce movel %fp@(-50),%d1 <== NOT EXECUTED
47862: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47864: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED
47868: 4c46 1801 remsl %d6,%d1,%d1 <== NOT EXECUTED
4786c: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
47870: 2241 moveal %d1,%a1 <== NOT EXECUTED
47872: 2f09 movel %a1,%sp@- <== NOT EXECUTED
47874: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED
47878: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED
4787c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4787e: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED
47882: 4879 0005 f4ca pea 5f4ca <CSWTCH.2+0x144> <== NOT EXECUTED
47888: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4788a: 4e92 jsr %a2@ <== NOT EXECUTED
4788c: 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 ;
47890: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
47896: 6300 fee4 blsw 4777c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED
4789a: 6000 fef6 braw 47792 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
000478b8 <rtems_rate_monotonic_reset_all_statistics>:
/*
* rtems_rate_monotonic_reset_all_statistics
*/
void rtems_rate_monotonic_reset_all_statistics( void )
{
478b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
478bc: 2039 0006 1de2 movel 61de2 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
478c2: 5280 addql #1,%d0 <== NOT EXECUTED
478c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
478c6: 23c0 0006 1de2 movel %d0,61de2 <_Thread_Dispatch_disable_level><== NOT EXECUTED
478cc: 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 ;
478ce: 2439 0006 1cf2 movel 61cf2 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
478d4: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
478da: 6216 bhis 478f2 <rtems_rate_monotonic_reset_all_statistics+0x3a><== NOT EXECUTED
478dc: 45f9 0004 7904 lea 47904 <rtems_rate_monotonic_reset_statistics>,%a2<== NOT EXECUTED
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
(void) rtems_rate_monotonic_reset_statistics( id );
478e2: 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++ ) {
478e4: 5282 addql #1,%d2 <== NOT EXECUTED
(void) rtems_rate_monotonic_reset_statistics( id );
478e6: 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 ;
478e8: 588f addql #4,%sp <== NOT EXECUTED
478ea: b4b9 0006 1cf6 cmpl 61cf6 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
478f0: 63f0 blss 478e2 <rtems_rate_monotonic_reset_all_statistics+0x2a><== NOT EXECUTED
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
}
478f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
478f6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
478fa: 4e5e unlk %fp <== NOT EXECUTED
}
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
478fc: 4ef9 0004 a47a jmp 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
...
00047904 <rtems_rate_monotonic_reset_statistics>:
*/
rtems_status_code rtems_rate_monotonic_reset_statistics(
rtems_id id
)
{
47904: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47908: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4790c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47910: 4879 0006 1cec pea 61cec <_Rate_monotonic_Information> <== NOT EXECUTED
47916: 4eb9 0004 98c8 jsr 498c8 <_Objects_Get> <== NOT EXECUTED
Objects_Locations location;
Rate_monotonic_Control *the_period;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4791c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47920: 2040 moveal %d0,%a0 <== NOT EXECUTED
47922: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47926: 6646 bnes 4796e <rtems_rate_monotonic_reset_statistics+0x6a><== NOT EXECUTED
case OBJECTS_LOCAL:
_Rate_monotonic_Reset_statistics( the_period );
47928: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
4792c: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED
47930: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
47934: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED
47938: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
4793e: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED
47942: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
47946: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED
4794a: 4299 clrl %a1@+ <== NOT EXECUTED
4794c: 4299 clrl %a1@+ <== NOT EXECUTED
4794e: 4299 clrl %a1@+ <== NOT EXECUTED
47950: 2140 005c movel %d0,%a0@(92) <== NOT EXECUTED
47954: 2140 0060 movel %d0,%a0@(96) <== NOT EXECUTED
47958: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED
4795c: 2140 0078 movel %d0,%a0@(120) <== NOT EXECUTED
47960: 4291 clrl %a1@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47962: 4eb9 0004 a47a jsr 4a47a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47968: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4796a: 4e5e unlk %fp <== NOT EXECUTED
4796c: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4796e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47970: 4e5e unlk %fp <== NOT EXECUTED
000572c8 <rtems_region_create>:
uintptr_t length,
uintptr_t page_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
572c8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
572cc: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
572d0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
572d4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
572d8: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
572dc: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
572e0: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
572e4: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
572e8: 4a83 tstl %d3 <== NOT EXECUTED
572ea: 6774 beqs 57360 <rtems_region_create+0x98> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
572ec: 4a82 tstl %d2 <== NOT EXECUTED
572ee: 6700 00dc beqw 573cc <rtems_region_create+0x104> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
572f2: 4a8b tstl %a3 <== NOT EXECUTED
572f4: 6700 00d6 beqw 573cc <rtems_region_create+0x104> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
572f8: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
572fe: 4eb9 0005 9b98 jsr 59b98 <_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 );
57304: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
5730a: 4eb9 0005 b3ec jsr 5b3ec <_Objects_Allocate> <== NOT EXECUTED
the_region = _Region_Allocate();
if ( !the_region )
57310: 508f addql #8,%sp <== NOT EXECUTED
57312: 2440 moveal %d0,%a2 <== NOT EXECUTED
57314: 4a80 tstl %d0 <== NOT EXECUTED
57316: 6700 00c2 beqw 573da <rtems_region_create+0x112> <== NOT EXECUTED
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
5731a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5731c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5731e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57320: 486a 0068 pea %a2@(104) <== NOT EXECUTED
57324: 4eb9 0005 af7e jsr 5af7e <_Heap_Initialize> <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
5732a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if ( !the_region )
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
5732e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
57332: 663a bnes 5736e <rtems_region_create+0xa6> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
57334: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57336: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
5733c: 7408 moveq #8,%d2 <== NOT EXECUTED
5733e: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
57344: 508f addql #8,%sp <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
57346: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5734c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57352: 588f addql #4,%sp <== NOT EXECUTED
}
57354: 2002 movel %d2,%d0 <== NOT EXECUTED
57356: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5735c: 4e5e unlk %fp <== NOT EXECUTED
5735e: 4e75 rts <== NOT EXECUTED
{
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
57360: 7403 moveq #3,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
57362: 2002 movel %d2,%d0 <== NOT EXECUTED
57364: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5736a: 4e5e unlk %fp <== NOT EXECUTED
5736c: 4e75 rts <== NOT EXECUTED
return_status = RTEMS_INVALID_SIZE;
}
else {
the_region->starting_address = starting_address;
5736e: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
57372: 4282 clrl %d2 <== NOT EXECUTED
}
else {
the_region->starting_address = starting_address;
the_region->length = length;
57374: 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(
57378: 44c6 movew %d6,%ccr <== NOT EXECUTED
5737a: 57c0 seq %d0 <== NOT EXECUTED
else {
the_region->starting_address = starting_address;
the_region->length = length;
the_region->page_size = page_size;
5737c: 2544 0058 movel %d4,%a2@(88) <== NOT EXECUTED
the_region->attribute_set = attribute_set;
the_region->number_of_used_blocks = 0;
_Thread_queue_Initialize(
57380: 49c0 extbl %d0 <== NOT EXECUTED
57382: 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;
57384: 2546 0060 movel %d6,%a2@(96) <== NOT EXECUTED
the_region->number_of_used_blocks = 0;
57388: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
_Thread_queue_Initialize(
5738c: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
57390: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> <== NOT EXECUTED
57394: 2f00 movel %d0,%sp@- <== NOT EXECUTED
57396: 486a 0010 pea %a2@(16) <== NOT EXECUTED
5739a: 4eb9 0005 cc2c jsr 5cc2c <_Thread_queue_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
573a0: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
573a4: 4281 clrl %d1 <== NOT EXECUTED
&_Region_Information,
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
573a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
573aa: 2079 0007 ea0e moveal 7ea0e <_Region_Information+0x18>,%a0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
573b0: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
573b2: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
573b6: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
573ba: 2680 movel %d0,%a3@ <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573bc: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
573c2: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
573c8: 588f addql #4,%sp <== NOT EXECUTED
573ca: 6088 bras 57354 <rtems_region_create+0x8c> <== NOT EXECUTED
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
if ( !id )
return RTEMS_INVALID_ADDRESS;
573cc: 7409 moveq #9,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
573ce: 2002 movel %d2,%d0 <== NOT EXECUTED
573d0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
573d6: 4e5e unlk %fp <== NOT EXECUTED
573d8: 4e75 rts <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573da: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
_RTEMS_Lock_allocator(); /* to prevent deletion */
the_region = _Region_Allocate();
if ( !the_region )
return_status = RTEMS_TOO_MANY;
573e0: 7405 moveq #5,%d2 <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573e2: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
573e8: 588f addql #4,%sp <== NOT EXECUTED
573ea: 6000 ff68 braw 57354 <rtems_region_create+0x8c> <== NOT EXECUTED
...
000573f0 <rtems_region_delete>:
*/
rtems_status_code rtems_region_delete(
rtems_id id
)
{
573f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
573f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
573f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
_RTEMS_Lock_allocator();
573f8: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
573fe: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
57404: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57408: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5740c: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
57412: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57418: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5741c: 2440 moveal %d0,%a2 <== NOT EXECUTED
5741e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57422: 671c beqs 57440 <rtems_region_delete+0x50> <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57424: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
5742a: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
5742c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57432: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57436: 2002 movel %d2,%d0 <== NOT EXECUTED
57438: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5743c: 4e5e unlk %fp <== NOT EXECUTED
5743e: 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 )
57440: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED
57444: 671c beqs 57462 <rtems_region_delete+0x72> <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57446: 2f39 0007 ebac movel 7ebac <_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;
5744c: 740c moveq #12,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5744e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57454: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57458: 2002 movel %d2,%d0 <== NOT EXECUTED
5745a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5745e: 4e5e unlk %fp <== NOT EXECUTED
57460: 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 );
57462: 2f00 movel %d0,%sp@- <== NOT EXECUTED
57464: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_SUCCESSFUL;
5746a: 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 );
5746c: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
57472: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57474: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
5747a: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
57480: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57484: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5748a: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57490: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57494: 2002 movel %d2,%d0 <== NOT EXECUTED
57496: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5749a: 4e5e unlk %fp <== NOT EXECUTED
...
000574a0 <rtems_region_extend>:
rtems_status_code rtems_region_extend(
rtems_id id,
void *starting_address,
uintptr_t length
)
{
574a0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
574a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
574a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
574a8: 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 )
574ac: 6700 0086 beqw 57534 <rtems_region_extend+0x94> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
574b0: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
574b6: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
574bc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
574c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
574c4: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
574ca: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
574d0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
574d4: 2440 moveal %d0,%a2 <== NOT EXECUTED
574d6: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
574da: 6646 bnes 57522 <rtems_region_extend+0x82> <== NOT EXECUTED
case OBJECTS_LOCAL:
extend_ok = _Heap_Extend(
574dc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
574e0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
574e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
574e6: 486a 0068 pea %a2@(104) <== NOT EXECUTED
574ea: 4eb9 0005 a984 jsr 5a984 <_Heap_Extend> <== NOT EXECUTED
starting_address,
length,
&amount_extended
);
if ( extend_ok ) {
574f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
574f4: 4a00 tstb %d0 <== NOT EXECUTED
574f6: 674c beqs 57544 <rtems_region_extend+0xa4> <== NOT EXECUTED
the_region->length += amount_extended;
574f8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
574fc: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
57500: 4282 clrl %d2 <== NOT EXECUTED
&amount_extended
);
if ( extend_ok ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
57502: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57506: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5750c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57512: 588f addql #4,%sp <== NOT EXECUTED
}
57514: 2002 movel %d2,%d0 <== NOT EXECUTED
57516: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
5751a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
5751e: 4e5e unlk %fp <== NOT EXECUTED
57520: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57522: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57528: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
5752a: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57530: 588f addql #4,%sp <== NOT EXECUTED
57532: 60e0 bras 57514 <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;
57534: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57536: 2002 movel %d2,%d0 <== NOT EXECUTED
57538: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
5753c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
57540: 4e5e unlk %fp <== NOT EXECUTED
57542: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57544: 2f39 0007 ebac movel 7ebac <_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;
5754a: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5754c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57552: 588f addql #4,%sp <== NOT EXECUTED
57554: 60be bras 57514 <rtems_region_extend+0x74> <== NOT EXECUTED
...
00057558 <rtems_region_get_free_information>:
rtems_status_code rtems_region_get_free_information(
rtems_id id,
Heap_Information_block *the_info
)
{
57558: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5755c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5755e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
57562: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
57564: 4a8a tstl %a2 <== NOT EXECUTED
57566: 6776 beqs 575de <rtems_region_get_free_information+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
57568: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5756e: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
57574: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57578: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5757c: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
57582: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57588: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5758c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57590: 663a bnes 575cc <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 );
57592: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57594: 2040 moveal %d0,%a0 <== NOT EXECUTED
57596: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
5759a: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
the_info->Used.number = 0;
5759c: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
the_info->Used.total = 0;
575a0: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
the_info->Used.largest = 0;
575a4: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
575a8: 4eb9 0005 ad58 jsr 5ad58 <_Heap_Get_free_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
575ae: 508f addql #8,%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
575b0: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
575b6: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
575bc: 588f addql #4,%sp <== NOT EXECUTED
}
575be: 2002 movel %d2,%d0 <== NOT EXECUTED
575c0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
575c4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
575c8: 4e5e unlk %fp <== NOT EXECUTED
575ca: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
575cc: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
575d2: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
575d4: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
575da: 588f addql #4,%sp <== NOT EXECUTED
575dc: 60e0 bras 575be <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;
575de: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
575e0: 2002 movel %d2,%d0 <== NOT EXECUTED
575e2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
575e6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
575ea: 4e5e unlk %fp <== NOT EXECUTED
...
000575f0 <rtems_region_get_information>:
rtems_status_code rtems_region_get_information(
rtems_id id,
Heap_Information_block *the_info
)
{
575f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
575f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
575f6: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
575fa: 6766 beqs 57662 <rtems_region_get_information+0x72><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
575fc: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57602: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
57608: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5760c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57610: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
57616: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
5761c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
57620: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57624: 662a bnes 57650 <rtems_region_get_information+0x60><== NOT EXECUTED
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
57626: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57628: 2040 moveal %d0,%a0 <== NOT EXECUTED
5762a: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
5762e: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
57630: 4eb9 0005 adb8 jsr 5adb8 <_Heap_Get_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
57636: 508f addql #8,%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57638: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5763e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57644: 588f addql #4,%sp <== NOT EXECUTED
}
57646: 2002 movel %d2,%d0 <== NOT EXECUTED
57648: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5764c: 4e5e unlk %fp <== NOT EXECUTED
5764e: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57650: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57656: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57658: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5765e: 588f addql #4,%sp <== NOT EXECUTED
57660: 60e4 bras 57646 <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;
57662: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57664: 2002 movel %d2,%d0 <== NOT EXECUTED
57666: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5766a: 4e5e unlk %fp <== NOT EXECUTED
...
00057670 <rtems_region_get_segment>:
uintptr_t size,
rtems_option option_set,
rtems_interval timeout,
void **segment
)
{
57670: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
57674: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
57678: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
5767c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
57680: 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 )
57684: 4a8a tstl %a2 <== NOT EXECUTED
57686: 6700 00be beqw 57746 <rtems_region_get_segment+0xd6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
*segment = NULL;
5768a: 4292 clrl %a2@ <== NOT EXECUTED
if ( size == 0 )
5768c: 4a82 tstl %d2 <== NOT EXECUTED
5768e: 660c bnes 5769c <rtems_region_get_segment+0x2c> <== NOT EXECUTED
return RTEMS_INVALID_SIZE;
57690: 7008 moveq #8,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57692: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
57698: 4e5e unlk %fp <== NOT EXECUTED
5769a: 4e75 rts <== NOT EXECUTED
*segment = NULL;
if ( size == 0 )
return RTEMS_INVALID_SIZE;
_RTEMS_Lock_allocator();
5769c: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576a2: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
576a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
576ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
576ae: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
executing = _Thread_Executing;
576b4: 2879 0007 ef7e moveal 7ef7e <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED
576ba: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
576c0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
576c4: 2640 moveal %d0,%a3 <== NOT EXECUTED
576c6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
576ca: 6628 bnes 576f4 <rtems_region_get_segment+0x84> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( size > the_region->maximum_segment_size )
576cc: b4ab 005c cmpl %a3@(92),%d2 <== NOT EXECUTED
576d0: 633c blss 5770e <rtems_region_get_segment+0x9e> <== NOT EXECUTED
return_status = RTEMS_INVALID_SIZE;
576d2: 7008 moveq #8,%d0 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
576d4: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576da: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
576de: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
576e4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
576e8: 588f addql #4,%sp <== NOT EXECUTED
}
576ea: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
576f0: 4e5e unlk %fp <== NOT EXECUTED
576f2: 4e75 rts <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
576f4: 7004 moveq #4,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
576f6: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576fc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57700: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57706: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
5770a: 588f addql #4,%sp <== NOT EXECUTED
5770c: 60dc bras 576ea <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 );
5770e: 42a7 clrl %sp@- <== NOT EXECUTED
57710: 42a7 clrl %sp@- <== NOT EXECUTED
57712: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57714: 486b 0068 pea %a3@(104) <== NOT EXECUTED
57718: 4eb9 0005 a7d4 jsr 5a7d4 <_Heap_Allocate_aligned_with_boundary><== NOT EXECUTED
the_segment = _Region_Allocate_segment( the_region, size );
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
5771e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
57722: 2200 movel %d0,%d1 <== NOT EXECUTED
57724: 672c beqs 57752 <rtems_region_get_segment+0xe2> <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
57726: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
*segment = the_segment;
return_status = RTEMS_SUCCESSFUL;
5772a: 4280 clrl %d0 <== NOT EXECUTED
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
the_region->number_of_used_blocks += 1;
*segment = the_segment;
5772c: 2481 movel %d1,%a2@ <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5772e: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57734: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57738: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5773e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
57742: 588f addql #4,%sp <== NOT EXECUTED
57744: 60a4 bras 576ea <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;
57746: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57748: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
5774e: 4e5e unlk %fp <== NOT EXECUTED
57750: 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 ) ) {
57752: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
57756: 0800 0000 btst #0,%d0 <== NOT EXECUTED
5775a: 671c beqs 57778 <rtems_region_get_segment+0x108> <== NOT EXECUTED
return_status = RTEMS_UNSATISFIED;
5775c: 700d moveq #13,%d0 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5775e: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57764: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57768: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5776e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
57772: 588f addql #4,%sp <== NOT EXECUTED
57774: 6000 ff74 braw 576ea <rtems_region_get_segment+0x7a> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
57778: 2039 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5777e: 5280 addql #1,%d0 <== NOT EXECUTED
57780: 23c0 0007 eaec movel %d0,7eaec <_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();
57786: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5778c: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
executing->Wait.queue = &the_region->Wait_queue;
57792: 200b movel %a3,%d0 <== NOT EXECUTED
57794: 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;
5779a: 7201 moveq #1,%d1 <== NOT EXECUTED
5779c: 2940 0044 movel %d0,%a4@(68) <== NOT EXECUTED
executing->Wait.id = id;
577a0: 2943 0020 movel %d3,%a4@(32) <== NOT EXECUTED
executing->Wait.count = size;
577a4: 2942 0024 movel %d2,%a4@(36) <== NOT EXECUTED
executing->Wait.return_argument = segment;
577a8: 294a 0028 movel %a2,%a4@(40) <== NOT EXECUTED
577ac: 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 );
577b0: 4879 0005 cd38 pea 5cd38 <_Thread_queue_Timeout> <== NOT EXECUTED
577b6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
577ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED
577bc: 4eb9 0005 c974 jsr 5c974 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
577c2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return (rtems_status_code) executing->Wait.return_code;
577c8: 202c 0034 movel %a4@(52),%d0 <== NOT EXECUTED
577cc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
577d0: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
577d6: 4e5e unlk %fp <== NOT EXECUTED
...
000577dc <rtems_region_get_segment_size>:
rtems_status_code rtems_region_get_segment_size(
rtems_id id,
void *segment,
uintptr_t *size
)
{
577dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
577e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
577e2: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
577e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
577e8: 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 )
577ec: 6700 0092 beqw 57880 <rtems_region_get_segment_size+0xa4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
577f0: 4a83 tstl %d3 <== NOT EXECUTED
577f2: 6700 008c beqw 57880 <rtems_region_get_segment_size+0xa4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
577f6: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
577fc: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
57802: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57806: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5780a: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
57810: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57816: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
5781a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5781e: 6636 bnes 57856 <rtems_region_get_segment_size+0x7a><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
57820: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57822: 2040 moveal %d0,%a0 <== NOT EXECUTED
57824: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57826: 4868 0068 pea %a0@(104) <== NOT EXECUTED
5782a: 4eb9 0005 b2cc jsr 5b2cc <_Heap_Size_of_alloc_area> <== NOT EXECUTED
57830: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
57834: 4a00 tstb %d0 <== NOT EXECUTED
57836: 6624 bnes 5785c <rtems_region_get_segment_size+0x80><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57838: 2f39 0007 ebac movel 7ebac <_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;
5783e: 7409 moveq #9,%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57840: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57846: 588f addql #4,%sp <== NOT EXECUTED
}
57848: 2002 movel %d2,%d0 <== NOT EXECUTED
5784a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5784e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57852: 4e5e unlk %fp <== NOT EXECUTED
57854: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
the_region = _Region_Get( id, &location );
switch ( location ) {
57856: 7001 moveq #1,%d0 <== NOT EXECUTED
57858: b081 cmpl %d1,%d0 <== NOT EXECUTED
5785a: 6712 beqs 5786e <rtems_region_get_segment_size+0x92><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5785c: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *segment,
uintptr_t *size
)
{
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
57862: 4282 clrl %d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57864: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5786a: 588f addql #4,%sp <== NOT EXECUTED
5786c: 60da bras 57848 <rtems_region_get_segment_size+0x6c><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5786e: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
case OBJECTS_REMOTE: /* this error cannot be returned */
break;
#endif
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
57874: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57876: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5787c: 588f addql #4,%sp <== NOT EXECUTED
5787e: 60c8 bras 57848 <rtems_region_get_segment_size+0x6c><== NOT EXECUTED
if ( !segment )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
57880: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57882: 2002 movel %d2,%d0 <== NOT EXECUTED
57884: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57888: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
5788c: 4e5e unlk %fp <== NOT EXECUTED
00057890 <rtems_region_ident>:
rtems_status_code rtems_region_ident(
rtems_name name,
rtems_id *id
)
{
57890: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
57894: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57898: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
5789e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
578a2: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
578a8: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
578ae: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
578b4: 4e5e unlk %fp <== NOT EXECUTED
578b6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
000578bc <rtems_region_resize_segment>:
rtems_id id,
void *segment,
uintptr_t size,
uintptr_t *old_size
)
{
578bc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
578c0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
578c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
578c4: 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 )
578c8: 4a8a tstl %a2 <== NOT EXECUTED
578ca: 6700 00a4 beqw 57970 <rtems_region_resize_segment+0xb4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
578ce: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
578d4: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
578da: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
578de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
578e2: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
578e8: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
578ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
578f2: 2640 moveal %d0,%a3 <== NOT EXECUTED
578f4: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
578f8: 663e bnes 57938 <rtems_region_resize_segment+0x7c><== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 7 );
status = _Heap_Resize_block(
578fa: 486e fffc pea %fp@(-4) <== NOT EXECUTED
578fe: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
57902: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
57906: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5790a: 486b 0068 pea %a3@(104) <== NOT EXECUTED
5790e: 4eb9 0005 b1e0 jsr 5b1e0 <_Heap_Resize_block> <== NOT EXECUTED
segment,
(uint32_t) size,
&osize,
&avail_size
);
*old_size = (uint32_t) osize;
57914: 24ae fff4 movel %fp@(-12),%a2@ <== NOT EXECUTED
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
57918: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5791c: 4a80 tstl %d0 <== NOT EXECUTED
5791e: 6634 bnes 57954 <rtems_region_resize_segment+0x98><== NOT EXECUTED
_Region_Process_queue( the_region ); /* unlocks allocator */
57920: 2f0b movel %a3,%sp@- <== NOT EXECUTED
57922: 4eb9 0005 fe98 jsr 5fe98 <_Region_Process_queue> <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57928: 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 */
5792c: 588f addql #4,%sp <== NOT EXECUTED
else
_RTEMS_Unlock_allocator();
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
5792e: 4280 clrl %d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57930: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
57934: 4e5e unlk %fp <== NOT EXECUTED
57936: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57938: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5793e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57944: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
return return_status;
57948: 588f addql #4,%sp <== NOT EXECUTED
5794a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5794c: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
57950: 4e5e unlk %fp <== NOT EXECUTED
57952: 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();
57954: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5795a: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
5795e: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
57964: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
57968: 588f addql #4,%sp <== NOT EXECUTED
5796a: 7201 moveq #1,%d1 <== NOT EXECUTED
5796c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5796e: 670e beqs 5797e <rtems_region_resize_segment+0xc2><== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57970: 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;
57974: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57976: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
5797a: 4e5e unlk %fp <== NOT EXECUTED
5797c: 4e75 rts <== NOT EXECUTED
5797e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
return RTEMS_UNSATISFIED;
57982: 700d moveq #13,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57984: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
57988: 4e5e unlk %fp <== NOT EXECUTED
0005798c <rtems_region_return_segment>:
rtems_status_code rtems_region_return_segment(
rtems_id id,
void *segment
)
{
5798c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
57990: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57992: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t size;
#endif
int status;
register Region_Control *the_region;
_RTEMS_Lock_allocator();
57994: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5799a: 4eb9 0005 9b98 jsr 59b98 <_API_Mutex_Lock> <== NOT EXECUTED
579a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
579a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
579a8: 4879 0007 e9f6 pea 7e9f6 <_Region_Information> <== NOT EXECUTED
579ae: 4eb9 0005 b8ac jsr 5b8ac <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
579b4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
579b8: 2440 moveal %d0,%a2 <== NOT EXECUTED
579ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
579be: 6632 bnes 579f2 <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 );
579c0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
579c4: 486a 0068 pea %a2@(104) <== NOT EXECUTED
579c8: 4eb9 0005 abe0 jsr 5abe0 <_Heap_Free> <== NOT EXECUTED
#endif
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
579ce: 508f addql #8,%sp <== NOT EXECUTED
579d0: 4a00 tstb %d0 <== NOT EXECUTED
579d2: 6630 bnes 57a04 <rtems_region_return_segment+0x78><== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579d4: 2f39 0007 ebac movel 7ebac <_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;
579da: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579dc: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
579e2: 588f addql #4,%sp <== NOT EXECUTED
}
579e4: 2002 movel %d2,%d0 <== NOT EXECUTED
579e6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
579ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
579ee: 4e5e unlk %fp <== NOT EXECUTED
579f0: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579f2: 2f39 0007 ebac movel 7ebac <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
579f8: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
579fa: 4eb9 0005 9bf8 jsr 59bf8 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57a00: 588f addql #4,%sp <== NOT EXECUTED
57a02: 60e0 bras 579e4 <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;
57a04: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED
_Region_Process_queue(the_region); /* unlocks allocator */
return RTEMS_SUCCESSFUL;
57a08: 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 */
57a0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57a0c: 4eb9 0005 fe98 jsr 5fe98 <_Region_Process_queue> <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57a12: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57a16: 2002 movel %d2,%d0 <== NOT EXECUTED
else {
the_region->number_of_used_blocks -= 1;
_Region_Process_queue(the_region); /* unlocks allocator */
return RTEMS_SUCCESSFUL;
57a18: 588f addql #4,%sp <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57a1a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57a1e: 4e5e unlk %fp <== NOT EXECUTED
...
000461bc <rtems_semaphore_create>:
uint32_t count,
rtems_attribute attribute_set,
rtems_task_priority priority_ceiling,
rtems_id *id
)
{
461bc: 4e56 ffd4 linkw %fp,#-44
461c0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
461c4: 262e 0008 movel %fp@(8),%d3
461c8: 242e 0010 movel %fp@(16),%d2
461cc: 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 ) )
461d0: 4a83 tstl %d3
461d2: 6746 beqs 4621a <rtems_semaphore_create+0x5e> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
461d4: 4a8a tstl %a2
461d6: 6700 00e8 beqw 462c0 <rtems_semaphore_create+0x104>
* id - semaphore id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_semaphore_create(
461da: 2002 movel %d2,%d0
461dc: 0280 0000 00c0 andil #192,%d0
return RTEMS_NOT_DEFINED;
} else
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
461e2: 6742 beqs 46226 <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);
461e4: 7230 moveq #48,%d1
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
461e6: 7810 moveq #16,%d4
461e8: c282 andl %d2,%d1
461ea: b881 cmpl %d1,%d4
461ec: 670c beqs 461fa <rtems_semaphore_create+0x3e> <== ALWAYS TAKEN
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
461ee: 700b moveq #11,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
461f0: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
461f6: 4e5e unlk %fp <== NOT EXECUTED
461f8: 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 ) &&
461fa: 44c2 movew %d2,%ccr
461fc: 66f0 bnes 461ee <rtems_semaphore_create+0x32> <== NEVER TAKEN
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
461fe: 0c80 0000 00c0 cmpil #192,%d0
46204: 67e8 beqs 461ee <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 ) )
46206: 7001 moveq #1,%d0
46208: b0ae 000c cmpl %fp@(12),%d0
4620c: 641e bccs 4622c <rtems_semaphore_create+0x70> <== ALWAYS TAKEN
return RTEMS_INVALID_NUMBER;
4620e: 700a moveq #10,%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
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;
4621a: 7003 moveq #3,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4621c: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46222: 4e5e unlk %fp <== NOT EXECUTED
46224: 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);
46226: 7830 moveq #48,%d4
46228: 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 ) )
4622a: 66da bnes 46206 <rtems_semaphore_create+0x4a>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4622c: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
46232: 5280 addql #1,%d0
46234: 23c0 0005 fc78 movel %d0,5fc78 <_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 );
4623a: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
46240: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
46246: 588f addql #4,%sp
46248: 2640 moveal %d0,%a3
4624a: 4a80 tstl %d0
4624c: 6700 00d8 beqw 46326 <rtems_semaphore_create+0x16a>
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_semaphore->attribute_set = attribute_set;
46250: 2742 0010 movel %d2,%a3@(16)
/*
* Initialize it as a counting semaphore.
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
46254: 4a84 tstl %d4
46256: 6774 beqs 462cc <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;
46258: 44c2 movew %d2,%ccr
4625a: 56c0 sne %d0
4625c: 49c0 extbl %d0
4625e: 5280 addql #1,%d0
46260: 2d40 fff0 movel %d0,%fp@(-16)
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
46264: 7010 moveq #16,%d0
46266: b084 cmpl %d4,%d0
46268: 6700 00ce beqw 46338 <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;
4626c: 7202 moveq #2,%d1
the_mutex_attr.only_owner_release = false;
4626e: 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;
46270: 2d41 ffea movel %d1,%fp@(-22)
the_mutex_attr.only_owner_release = false;
46274: 1d44 ffee moveb %d4,%fp@(-18)
}
mutex_status = _CORE_mutex_Initialize(
46278: 7001 moveq #1,%d0
4627a: b0ae 000c cmpl %fp@(12),%d0
4627e: 57c0 seq %d0
46280: 49c0 extbl %d0
46282: 4480 negl %d0
46284: 2f00 movel %d0,%sp@-
46286: 486e ffea pea %fp@(-22)
4628a: 486b 0014 pea %a3@(20)
4628e: 4eb9 0004 6f78 jsr 46f78 <_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 ) {
46294: 4fef 000c lea %sp@(12),%sp
46298: 7206 moveq #6,%d1
4629a: b280 cmpl %d0,%d1
4629c: 665e bnes 462fc <rtems_semaphore_create+0x140> <== ALWAYS TAKEN
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
4629e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
462a0: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information> <== NOT EXECUTED
462a6: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> <== NOT EXECUTED
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
462ac: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
462b2: 508f addql #8,%sp <== NOT EXECUTED
462b4: 7013 moveq #19,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
462b6: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
462bc: 4e5e unlk %fp <== NOT EXECUTED
462be: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
462c0: 7009 moveq #9,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
462c2: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
462c8: 4e5e unlk %fp <== NOT EXECUTED
462ca: 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(
462cc: 2f2e 000c movel %fp@(12),%sp@-
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
462d0: 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(
462d2: 486e fff8 pea %fp@(-8)
462d6: 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;
462da: 44c2 movew %d2,%ccr
462dc: 56c0 sne %d0
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
462de: 2d41 fff8 movel %d1,%fp@(-8)
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
462e2: 49c0 extbl %d0
462e4: 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;
462e6: 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;
462ea: 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;
462ee: 42ae fff4 clrl %fp@(-12)
_CORE_semaphore_Initialize(
462f2: 4eb9 0004 72b0 jsr 472b0 <_CORE_semaphore_Initialize>
462f8: 4fef 000c lea %sp@(12),%sp
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
462fc: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46300: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46302: 2079 0005 fbd4 moveal 5fbd4 <_Semaphore_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46308: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4630a: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4630e: 2743 000c movel %d3,%a3@(12)
&_Semaphore_Information,
&the_semaphore->Object,
(Objects_Name) name
);
*id = the_semaphore->Object.id;
46312: 2480 movel %d0,%a2@
the_semaphore->Object.id,
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
46314: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
4631a: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46320: 4280 clrl %d0
}
46322: 4e5e unlk %fp
46324: 4e75 rts
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
46326: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return RTEMS_TOO_MANY;
4632c: 7005 moveq #5,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4632e: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3
46334: 4e5e unlk %fp
46336: 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;
46338: 42ae ffea clrl %fp@(-22)
the_mutex_attr.only_owner_release = false;
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
4633c: 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;
4633e: 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;
46340: 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;
46346: 1d41 ffee moveb %d1,%fp@(-18)
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
4634a: b8ae fff0 cmpl %fp@(-16),%d4
4634e: 6600 ff28 bnew 46278 <rtems_semaphore_create+0xbc>
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
46352: 0802 0006 btst #6,%d2
46356: 6712 beqs 4636a <rtems_semaphore_create+0x1ae> <== NEVER TAKEN
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
46358: 103c 0002 moveb #2,%d0
the_mutex_attr.only_owner_release = true;
4635c: 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;
4635e: 2d40 fff0 movel %d0,%fp@(-16)
the_mutex_attr.only_owner_release = true;
46362: 1d41 ffee moveb %d1,%fp@(-18)
46366: 6000 ff10 braw 46278 <rtems_semaphore_create+0xbc>
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
4636a: 4a02 tstb %d2 <== NOT EXECUTED
4636c: 6c00 ff0a bgew 46278 <rtems_semaphore_create+0xbc> <== NOT EXECUTED
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
46370: 7803 moveq #3,%d4 <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
46372: 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;
46374: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
46378: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED
4637c: 6000 fefa braw 46278 <rtems_semaphore_create+0xbc> <== NOT EXECUTED
00046380 <rtems_semaphore_delete>:
#endif
rtems_status_code rtems_semaphore_delete(
rtems_id id
)
{
46380: 4e56 fffc linkw %fp,#-4
46384: 2f0a movel %a2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
46386: 486e fffc pea %fp@(-4)
4638a: 2f2e 0008 movel %fp@(8),%sp@-
4638e: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
46394: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
4639a: 4fef 000c lea %sp@(12),%sp
4639e: 2440 moveal %d0,%a2
463a0: 4aae fffc tstl %fp@(-4)
463a4: 670a beqs 463b0 <rtems_semaphore_delete+0x30> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463a6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
463aa: 7004 moveq #4,%d0 <== NOT EXECUTED
}
463ac: 4e5e unlk %fp <== NOT EXECUTED
463ae: 4e75 rts <== NOT EXECUTED
463b0: 7030 moveq #48,%d0
463b2: 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) ) {
463b6: 6760 beqs 46418 <rtems_semaphore_delete+0x98>
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
463b8: 4aaa 0062 tstl %a2@(98)
463bc: 6616 bnes 463d4 <rtems_semaphore_delete+0x54>
463be: 7220 moveq #32,%d1
463c0: b280 cmpl %d0,%d1
463c2: 6710 beqs 463d4 <rtems_semaphore_delete+0x54> <== ALWAYS TAKEN
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
463c4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463ca: 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;
463ce: 700c moveq #12,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463d0: 4e5e unlk %fp <== NOT EXECUTED
463d2: 4e75 rts <== NOT EXECUTED
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
_CORE_mutex_Flush(
463d4: 4878 0004 pea 4 <CONTEXT_ARG>
463d8: 42a7 clrl %sp@-
463da: 486a 0014 pea %a2@(20)
463de: 4eb9 0004 6f6c jsr 46f6c <_CORE_mutex_Flush>
463e4: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
463e8: 2f0a movel %a2,%sp@-
463ea: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
463f0: 4eb9 0004 795c jsr 4795c <_Objects_Close>
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
463f6: 2f0a movel %a2,%sp@-
463f8: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
463fe: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46404: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4640a: 4fef 0010 lea %sp@(16),%sp
4640e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46410: 246e fff8 moveal %fp@(-8),%a2
46414: 4e5e unlk %fp
46416: 4e75 rts
&the_semaphore->Core_control.mutex,
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_MUTEX_WAS_DELETED
);
} else {
_CORE_semaphore_Flush(
46418: 4878 0002 pea 2 <DOUBLE_FLOAT>
4641c: 42a7 clrl %sp@-
4641e: 486a 0014 pea %a2@(20)
46422: 4eb9 0004 72a4 jsr 472a4 <_CORE_semaphore_Flush>
46428: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
4642c: 2f0a movel %a2,%sp@-
4642e: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
46434: 4eb9 0004 795c jsr 4795c <_Objects_Close>
4643a: 2f0a movel %a2,%sp@-
4643c: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
46442: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46448: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4644e: 4fef 0010 lea %sp@(16),%sp
46452: 4280 clrl %d0
46454: 60ba bras 46410 <rtems_semaphore_delete+0x90>
...
00050260 <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
50260: 4e56 fffc linkw %fp,#-4
50264: 486e fffc pea %fp@(-4)
50268: 2f2e 0008 movel %fp@(8),%sp@-
5026c: 4879 0006 3e14 pea 63e14 <_Semaphore_Information>
50272: 4eb9 0004 9344 jsr 49344 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
50278: 4fef 000c lea %sp@(12),%sp
5027c: 4aae fffc tstl %fp@(-4)
50280: 6706 beqs 50288 <rtems_semaphore_flush+0x28> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
50282: 7004 moveq #4,%d0 <== NOT EXECUTED
}
50284: 4e5e unlk %fp <== NOT EXECUTED
50286: 4e75 rts <== NOT EXECUTED
50288: 7230 moveq #48,%d1
5028a: 2040 moveal %d0,%a0
5028c: 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) ) {
50290: 6720 beqs 502b2 <rtems_semaphore_flush+0x52> <== NEVER TAKEN
_CORE_mutex_Flush(
50292: 4878 0001 pea 1 <ADD>
50296: 42a7 clrl %sp@-
50298: 4868 0014 pea %a0@(20)
5029c: 4eb9 0004 8524 jsr 48524 <_CORE_mutex_Flush>
502a2: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
502a6: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
502ac: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
502ae: 4e5e unlk %fp
502b0: 4e75 rts
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
502b2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
502b6: 2040 moveal %d0,%a0 <== NOT EXECUTED
502b8: 42a7 clrl %sp@- <== NOT EXECUTED
502ba: 4868 0014 pea %a0@(20) <== NOT EXECUTED
502be: 4eb9 0004 885c jsr 4885c <_CORE_semaphore_Flush> <== NOT EXECUTED
502c4: 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();
502c8: 4eb9 0004 9efe jsr 49efe <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
502ce: 4280 clrl %d0 <== NOT EXECUTED
502d0: 60dc bras 502ae <rtems_semaphore_flush+0x4e> <== NOT EXECUTED
...
00057d34 <rtems_semaphore_ident>:
rtems_status_code rtems_semaphore_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
57d34: 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 );
57d38: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
57d3c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57d40: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57d44: 4879 0007 ea30 pea 7ea30 <_Semaphore_Information> <== NOT EXECUTED
57d4a: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
57d50: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
57d56: 4e5e unlk %fp <== NOT EXECUTED
57d58: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00046458 <rtems_semaphore_obtain>:
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
rtems_option option_set,
rtems_interval timeout
)
{
46458: 4e56 ffec linkw %fp,#-20
4645c: 48d7 001c moveml %d2-%d4,%sp@
Objects_Locations *location,
ISR_Level *level
)
{
return (Semaphore_Control *)
_Objects_Get_isr_disable( &_Semaphore_Information, id, location, level );
46460: 486e fff8 pea %fp@(-8)
46464: 486e fffc pea %fp@(-4)
46468: 242e 0008 movel %fp@(8),%d2
4646c: 2f02 movel %d2,%sp@-
4646e: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
46474: 262e 000c movel %fp@(12),%d3
46478: 282e 0010 movel %fp@(16),%d4
4647c: 4eb9 0004 7d2c jsr 47d2c <_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 ) {
46482: 4fef 0010 lea %sp@(16),%sp
46486: 4aae fffc tstl %fp@(-4)
4648a: 670c beqs 46498 <rtems_semaphore_obtain+0x40> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4648c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4648e: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED
46494: 4e5e unlk %fp <== NOT EXECUTED
46496: 4e75 rts <== NOT EXECUTED
46498: 7230 moveq #48,%d1
4649a: 2040 moveal %d0,%a0
4649c: 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) ) {
464a0: 6738 beqs 464da <rtems_semaphore_obtain+0x82> <== NEVER TAKEN
_CORE_mutex_Seize(
464a2: 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;
464a6: 7201 moveq #1,%d1
464a8: c681 andl %d1,%d3
464aa: 2f04 movel %d4,%sp@-
464ac: b781 eorl %d3,%d1
464ae: 2f01 movel %d1,%sp@-
464b0: 2f02 movel %d2,%sp@-
464b2: 4868 0014 pea %a0@(20)
464b6: 4eb9 0004 70f4 jsr 470f4 <_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 );
464bc: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
464c2: 2f28 0034 movel %a0@(52),%sp@-
464c6: 4eb9 0004 6628 jsr 46628 <_Semaphore_Translate_core_mutex_return_code>
464cc: 4fef 0018 lea %sp@(24),%sp
break;
}
return RTEMS_INVALID_ID;
}
464d0: 4cee 001c ffec moveml %fp@(-20),%d2-%d4
464d6: 4e5e unlk %fp
464d8: 4e75 rts
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
464da: 2240 moveal %d0,%a1 <== NOT EXECUTED
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
464dc: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
464e2: 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;
464e6: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
464ea: 4a81 tstl %d1 <== NOT EXECUTED
464ec: 662e bnes 4651c <rtems_semaphore_obtain+0xc4> <== NOT EXECUTED
the_semaphore->count -= 1;
_ISR_Enable( *level_p );
return;
}
if ( !wait ) {
464ee: 0803 0000 btst #0,%d3 <== NOT EXECUTED
464f2: 6748 beqs 4653c <rtems_semaphore_obtain+0xe4> <== NOT EXECUTED
_ISR_Enable( *level_p );
464f4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
464f8: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
464fa: 7001 moveq #1,%d0 <== NOT EXECUTED
464fc: 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 );
46500: 2079 0006 0102 moveal 60102 <_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(
46506: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4650a: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
46510: 588f addql #4,%sp <== NOT EXECUTED
break;
}
return RTEMS_INVALID_ID;
}
46512: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED
46518: 4e5e unlk %fp <== NOT EXECUTED
4651a: 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;
4651c: 5381 subql #1,%d1 <== NOT EXECUTED
4651e: 2341 005c movel %d1,%a1@(92) <== NOT EXECUTED
_ISR_Enable( *level_p );
46522: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
46526: 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 );
46528: 2079 0006 0102 moveal 60102 <_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(
4652e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
46532: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
46538: 588f addql #4,%sp <== NOT EXECUTED
4653a: 60d6 bras 46512 <rtems_semaphore_obtain+0xba> <== NOT EXECUTED
4653c: 2239 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
46542: 5281 addql #1,%d1 <== NOT EXECUTED
46544: 23c1 0005 fc78 movel %d1,5fc78 <_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;
4654a: 7201 moveq #1,%d1 <== NOT EXECUTED
4654c: 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;
4654e: 0680 0000 0014 addil #20,%d0 <== NOT EXECUTED
46554: 2341 0044 movel %d1,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
46558: 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;
4655c: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
_ISR_Enable( *level_p );
46560: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
46564: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
46566: 4879 0004 91dc pea 491dc <_Thread_queue_Timeout> <== NOT EXECUTED
4656c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4656e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46570: 4eb9 0004 8e18 jsr 48e18 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
46576: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
_Thread_Executing->Wait.return_code );
4657c: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
46582: 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(
46586: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4658a: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
46590: 588f addql #4,%sp <== NOT EXECUTED
46592: 6000 ff7e braw 46512 <rtems_semaphore_obtain+0xba> <== NOT EXECUTED
...
00046598 <rtems_semaphore_release>:
#endif
rtems_status_code rtems_semaphore_release(
rtems_id id
)
{
46598: 4e56 fffc linkw %fp,#-4
4659c: 2f02 movel %d2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
4659e: 486e fffc pea %fp@(-4)
465a2: 242e 0008 movel %fp@(8),%d2
465a6: 2f02 movel %d2,%sp@-
465a8: 4879 0005 fbbc pea 5fbbc <_Semaphore_Information>
465ae: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get>
Objects_Locations location;
CORE_mutex_Status mutex_status;
CORE_semaphore_Status semaphore_status;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
465b4: 4fef 000c lea %sp@(12),%sp
465b8: 4aae fffc tstl %fp@(-4)
465bc: 670a beqs 465c8 <rtems_semaphore_release+0x30> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
465be: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
465c2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
465c4: 4e5e unlk %fp <== NOT EXECUTED
465c6: 4e75 rts <== NOT EXECUTED
465c8: 7230 moveq #48,%d1
465ca: 2040 moveal %d0,%a0
465cc: 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) ) {
465d0: 662c bnes 465fe <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(
465d2: 42a7 clrl %sp@- <== NOT EXECUTED
465d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
465d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465d8: 4868 0014 pea %a0@(20) <== NOT EXECUTED
465dc: 4eb9 0004 72f8 jsr 472f8 <_CORE_semaphore_Surrender> <== NOT EXECUTED
465e2: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
465e4: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return
465ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465ec: 4eb9 0004 663e jsr 4663e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
465f2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return
465f6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
465fa: 4e5e unlk %fp <== NOT EXECUTED
465fc: 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(
465fe: 42a7 clrl %sp@-
46600: 2f02 movel %d2,%sp@-
46602: 4868 0014 pea %a0@(20)
46606: 4eb9 0004 71a4 jsr 471a4 <_CORE_mutex_Surrender>
4660c: 2400 movel %d0,%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
4660e: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
46614: 2f02 movel %d2,%sp@-
46616: 4eb9 0004 6628 jsr 46628 <_Semaphore_Translate_core_mutex_return_code>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4661c: 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 );
46620: 4fef 0010 lea %sp@(16),%sp
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46624: 4e5e unlk %fp <== NOT EXECUTED
00046b34 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b34: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
46b36: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b3a: b0b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d0
46b40: 6710 beqs 46b52 <rtems_shutdown_executive+0x1e>
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
_Thread_Stop_multitasking();
}
_Internal_error_Occurred(
46b42: 4878 0014 pea 14 <OPER2>
46b46: 4878 0001 pea 1 <ADD>
46b4a: 42a7 clrl %sp@-
46b4c: 4eb9 0004 7810 jsr 47810 <_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 );
46b52: 4879 0005 fc44 pea 5fc44 <_Thread_BSP_context>
46b58: 103c 0004 moveb #4,%d0
46b5c: 23c0 0005 fde4 movel %d0,5fde4 <_System_state_Current>
46b62: 4eb9 0004 9bd2 jsr 49bd2 <_CPU_Context_Restart_self>
46b68: 588f addql #4,%sp <== NOT EXECUTED
46b6a: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
46b6e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46b72: 42a7 clrl %sp@- <== NOT EXECUTED
46b74: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED
...
00047708 <rtems_signal_catch>:
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
47708: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4770c: 2239 0006 1400 movel 61400 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
47712: 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 ];
47714: 2079 0006 188a moveal 6188a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
4771a: 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 ];
4771e: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED
47722: 23c1 0006 1400 movel %d1,61400 <_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 ) ) {
47728: 4a80 tstl %d0 <== NOT EXECUTED
4772a: 6716 beqs 47742 <rtems_signal_catch+0x3a> <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
4772c: 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;
47730: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
47736: 4eb9 0004 9d4a jsr 49d4a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4773c: 4280 clrl %d0 <== NOT EXECUTED
4773e: 4e5e unlk %fp <== NOT EXECUTED
47740: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
information->handler = NULL;
47742: 42a8 000a clrl %a0@(10) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
47746: 4200 clrb %d0 <== NOT EXECUTED
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
47748: 42a8 000e clrl %a0@(14) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4774c: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
information->signals_posted = 0;
47750: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED
information->signals_pending = 0;
47754: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED
information->nest_level = 0;
47758: 42a8 001a clrl %a0@(26) <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
4775c: 4eb9 0004 9d4a jsr 49d4a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
47762: 4280 clrl %d0 <== NOT EXECUTED
47764: 4e5e unlk %fp <== NOT EXECUTED
00057f5c <rtems_signal_send>:
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
)
{
57f5c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
57f60: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57f62: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57f64: 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 )
57f68: 660e bnes 57f78 <rtems_signal_send+0x1c> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f6a: 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;
57f6e: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f70: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57f74: 4e5e unlk %fp <== NOT EXECUTED
57f76: 4e75 rts <== NOT EXECUTED
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
the_thread = _Thread_Get( id, &location );
57f78: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57f7c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57f80: 4eb9 0005 c4c0 jsr 5c4c0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
57f86: 508f addql #8,%sp <== NOT EXECUTED
57f88: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57f8c: 670e beqs 57f9c <rtems_signal_send+0x40> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f8e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
57f92: 7004 moveq #4,%d0 <== NOT EXECUTED
}
57f94: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57f98: 4e5e unlk %fp <== NOT EXECUTED
57f9a: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
57f9c: 2240 moveal %d0,%a1 <== NOT EXECUTED
57f9e: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED
asr = &api->Signal;
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
57fa2: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED
57fa6: 676a beqs 58012 <rtems_signal_send+0xb6> <== NOT EXECUTED
if ( asr->is_enabled ) {
57fa8: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED
57fac: 6736 beqs 57fe4 <rtems_signal_send+0x88> <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
57fae: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
57fb4: 40c3 movew %sr,%d3 <== NOT EXECUTED
57fb6: 8283 orl %d3,%d1 <== NOT EXECUTED
57fb8: 46c1 movew %d1,%sr <== NOT EXECUTED
*signal_set |= signals;
57fba: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED
_ISR_Enable( _level );
57fbe: 46c3 movew %d3,%sr <== NOT EXECUTED
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
57fc0: 4ab9 0007 ef7a tstl 7ef7a <_Per_CPU_Information+0x8> <== NOT EXECUTED
57fc6: 6708 beqs 57fd0 <rtems_signal_send+0x74> <== NOT EXECUTED
57fc8: b0b9 0007 ef7e cmpl 7ef7e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
57fce: 6730 beqs 58000 <rtems_signal_send+0xa4> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
57fd0: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
57fd6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57fd8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57fdc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57fe0: 4e5e unlk %fp <== NOT EXECUTED
57fe2: 4e75 rts <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
57fe4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
57fea: 40c1 movew %sr,%d1 <== NOT EXECUTED
57fec: 8081 orl %d1,%d0 <== NOT EXECUTED
57fee: 46c0 movew %d0,%sr <== NOT EXECUTED
*signal_set |= signals;
57ff0: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED
_ISR_Enable( _level );
57ff4: 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();
57ff6: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
57ffc: 4280 clrl %d0 <== NOT EXECUTED
57ffe: 60d8 bras 57fd8 <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;
58000: 7001 moveq #1,%d0 <== NOT EXECUTED
58002: 13c0 0007 ef8a moveb %d0,7ef8a <_Per_CPU_Information+0x18> <== NOT EXECUTED
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
58008: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5800e: 4280 clrl %d0 <== NOT EXECUTED
58010: 60c6 bras 57fd8 <rtems_signal_send+0x7c> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58012: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58018: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
5801c: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5801e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
58022: 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 2ce4 lea 62ce4 <Stack_check_Pattern>,%a1
42ab6: 2151 0008 movel %a1@,%a0@(8)
42aba: 43f9 0006 2ce8 lea 62ce8 <Stack_check_Pattern+0x4>,%a1
42ac0: 2151 000c movel %a1@,%a0@(12)
42ac4: 43f9 0006 2cec lea 62cec <Stack_check_Pattern+0x8>,%a1
42aca: 2151 0010 movel %a1@,%a0@(16)
42ace: 43f9 0006 2cf0 lea 62cf0 <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 2060 jsr 52060 <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 334a moveal 6334a <_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 24e0 tstl 624e0 <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 2ce4 pea 62ce4 <Stack_check_Pattern> <== NOT EXECUTED
42c3e: 4868 0008 pea %a0@(8) <== NOT EXECUTED
42c42: 4eb9 0005 1f70 jsr 51f70 <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 334a movel 6334a <_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 4c10 pea 44c10 <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 0005 ffb6 pea 5ffb6 <IntUartPollCallbacks.6370+0x13c> <== NOT EXECUTED
)
{
if ( !print )
return;
print_context = context;
42c9a: 23c2 0006 24d8 movel %d2,624d8 <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 24dc movel %a2,624dc <print_handler> <== NOT EXECUTED
(*print)( context, "Stack usage by thread\n");
42ca8: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context,
42caa: 4879 0005 ffcd pea 5ffcd <IntUartPollCallbacks.6370+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 a744 jsr 4a744 <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 24d8 clrl 624d8 <print_context> <== NOT EXECUTED
print_handler = NULL;
42cd4: 42b9 0006 24dc clrl 624dc <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 2ce4 pea 62ce4 <Stack_check_Pattern> <== NOT EXECUTED
42bb6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
42bb8: 4eb9 0005 1f70 jsr 51f70 <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 2ce4 pea 62ce4 <Stack_check_Pattern> <== NOT EXECUTED
42bd8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
42bda: 4eb9 0005 1f70 jsr 51f70 <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 d1fc pea 5d1fc <rtems_status_assoc> <== NOT EXECUTED
4294a: 4eb9 0004 ad90 jsr 4ad90 <rtems_assoc_name_by_local> <== NOT EXECUTED
}
42950: 4e5e unlk %fp <== NOT EXECUTED
0004d634 <rtems_string_to_double>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d634: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4d638: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4d63c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d640: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d644: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d648: 4a8a tstl %a2 <== NOT EXECUTED
4d64a: 677a beqs 4d6c6 <rtems_string_to_double+0x92> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d64c: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4d652: 4e94 jsr %a4@ <== NOT EXECUTED
*n = 0;
4d654: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d656: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d658: 4280 clrl %d0 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d65a: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d65c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d660: 2480 movel %d0,%a2@ <== NOT EXECUTED
4d662: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d666: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d668: 4eb9 0005 3436 jsr 53436 <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 )
4d66e: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d670: 2600 movel %d0,%d3 <== NOT EXECUTED
4d672: 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 )
4d674: 4a8b tstl %a3 <== NOT EXECUTED
4d676: 675a beqs 4d6d2 <rtems_string_to_double+0x9e> <== NOT EXECUTED
*endptr = end;
4d678: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d67c: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d67e: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d680: 6756 beqs 4d6d8 <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))
4d682: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4d686: 2f3c 7fef ffff movel #2146435071,%sp@- <== NOT EXECUTED
4d68c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d68e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d690: 4eb9 0005 e568 jsr 5e568 <__gtdf2> <== NOT EXECUTED
4d696: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d69a: 4a80 tstl %d0 <== NOT EXECUTED
4d69c: 6e12 bgts 4d6b0 <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;
4d69e: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d6a0: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d6a2: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
}
4d6a6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d6ac: 4e5e unlk %fp <== NOT EXECUTED
4d6ae: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d6b0: 4e94 jsr %a4@ <== NOT EXECUTED
4d6b2: 7222 moveq #34,%d1 <== NOT EXECUTED
4d6b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d6b6: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d6b8: 66e4 bnes 4d69e <rtems_string_to_double+0x6a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d6ba: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6bc: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d6c2: 4e5e unlk %fp <== NOT EXECUTED
4d6c4: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d6c6: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6c8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d6ce: 4e5e unlk %fp <== NOT EXECUTED
4d6d0: 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 )
4d6d2: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d6d6: 60a6 bras 4d67e <rtems_string_to_double+0x4a> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d6d8: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6da: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d6e0: 4e5e unlk %fp <== NOT EXECUTED
0004d6e4 <rtems_string_to_float>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d6e4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d6e8: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d6ec: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d6f0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d6f4: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d6f8: 4a8a tstl %a2 <== NOT EXECUTED
4d6fa: 6768 beqs 4d764 <rtems_string_to_float+0x80> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d6fc: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4d702: 4e94 jsr %a4@ <== NOT EXECUTED
4d704: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d706: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d708: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d70c: 24bc 0000 0000 movel #0,%a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d712: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d714: 4eb9 0005 3456 jsr 53456 <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 )
4d71a: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d71c: 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 )
4d71e: 4a8b tstl %a3 <== NOT EXECUTED
4d720: 674e beqs 4d770 <rtems_string_to_float+0x8c> <== NOT EXECUTED
*endptr = end;
4d722: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d726: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d728: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d72a: 674a beqs 4d776 <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))
4d72c: 2f3c 7f7f ffff movel #2139095039,%sp@- <== NOT EXECUTED
4d732: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d734: 4eb9 0005 e5f8 jsr 5e5f8 <__gtsf2> <== NOT EXECUTED
4d73a: 508f addql #8,%sp <== NOT EXECUTED
4d73c: 4a80 tstl %d0 <== NOT EXECUTED
4d73e: 6e0e bgts 4d74e <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;
4d740: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d742: 4280 clrl %d0 <== NOT EXECUTED
}
4d744: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d74a: 4e5e unlk %fp <== NOT EXECUTED
4d74c: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d74e: 4e94 jsr %a4@ <== NOT EXECUTED
4d750: 7222 moveq #34,%d1 <== NOT EXECUTED
4d752: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d754: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d756: 66e8 bnes 4d740 <rtems_string_to_float+0x5c> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d758: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d75a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d760: 4e5e unlk %fp <== NOT EXECUTED
4d762: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d764: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d766: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d76c: 4e5e unlk %fp <== NOT EXECUTED
4d76e: 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 )
4d770: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d774: 60b2 bras 4d728 <rtems_string_to_float+0x44> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d776: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d778: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d77e: 4e5e unlk %fp <== NOT EXECUTED
...
0004d784 <rtems_string_to_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d784: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d788: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d78c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d790: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d794: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d798: 4a8a tstl %a2 <== NOT EXECUTED
4d79a: 675e beqs 4d7fa <rtems_string_to_int+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d79c: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4d7a2: 4e94 jsr %a4@ <== NOT EXECUTED
4d7a4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d7a6: 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 );
4d7a8: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d7ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d7b0: 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 );
4d7b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d7b4: 4eb9 0005 3612 jsr 53612 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d7ba: 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 );
4d7be: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d7c0: 4a8b tstl %a3 <== NOT EXECUTED
4d7c2: 6742 beqs 4d806 <rtems_string_to_int+0x82> <== NOT EXECUTED
*endptr = end;
4d7c4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d7c8: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d7ca: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d7cc: 673e beqs 4d80c <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))
4d7ce: 0c83 7fff ffff cmpil #2147483647,%d3 <== NOT EXECUTED
4d7d4: 670e beqs 4d7e4 <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;
4d7d6: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d7d8: 4280 clrl %d0 <== NOT EXECUTED
}
4d7da: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d7e0: 4e5e unlk %fp <== NOT EXECUTED
4d7e2: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d7e4: 4e94 jsr %a4@ <== NOT EXECUTED
4d7e6: 7222 moveq #34,%d1 <== NOT EXECUTED
4d7e8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d7ea: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d7ec: 66e8 bnes 4d7d6 <rtems_string_to_int+0x52> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d7ee: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d7f0: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d7f6: 4e5e unlk %fp <== NOT EXECUTED
4d7f8: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d7fa: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d7fc: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d802: 4e5e unlk %fp <== NOT EXECUTED
4d804: 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 )
4d806: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d80a: 60be bras 4d7ca <rtems_string_to_int+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d80c: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d80e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d814: 4e5e unlk %fp <== NOT EXECUTED
0004d8d0 <rtems_string_to_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d8d0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d8d4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d8d8: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4d8dc: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d8e0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d8e4: 4a8a tstl %a2 <== NOT EXECUTED
4d8e6: 6766 beqs 4d94e <rtems_string_to_long+0x7e> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d8e8: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4d8ee: 4e94 jsr %a4@ <== NOT EXECUTED
4d8f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d8f2: 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 );
4d8f4: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d8f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d8fc: 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 );
4d8fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d900: 4eb9 0005 3612 jsr 53612 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d906: 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 );
4d90a: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d90c: 4a8b tstl %a3 <== NOT EXECUTED
4d90e: 674a beqs 4d95a <rtems_string_to_long+0x8a> <== NOT EXECUTED
*endptr = end;
4d910: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d914: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d916: b083 cmpl %d3,%d0 <== NOT EXECUTED
4d918: 6746 beqs 4d960 <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))
4d91a: 0c82 7fff ffff cmpil #2147483647,%d2 <== NOT EXECUTED
4d920: 6716 beqs 4d938 <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))
4d922: 0c82 8000 0000 cmpil #-2147483648,%d2 <== NOT EXECUTED
4d928: 670e beqs 4d938 <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;
4d92a: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d92c: 4280 clrl %d0 <== NOT EXECUTED
}
4d92e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d934: 4e5e unlk %fp <== NOT EXECUTED
4d936: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d938: 4e94 jsr %a4@ <== NOT EXECUTED
4d93a: 7222 moveq #34,%d1 <== NOT EXECUTED
4d93c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d93e: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d940: 66e8 bnes 4d92a <rtems_string_to_long+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d942: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d944: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d94a: 4e5e unlk %fp <== NOT EXECUTED
4d94c: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d94e: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d950: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d956: 4e5e unlk %fp <== NOT EXECUTED
4d958: 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 )
4d95a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d95e: 60b6 bras 4d916 <rtems_string_to_long+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d960: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d962: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d968: 4e5e unlk %fp <== NOT EXECUTED
0004d818 <rtems_string_to_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d818: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4d81c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4d820: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
4d824: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d828: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d82c: 4a8a tstl %a2 <== NOT EXECUTED
4d82e: 6700 0082 beqw 4d8b2 <rtems_string_to_long_long+0x9a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d832: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4d838: 4e94 jsr %a4@ <== NOT EXECUTED
4d83a: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d83c: 4280 clrl %d0 <== NOT EXECUTED
4d83e: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d840: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4d842: 2480 movel %d0,%a2@ <== NOT EXECUTED
4d844: 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 );
4d848: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d84c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d850: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d852: 4eb9 0005 3634 jsr 53634 <strtoll> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d858: 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 );
4d85c: 2400 movel %d0,%d2 <== NOT EXECUTED
4d85e: 2601 movel %d1,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d860: 4a8b tstl %a3 <== NOT EXECUTED
4d862: 675a beqs 4d8be <rtems_string_to_long_long+0xa6> <== NOT EXECUTED
*endptr = end;
4d864: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d868: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d86a: b084 cmpl %d4,%d0 <== NOT EXECUTED
4d86c: 6756 beqs 4d8c4 <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))
4d86e: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
4d874: 72ff moveq #-1,%d1 <== NOT EXECUTED
4d876: 9283 subl %d3,%d1 <== NOT EXECUTED
4d878: 9182 subxl %d2,%d0 <== NOT EXECUTED
4d87a: 6720 beqs 4d89c <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))
4d87c: 203c 8000 0000 movel #-2147483648,%d0 <== NOT EXECUTED
4d882: 4281 clrl %d1 <== NOT EXECUTED
4d884: 9283 subl %d3,%d1 <== NOT EXECUTED
4d886: 9182 subxl %d2,%d0 <== NOT EXECUTED
4d888: 6712 beqs 4d89c <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;
4d88a: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d88c: 2482 movel %d2,%a2@ <== NOT EXECUTED
4d88e: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
}
4d892: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d898: 4e5e unlk %fp <== NOT EXECUTED
4d89a: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d89c: 4e94 jsr %a4@ <== NOT EXECUTED
4d89e: 7222 moveq #34,%d1 <== NOT EXECUTED
4d8a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d8a2: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d8a4: 66e4 bnes 4d88a <rtems_string_to_long_long+0x72> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d8a6: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8a8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d8ae: 4e5e unlk %fp <== NOT EXECUTED
4d8b0: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d8b2: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8b4: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d8ba: 4e5e unlk %fp <== NOT EXECUTED
4d8bc: 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 )
4d8be: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d8c2: 60a6 bras 4d86a <rtems_string_to_long_long+0x52> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d8c4: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d8c6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d8cc: 4e5e unlk %fp <== NOT EXECUTED
0004d96c <rtems_string_to_pointer>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d96c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d970: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d974: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d978: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d97c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d980: 4a8a tstl %a2 <== NOT EXECUTED
4d982: 675c beqs 4d9e0 <rtems_string_to_pointer+0x74> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d984: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4d98a: 4e94 jsr %a4@ <== NOT EXECUTED
4d98c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d98e: 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 );
4d990: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
4d994: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d998: 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 );
4d99a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d99c: 4eb9 0005 3a56 jsr 53a56 <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 )
4d9a2: 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 );
4d9a6: 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 )
4d9a8: 4a8b tstl %a3 <== NOT EXECUTED
4d9aa: 6740 beqs 4d9ec <rtems_string_to_pointer+0x80> <== NOT EXECUTED
*endptr = end;
4d9ac: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d9b0: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d9b2: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d9b4: 673c beqs 4d9f2 <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))
4d9b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d9b8: b083 cmpl %d3,%d0 <== NOT EXECUTED
4d9ba: 670e beqs 4d9ca <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;
4d9bc: 2483 movel %d3,%a2@ <== NOT EXECUTED
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4d9be: 4280 clrl %d0 <== NOT EXECUTED
}
4d9c0: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d9c6: 4e5e unlk %fp <== NOT EXECUTED
4d9c8: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d9ca: 4e94 jsr %a4@ <== NOT EXECUTED
4d9cc: 7222 moveq #34,%d1 <== NOT EXECUTED
4d9ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d9d0: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d9d2: 66e8 bnes 4d9bc <rtems_string_to_pointer+0x50> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d9d4: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d9d6: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d9dc: 4e5e unlk %fp <== NOT EXECUTED
4d9de: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d9e0: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d9e2: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d9e8: 4e5e unlk %fp <== NOT EXECUTED
4d9ea: 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 )
4d9ec: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d9f0: 60c0 bras 4d9b2 <rtems_string_to_pointer+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d9f2: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d9f4: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d9fa: 4e5e unlk %fp <== NOT EXECUTED
...
0004da00 <rtems_string_to_unsigned_char>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4da00: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4da04: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4da08: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4da0c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4da10: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4da14: 4a8a tstl %a2 <== NOT EXECUTED
4da16: 673e beqs 4da56 <rtems_string_to_unsigned_char+0x56><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4da18: 4eb9 0005 0b10 jsr 50b10 <__errno> <== NOT EXECUTED
4da1e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4da20: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4da22: 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 );
4da24: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4da28: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4da2c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4da2e: 4eb9 0005 3a56 jsr 53a56 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da34: 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 );
4da38: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da3a: 4a8b tstl %a3 <== NOT EXECUTED
4da3c: 6724 beqs 4da62 <rtems_string_to_unsigned_char+0x62><== NOT EXECUTED
*endptr = end;
4da3e: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4da42: 2681 movel %d1,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4da44: b282 cmpl %d2,%d1 <== NOT EXECUTED
4da46: 6720 beqs 4da68 <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;
4da48: 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 );
4da4a: 1483 moveb %d3,%a2@ <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da4c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4da52: 4e5e unlk %fp <== NOT EXECUTED
4da54: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4da56: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da58: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4da5e: 4e5e unlk %fp <== NOT EXECUTED
4da60: 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 )
4da62: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4da66: 60dc bras 4da44 <rtems_string_to_unsigned_char+0x44><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4da68: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da6a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4da70: 4e5e unlk %fp <== NOT EXECUTED
0004da74 <rtems_string_to_unsigned_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4da74: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4da78: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4da7c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4da80: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4da84: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4da88: 4a8a tstl %a2 <== NOT EXECUTED
4da8a: 675c beqs 4dae8 <rtems_string_to_unsigned_int+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4da8c: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4da92: 4e94 jsr %a4@ <== NOT EXECUTED
4da94: 2040 moveal %d0,%a0 <== NOT EXECUTED
4da96: 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 );
4da98: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4da9c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4daa0: 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 );
4daa2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4daa4: 4eb9 0005 3a56 jsr 53a56 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4daaa: 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 );
4daae: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dab0: 4a8b tstl %a3 <== NOT EXECUTED
4dab2: 6740 beqs 4daf4 <rtems_string_to_unsigned_int+0x80><== NOT EXECUTED
*endptr = end;
4dab4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4dab8: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4daba: b082 cmpl %d2,%d0 <== NOT EXECUTED
4dabc: 673c beqs 4dafa <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))
4dabe: 70ff moveq #-1,%d0 <== NOT EXECUTED
4dac0: b083 cmpl %d3,%d0 <== NOT EXECUTED
4dac2: 670e beqs 4dad2 <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;
4dac4: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4dac6: 4280 clrl %d0 <== NOT EXECUTED
}
4dac8: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4dace: 4e5e unlk %fp <== NOT EXECUTED
4dad0: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dad2: 4e94 jsr %a4@ <== NOT EXECUTED
4dad4: 7222 moveq #34,%d1 <== NOT EXECUTED
4dad6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dad8: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4dada: 66e8 bnes 4dac4 <rtems_string_to_unsigned_int+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4dadc: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dade: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4dae4: 4e5e unlk %fp <== NOT EXECUTED
4dae6: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dae8: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4daea: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4daf0: 4e5e unlk %fp <== NOT EXECUTED
4daf2: 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 )
4daf4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4daf8: 60c0 bras 4daba <rtems_string_to_unsigned_int+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dafa: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dafc: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4db02: 4e5e unlk %fp <== NOT EXECUTED
...
0004dbac <rtems_string_to_unsigned_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4dbac: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4dbb0: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4dbb4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4dbb8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4dbbc: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4dbc0: 4a8a tstl %a2 <== NOT EXECUTED
4dbc2: 675c beqs 4dc20 <rtems_string_to_unsigned_long+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4dbc4: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4dbca: 4e94 jsr %a4@ <== NOT EXECUTED
4dbcc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dbce: 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 );
4dbd0: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4dbd4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4dbd8: 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 );
4dbda: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4dbdc: 4eb9 0005 3a56 jsr 53a56 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dbe2: 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 );
4dbe6: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4dbe8: 4a8b tstl %a3 <== NOT EXECUTED
4dbea: 6740 beqs 4dc2c <rtems_string_to_unsigned_long+0x80><== NOT EXECUTED
*endptr = end;
4dbec: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4dbf0: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4dbf2: b082 cmpl %d2,%d0 <== NOT EXECUTED
4dbf4: 673c beqs 4dc32 <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))
4dbf6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4dbf8: b083 cmpl %d3,%d0 <== NOT EXECUTED
4dbfa: 670e beqs 4dc0a <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;
4dbfc: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4dbfe: 4280 clrl %d0 <== NOT EXECUTED
}
4dc00: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4dc06: 4e5e unlk %fp <== NOT EXECUTED
4dc08: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4dc0a: 4e94 jsr %a4@ <== NOT EXECUTED
4dc0c: 7222 moveq #34,%d1 <== NOT EXECUTED
4dc0e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dc10: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4dc12: 66e8 bnes 4dbfc <rtems_string_to_unsigned_long+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4dc14: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc16: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4dc1c: 4e5e unlk %fp <== NOT EXECUTED
4dc1e: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dc20: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc22: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4dc28: 4e5e unlk %fp <== NOT EXECUTED
4dc2a: 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 )
4dc2c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4dc30: 60c0 bras 4dbf2 <rtems_string_to_unsigned_long+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dc32: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dc34: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4dc3a: 4e5e unlk %fp <== NOT EXECUTED
...
0004db08 <rtems_string_to_unsigned_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4db08: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4db0c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4db10: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4db14: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4db18: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4db1c: 4a8a tstl %a2 <== NOT EXECUTED
4db1e: 676e beqs 4db8e <rtems_string_to_unsigned_long_long+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4db20: 49f9 0005 0b10 lea 50b10 <__errno>,%a4 <== NOT EXECUTED
4db26: 4e94 jsr %a4@ <== NOT EXECUTED
4db28: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4db2a: 4280 clrl %d0 <== NOT EXECUTED
4db2c: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4db2e: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4db30: 2480 movel %d0,%a2@ <== NOT EXECUTED
4db32: 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 );
4db36: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4db3a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4db3e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4db40: 4eb9 0005 3a78 jsr 53a78 <strtoull> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db46: 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 );
4db4a: 2600 movel %d0,%d3 <== NOT EXECUTED
4db4c: 2801 movel %d1,%d4 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db4e: 4a8b tstl %a3 <== NOT EXECUTED
4db50: 6748 beqs 4db9a <rtems_string_to_unsigned_long_long+0x92><== NOT EXECUTED
*endptr = end;
4db52: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4db56: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4db58: b082 cmpl %d2,%d0 <== NOT EXECUTED
4db5a: 6744 beqs 4dba0 <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))
4db5c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4db5e: 72ff moveq #-1,%d1 <== NOT EXECUTED
4db60: 9284 subl %d4,%d1 <== NOT EXECUTED
4db62: 9183 subxl %d3,%d0 <== NOT EXECUTED
4db64: 6712 beqs 4db78 <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;
4db66: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4db68: 2483 movel %d3,%a2@ <== NOT EXECUTED
4db6a: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
}
4db6e: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4db74: 4e5e unlk %fp <== NOT EXECUTED
4db76: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4db78: 4e94 jsr %a4@ <== NOT EXECUTED
4db7a: 7222 moveq #34,%d1 <== NOT EXECUTED
4db7c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4db7e: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4db80: 66e4 bnes 4db66 <rtems_string_to_unsigned_long_long+0x5e><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4db82: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db84: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4db8a: 4e5e unlk %fp <== NOT EXECUTED
4db8c: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4db8e: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db90: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4db96: 4e5e unlk %fp <== NOT EXECUTED
4db98: 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 )
4db9a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4db9e: 60b8 bras 4db58 <rtems_string_to_unsigned_long_long+0x50><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dba0: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dba2: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4dba8: 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 3550 jsr 53550 <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 22ba cmpil #402106,%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 2302 pea 62302 <IMFS_ops+0x48> <== NOT EXECUTED
42916: 486a 0101 pea %a2@(257) <== NOT EXECUTED
4291a: 4eb9 0005 3568 jsr 53568 <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 a9b8 lea 4a9b8 <_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 3658 jsr 53658 <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 ae66 jsr 4ae66 <_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 b7fa jsr 4b7fa <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 30a4 jsr 530a4 <strcpy> <== NOT EXECUTED
if (full_filename[strlen(full_filename)-1] != '/')
42a02: 2f0d movel %a5,%sp@- <== NOT EXECUTED
42a04: 4eb9 0005 3550 jsr 53550 <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 2f8c jsr 52f8c <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 b07e jsr 4b07e <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 2b0e cmpil #404238,%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
00046654 <rtems_task_create>:
size_t stack_size,
rtems_mode initial_modes,
rtems_attribute attribute_set,
rtems_id *id
)
{
46654: 4e56 ffe8 linkw %fp,#-24
46658: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4665c: 242e 0008 movel %fp@(8),%d2
46660: 282e 000c movel %fp@(12),%d4
46664: 262e 0014 movel %fp@(20),%d3
46668: 2a2e 0018 movel %fp@(24),%d5
4666c: 246e 001c moveal %fp@(28),%a2
Priority_Control core_priority;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
46670: 4a8a tstl %a2
46672: 6700 0118 beqw 4678c <rtems_task_create+0x138>
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
46676: 4a82 tstl %d2
46678: 6700 00bc beqw 46736 <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 ) ) {
4667c: 4a45 tstw %d5
4667e: 6d14 blts 46694 <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 ) &&
46680: 4a84 tstl %d4
46682: 6700 00a6 beqw 4672a <rtems_task_create+0xd6>
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
46686: 4280 clrl %d0
46688: 1039 0005 e3c2 moveb 5e3c2 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
4668e: b084 cmpl %d4,%d0
46690: 6500 0098 bcsw 4672a <rtems_task_create+0xd6>
*/
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
46694: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@-
4669a: 4eb9 0004 6e3c jsr 46e3c <_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 );
466a0: 4879 0005 fbf6 pea 5fbf6 <_RTEMS_tasks_Information>
466a6: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate>
* the event of an error.
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
466ac: 508f addql #8,%sp
466ae: 2640 moveal %d0,%a3
466b0: 4a80 tstl %d0
466b2: 6700 00be beqw 46772 <rtems_task_create+0x11e>
/*
* Initialize the core thread for this task.
*/
status = _Thread_Initialize(
466b6: 7007 moveq #7,%d0
466b8: 2f02 movel %d2,%sp@-
466ba: c083 andl %d3,%d0
466bc: 0803 0009 btst #9,%d3
466c0: 56c1 sne %d1
466c2: 2f00 movel %d0,%sp@-
466c4: 0803 0008 btst #8,%d3
466c8: 57c0 seq %d0
466ca: 42a7 clrl %sp@-
466cc: 49c1 extbl %d1
466ce: 4481 negl %d1
466d0: 49c0 extbl %d0
466d2: 4480 negl %d0
466d4: 2f01 movel %d1,%sp@-
466d6: 2f00 movel %d0,%sp@-
466d8: 7001 moveq #1,%d0
466da: 2f04 movel %d4,%sp@-
466dc: c085 andl %d5,%d0
466de: 2f00 movel %d0,%sp@-
466e0: 2f2e 0010 movel %fp@(16),%sp@-
466e4: 42a7 clrl %sp@-
466e6: 2f0b movel %a3,%sp@-
466e8: 4879 0005 fbf6 pea 5fbf6 <_RTEMS_tasks_Information>
466ee: 4eb9 0004 89fc jsr 489fc <_Thread_Initialize>
NULL, /* no budget algorithm callout */
_Modes_Get_interrupt_level(initial_modes),
(Objects_Name) name
);
if ( !status ) {
466f4: 4fef 002c lea %sp@(44),%sp
466f8: 4a00 tstb %d0
466fa: 6746 beqs 46742 <rtems_task_create+0xee>
_RTEMS_Unlock_allocator();
return RTEMS_UNSATISFIED;
}
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
466fc: 206b 00fe moveal %a3@(254),%a0
* id - thread id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_task_create(
46700: 0803 000a btst #10,%d3
46704: 57c0 seq %d0
46706: 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;
46708: 1140 0008 moveb %d0,%a0@(8)
*id = the_thread->Object.id;
4670c: 24ab 0008 movel %a3@(8),%a2@
);
}
#endif
_RTEMS_Unlock_allocator();
46710: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@-
46716: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock>
return RTEMS_SUCCESSFUL;
4671c: 588f addql #4,%sp
4671e: 4280 clrl %d0
}
46720: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
46726: 4e5e unlk %fp
46728: 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;
4672a: 7013 moveq #19,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
4672c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
46732: 4e5e unlk %fp <== NOT EXECUTED
46734: 4e75 rts <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46736: 7003 moveq #3,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46738: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4673e: 4e5e unlk %fp <== NOT EXECUTED
46740: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free (
Thread_Control *the_task
)
{
_Objects_Free(
46742: 2f2b 0008 movel %a3@(8),%sp@-
46746: 4eb9 0004 7ca4 jsr 47ca4 <_Objects_Get_information_id>
4674c: 2f0b movel %a3,%sp@-
4674e: 2f00 movel %d0,%sp@-
46750: 4eb9 0004 7c20 jsr 47c20 <_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();
46756: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@-
4675c: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock>
return RTEMS_UNSATISFIED;
46762: 4fef 0010 lea %sp@(16),%sp
46766: 700d moveq #13,%d0
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46768: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
4676e: 4e5e unlk %fp
46770: 4e75 rts
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
46772: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46778: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4677e: 588f addql #4,%sp <== NOT EXECUTED
46780: 7005 moveq #5,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46782: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
46788: 4e5e unlk %fp <== NOT EXECUTED
4678a: 4e75 rts <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4678c: 7009 moveq #9,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
4678e: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
46794: 4e5e unlk %fp <== NOT EXECUTED
00046798 <rtems_task_delete>:
*/
rtems_status_code rtems_task_delete(
rtems_id id
)
{
46798: 4e56 fffc linkw %fp,#-4
4679c: 2f0b movel %a3,%sp@-
4679e: 2f0a movel %a2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
467a0: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@-
467a6: 4eb9 0004 6e3c jsr 46e3c <_API_Mutex_Lock>
the_thread = _Thread_Get( id, &location );
467ac: 486e fffc pea %fp@(-4)
467b0: 2f2e 0008 movel %fp@(8),%sp@-
467b4: 4eb9 0004 8964 jsr 48964 <_Thread_Get>
switch ( location ) {
467ba: 4fef 000c lea %sp@(12),%sp
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
the_thread = _Thread_Get( id, &location );
467be: 2440 moveal %d0,%a2
switch ( location ) {
467c0: 4aae fffc tstl %fp@(-4)
467c4: 664a bnes 46810 <rtems_task_delete+0x78> <== NEVER TAKEN
case OBJECTS_LOCAL:
the_information = _Objects_Get_information_id( the_thread->Object.id );
467c6: 2f2a 0008 movel %a2@(8),%sp@-
467ca: 47f9 0004 7ca4 lea 47ca4 <_Objects_Get_information_id>,%a3
467d0: 4e93 jsr %a3@
0 /* Not used */
);
}
#endif
_Thread_Close( the_information, the_thread );
467d2: 2f0a movel %a2,%sp@-
467d4: 2f00 movel %d0,%sp@-
467d6: 4eb9 0004 85e8 jsr 485e8 <_Thread_Close>
467dc: 2f2a 0008 movel %a2@(8),%sp@-
467e0: 4e93 jsr %a3@
467e2: 2f0a movel %a2,%sp@-
467e4: 2f00 movel %d0,%sp@-
467e6: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
467ec: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@-
467f2: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock>
_Thread_Enable_dispatch();
467f8: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
}
467fe: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46802: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
46806: 4280 clrl %d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
}
46808: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4680c: 4e5e unlk %fp <== NOT EXECUTED
4680e: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
46810: 2f39 0005 fd38 movel 5fd38 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46816: 4eb9 0004 6e9c jsr 46e9c <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_INVALID_ID;
}
4681c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
46820: 588f addql #4,%sp <== NOT EXECUTED
46822: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46824: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
46828: 4e5e unlk %fp <== NOT EXECUTED
00048c74 <rtems_task_get_note>:
rtems_status_code rtems_task_get_note(
rtems_id id,
uint32_t notepad,
uint32_t *note
)
{
48c74: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48c78: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
48c7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48c7e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
48c82: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48c84: 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() )
48c88: 4a39 0006 18c4 tstb 618c4 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED
48c8e: 6778 beqs 48d08 <rtems_task_get_note+0x94> <== NOT EXECUTED
return RTEMS_NOT_CONFIGURED;
if ( !note )
48c90: 4a8a tstl %a2 <== NOT EXECUTED
48c92: 6700 0090 beqw 48d24 <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 )
48c96: 720f moveq #15,%d1 <== NOT EXECUTED
48c98: b282 cmpl %d2,%d1 <== NOT EXECUTED
48c9a: 6542 bcss 48cde <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 ) ||
48c9c: 4a80 tstl %d0 <== NOT EXECUTED
48c9e: 674c beqs 48cec <rtems_task_get_note+0x78> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
48ca0: 2079 0006 38dc moveal 638dc <_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 ) ||
48ca6: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
48caa: 6746 beqs 48cf2 <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 );
48cac: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48cb0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48cb2: 4eb9 0004 b110 jsr 4b110 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48cb8: 508f addql #8,%sp <== NOT EXECUTED
48cba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48cbe: 6656 bnes 48d16 <rtems_task_get_note+0xa2> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48cc0: 2240 moveal %d0,%a1 <== NOT EXECUTED
48cc2: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED
48cc6: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48cca: 4eb9 0004 b0ea jsr 4b0ea <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cd0: 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;
48cd4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cd6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48cda: 4e5e unlk %fp <== NOT EXECUTED
48cdc: 4e75 rts <== NOT EXECUTED
48cde: 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;
48ce2: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48ce4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48ce8: 4e5e unlk %fp <== NOT EXECUTED
48cea: 4e75 rts <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48cec: 2079 0006 38dc moveal 638dc <_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 ];
48cf2: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48cf6: 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 ];
48cf8: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cfc: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
48d00: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d04: 4e5e unlk %fp <== NOT EXECUTED
48d06: 4e75 rts <== NOT EXECUTED
48d08: 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;
48d0c: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d0e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d12: 4e5e unlk %fp <== NOT EXECUTED
48d14: 4e75 rts <== NOT EXECUTED
48d16: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48d1a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48d1c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d20: 4e5e unlk %fp <== NOT EXECUTED
48d22: 4e75 rts <== NOT EXECUTED
48d24: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
if ( !note )
return RTEMS_INVALID_ADDRESS;
48d28: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d2a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d2e: 4e5e unlk %fp <== NOT EXECUTED
...
0004682c <rtems_task_ident>:
rtems_status_code rtems_task_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4682c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46830: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46834: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
if ( !id )
46838: 4a88 tstl %a0 <== NOT EXECUTED
4683a: 6738 beqs 46874 <rtems_task_ident+0x48> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
4683c: 4a80 tstl %d0 <== NOT EXECUTED
4683e: 660e bnes 4684e <rtems_task_ident+0x22> <== NOT EXECUTED
*id = _Thread_Executing->Object.id;
46840: 2279 0006 0102 moveal 60102 <_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 ];
}
46846: 4e5e unlk %fp <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
*id = _Thread_Executing->Object.id;
46848: 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 ];
}
4684c: 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 );
4684e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
46850: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
46854: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46856: 4879 0005 fbf6 pea 5fbf6 <_RTEMS_tasks_Information> <== NOT EXECUTED
4685c: 4eb9 0004 7f3c jsr 47f3c <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
46862: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46866: 41f9 0005 d4de lea 5d4de <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4686c: 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 ];
4686e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
}
46872: 4e75 rts <== NOT EXECUTED
)
{
Objects_Name_or_id_lookup_errors status;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46874: 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 ];
}
46876: 4e5e unlk %fp <== NOT EXECUTED
...
00058398 <rtems_task_is_suspended>:
*/
rtems_status_code rtems_task_is_suspended(
rtems_id id
)
{
58398: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
5839c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
583a0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
583a4: 4eb9 0005 c4c0 jsr 5c4c0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
583aa: 508f addql #8,%sp <== NOT EXECUTED
583ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
583b0: 6706 beqs 583b8 <rtems_task_is_suspended+0x20> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
583b2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
583b4: 4e5e unlk %fp <== NOT EXECUTED
583b6: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
583b8: 7202 moveq #2,%d1 <== NOT EXECUTED
583ba: 2040 moveal %d0,%a0 <== NOT EXECUTED
583bc: 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 ) ) {
583c0: 670c beqs 583ce <rtems_task_is_suspended+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
583c2: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
583c8: 700f moveq #15,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
583ca: 4e5e unlk %fp <== NOT EXECUTED
583cc: 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();
583ce: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
583d4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
583d6: 4e5e unlk %fp <== NOT EXECUTED
...
0004e388 <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
4e388: 4e56 ffe4 linkw %fp,#-28
4e38c: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
4e390: 2a2e 0008 movel %fp@(8),%d5
4e394: 242e 000c movel %fp@(12),%d2
4e398: 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 )
4e39c: 4a8c tstl %a4
4e39e: 6700 015a beqw 4e4fa <rtems_task_mode+0x172>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
4e3a2: 2479 0006 0102 moveal 60102 <_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;
4e3a8: 4a2a 0074 tstb %a2@(116)
4e3ac: 57c3 seq %d3
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4e3ae: 266a 00fe moveal %a2@(254),%a3
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4e3b2: 49c3 extbl %d3
4e3b4: 0283 0000 0100 andil #256,%d3
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
4e3ba: 4aaa 007a tstl %a2@(122)
4e3be: 6600 00cc bnew 4e48c <rtems_task_mode+0x104>
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4e3c2: 4a2b 0008 tstb %a3@(8)
4e3c6: 57c4 seq %d4
old_mode |= _ISR_Get_level();
4e3c8: 4eb9 0004 9c78 jsr 49c78 <_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;
4e3ce: 49c4 extbl %d4
4e3d0: 0284 0000 0400 andil #1024,%d4
4e3d6: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
4e3d8: 8083 orl %d3,%d0
4e3da: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4e3dc: 0802 0008 btst #8,%d2
4e3e0: 670c beqs 4e3ee <rtems_task_mode+0x66> <== NEVER TAKEN
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
4e3e2: 0805 0008 btst #8,%d5
4e3e6: 57c0 seq %d0
4e3e8: 4480 negl %d0
4e3ea: 1540 0074 moveb %d0,%a2@(116)
if ( mask & RTEMS_TIMESLICE_MASK ) {
4e3ee: 0802 0009 btst #9,%d2
4e3f2: 6718 beqs 4e40c <rtems_task_mode+0x84>
if ( _Modes_Is_timeslice(mode_set) ) {
4e3f4: 0805 0009 btst #9,%d5
4e3f8: 6700 00ee beqw 4e4e8 <rtems_task_mode+0x160>
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4e3fc: 7001 moveq #1,%d0 <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4e3fe: 41f9 0005 fc30 lea 5fc30 <_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;
4e404: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4e408: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e40c: 7007 moveq #7,%d0
4e40e: c082 andl %d2,%d0
4e410: 6712 beqs 4e424 <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 ) );
4e412: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
4e414: 7207 moveq #7,%d1
4e416: 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 ) );
4e418: 0280 0000 f8ff andil #63743,%d0
4e41e: e189 lsll #8,%d1
4e420: 8081 orl %d1,%d0
4e422: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
4e424: 0802 000a btst #10,%d2
4e428: 6754 beqs 4e47e <rtems_task_mode+0xf6>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4e42a: 4282 clrl %d2
4e42c: 142b 0008 moveb %a3@(8),%d2
4e430: 4280 clrl %d0
* Output:
* *previous_mode_set - previous mode set
* always return RTEMS_SUCCESSFUL;
*/
rtems_status_code rtems_task_mode(
4e432: 0805 000a btst #10,%d5
4e436: 57c1 seq %d1
4e438: 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 ) {
4e43a: 1001 moveb %d1,%d0
4e43c: b082 cmpl %d2,%d0
4e43e: 673e beqs 4e47e <rtems_task_mode+0xf6> <== ALWAYS TAKEN
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
4e440: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
asr->is_enabled = is_asr_enabled;
4e446: 1741 0008 moveb %d1,%a3@(8) <== NOT EXECUTED
4e44a: 40c1 movew %sr,%d1 <== NOT EXECUTED
4e44c: 8081 orl %d1,%d0 <== NOT EXECUTED
4e44e: 46c0 movew %d0,%sr <== NOT EXECUTED
_signals = information->signals_pending;
4e450: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED
information->signals_pending = information->signals_posted;
4e454: 276b 0012 0016 movel %a3@(18),%a3@(22) <== NOT EXECUTED
information->signals_posted = _signals;
4e45a: 2740 0012 movel %d0,%a3@(18) <== NOT EXECUTED
_ISR_Enable( _level );
4e45e: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e460: 4aab 0012 tstl %a3@(18) <== NOT EXECUTED
4e464: 56c0 sne %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e466: 7203 moveq #3,%d1 <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e468: 4480 negl %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e46a: b2b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d1 <== NOT EXECUTED
4e470: 6744 beqs 4e4b6 <rtems_task_mode+0x12e> <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4e472: 4280 clrl %d0
}
4e474: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
4e47a: 4e5e unlk %fp
4e47c: 4e75 rts
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e47e: 7203 moveq #3,%d1
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4e480: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4e482: b2b9 0005 fde4 cmpl 5fde4 <_System_state_Current>,%d1
4e488: 66e8 bnes 4e472 <rtems_task_mode+0xea> <== NEVER TAKEN
4e48a: 602a bras 4e4b6 <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;
4e48c: 4a2b 0008 tstb %a3@(8) <== NOT EXECUTED
4e490: 57c4 seq %d4 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4e492: 4eb9 0004 9c78 jsr 49c78 <_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;
4e498: 49c4 extbl %d4 <== NOT EXECUTED
4e49a: 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;
4e4a0: 08c3 0009 bset #9,%d3 <== NOT EXECUTED
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4e4a4: 8084 orl %d4,%d0 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4e4a6: 8083 orl %d3,%d0 <== NOT EXECUTED
4e4a8: 2880 movel %d0,%a4@ <== NOT EXECUTED
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4e4aa: 0802 0008 btst #8,%d2 <== NOT EXECUTED
4e4ae: 6700 ff3e beqw 4e3ee <rtems_task_mode+0x66> <== NOT EXECUTED
4e4b2: 6000 ff2e braw 4e3e2 <rtems_task_mode+0x5a> <== NOT EXECUTED
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
4e4b6: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
if ( are_signals_pending ||
4e4bc: 4a00 tstb %d0
4e4be: 660e bnes 4e4ce <rtems_task_mode+0x146> <== NEVER TAKEN
4e4c0: b1f9 0006 0106 cmpal 60106 <_Per_CPU_Information+0x10>,%a0
4e4c6: 67aa beqs 4e472 <rtems_task_mode+0xea> <== ALWAYS TAKEN
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
4e4c8: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED
4e4cc: 67a4 beqs 4e472 <rtems_task_mode+0xea> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4e4ce: 7001 moveq #1,%d0 <== NOT EXECUTED
4e4d0: 13c0 0006 010e moveb %d0,6010e <_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();
4e4d6: 4eb9 0004 87d4 jsr 487d4 <_Thread_Dispatch> <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
4e4dc: 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;
4e4e2: 4280 clrl %d0 <== NOT EXECUTED
}
4e4e4: 4e5e unlk %fp <== NOT EXECUTED
4e4e6: 4e75 rts <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e4e8: 7007 moveq #7,%d0
4e4ea: 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;
4e4ec: 42aa 007a clrl %a2@(122)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4e4f0: 4a80 tstl %d0
4e4f2: 6700 ff30 beqw 4e424 <rtems_task_mode+0x9c>
4e4f6: 6000 ff1a braw 4e412 <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;
4e4fa: 7009 moveq #9,%d0 <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
}
4e4fc: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
4e502: 4e5e unlk %fp <== NOT EXECUTED
...
000474a8 <rtems_task_restart>:
rtems_status_code rtems_task_restart(
rtems_id id,
uint32_t argument
)
{
474a8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
474ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED
474b0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
474b4: 4eb9 0004 9578 jsr 49578 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
474ba: 508f addql #8,%sp <== NOT EXECUTED
474bc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
474c0: 6622 bnes 474e4 <rtems_task_restart+0x3c> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_Restart( the_thread, NULL, argument ) ) {
474c2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
474c6: 42a7 clrl %sp@- <== NOT EXECUTED
474c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
474ca: 4eb9 0004 9e28 jsr 49e28 <_Thread_Restart> <== NOT EXECUTED
474d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
474d4: 4a00 tstb %d0 <== NOT EXECUTED
474d6: 6612 bnes 474ea <rtems_task_restart+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
474d8: 4eb9 0004 9552 jsr 49552 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
474de: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
474e0: 4e5e unlk %fp <== NOT EXECUTED
474e2: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
474e4: 7004 moveq #4,%d0 <== NOT EXECUTED
}
474e6: 4e5e unlk %fp <== NOT EXECUTED
474e8: 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();
474ea: 4eb9 0004 9552 jsr 49552 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
474f0: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
474f2: 4e5e unlk %fp <== NOT EXECUTED
...
00049f14 <rtems_task_resume>:
*/
rtems_status_code rtems_task_resume(
rtems_id id
)
{
49f14: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49f18: 486e fffc pea %fp@(-4)
49f1c: 2f2e 0008 movel %fp@(8),%sp@-
49f20: 4eb9 0004 c010 jsr 4c010 <_Thread_Get>
switch ( location ) {
49f26: 508f addql #8,%sp
49f28: 4aae fffc tstl %fp@(-4)
49f2c: 6706 beqs 49f34 <rtems_task_resume+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
49f2e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
49f30: 4e5e unlk %fp <== NOT EXECUTED
49f32: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
49f34: 7202 moveq #2,%d1
49f36: 2040 moveal %d0,%a0
49f38: 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 ) ) {
49f3c: 660c bnes 49f4a <rtems_task_resume+0x36> <== ALWAYS TAKEN
_Thread_Resume( the_thread, true );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
49f3e: 4eb9 0004 bfea jsr 4bfea <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
49f44: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f46: 4e5e unlk %fp <== NOT EXECUTED
49f48: 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 );
49f4a: 4878 0001 pea 1 <ADD>
49f4e: 2f00 movel %d0,%sp@-
49f50: 4eb9 0004 c8c0 jsr 4c8c0 <_Thread_Resume>
_Thread_Enable_dispatch();
49f56: 4eb9 0004 bfea jsr 4bfea <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
49f5c: 508f addql #8,%sp
49f5e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f60: 4e5e unlk %fp <== NOT EXECUTED
00048e20 <rtems_task_set_note>:
rtems_status_code rtems_task_set_note(
rtems_id id,
uint32_t notepad,
uint32_t note
)
{
48e20: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48e24: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
48e28: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48e2a: 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() )
48e2e: 4a39 0006 18c4 tstb 618c4 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED
48e34: 676e beqs 48ea4 <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 )
48e36: 720f moveq #15,%d1 <== NOT EXECUTED
48e38: b282 cmpl %d2,%d1 <== NOT EXECUTED
48e3a: 6542 bcss 48e7e <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 ) ||
48e3c: 4a80 tstl %d0 <== NOT EXECUTED
48e3e: 6748 beqs 48e88 <rtems_task_set_note+0x68> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
48e40: 2079 0006 38dc moveal 638dc <_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 ) ||
48e46: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
48e4a: 6742 beqs 48e8e <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 );
48e4c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48e50: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48e52: 4eb9 0004 b110 jsr 4b110 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48e58: 508f addql #8,%sp <== NOT EXECUTED
48e5a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48e5e: 664e bnes 48eae <rtems_task_set_note+0x8e> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48e60: 2240 moveal %d0,%a1 <== NOT EXECUTED
48e62: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
48e66: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED
48e6a: 2180 2c1e movel %d0,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
48e6e: 4eb9 0004 b0ea jsr 4b0ea <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e74: 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;
48e78: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e7a: 4e5e unlk %fp <== NOT EXECUTED
48e7c: 4e75 rts <== NOT EXECUTED
48e7e: 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;
48e82: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e84: 4e5e unlk %fp <== NOT EXECUTED
48e86: 4e75 rts <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48e88: 2079 0006 38dc moveal 638dc <_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;
48e8e: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48e92: 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;
48e94: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED
48e98: 2189 2c1e movel %a1,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e9c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48ea0: 4e5e unlk %fp <== NOT EXECUTED
48ea2: 4e75 rts <== NOT EXECUTED
48ea4: 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;
48ea8: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48eaa: 4e5e unlk %fp <== NOT EXECUTED
48eac: 4e75 rts <== NOT EXECUTED
48eae: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48eb2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48eb4: 4e5e unlk %fp <== NOT EXECUTED
0004acfc <rtems_task_set_priority>:
rtems_status_code rtems_task_set_priority(
rtems_id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
)
{
4acfc: 4e56 fffc linkw %fp,#-4
4ad00: 2f0a movel %a2,%sp@-
4ad02: 246e 0010 moveal %fp@(16),%a2
4ad06: 2f02 movel %d2,%sp@-
4ad08: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
4ad0c: 670c beqs 4ad1a <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 ) );
4ad0e: 4280 clrl %d0
4ad10: 1039 0006 2812 moveb 62812 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
4ad16: b082 cmpl %d2,%d0
4ad18: 6566 bcss 4ad80 <rtems_task_set_priority+0x84> <== NEVER TAKEN
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
4ad1a: 4a8a tstl %a2
4ad1c: 6770 beqs 4ad8e <rtems_task_set_priority+0x92> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
4ad1e: 486e fffc pea %fp@(-4)
4ad22: 2f2e 0008 movel %fp@(8),%sp@-
4ad26: 4eb9 0004 cfa4 jsr 4cfa4 <_Thread_Get>
switch ( location ) {
4ad2c: 508f addql #8,%sp
4ad2e: 4aae fffc tstl %fp@(-4)
4ad32: 663e bnes 4ad72 <rtems_task_set_priority+0x76> <== NEVER TAKEN
case OBJECTS_LOCAL:
/* XXX need helper to "convert" from core priority */
*old_priority = the_thread->current_priority;
4ad34: 2040 moveal %d0,%a0
4ad36: 24a8 0014 movel %a0@(20),%a2@
if ( new_priority != RTEMS_CURRENT_PRIORITY ) {
4ad3a: 4a82 tstl %d2
4ad3c: 6720 beqs 4ad5e <rtems_task_set_priority+0x62> <== NEVER TAKEN
the_thread->real_priority = new_priority;
4ad3e: 2142 0018 movel %d2,%a0@(24)
if ( the_thread->resource_count == 0 ||
4ad42: 4aa8 001c tstl %a0@(28)
4ad46: 6706 beqs 4ad4e <rtems_task_set_priority+0x52> <== ALWAYS TAKEN
4ad48: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED
4ad4c: 6410 bccs 4ad5e <rtems_task_set_priority+0x62> <== NOT EXECUTED
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
4ad4e: 42a7 clrl %sp@-
4ad50: 2f02 movel %d2,%sp@-
4ad52: 2f00 movel %d0,%sp@-
4ad54: 4eb9 0004 ca88 jsr 4ca88 <_Thread_Change_priority>
4ad5a: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4ad5e: 4eb9 0004 cf7e jsr 4cf7e <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad64: 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;
4ad68: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad6a: 246e fff8 moveal %fp@(-8),%a2
4ad6e: 4e5e unlk %fp
4ad70: 4e75 rts
4ad72: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ad76: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ad78: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ad7c: 4e5e unlk %fp <== NOT EXECUTED
4ad7e: 4e75 rts <== NOT EXECUTED
4ad80: 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;
4ad84: 7013 moveq #19,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad86: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ad8a: 4e5e unlk %fp <== NOT EXECUTED
4ad8c: 4e75 rts <== NOT EXECUTED
4ad8e: 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;
4ad92: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad94: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ad98: 4e5e unlk %fp <== NOT EXECUTED
00046904 <rtems_task_start>:
rtems_status_code rtems_task_start(
rtems_id id,
rtems_task_entry entry_point,
rtems_task_argument argument
)
{
46904: 4e56 fffc linkw %fp,#-4
46908: 2f02 movel %d2,%sp@-
4690a: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
4690e: 674a beqs 4695a <rtems_task_start+0x56>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
46910: 486e fffc pea %fp@(-4)
46914: 2f2e 0008 movel %fp@(8),%sp@-
46918: 4eb9 0004 8964 jsr 48964 <_Thread_Get>
switch ( location ) {
4691e: 508f addql #8,%sp
46920: 4aae fffc tstl %fp@(-4)
46924: 662a bnes 46950 <rtems_task_start+0x4c> <== NEVER TAKEN
case OBJECTS_LOCAL:
if ( _Thread_Start(
46926: 2f2e 0010 movel %fp@(16),%sp@-
4692a: 42a7 clrl %sp@-
4692c: 2f02 movel %d2,%sp@-
4692e: 42a7 clrl %sp@-
46930: 2f00 movel %d0,%sp@-
46932: 4eb9 0004 93f8 jsr 493f8 <_Thread_Start>
46938: 4fef 0014 lea %sp@(20),%sp
4693c: 4a00 tstb %d0
4693e: 6624 bnes 46964 <rtems_task_start+0x60> <== ALWAYS TAKEN
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
46940: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46946: 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;
4694a: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4694c: 4e5e unlk %fp <== NOT EXECUTED
4694e: 4e75 rts <== NOT EXECUTED
46950: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46954: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46956: 4e5e unlk %fp <== NOT EXECUTED
46958: 4e75 rts <== NOT EXECUTED
4695a: 242e fff8 movel %fp@(-8),%d2
{
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
return RTEMS_INVALID_ADDRESS;
4695e: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46960: 4e5e unlk %fp
46962: 4e75 rts
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Thread_Start(
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
46964: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4696a: 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;
4696e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46970: 4e5e unlk %fp <== NOT EXECUTED
00046974 <rtems_task_suspend>:
*/
rtems_status_code rtems_task_suspend(
rtems_id id
)
{
46974: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
46978: 486e fffc pea %fp@(-4)
4697c: 2f2e 0008 movel %fp@(8),%sp@-
46980: 4eb9 0004 8964 jsr 48964 <_Thread_Get>
switch ( location ) {
46986: 508f addql #8,%sp
46988: 4aae fffc tstl %fp@(-4)
4698c: 6706 beqs 46994 <rtems_task_suspend+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4698e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46990: 4e5e unlk %fp <== NOT EXECUTED
46992: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
46994: 7202 moveq #2,%d1
46996: 2040 moveal %d0,%a0
46998: 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 ) ) {
4699c: 670c beqs 469aa <rtems_task_suspend+0x36> <== ALWAYS TAKEN
_Thread_Suspend( the_thread );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
4699e: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
469a4: 700f moveq #15,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
469a6: 4e5e unlk %fp <== NOT EXECUTED
469a8: 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 );
469aa: 2f00 movel %d0,%sp@-
469ac: 4eb9 0004 9454 jsr 49454 <_Thread_Suspend>
_Thread_Enable_dispatch();
469b2: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
469b8: 588f addql #4,%sp
469ba: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
469bc: 4e5e unlk %fp <== NOT EXECUTED
000477a8 <rtems_task_variable_add>:
rtems_status_code rtems_task_variable_add(
rtems_id tid,
void **ptr,
void (*dtor)(void *)
)
{
477a8: 4e56 fff0 linkw %fp,#-16
477ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
477b0: 246e 000c moveal %fp@(12),%a2
477b4: 242e 0010 movel %fp@(16),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
477b8: 4a8a tstl %a2
477ba: 6700 009a beqw 47856 <rtems_task_variable_add+0xae>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477be: 486e fffc pea %fp@(-4) <== NOT EXECUTED
477c2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
477c6: 4eb9 0004 9900 jsr 49900 <_Thread_Get> <== NOT EXECUTED
switch (location) {
477cc: 508f addql #8,%sp <== NOT EXECUTED
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477ce: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch (location) {
477d0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
477d4: 664c bnes 47822 <rtems_task_variable_add+0x7a> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
477d6: 206b 010a moveal %a3@(266),%a0 <== NOT EXECUTED
while (tvp) {
477da: 4a88 tstl %a0 <== NOT EXECUTED
477dc: 670c beqs 477ea <rtems_task_variable_add+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
477de: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED
477e2: 674a beqs 4782e <rtems_task_variable_add+0x86> <== NOT EXECUTED
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
477e4: 2050 moveal %a0@,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
477e6: 4a88 tstl %a0 <== NOT EXECUTED
477e8: 66f4 bnes 477de <rtems_task_variable_add+0x36> <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
477ea: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
477ee: 4eb9 0004 aaee jsr 4aaee <_Workspace_Allocate> <== NOT EXECUTED
if (new == NULL) {
477f4: 588f addql #4,%sp <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
477f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (new == NULL) {
477f8: 4a80 tstl %d0 <== NOT EXECUTED
477fa: 6748 beqs 47844 <rtems_task_variable_add+0x9c> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
477fc: 2152 0008 movel %a2@,%a0@(8) <== NOT EXECUTED
new->ptr = ptr;
new->dtor = dtor;
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
47800: 20ab 010a movel %a3@(266),%a0@ <== NOT EXECUTED
if (new == NULL) {
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
new->ptr = ptr;
47804: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
new->dtor = dtor;
47808: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
4780c: 2740 010a movel %d0,%a3@(266) <== NOT EXECUTED
_Thread_Enable_dispatch();
47810: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47816: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
new->dtor = dtor;
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4781c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4781e: 4e5e unlk %fp <== NOT EXECUTED
47820: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47822: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47824: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4782a: 4e5e unlk %fp <== NOT EXECUTED
4782c: 4e75 rts <== NOT EXECUTED
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
tvp->dtor = dtor;
4782e: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
_Thread_Enable_dispatch();
47832: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47838: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4783e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47840: 4e5e unlk %fp <== NOT EXECUTED
47842: 4e75 rts <== NOT EXECUTED
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
if (new == NULL) {
_Thread_Enable_dispatch();
47844: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
4784a: 701a moveq #26,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4784c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
47852: 4e5e unlk %fp <== NOT EXECUTED
47854: 4e75 rts <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
47856: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47858: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4785e: 4e5e unlk %fp
...
00047864 <rtems_task_variable_delete>:
rtems_status_code rtems_task_variable_delete(
rtems_id tid,
void **ptr
)
{
47864: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47868: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4786a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
4786e: 6772 beqs 478e2 <rtems_task_variable_delete+0x7e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
prev = NULL;
the_thread = _Thread_Get (tid, &location);
47870: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47874: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47878: 4eb9 0004 9900 jsr 49900 <_Thread_Get> <== NOT EXECUTED
switch (location) {
4787e: 508f addql #8,%sp <== NOT EXECUTED
47880: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47884: 6634 bnes 478ba <rtems_task_variable_delete+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
47886: 2040 moveal %d0,%a0 <== NOT EXECUTED
47888: 2268 010a moveal %a0@(266),%a1 <== NOT EXECUTED
while (tvp) {
4788c: 4a89 tstl %a1 <== NOT EXECUTED
4788e: 671a beqs 478aa <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
47890: b4a9 0004 cmpl %a1@(4),%d2 <== NOT EXECUTED
47894: 6756 beqs 478ec <rtems_task_variable_delete+0x88><== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
47896: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
47898: 4a88 tstl %a0 <== NOT EXECUTED
4789a: 670e beqs 478aa <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
4789c: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED
478a0: 6722 beqs 478c4 <rtems_task_variable_delete+0x60><== NOT EXECUTED
478a2: 2248 moveal %a0,%a1 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
478a4: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
478a6: 4a88 tstl %a0 <== NOT EXECUTED
478a8: 66f2 bnes 4789c <rtems_task_variable_delete+0x38><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
478aa: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478b0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
478b4: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478b6: 4e5e unlk %fp <== NOT EXECUTED
478b8: 4e75 rts <== NOT EXECUTED
478ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
478be: 7004 moveq #4,%d0 <== NOT EXECUTED
}
478c0: 4e5e unlk %fp <== NOT EXECUTED
478c2: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
478c4: 2290 movel %a0@,%a1@ <== NOT EXECUTED
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
478c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
478c8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
478ca: 4eb9 0004 7998 jsr 47998 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
478d0: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
478d6: 508f addql #8,%sp <== NOT EXECUTED
478d8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478da: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
478de: 4e5e unlk %fp <== NOT EXECUTED
478e0: 4e75 rts <== NOT EXECUTED
478e2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
478e6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478e8: 4e5e unlk %fp <== NOT EXECUTED
478ea: 4e75 rts <== NOT EXECUTED
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
478ec: 2040 moveal %d0,%a0 <== NOT EXECUTED
478ee: 2151 010a movel %a1@,%a0@(266) <== NOT EXECUTED
478f2: 2049 moveal %a1,%a0 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
478f4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
478f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
478f8: 4eb9 0004 7998 jsr 47998 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
478fe: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47904: 508f addql #8,%sp <== NOT EXECUTED
47906: 4280 clrl %d0 <== NOT EXECUTED
47908: 60d0 bras 478da <rtems_task_variable_delete+0x76><== NOT EXECUTED
...
0004790c <rtems_task_variable_get>:
rtems_status_code rtems_task_variable_get(
rtems_id tid,
void **ptr,
void **result
)
{
4790c: 4e56 fffc linkw %fp,#-4
47910: 2f0a movel %a2,%sp@-
47912: 246e 0010 moveal %fp@(16),%a2
47916: 2f02 movel %d2,%sp@-
47918: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
4791c: 6752 beqs 47970 <rtems_task_variable_get+0x64> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !result )
4791e: 4a8a tstl %a2 <== NOT EXECUTED
47920: 674e beqs 47970 <rtems_task_variable_get+0x64> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
47922: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47926: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4792a: 4eb9 0004 9900 jsr 49900 <_Thread_Get> <== NOT EXECUTED
switch (location) {
47930: 508f addql #8,%sp <== NOT EXECUTED
47932: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47936: 662a bnes 47962 <rtems_task_variable_get+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
47938: 2240 moveal %d0,%a1 <== NOT EXECUTED
4793a: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED
while (tvp) {
4793e: 4a88 tstl %a0 <== NOT EXECUTED
47940: 670c beqs 4794e <rtems_task_variable_get+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
47942: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED
47946: 6736 beqs 4797e <rtems_task_variable_get+0x72> <== NOT EXECUTED
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
47948: 2050 moveal %a0@,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
4794a: 4a88 tstl %a0 <== NOT EXECUTED
4794c: 66f4 bnes 47942 <rtems_task_variable_get+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
4794e: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47954: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
47958: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4795a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4795e: 4e5e unlk %fp <== NOT EXECUTED
47960: 4e75 rts <== NOT EXECUTED
47962: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47966: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47968: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4796c: 4e5e unlk %fp <== NOT EXECUTED
4796e: 4e75 rts <== NOT EXECUTED
47970: 242e fff4 movel %fp@(-12),%d2
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
if ( !result )
return RTEMS_INVALID_ADDRESS;
47974: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47976: 246e fff8 moveal %fp@(-8),%a2
4797a: 4e5e unlk %fp
4797c: 4e75 rts
if (tvp->ptr == ptr) {
/*
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
4797e: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47982: 4eb9 0004 98da jsr 498da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47988: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4798c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4798e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47992: 4e5e unlk %fp <== NOT EXECUTED
...
000469c0 <rtems_task_wake_after>:
*/
rtems_status_code rtems_task_wake_after(
rtems_interval ticks
)
{
469c0: 4e56 0000 linkw %fp,#0
469c4: 2039 0005 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0
469ca: 5280 addql #1,%d0
469cc: 2f02 movel %d2,%sp@-
469ce: 242e 0008 movel %fp@(8),%d2
469d2: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
469d8: 4a82 tstl %d2
469da: 6758 beqs 46a34 <rtems_task_wake_after+0x74> <== NEVER TAKEN
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
469dc: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
469e0: 2f39 0006 0102 movel 60102 <_Per_CPU_Information+0xc>,%sp@-
469e6: 4eb9 0004 923c jsr 4923c <_Thread_Set_state>
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
469ec: 2079 0006 0102 moveal 60102 <_Per_CPU_Information+0xc>,%a0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
469f2: 203c 0004 8798 movel #296856,%d0
469f8: 2140 0064 movel %d0,%a0@(100)
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
_Watchdog_Initialize(
469fc: 2028 0008 movel %a0@(8),%d0
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46a00: 2142 0054 movel %d2,%a0@(84)
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
46a04: 2140 0068 movel %d0,%a0@(104)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46a08: 42a8 0050 clrl %a0@(80)
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
46a0c: 42a8 006c clrl %a0@(108)
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46a10: 4868 0048 pea %a0@(72)
46a14: 4879 0005 fd58 pea 5fd58 <_Watchdog_Ticks_chain>
46a1a: 4eb9 0004 987c jsr 4987c <_Watchdog_Insert>
46a20: 4fef 0010 lea %sp@(16),%sp
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a24: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
46a2a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
46a2e: 4280 clrl %d0 <== NOT EXECUTED
46a30: 4e5e unlk %fp <== NOT EXECUTED
46a32: 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 );
46a34: 4879 0005 fcfe pea 5fcfe <_Scheduler> <== NOT EXECUTED
46a3a: 2079 0005 fd06 moveal 5fd06 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
46a40: 4e90 jsr %a0@ <== NOT EXECUTED
46a42: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a44: 4eb9 0004 893e jsr 4893e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
46a4a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
46a4e: 4280 clrl %d0 <== NOT EXECUTED
46a50: 4e5e unlk %fp <== NOT EXECUTED
00047958 <rtems_task_wake_when>:
*/
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
)
{
47958: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4795c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4795e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
47962: 4a39 0006 1600 tstb 61600 <_TOD_Is_set> <== NOT EXECUTED
47968: 6700 00aa beqw 47a14 <rtems_task_wake_when+0xbc> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
4796c: 4a8a tstl %a2 <== NOT EXECUTED
4796e: 6700 00ae beqw 47a1e <rtems_task_wake_when+0xc6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
time_buffer->ticks = 0;
47972: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
if ( !_TOD_Validate( time_buffer ) )
47976: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47978: 4eb9 0004 6c64 jsr 46c64 <_TOD_Validate> <== NOT EXECUTED
4797e: 588f addql #4,%sp <== NOT EXECUTED
47980: 4a00 tstb %d0 <== NOT EXECUTED
47982: 660a bnes 4798e <rtems_task_wake_when+0x36> <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47984: 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;
47988: 7014 moveq #20,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4798a: 4e5e unlk %fp <== NOT EXECUTED
4798c: 4e75 rts <== NOT EXECUTED
time_buffer->ticks = 0;
if ( !_TOD_Validate( time_buffer ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
4798e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47990: 4eb9 0004 6b5c jsr 46b5c <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
47996: 588f addql #4,%sp <== NOT EXECUTED
47998: b0b9 0006 169a cmpl 6169a <_TOD_Now>,%d0 <== NOT EXECUTED
4799e: 63e4 blss 47984 <rtems_task_wake_when+0x2c> <== NOT EXECUTED
479a0: 2239 0006 15f0 movel 615f0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
479a6: 5281 addql #1,%d1 <== NOT EXECUTED
479a8: 23c1 0006 15f0 movel %d1,615f0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
479ae: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
479b2: 2f39 0006 1a7a movel 61a7a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
479b8: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
479bc: 4eb9 0004 a228 jsr 4a228 <_Thread_Set_state> <== NOT EXECUTED
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_seconds(
479c2: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
479c6: 90b9 0006 169a subl 6169a <_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,
479cc: 2079 0006 1a7a moveal 61a7a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Watchdog_Insert_seconds(
479d2: 2140 0054 movel %d0,%a0@(84) <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
479d6: 203c 0004 9784 movel #300932,%d0 <== NOT EXECUTED
479dc: 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(
479e0: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
479e4: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
479e8: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
479ec: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
479f0: 4868 0048 pea %a0@(72) <== NOT EXECUTED
479f4: 4879 0006 16c4 pea 616c4 <_Watchdog_Seconds_chain> <== NOT EXECUTED
479fa: 4eb9 0004 a8fc jsr 4a8fc <_Watchdog_Insert> <== NOT EXECUTED
);
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
47a00: 4eb9 0004 992a jsr 4992a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
47a06: 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;
47a0a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47a0e: 4280 clrl %d0 <== NOT EXECUTED
}
47a10: 4e5e unlk %fp <== NOT EXECUTED
47a12: 4e75 rts <== NOT EXECUTED
47a14: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
)
{
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47a18: 700b moveq #11,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a1a: 4e5e unlk %fp <== NOT EXECUTED
47a1c: 4e75 rts <== NOT EXECUTED
47a1e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47a22: 7009 moveq #9,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a24: 4e5e unlk %fp <== NOT EXECUTED
000457c4 <rtems_termios_baud_to_index>:
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
457c4: 7209 moveq #9,%d1 <== NOT EXECUTED
#include <rtems/termiostypes.h>
int rtems_termios_baud_to_index(
rtems_termios_baud_t termios_baud
)
{
457c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
457ca: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
int baud_index;
switch (termios_baud) {
457ce: b280 cmpl %d0,%d1 <== NOT EXECUTED
457d0: 6700 010a beqw 458dc <rtems_termios_baud_to_index+0x118><== NOT EXECUTED
457d4: 6c32 bges 45808 <rtems_termios_baud_to_index+0x44><== NOT EXECUTED
457d6: 720e moveq #14,%d1 <== NOT EXECUTED
457d8: b280 cmpl %d0,%d1 <== NOT EXECUTED
457da: 6700 00d6 beqw 458b2 <rtems_termios_baud_to_index+0xee><== NOT EXECUTED
457de: 6c56 bges 45836 <rtems_termios_baud_to_index+0x72><== NOT EXECUTED
457e0: 0c80 0000 1002 cmpil #4098,%d0 <== NOT EXECUTED
457e6: 6700 00e2 beqw 458ca <rtems_termios_baud_to_index+0x106><== NOT EXECUTED
457ea: 6f00 0098 blew 45884 <rtems_termios_baud_to_index+0xc0><== NOT EXECUTED
457ee: 0c80 0000 1003 cmpil #4099,%d0 <== NOT EXECUTED
457f4: 6700 00b6 beqw 458ac <rtems_termios_baud_to_index+0xe8><== NOT EXECUTED
457f8: 0c80 0000 1004 cmpil #4100,%d0 <== NOT EXECUTED
457fe: 6700 009a beqw 4589a <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;
45802: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return baud_index;
}
45804: 4e5e unlk %fp <== NOT EXECUTED
45806: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45808: 123c 0004 moveb #4,%d1 <== NOT EXECUTED
4580c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4580e: 6700 00d2 beqw 458e2 <rtems_termios_baud_to_index+0x11e><== NOT EXECUTED
45812: 6d46 blts 4585a <rtems_termios_baud_to_index+0x96><== NOT EXECUTED
45814: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
45818: b280 cmpl %d0,%d1 <== NOT EXECUTED
4581a: 6700 00a2 beqw 458be <rtems_termios_baud_to_index+0xfa><== NOT EXECUTED
4581e: 6c00 00c8 bgew 458e8 <rtems_termios_baud_to_index+0x124><== NOT EXECUTED
45822: 7202 moveq #2,%d1 <== NOT EXECUTED
45824: b280 cmpl %d0,%d1 <== NOT EXECUTED
45826: 677e beqs 458a6 <rtems_termios_baud_to_index+0xe2><== NOT EXECUTED
45828: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
4582c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4582e: 66d2 bnes 45802 <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;
45830: 7003 moveq #3,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45832: 4e5e unlk %fp <== NOT EXECUTED
45834: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45836: 123c 000b moveb #11,%d1 <== NOT EXECUTED
4583a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4583c: 6700 0086 beqw 458c4 <rtems_termios_baud_to_index+0x100><== NOT EXECUTED
45840: 6e3c bgts 4587e <rtems_termios_baud_to_index+0xba><== NOT EXECUTED
45842: 123c 000c moveb #12,%d1 <== NOT EXECUTED
45846: b280 cmpl %d0,%d1 <== NOT EXECUTED
45848: 6700 008c beqw 458d6 <rtems_termios_baud_to_index+0x112><== NOT EXECUTED
4584c: 123c 000d moveb #13,%d1 <== NOT EXECUTED
45850: b280 cmpl %d0,%d1 <== NOT EXECUTED
45852: 66ae bnes 45802 <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;
45854: 700d moveq #13,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45856: 4e5e unlk %fp <== NOT EXECUTED
45858: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
4585a: 7206 moveq #6,%d1 <== NOT EXECUTED
4585c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4585e: 6758 beqs 458b8 <rtems_termios_baud_to_index+0xf4><== NOT EXECUTED
45860: 6e16 bgts 45878 <rtems_termios_baud_to_index+0xb4><== NOT EXECUTED
45862: 123c 0007 moveb #7,%d1 <== NOT EXECUTED
45866: b280 cmpl %d0,%d1 <== NOT EXECUTED
45868: 6766 beqs 458d0 <rtems_termios_baud_to_index+0x10c><== NOT EXECUTED
4586a: 123c 0008 moveb #8,%d1 <== NOT EXECUTED
4586e: b280 cmpl %d0,%d1 <== NOT EXECUTED
45870: 6690 bnes 45802 <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;
45872: 7008 moveq #8,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45874: 4e5e unlk %fp <== NOT EXECUTED
45876: 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;
45878: 7005 moveq #5,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
4587a: 4e5e unlk %fp <== NOT EXECUTED
4587c: 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;
4587e: 700a moveq #10,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45880: 4e5e unlk %fp <== NOT EXECUTED
45882: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
45884: 720f moveq #15,%d1 <== NOT EXECUTED
45886: b280 cmpl %d0,%d1 <== NOT EXECUTED
45888: 6716 beqs 458a0 <rtems_termios_baud_to_index+0xdc><== NOT EXECUTED
4588a: 0c80 0000 1001 cmpil #4097,%d0 <== NOT EXECUTED
45890: 6600 ff70 bnew 45802 <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;
45894: 7010 moveq #16,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
45896: 4e5e unlk %fp <== NOT EXECUTED
45898: 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;
4589a: 7013 moveq #19,%d0 <== NOT EXECUTED
default: baud_index = -1; break;
}
return baud_index;
}
4589c: 4e5e unlk %fp <== NOT EXECUTED
4589e: 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;
458a0: 700f moveq #15,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458a2: 4e5e unlk %fp <== NOT EXECUTED
458a4: 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;
458a6: 7002 moveq #2,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458a8: 4e5e unlk %fp <== NOT EXECUTED
458aa: 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;
458ac: 7012 moveq #18,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458ae: 4e5e unlk %fp <== NOT EXECUTED
458b0: 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;
458b2: 700e moveq #14,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458b4: 4e5e unlk %fp <== NOT EXECUTED
458b6: 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;
458b8: 7006 moveq #6,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458ba: 4e5e unlk %fp <== NOT EXECUTED
458bc: 4e75 rts <== NOT EXECUTED
{
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
458be: 7001 moveq #1,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458c0: 4e5e unlk %fp <== NOT EXECUTED
458c2: 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;
458c4: 700b moveq #11,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458c6: 4e5e unlk %fp <== NOT EXECUTED
458c8: 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;
458ca: 7011 moveq #17,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458cc: 4e5e unlk %fp <== NOT EXECUTED
458ce: 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;
458d0: 7007 moveq #7,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458d2: 4e5e unlk %fp <== NOT EXECUTED
458d4: 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;
458d6: 700c moveq #12,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458d8: 4e5e unlk %fp <== NOT EXECUTED
458da: 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;
458dc: 7009 moveq #9,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458de: 4e5e unlk %fp <== NOT EXECUTED
458e0: 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;
458e2: 7004 moveq #4,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458e4: 4e5e unlk %fp <== NOT EXECUTED
458e6: 4e75 rts <== NOT EXECUTED
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
458e8: 4a80 tstl %d0 <== NOT EXECUTED
458ea: 6600 ff16 bnew 45802 <rtems_termios_baud_to_index+0x3e><== NOT EXECUTED
case B0: baud_index = 0; break;
458ee: 4280 clrl %d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
458f0: 4e5e unlk %fp <== NOT EXECUTED
00043c60 <rtems_termios_baud_to_number>:
extern rtems_assoc_t termios_assoc_table[];
int32_t rtems_termios_baud_to_number(
int termios_baud
)
{
43c60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43c64: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43c66: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int baud;
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
43c6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43c6c: 4879 0005 e420 pea 5e420 <termios_assoc_table> <== NOT EXECUTED
43c72: 4eb9 0004 ad68 jsr 4ad68 <rtems_assoc_local_by_remote> <== NOT EXECUTED
if ( baud == 0 && termios_baud != 0 )
43c78: 508f addql #8,%sp <== NOT EXECUTED
43c7a: 4a80 tstl %d0 <== NOT EXECUTED
43c7c: 6708 beqs 43c86 <rtems_termios_baud_to_number+0x26><== NOT EXECUTED
return -1;
return baud;
}
43c7e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
43c82: 4e5e unlk %fp <== NOT EXECUTED
43c84: 4e75 rts <== NOT EXECUTED
)
{
int baud;
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
if ( baud == 0 && termios_baud != 0 )
43c86: 4a82 tstl %d2 <== NOT EXECUTED
43c88: 56c0 sne %d0 <== NOT EXECUTED
return -1;
return baud;
}
43c8a: 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 )
43c8e: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
return baud;
}
43c90: 4e5e unlk %fp <== NOT EXECUTED
00044330 <rtems_termios_bufsize>:
{
rtems_termios_cbufsize = cbufsize;
rtems_termios_raw_input_size = raw_input;
rtems_termios_raw_output_size = raw_output;
return RTEMS_SUCCESSFUL;
}
44330: 4280 clrl %d0 <== NOT EXECUTED
rtems_status_code rtems_termios_bufsize (
int cbufsize,
int raw_input,
int raw_output
)
{
44332: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_termios_cbufsize = cbufsize;
44336: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED
4433a: 23d0 0005 e520 movel %a0@,5e520 <rtems_termios_cbufsize> <== NOT EXECUTED
rtems_termios_raw_input_size = raw_input;
44340: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED
44344: 23d0 0005 e524 movel %a0@,5e524 <rtems_termios_raw_input_size><== NOT EXECUTED
rtems_termios_raw_output_size = raw_output;
4434a: 41ee 0010 lea %fp@(16),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4434e: 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;
44350: 23d0 0005 e528 movel %a0@,5e528 <rtems_termios_raw_output_size><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
00044186 <rtems_termios_close>:
}
}
rtems_status_code
rtems_termios_close (void *arg)
{
44186: 4e56 fff4 linkw %fp,#-12
4418a: 48d7 1c00 moveml %a2-%a4,%sp@
4418e: 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(
44192: 49f9 0004 6458 lea 46458 <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;
44198: 2053 moveal %a3@,%a0
4419a: 2468 0034 moveal %a0@(52),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain(
4419e: 42a7 clrl %sp@-
441a0: 42a7 clrl %sp@-
441a2: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@-
441a8: 4e94 jsr %a4@
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
441aa: 4fef 000c lea %sp@(12),%sp
441ae: 4a80 tstl %d0
441b0: 6600 011c bnew 442ce <rtems_termios_close+0x148>
rtems_fatal_error_occurred (sc);
if (--tty->refcount == 0) {
441b4: 202a 0008 movel %a2@(8),%d0
441b8: 5380 subql #1,%d0
441ba: 2540 0008 movel %d0,%a2@(8)
441be: 6600 00a4 bnew 44264 <rtems_termios_close+0xde>
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
441c2: 202a 00cc movel %a2@(204),%d0
441c6: eb88 lsll #5,%d0
441c8: 0680 0005 f330 addil #389936,%d0
441ce: 2240 moveal %d0,%a1
441d0: 2051 moveal %a1@,%a0
441d2: 4a88 tstl %a0
441d4: 6700 0128 beqw 442fe <rtems_termios_close+0x178>
/*
* call discipline-specific close
*/
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
441d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
441da: 4e90 jsr %a0@ <== NOT EXECUTED
441dc: 588f addql #4,%sp <== NOT EXECUTED
}
drainOutput (tty);
rtems_semaphore_release (tty->osem);
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
441de: 7002 moveq #2,%d0 <== NOT EXECUTED
441e0: b0aa 00b4 cmpl %a2@(180),%d0 <== NOT EXECUTED
441e4: 6700 00c0 beqw 442a6 <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)
441e8: 206a 009c moveal %a2@(156),%a0
441ec: 4a88 tstl %a0
441ee: 6710 beqs 44200 <rtems_termios_close+0x7a> <== NEVER TAKEN
(*tty->device.lastClose)(tty->major, tty->minor, arg);
441f0: 2f0b movel %a3,%sp@-
441f2: 2f2a 0010 movel %a2@(16),%sp@-
441f6: 2f2a 000c movel %a2@(12),%sp@-
441fa: 4e90 jsr %a0@
441fc: 4fef 000c lea %sp@(12),%sp
if (tty->forw == NULL) {
44200: 2052 moveal %a2@,%a0
44202: 4a88 tstl %a0
44204: 6700 00e2 beqw 442e8 <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;
44208: 216a 0004 0004 movel %a2@(4),%a0@(4) <== NOT EXECUTED
4420e: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
}
if (tty->back == NULL) {
44212: 4a89 tstl %a1 <== NOT EXECUTED
44214: 6700 00c0 beqw 442d6 <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;
44218: 2288 movel %a0,%a1@ <== NOT EXECUTED
}
rtems_semaphore_delete (tty->isem);
4421a: 2f2a 0014 movel %a2@(20),%sp@-
4421e: 47f9 0004 6380 lea 46380 <rtems_semaphore_delete>,%a3
44224: 4e93 jsr %a3@
rtems_semaphore_delete (tty->osem);
44226: 2f2a 0018 movel %a2@(24),%sp@-
4422a: 4e93 jsr %a3@
rtems_semaphore_delete (tty->rawOutBuf.Semaphore);
4422c: 2f2a 008c movel %a2@(140),%sp@-
44230: 4e93 jsr %a3@
if ((tty->device.pollRead == NULL) ||
44232: 4fef 000c lea %sp@(12),%sp
44236: 4aaa 00a0 tstl %a2@(160)
4423a: 6740 beqs 4427c <rtems_termios_close+0xf6> <== ALWAYS TAKEN
4423c: 7002 moveq #2,%d0 <== NOT EXECUTED
4423e: b0aa 00b4 cmpl %a2@(180),%d0 <== NOT EXECUTED
44242: 6738 beqs 4427c <rtems_termios_close+0xf6> <== NOT EXECUTED
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))
rtems_semaphore_delete (tty->rawInBuf.Semaphore);
free (tty->rawInBuf.theBuf);
44244: 2f2a 0058 movel %a2@(88),%sp@- <== NOT EXECUTED
44248: 47f9 0004 2cfc lea 42cfc <free>,%a3 <== NOT EXECUTED
4424e: 4e93 jsr %a3@ <== NOT EXECUTED
free (tty->rawOutBuf.theBuf);
44250: 2f2a 007c movel %a2@(124),%sp@- <== NOT EXECUTED
44254: 4e93 jsr %a3@ <== NOT EXECUTED
free (tty->cbuf);
44256: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED
4425a: 4e93 jsr %a3@ <== NOT EXECUTED
free (tty);
4425c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4425e: 4e93 jsr %a3@ <== NOT EXECUTED
44260: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
rtems_semaphore_release (rtems_termios_ttyMutex);
44264: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@-
4426a: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
}
44270: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4
44276: 4280 clrl %d0
44278: 4e5e unlk %fp
4427a: 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);
4427c: 2f2a 0068 movel %a2@(104),%sp@-
44280: 4e93 jsr %a3@
44282: 588f addql #4,%sp
free (tty->rawInBuf.theBuf);
44284: 47f9 0004 2cfc lea 42cfc <free>,%a3
4428a: 2f2a 0058 movel %a2@(88),%sp@-
4428e: 4e93 jsr %a3@
free (tty->rawOutBuf.theBuf);
44290: 2f2a 007c movel %a2@(124),%sp@-
44294: 4e93 jsr %a3@
free (tty->cbuf);
44296: 2f2a 001c movel %a2@(28),%sp@-
4429a: 4e93 jsr %a3@
free (tty);
4429c: 2f0a movel %a2,%sp@-
4429e: 4e93 jsr %a3@
442a0: 4fef 0010 lea %sp@(16),%sp
442a4: 60be bras 44264 <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 );
442a6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
442aa: 49f9 0004 5f48 lea 45f48 <rtems_event_send>,%a4 <== NOT EXECUTED
442b0: 2f2a 00c4 movel %a2@(196),%sp@- <== NOT EXECUTED
442b4: 4e94 jsr %a4@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
442b6: 508f addql #8,%sp <== NOT EXECUTED
442b8: 4a80 tstl %d0 <== NOT EXECUTED
442ba: 6612 bnes 442ce <rtems_termios_close+0x148> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
442bc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
442c0: 2f2a 00c8 movel %a2@(200),%sp@- <== NOT EXECUTED
442c4: 4e94 jsr %a4@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
442c6: 508f addql #8,%sp <== NOT EXECUTED
442c8: 4a80 tstl %d0 <== NOT EXECUTED
442ca: 6700 ff1c beqw 441e8 <rtems_termios_close+0x62> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
442ce: 2f00 movel %d0,%sp@- <== NOT EXECUTED
442d0: 4eb9 0004 6bac jsr 46bac <rtems_fatal_error_occurred> <== NOT EXECUTED
} else {
tty->forw->back = tty->back;
}
if (tty->back == NULL) {
rtems_termios_ttyHead = tty->forw;
442d6: 23c8 0005 fb70 movel %a0,5fb70 <rtems_termios_ttyHead>
if ( rtems_termios_ttyHead != NULL ) {
442dc: 6700 ff3c beqw 4421a <rtems_termios_close+0x94>
rtems_termios_ttyHead->back = NULL;
442e0: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
442e4: 6000 ff34 braw 4421a <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;
442e8: 226a 0004 moveal %a2@(4),%a1
442ec: 23c9 0005 fb6c movel %a1,5fb6c <rtems_termios_ttyTail>
if ( rtems_termios_ttyTail != NULL ) {
442f2: 67e2 beqs 442d6 <rtems_termios_close+0x150> <== ALWAYS TAKEN
rtems_termios_ttyTail->forw = NULL;
442f4: 4291 clrl %a1@ <== NOT EXECUTED
442f6: 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;
442f8: 2288 movel %a0,%a1@ <== NOT EXECUTED
442fa: 6000 ff1e braw 4421a <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);
442fe: 42a7 clrl %sp@-
44300: 42a7 clrl %sp@-
44302: 2f2a 0018 movel %a2@(24),%sp@-
44306: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
44308: 4fef 000c lea %sp@(12),%sp
4430c: 4a80 tstl %d0
4430e: 66be bnes 442ce <rtems_termios_close+0x148> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
}
drainOutput (tty);
44310: 2f0a movel %a2,%sp@-
44312: 4eba f9bc jsr %pc@(43cd0 <drainOutput>)
rtems_semaphore_release (tty->osem);
44316: 2f2a 0018 movel %a2@(24),%sp@-
4431a: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
44320: 508f addql #8,%sp
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
44322: 7002 moveq #2,%d0
44324: b0aa 00b4 cmpl %a2@(180),%d0
44328: 6600 febe bnew 441e8 <rtems_termios_close+0x62>
4432c: 6000 ff78 braw 442a6 <rtems_termios_close+0x120> <== NOT EXECUTED
0004595e <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)
{
4595e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
45962: 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)
{
45966: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
4596a: d1a8 0090 addl %d0,%a0@(144) <== NOT EXECUTED
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
4596e: 7002 moveq #2,%d0 <== NOT EXECUTED
45970: b0a8 00b4 cmpl %a0@(180),%d0 <== NOT EXECUTED
45974: 672a beqs 459a0 <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 ) {
45976: 7005 moveq #5,%d0 <== NOT EXECUTED
45978: b0a8 00cc cmpl %a0@(204),%d0 <== NOT EXECUTED
4597c: 670c beqs 4598a <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);
4597e: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
45982: 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);
45984: 4ef9 0004 56aa jmp 456aa <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) {
4598a: 2279 0005 f3e0 moveal 5f3e0 <rtems_termios_linesw+0xb4>,%a1<== NOT EXECUTED
45990: 4a89 tstl %a1 <== NOT EXECUTED
45992: 6706 beqs 4599a <rtems_termios_dequeue_characters+0x3c><== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
45994: 2f08 movel %a0,%sp@- <== NOT EXECUTED
45996: 4e91 jsr %a1@ <== NOT EXECUTED
45998: 588f addql #4,%sp <== NOT EXECUTED
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
}
4599a: 4280 clrl %d0 <== NOT EXECUTED
4599c: 4e5e unlk %fp <== NOT EXECUTED
4599e: 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);
459a0: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
459a4: 2f28 00c8 movel %a0@(200),%sp@- <== NOT EXECUTED
459a8: 4eb9 0004 5f48 jsr 45f48 <rtems_event_send> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
459ae: 508f addql #8,%sp <== NOT EXECUTED
459b0: 4a80 tstl %d0 <== NOT EXECUTED
459b2: 67e6 beqs 4599a <rtems_termios_dequeue_characters+0x3c><== NOT EXECUTED
rtems_fatal_error_occurred (sc);
459b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
459b6: 4eb9 0004 6bac jsr 46bac <rtems_fatal_error_occurred> <== NOT EXECUTED
0004535c <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)
{
4535c: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
45360: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
45364: 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) {
45368: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
4536c: 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)
{
4536e: 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) {
45372: 0680 0005 f33c addil #389948,%d0 <== NOT EXECUTED
45378: 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)
{
4537a: 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) {
4537e: 2051 moveal %a1@,%a0 <== NOT EXECUTED
45380: 4a88 tstl %a0 <== NOT EXECUTED
45382: 6774 beqs 453f8 <rtems_termios_enqueue_raw_characters+0x9c><== NOT EXECUTED
while (len--) {
45384: 4a82 tstl %d2 <== NOT EXECUTED
45386: 6734 beqs 453bc <rtems_termios_enqueue_raw_characters+0x60><== NOT EXECUTED
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
45388: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4538a: 5382 subql #1,%d2 <== NOT EXECUTED
4538c: 121b moveb %a3@+,%d1 <== NOT EXECUTED
4538e: 49c1 extbl %d1 <== NOT EXECUTED
45390: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45392: 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--) {
45394: 508f addql #8,%sp <== NOT EXECUTED
45396: 4a82 tstl %d2 <== NOT EXECUTED
45398: 6722 beqs 453bc <rtems_termios_enqueue_raw_characters+0x60><== NOT EXECUTED
4539a: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
4539e: 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--) {
453a0: eb88 lsll #5,%d0 <== NOT EXECUTED
453a2: 0680 0005 f33c addil #389948,%d0 <== NOT EXECUTED
453a8: 2240 moveal %d0,%a1 <== NOT EXECUTED
453aa: 2051 moveal %a1@,%a0 <== NOT EXECUTED
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
453ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
453ae: 121b moveb %a3@+,%d1 <== NOT EXECUTED
453b0: 49c1 extbl %d1 <== NOT EXECUTED
453b2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
453b4: 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--) {
453b6: 508f addql #8,%sp <== NOT EXECUTED
453b8: 4a82 tstl %d2 <== NOT EXECUTED
453ba: 66de bnes 4539a <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 )) {
453bc: 4aaa 00e4 tstl %a2@(228) <== NOT EXECUTED
453c0: 6628 bnes 453ea <rtems_termios_enqueue_raw_characters+0x8e><== NOT EXECUTED
453c2: 206a 00dc moveal %a2@(220),%a0 <== NOT EXECUTED
453c6: 4a88 tstl %a0 <== NOT EXECUTED
453c8: 6720 beqs 453ea <rtems_termios_enqueue_raw_characters+0x8e><== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
453ca: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
453ce: 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);
453d0: 486a 0030 pea %a2@(48) <== NOT EXECUTED
453d4: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
453d6: 508f addql #8,%sp <== NOT EXECUTED
453d8: 7001 moveq #1,%d0 <== NOT EXECUTED
453da: 2540 00e4 movel %d0,%a2@(228) <== NOT EXECUTED
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
453de: 2005 movel %d5,%d0 <== NOT EXECUTED
453e0: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
453e6: 4e5e unlk %fp <== NOT EXECUTED
453e8: 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;
453ea: 4285 clrl %d5 <== NOT EXECUTED
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
453ec: 2005 movel %d5,%d0 <== NOT EXECUTED
453ee: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
453f4: 4e5e unlk %fp <== NOT EXECUTED
453f6: 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,
453f8: 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) {
453fc: 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);
453fe: 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);
45402: 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) {
45406: 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,
45408: 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) {
4540c: 1d40 fff7 moveb %d0,%fp@(-9) <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
45410: 4a82 tstl %d2 <== NOT EXECUTED
45412: 6700 00e6 beqw 454fa <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) {
45416: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
}
return 0;
}
while (len--) {
c = *buf++;
4541a: 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) {
4541c: 0800 0009 btst #9,%d0 <== NOT EXECUTED
45420: 671c beqs 4543e <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]) {
45422: 4281 clrl %d1 <== NOT EXECUTED
45424: 122a 004a moveb %a2@(74),%d1 <== NOT EXECUTED
45428: 1004 moveb %d4,%d0 <== NOT EXECUTED
4542a: 49c0 extbl %d0 <== NOT EXECUTED
4542c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4542e: 6700 0146 beqw 45576 <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]) {
45432: 4281 clrl %d1 <== NOT EXECUTED
45434: 122a 0049 moveb %a2@(73),%d1 <== NOT EXECUTED
45438: b280 cmpl %d0,%d1 <== NOT EXECUTED
4543a: 6700 00da beqw 45516 <rtems_termios_enqueue_raw_characters+0x1ba><== NOT EXECUTED
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
flow_rcv = true;
}
}
if (flow_rcv) {
4543e: 4a2e fff7 tstb %fp@(-9) <== NOT EXECUTED
45442: 6600 00e4 bnew 45528 <rtems_termios_enqueue_raw_characters+0x1cc><== NOT EXECUTED
}
/* reenable interrupts */
rtems_interrupt_enable(level);
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
45446: 2e2a 0060 movel %a2@(96),%d7 <== NOT EXECUTED
4544a: 5287 addql #1,%d7 <== NOT EXECUTED
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
4544c: 200c movel %a4,%d0 <== NOT EXECUTED
}
/* reenable interrupts */
rtems_interrupt_enable(level);
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
4544e: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED
45452: 4c41 7003 remul %d1,%d3,%d7 <== NOT EXECUTED
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
45456: 40c7 movew %sr,%d7 <== NOT EXECUTED
45458: 8087 orl %d7,%d0 <== NOT EXECUTED
4545a: 46c0 movew %d0,%sr <== NOT EXECUTED
if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)
4545c: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
45460: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
45464: 9081 subl %d1,%d0 <== NOT EXECUTED
45466: 2240 moveal %d0,%a1 <== NOT EXECUTED
45468: d3c3 addal %d3,%a1 <== NOT EXECUTED
% tty->rawInBuf.Size) > tty->highwater) &&
4546a: 2209 movel %a1,%d1 <== NOT EXECUTED
4546c: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
45470: 4c40 1006 remul %d0,%d6,%d1 <== NOT EXECUTED
45474: 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)
45478: bcaa 00c0 cmpl %a2@(192),%d6 <== NOT EXECUTED
4547c: 633e blss 454bc <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
% tty->rawInBuf.Size) > tty->highwater) &&
!(tty->flow_ctrl & FL_IREQXOF)) {
4547e: 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) &&
45482: 0800 0000 btst #0,%d0 <== NOT EXECUTED
45486: 6634 bnes 454bc <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
!(tty->flow_ctrl & FL_IREQXOF)) {
/* incoming data stream should be stopped */
tty->flow_ctrl |= FL_IREQXOF;
45488: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4548c: 7201 moveq #1,%d1 <== NOT EXECUTED
4548e: 8081 orl %d1,%d0 <== NOT EXECUTED
45490: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
45494: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45498: 0280 0000 0402 andil #1026,%d0 <== NOT EXECUTED
4549e: 0c80 0000 0400 cmpil #1024,%d0 <== NOT EXECUTED
454a4: 6700 010c beqw 455b2 <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) ) {
454a8: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
454ac: 0280 0000 0104 andil #260,%d0 <== NOT EXECUTED
454b2: 0c80 0000 0100 cmpil #256,%d0 <== NOT EXECUTED
454b8: 6700 0130 beqw 455ea <rtems_termios_enqueue_raw_characters+0x28e><== NOT EXECUTED
}
}
}
/* reenable interrupts */
rtems_interrupt_enable(level);
454bc: 46c7 movew %d7,%sr <== NOT EXECUTED
if (newTail == tty->rawInBuf.Head) {
454be: 202a 005c movel %a2@(92),%d0 <== NOT EXECUTED
454c2: b680 cmpl %d0,%d3 <== NOT EXECUTED
454c4: 6700 00ce beqw 45594 <rtems_termios_enqueue_raw_characters+0x238><== NOT EXECUTED
dropped++;
} else {
tty->rawInBuf.theBuf[newTail] = c;
454c8: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED
454cc: 1184 3800 moveb %d4,%a0@(00000000,%d3:l) <== NOT EXECUTED
tty->rawInBuf.Tail = newTail;
454d0: 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 )) {
454d4: 4aaa 00e4 tstl %a2@(228) <== NOT EXECUTED
454d8: 6618 bnes 454f2 <rtems_termios_enqueue_raw_characters+0x196><== NOT EXECUTED
454da: 206a 00dc moveal %a2@(220),%a0 <== NOT EXECUTED
454de: 4a88 tstl %a0 <== NOT EXECUTED
454e0: 6710 beqs 454f2 <rtems_termios_enqueue_raw_characters+0x196><== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
454e2: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED
454e6: 2f0d movel %a5,%sp@- <== NOT EXECUTED
454e8: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
454ea: 508f addql #8,%sp <== NOT EXECUTED
454ec: 7201 moveq #1,%d1 <== NOT EXECUTED
454ee: 2541 00e4 movel %d1,%a2@(228) <== NOT EXECUTED
454f2: 5382 subql #1,%d2 <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
454f4: 4a82 tstl %d2 <== NOT EXECUTED
454f6: 6600 ff1e bnew 45416 <rtems_termios_enqueue_raw_characters+0xba><== NOT EXECUTED
}
}
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
454fa: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
}
}
}
}
tty->rawInBufDropped += dropped;
454fe: dbaa 0078 addl %d5,%a2@(120) <== NOT EXECUTED
rtems_semaphore_release (tty->rawInBuf.Semaphore);
45502: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return dropped;
45508: 588f addql #4,%sp <== NOT EXECUTED
}
4550a: 2005 movel %d5,%d0 <== NOT EXECUTED
4550c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
45512: 4e5e unlk %fp <== NOT EXECUTED
45514: 4e75 rts <== NOT EXECUTED
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
/* VSTART received */
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
45516: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4551a: 72ef moveq #-17,%d1 <== NOT EXECUTED
4551c: 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)
{
4551e: 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;
45520: 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)
{
45524: 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) {
45528: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4552c: 7c30 moveq #48,%d6 <== NOT EXECUTED
4552e: 7220 moveq #32,%d1 <== NOT EXECUTED
45530: c086 andl %d6,%d0 <== NOT EXECUTED
45532: b280 cmpl %d0,%d1 <== NOT EXECUTED
45534: 66bc bnes 454f2 <rtems_termios_enqueue_raw_characters+0x196><== NOT EXECUTED
/* disable interrupts */
rtems_interrupt_disable(level);
45536: 200c movel %a4,%d0 <== NOT EXECUTED
45538: 40c3 movew %sr,%d3 <== NOT EXECUTED
4553a: 8083 orl %d3,%d0 <== NOT EXECUTED
4553c: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
4553e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45542: 7cdf moveq #-33,%d6 <== NOT EXECUTED
45544: c086 andl %d6,%d0 <== NOT EXECUTED
45546: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
4554a: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
4554e: 6606 bnes 45556 <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);
45550: 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;
45552: 5382 subql #1,%d2 <== NOT EXECUTED
45554: 609e bras 454f4 <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)(
45556: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
4555a: 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)(
4555e: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED
45562: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45564: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45568: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4556c: 4e90 jsr %a0@ <== NOT EXECUTED
4556e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
45572: 46c3 movew %d3,%sr <== NOT EXECUTED
45574: 60dc bras 45552 <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]) {
45576: 4281 clrl %d1 <== NOT EXECUTED
45578: 122a 0049 moveb %a2@(73),%d1 <== NOT EXECUTED
4557c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4557e: 671c beqs 4559c <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;
45580: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45584: 7c10 moveq #16,%d6 <== NOT EXECUTED
45586: 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)
{
45588: 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;
4558a: 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)
{
4558e: 1d46 fff7 moveb %d6,%fp@(-9) <== NOT EXECUTED
45592: 6094 bras 45528 <rtems_termios_enqueue_raw_characters+0x1cc><== NOT EXECUTED
/* reenable interrupts */
rtems_interrupt_enable(level);
if (newTail == tty->rawInBuf.Head) {
dropped++;
45594: 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;
45596: 5382 subql #1,%d2 <== NOT EXECUTED
45598: 6000 ff5a braw 454f4 <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;
4559c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
455a0: 7210 moveq #16,%d1 <== NOT EXECUTED
455a2: 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)
{
455a4: 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;
455a6: 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)
{
455aa: 1d46 fff7 moveb %d6,%fp@(-9) <== NOT EXECUTED
455ae: 6000 ff78 braw 45528 <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) ||
455b2: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
455b6: 0800 0005 btst #5,%d0 <== NOT EXECUTED
455ba: 6608 bnes 455c4 <rtems_termios_enqueue_raw_characters+0x268><== NOT EXECUTED
455bc: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
455c0: 6600 fefa bnew 454bc <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,
455c4: 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;
455c8: 7c02 moveq #2,%d6 <== NOT EXECUTED
455ca: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED
(*tty->device.write)(tty->minor,
455ce: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
455d2: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
455d6: 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;
455da: 8286 orl %d6,%d1 <== NOT EXECUTED
455dc: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
(*tty->device.write)(tty->minor,
455e0: 4e90 jsr %a0@ <== NOT EXECUTED
455e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
455e6: 6000 fed4 braw 454bc <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;
455ea: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED
455ee: 303c 0004 movew #4,%d0 <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
455f2: 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;
455f6: 8280 orl %d0,%d1 <== NOT EXECUTED
455f8: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
455fc: 4a88 tstl %a0 <== NOT EXECUTED
455fe: 6700 febc beqw 454bc <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
tty->device.stopRemoteTx(tty->minor);
45602: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45606: 4e90 jsr %a0@ <== NOT EXECUTED
45608: 588f addql #4,%sp <== NOT EXECUTED
4560a: 6000 feb0 braw 454bc <rtems_termios_enqueue_raw_characters+0x160><== NOT EXECUTED
00044358 <rtems_termios_ioctl>:
}
}
rtems_status_code
rtems_termios_ioctl (void *arg)
{
44358: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4435c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
44360: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_libio_ioctl_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
44364: 2053 moveal %a3@,%a0 <== NOT EXECUTED
44366: 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);
4436a: 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;
4436c: 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);
44370: 42a7 clrl %sp@- <== NOT EXECUTED
44372: 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;
44376: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4437a: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
44380: 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);
44384: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
44386: 662c bnes 443b4 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
}
switch (args->command) {
44388: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
4438c: 7204 moveq #4,%d1 <== NOT EXECUTED
4438e: b280 cmpl %d0,%d1 <== NOT EXECUTED
44390: 6774 beqs 44406 <rtems_termios_ioctl+0xae> <== NOT EXECUTED
44392: 6530 bcss 443c4 <rtems_termios_ioctl+0x6c> <== NOT EXECUTED
44394: 7602 moveq #2,%d3 <== NOT EXECUTED
44396: b680 cmpl %d0,%d3 <== NOT EXECUTED
44398: 6700 00b6 beqw 44450 <rtems_termios_ioctl+0xf8> <== NOT EXECUTED
4439c: 6400 0228 bccw 445c6 <rtems_termios_ioctl+0x26e> <== NOT EXECUTED
if (tty->device.setAttributes)
(*tty->device.setAttributes)(tty->minor, &tty->termios);
break;
case RTEMS_IO_TCDRAIN:
drainOutput (tty);
443a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
443a2: 4eba f92c jsr %pc@(43cd0 <drainOutput>) <== NOT EXECUTED
break;
443a6: 588f addql #4,%sp <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
443a8: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
443ac: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
443b2: 588f addql #4,%sp <== NOT EXECUTED
}
443b4: 2002 movel %d2,%d0 <== NOT EXECUTED
}
break;
}
rtems_semaphore_release (tty->osem);
args->ioctl_return = sc;
443b6: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
return sc;
}
443ba: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
443c0: 4e5e unlk %fp <== NOT EXECUTED
443c2: 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) {
443c4: 0c80 4004 667f cmpil #1074030207,%d0 <== NOT EXECUTED
443ca: 6756 beqs 44422 <rtems_termios_ioctl+0xca> <== NOT EXECUTED
443cc: 6200 023a bhiw 44608 <rtems_termios_ioctl+0x2b0> <== NOT EXECUTED
443d0: 7605 moveq #5,%d3 <== NOT EXECUTED
443d2: b680 cmpl %d0,%d3 <== NOT EXECUTED
443d4: 6700 01d2 beqw 445a8 <rtems_termios_ioctl+0x250> <== NOT EXECUTED
default:
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
443d8: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
443dc: eb88 lsll #5,%d0 <== NOT EXECUTED
443de: 0680 0005 f344 addil #389956,%d0 <== NOT EXECUTED
443e4: 2240 moveal %d0,%a1 <== NOT EXECUTED
443e6: 2051 moveal %a1@,%a0 <== NOT EXECUTED
443e8: 4a88 tstl %a0 <== NOT EXECUTED
443ea: 6700 02a6 beqw 44692 <rtems_termios_ioctl+0x33a> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
443ee: 2f0b movel %a3,%sp@- <== NOT EXECUTED
443f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
443f2: 4e90 jsr %a0@ <== NOT EXECUTED
443f4: 508f addql #8,%sp <== NOT EXECUTED
443f6: 2400 movel %d0,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
443f8: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
443fc: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
44402: 588f addql #4,%sp <== NOT EXECUTED
44404: 60ae bras 443b4 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
break;
case RTEMS_IO_RCVWAKEUP:
tty->tty_rcv = *wakeup;
44406: 2014 movel %a4@,%d0 <== NOT EXECUTED
44408: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
4440c: 2540 00dc movel %d0,%a2@(220) <== NOT EXECUTED
44410: 2541 00e0 movel %d1,%a2@(224) <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44414: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
44418: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
4441e: 588f addql #4,%sp <== NOT EXECUTED
44420: 6092 bras 443b4 <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;
44422: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
44426: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
4442a: 9081 subl %d1,%d0 <== NOT EXECUTED
if ( rawnc < 0 )
4442c: 6b00 02ae bmiw 446dc <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;
44430: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
44434: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED
44438: d280 addl %d0,%d1 <== NOT EXECUTED
4443a: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
4443e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
break;
}
rtems_semaphore_release (tty->osem);
44440: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
44444: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
4444a: 588f addql #4,%sp <== NOT EXECUTED
4444c: 6000 ff66 braw 443b4 <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;
44450: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
44454: 49ea 0030 lea %a2@(48),%a4 <== NOT EXECUTED
44458: 2898 movel %a0@+,%a4@ <== NOT EXECUTED
4445a: 2558 0034 movel %a0@+,%a2@(52) <== NOT EXECUTED
4445e: 2558 0038 movel %a0@+,%a2@(56) <== NOT EXECUTED
44462: 2558 003c movel %a0@+,%a2@(60) <== NOT EXECUTED
44466: 2558 0040 movel %a0@+,%a2@(64) <== NOT EXECUTED
4446a: 2558 0044 movel %a0@+,%a2@(68) <== NOT EXECUTED
4446e: 2558 0048 movel %a0@+,%a2@(72) <== NOT EXECUTED
44472: 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) &&
44476: 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;
4447a: 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) &&
4447e: 0800 0009 btst #9,%d0 <== NOT EXECUTED
44482: 6746 beqs 444ca <rtems_termios_ioctl+0x172> <== NOT EXECUTED
!(tty->termios.c_iflag & IXON)) {
44484: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
44488: 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) &&
4448e: 663a bnes 444ca <rtems_termios_ioctl+0x172> <== NOT EXECUTED
!(tty->termios.c_iflag & IXON)) {
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);
44490: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44494: 0280 ffff fdef andil #-529,%d0 <== NOT EXECUTED
4449a: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* has output been stopped due to received XOFF? */
if (tty->flow_ctrl & FL_OSTOP) {
4449e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
444a2: 0800 0005 btst #5,%d0 <== NOT EXECUTED
444a6: 6722 beqs 444ca <rtems_termios_ioctl+0x172> <== NOT EXECUTED
/* disable interrupts */
rtems_interrupt_disable(level);
444a8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
444ae: 40c3 movew %sr,%d3 <== NOT EXECUTED
444b0: 8083 orl %d3,%d0 <== NOT EXECUTED
444b2: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
444b4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
444b8: 72df moveq #-33,%d1 <== NOT EXECUTED
444ba: c081 andl %d1,%d0 <== NOT EXECUTED
444bc: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
444c0: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
444c4: 6600 0240 bnew 44706 <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);
444c8: 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)) {
444ca: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
444ce: 0800 000a btst #10,%d0 <== NOT EXECUTED
444d2: 6724 beqs 444f8 <rtems_termios_ioctl+0x1a0> <== NOT EXECUTED
444d4: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
444d8: 0280 0000 1000 andil #4096,%d0 <== NOT EXECUTED
444de: 6618 bnes 444f8 <rtems_termios_ioctl+0x1a0> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXOF);
444e0: 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);
444e4: 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);
444e6: 0880 000a bclr #10,%d0 <== NOT EXECUTED
444ea: 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);
444ee: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
444f2: c083 andl %d3,%d0 <== NOT EXECUTED
444f4: 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)) {
444f8: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
444fc: 0800 0008 btst #8,%d0 <== NOT EXECUTED
44500: 6700 0186 beqw 44688 <rtems_termios_ioctl+0x330> <== NOT EXECUTED
44504: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED
44508: 6d00 01ec bltw 446f6 <rtems_termios_ioctl+0x39e> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDRTS);
4450c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44510: 0880 0008 bclr #8,%d0 <== NOT EXECUTED
44514: 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)) {
44518: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4451c: 44c0 movew %d0,%ccr <== NOT EXECUTED
4451e: 6614 bnes 44534 <rtems_termios_ioctl+0x1dc> <== NOT EXECUTED
44520: 206a 00b0 moveal %a2@(176),%a0 <== NOT EXECUTED
44524: 4a88 tstl %a0 <== NOT EXECUTED
44526: 670c beqs 44534 <rtems_termios_ioctl+0x1dc> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
44528: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4452c: 4e90 jsr %a0@ <== NOT EXECUTED
4452e: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED
44532: 588f addql #4,%sp <== NOT EXECUTED
}
tty->flow_ctrl &= ~(FL_IRTSOFF);
44534: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44538: 76fb moveq #-5,%d3 <== NOT EXECUTED
4453a: c083 andl %d3,%d0 <== NOT EXECUTED
4453c: 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) {
44540: 4a81 tstl %d1 <== NOT EXECUTED
44542: 6d00 01b2 bltw 446f6 <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) {
44546: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
4454a: 0800 000c btst #12,%d0 <== NOT EXECUTED
4454e: 670c beqs 4455c <rtems_termios_ioctl+0x204> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDXOF;
44550: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED
44554: 08c1 000a bset #10,%d1 <== NOT EXECUTED
44558: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
}
/* check for outgoing XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXON) {
4455c: 0800 000a btst #10,%d0 <== NOT EXECUTED
44560: 670c beqs 4456e <rtems_termios_ioctl+0x216> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDXON;
44562: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44566: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
4456a: 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) {
4456e: 7002 moveq #2,%d0 <== NOT EXECUTED
44570: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
44574: 6700 012e beqw 446a4 <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;
44578: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
4457c: 42aa 0070 clrl %a2@(112) <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
44580: 42aa 0074 clrl %a2@(116) <== NOT EXECUTED
} else {
tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;
}
}
}
if (tty->device.setAttributes)
44584: 206a 00a8 moveal %a2@(168),%a0 <== NOT EXECUTED
44588: 4a88 tstl %a0 <== NOT EXECUTED
4458a: 6700 fe1c beqw 443a8 <rtems_termios_ioctl+0x50> <== NOT EXECUTED
(*tty->device.setAttributes)(tty->minor, &tty->termios);
4458e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
44590: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44594: 4e90 jsr %a0@ <== NOT EXECUTED
44596: 508f addql #8,%sp <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44598: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
4459c: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
445a2: 588f addql #4,%sp <== NOT EXECUTED
445a4: 6000 fe0e braw 443b4 <rtems_termios_ioctl+0x5c> <== NOT EXECUTED
case RTEMS_IO_TCDRAIN:
drainOutput (tty);
break;
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
445a8: 2014 movel %a4@,%d0 <== NOT EXECUTED
445aa: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
445ae: 2540 00d4 movel %d0,%a2@(212) <== NOT EXECUTED
445b2: 2541 00d8 movel %d1,%a2@(216) <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
445b6: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
445ba: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
445c0: 588f addql #4,%sp <== NOT EXECUTED
445c2: 6000 fdf0 braw 443b4 <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) {
445c6: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
445ca: b280 cmpl %d0,%d1 <== NOT EXECUTED
445cc: 6600 fe0a bnew 443d8 <rtems_termios_ioctl+0x80> <== NOT EXECUTED
sc = RTEMS_INVALID_NUMBER;
}
break;
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
445d0: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
445d4: 20ea 0030 movel %a2@(48),%a0@+ <== NOT EXECUTED
445d8: 20ea 0034 movel %a2@(52),%a0@+ <== NOT EXECUTED
445dc: 20ea 0038 movel %a2@(56),%a0@+ <== NOT EXECUTED
445e0: 20ea 003c movel %a2@(60),%a0@+ <== NOT EXECUTED
445e4: 20ea 0040 movel %a2@(64),%a0@+ <== NOT EXECUTED
445e8: 20ea 0044 movel %a2@(68),%a0@+ <== NOT EXECUTED
445ec: 20ea 0048 movel %a2@(72),%a0@+ <== NOT EXECUTED
445f0: 20ea 004c movel %a2@(76),%a0@+ <== NOT EXECUTED
445f4: 20aa 0050 movel %a2@(80),%a0@ <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
445f8: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
445fc: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
44602: 588f addql #4,%sp <== NOT EXECUTED
44604: 6000 fdae braw 443b4 <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) {
44608: 0c80 4004 741a cmpil #1074033690,%d0 <== NOT EXECUTED
4460e: 6760 beqs 44670 <rtems_termios_ioctl+0x318> <== NOT EXECUTED
44610: 0c80 8004 741b cmpil #-2147191781,%d0 <== NOT EXECUTED
44616: 6600 fdc0 bnew 443d8 <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) {
4461a: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
4461e: eb88 lsll #5,%d0 <== NOT EXECUTED
44620: 0680 0005 f330 addil #389936,%d0 <== NOT EXECUTED
44626: 2240 moveal %d0,%a1 <== NOT EXECUTED
44628: 2051 moveal %a1@,%a0 <== NOT EXECUTED
4462a: 4a88 tstl %a0 <== NOT EXECUTED
4462c: 6708 beqs 44636 <rtems_termios_ioctl+0x2de> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
4462e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44630: 4e90 jsr %a0@ <== NOT EXECUTED
44632: 588f addql #4,%sp <== NOT EXECUTED
44634: 2400 movel %d0,%d2 <== NOT EXECUTED
}
tty->t_line=*(int*)(args->buffer);
44636: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
4463a: 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) {
4463c: 2200 movel %d0,%d1 <== NOT EXECUTED
4463e: 41f9 0005 f32c lea 5f32c <rtems_termios_linesw>,%a0 <== NOT EXECUTED
44644: 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);
44646: 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) {
4464a: 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 */
4464e: 42aa 00d0 clrl %a2@(208) <== NOT EXECUTED
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
44652: 4a88 tstl %a0 <== NOT EXECUTED
44654: 6700 fd52 beqw 443a8 <rtems_termios_ioctl+0x50> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
44658: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4465a: 4e90 jsr %a0@ <== NOT EXECUTED
4465c: 588f addql #4,%sp <== NOT EXECUTED
4465e: 2400 movel %d0,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44660: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
44664: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
4466a: 588f addql #4,%sp <== NOT EXECUTED
4466c: 6000 fd46 braw 443b4 <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;
44670: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
44674: 20aa 00cc movel %a2@(204),%a0@ <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44678: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
4467c: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
44682: 588f addql #4,%sp <== NOT EXECUTED
44684: 6000 fd2e braw 443b4 <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)) {
44688: 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) {
4468c: 6c00 feb8 bgew 44546 <rtems_termios_ioctl+0x1ee> <== NOT EXECUTED
44690: 6064 bras 446f6 <rtems_termios_ioctl+0x39e> <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44692: 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;
44696: 740a moveq #10,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
44698: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
4469e: 588f addql #4,%sp <== NOT EXECUTED
446a0: 6000 fd12 braw 443b4 <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] *
446a4: 4283 clrl %d3 <== NOT EXECUTED
446a6: 162a 0046 moveb %a2@(70),%d3 <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
446aa: 4eb9 0004 5d1c jsr 45d1c <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] *
446b0: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
446b4: 760a moveq #10,%d3 <== NOT EXECUTED
446b6: 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] *
446ba: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
if (tty->termios.c_cc[VTIME]) {
446be: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
446c2: 6764 beqs 44728 <rtems_termios_ioctl+0x3d0> <== NOT EXECUTED
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
446c4: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;
446c8: 2540 0070 movel %d0,%a2@(112) <== NOT EXECUTED
if (tty->termios.c_cc[VMIN])
446cc: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED
446d0: 6600 feae bnew 44580 <rtems_termios_ioctl+0x228> <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
446d4: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
446d8: 6000 feaa braw 44584 <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;
446dc: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED
446e0: d081 addl %d1,%d0 <== NOT EXECUTED
/* Half guess that this is the right operation */
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
446e2: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
446e6: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED
446ea: d280 addl %d0,%d1 <== NOT EXECUTED
446ec: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
446f0: 2081 movel %d1,%a0@ <== NOT EXECUTED
446f2: 6000 fd4c braw 44440 <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;
446f6: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
446fa: 08c0 0008 bset #8,%d0 <== NOT EXECUTED
446fe: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
44702: 6000 fe42 braw 44546 <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);
44706: 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)(
4470a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4470e: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED
44712: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44714: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44718: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4471c: 4e90 jsr %a0@ <== NOT EXECUTED
4471e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
44722: 46c3 movew %d3,%sr <== NOT EXECUTED
44724: 6000 fda4 braw 444ca <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]) {
44728: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED
4472c: 6600 fe4a bnew 44578 <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;
44730: 7001 moveq #1,%d0 <== NOT EXECUTED
44732: 2540 006c movel %d0,%a2@(108) <== NOT EXECUTED
44736: 6000 fe4c braw 44584 <rtems_termios_ioctl+0x22c> <== NOT EXECUTED
00045964 <rtems_termios_number_to_baud>:
extern rtems_assoc_t termios_assoc_table[];
int rtems_termios_number_to_baud(
int32_t baud
)
{
45964: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45968: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4596a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int termios_baud;
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
4596e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45970: 4879 0006 08f0 pea 608f0 <termios_assoc_table> <== NOT EXECUTED
45976: 4eb9 0004 ccc8 jsr 4ccc8 <rtems_assoc_remote_by_local> <== NOT EXECUTED
if ( termios_baud == 0 && baud != 0 )
4597c: 508f addql #8,%sp <== NOT EXECUTED
4597e: 4a80 tstl %d0 <== NOT EXECUTED
45980: 6708 beqs 4598a <rtems_termios_number_to_baud+0x26><== NOT EXECUTED
return -1;
return termios_baud;
}
45982: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
45986: 4e5e unlk %fp <== NOT EXECUTED
45988: 4e75 rts <== NOT EXECUTED
)
{
int termios_baud;
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
if ( termios_baud == 0 && baud != 0 )
4598a: 4a82 tstl %d2 <== NOT EXECUTED
4598c: 67f4 beqs 45982 <rtems_termios_number_to_baud+0x1e><== NOT EXECUTED
return -1;
return termios_baud;
}
4598e: 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;
45992: 70ff moveq #-1,%d0 <== NOT EXECUTED
return termios_baud;
}
45994: 4e5e unlk %fp <== NOT EXECUTED
00043d44 <rtems_termios_open>:
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
43d44: 4e56 ffd8 linkw %fp,#-40
43d48: 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(
43d4c: 42a7 clrl %sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
43d4e: 242e 0008 movel %fp@(8),%d2
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d52: 42a7 clrl %sp@-
43d54: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
43d5a: 262e 000c movel %fp@(12),%d3
43d5e: 266e 0010 moveal %fp@(16),%a3
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d62: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43d68: 4fef 000c lea %sp@(12),%sp
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
43d6c: 2800 movel %d0,%d4
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43d6e: 6600 027e bnew 43fee <rtems_termios_open+0x2aa>
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
43d72: 2879 0005 fb70 moveal 5fb70 <rtems_termios_ttyHead>,%a4
43d78: 4a8c tstl %a4
43d7a: 6710 beqs 43d8c <rtems_termios_open+0x48>
43d7c: 244c moveal %a4,%a2
if ((tty->major == major) && (tty->minor == minor))
43d7e: b4aa 000c cmpl %a2@(12),%d2
43d82: 6700 0276 beqw 43ffa <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) {
43d86: 2452 moveal %a2@,%a2 <== NOT EXECUTED
43d88: 4a8a tstl %a2 <== NOT EXECUTED
43d8a: 66f2 bnes 43d7e <rtems_termios_open+0x3a> <== NOT EXECUTED
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
43d8c: 4878 00e8 pea e8 <DBL_MANT_DIG+0xb3>
43d90: 4878 0001 pea 1 <ADD>
43d94: 4eb9 0004 28f0 jsr 428f0 <calloc>
if (tty == NULL) {
43d9a: 508f addql #8,%sp
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
43d9c: 2a40 moveal %d0,%a5
43d9e: 2440 moveal %d0,%a2
if (tty == NULL) {
43da0: 4a80 tstl %d0
43da2: 6700 0346 beqw 440ea <rtems_termios_open+0x3a6>
return RTEMS_NO_MEMORY;
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
43da6: 41f9 0005 e524 lea 5e524 <rtems_termios_raw_input_size>,%a0
43dac: 2b50 0064 movel %a0@,%a5@(100)
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
43db0: 2e3c 0004 302c movel #274476,%d7
43db6: 2047 moveal %d7,%a0
43db8: 202d 0064 movel %a5@(100),%d0
43dbc: 2f00 movel %d0,%sp@-
43dbe: 4e90 jsr %a0@
if (tty->rawInBuf.theBuf == NULL) {
43dc0: 588f addql #4,%sp
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
43dc2: 2a00 movel %d0,%d5
43dc4: 2b40 0058 movel %d0,%a5@(88)
if (tty->rawInBuf.theBuf == NULL) {
43dc8: 6700 033c beqw 44106 <rtems_termios_open+0x3c2>
return RTEMS_NO_MEMORY;
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
43dcc: 41f9 0005 e528 lea 5e528 <rtems_termios_raw_output_size>,%a0
43dd2: 2b50 0088 movel %a0@,%a5@(136)
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
43dd6: 2047 moveal %d7,%a0
43dd8: 202d 0088 movel %a5@(136),%d0
43ddc: 2f00 movel %d0,%sp@-
43dde: 4e90 jsr %a0@
if (tty->rawOutBuf.theBuf == NULL) {
43de0: 588f addql #4,%sp
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
43de2: 2c00 movel %d0,%d6
43de4: 2b40 007c movel %d0,%a5@(124)
if (tty->rawOutBuf.theBuf == NULL) {
43de8: 6700 0340 beqw 4412a <rtems_termios_open+0x3e6>
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
43dec: 2f39 0005 e520 movel 5e520 <rtems_termios_cbufsize>,%sp@-
43df2: 2047 moveal %d7,%a0
43df4: 4e90 jsr %a0@
if (tty->cbuf == NULL) {
43df6: 588f addql #4,%sp
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
43df8: 2b40 001c movel %d0,%a5@(28)
if (tty->cbuf == NULL) {
43dfc: 6700 0358 beqw 44156 <rtems_termios_open+0x412>
return RTEMS_NO_MEMORY;
}
/*
* Initialize wakeup callbacks
*/
tty->tty_snd.sw_pfn = NULL;
43e00: 42ad 00d4 clrl %a5@(212)
tty->tty_snd.sw_arg = NULL;
43e04: 42ad 00d8 clrl %a5@(216)
tty->tty_rcv.sw_pfn = NULL;
43e08: 42ad 00dc clrl %a5@(220)
tty->tty_rcv.sw_arg = NULL;
43e0c: 42ad 00e0 clrl %a5@(224)
tty->tty_rcvwakeup = 0;
43e10: 42ad 00e4 clrl %a5@(228)
/*
* link tty
*/
tty->forw = rtems_termios_ttyHead;
43e14: 2a8c movel %a4,%a5@
tty->back = NULL;
43e16: 42ad 0004 clrl %a5@(4)
if (rtems_termios_ttyHead != NULL)
43e1a: 4a8c tstl %a4
43e1c: 6704 beqs 43e22 <rtems_termios_open+0xde> <== ALWAYS TAKEN
rtems_termios_ttyHead->back = tty;
43e1e: 294d 0004 movel %a5,%a4@(4) <== NOT EXECUTED
rtems_termios_ttyHead = tty;
43e22: 23cd 0005 fb70 movel %a5,5fb70 <rtems_termios_ttyHead>
if (rtems_termios_ttyTail == NULL)
43e28: 4ab9 0005 fb6c tstl 5fb6c <rtems_termios_ttyTail>
43e2e: 6700 02b0 beqw 440e0 <rtems_termios_open+0x39c>
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e32: 486d 0014 pea %a5@(20)
43e36: 49f9 0004 61bc lea 461bc <rtems_semaphore_create>,%a4
rtems_build_name ('T', 'R', 'i', c),
43e3c: 1039 0005 e52c moveb 5e52c <c.6356>,%d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e42: 42a7 clrl %sp@-
43e44: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'i', c),
43e48: 49c0 extbl %d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e4a: 4878 0001 pea 1 <ADD>
43e4e: 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;
43e54: 2b43 0010 movel %d3,%a5@(16)
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e58: 2f00 movel %d0,%sp@-
rtems_termios_ttyHead = tty;
if (rtems_termios_ttyTail == NULL)
rtems_termios_ttyTail = tty;
tty->minor = minor;
tty->major = major;
43e5a: 2b42 000c movel %d2,%a5@(12)
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43e5e: 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)
43e60: 4fef 0014 lea %sp@(20),%sp
43e64: 4a80 tstl %d0
43e66: 6600 020a bnew 44072 <rtems_termios_open+0x32e>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43e6a: 486d 0018 pea %a5@(24)
rtems_build_name ('T', 'R', 'o', c),
43e6e: 1039 0005 e52c moveb 5e52c <c.6356>,%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 (
43e74: 42a7 clrl %sp@-
43e76: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'o', c),
43e7a: 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 (
43e7c: 4878 0001 pea 1 <ADD>
43e80: 0080 5452 6f00 oril #1414688512,%d0
43e86: 2f00 movel %d0,%sp@-
43e88: 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)
43e8a: 4fef 0014 lea %sp@(20),%sp
43e8e: 4a80 tstl %d0
43e90: 6600 01e0 bnew 44072 <rtems_termios_open+0x32e>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43e94: 486d 008c pea %a5@(140)
rtems_build_name ('T', 'R', 'x', c),
43e98: 1039 0005 e52c moveb 5e52c <c.6356>,%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 (
43e9e: 42a7 clrl %sp@-
43ea0: 4878 0020 pea 20 <OPER2+0xc>
rtems_build_name ('T', 'R', 'x', c),
43ea4: 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 (
43ea6: 0080 5452 7800 oril #1414690816,%d0
43eac: 42a7 clrl %sp@-
43eae: 2f00 movel %d0,%sp@-
43eb0: 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)
43eb2: 4fef 0014 lea %sp@(20),%sp
43eb6: 4a80 tstl %d0
43eb8: 6600 01b8 bnew 44072 <rtems_termios_open+0x32e>
tty->rawOutBufState = rob_idle;
/*
* Set callbacks
*/
tty->device = *callbacks;
43ebc: 226e 0014 moveal %fp@(20),%a1
43ec0: 41ed 0098 lea %a5@(152),%a0
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43ec4: 7002 moveq #2,%d0
tty->rawOutBufState = rob_idle;
/*
* Set callbacks
*/
tty->device = *callbacks;
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: 20d9 movel %a1@+,%a0@+
43ed2: 20d9 movel %a1@+,%a0@+
43ed4: 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;
43ed6: 42ad 0094 clrl %a5@(148)
tty->device = *callbacks;
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43eda: b0ad 00b4 cmpl %a5@(180),%d0
43ede: 6700 019a beqw 4407a <rtems_termios_open+0x336>
&tty->rxTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
43ee2: 4aad 00a0 tstl %a5@(160)
43ee6: 6700 0162 beqw 4404a <rtems_termios_open+0x306>
43eea: 7002 moveq #2,%d0 <== NOT EXECUTED
43eec: b0ad 00b4 cmpl %a5@(180),%d0 <== NOT EXECUTED
43ef0: 6700 0158 beqw 4404a <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;
43ef4: 42ad 00b8 clrl %a5@(184)
/*
* set low/highwater mark for XON/XOFF support
*/
tty->lowwater = tty->rawInBuf.Size * 1/2;
43ef8: 222d 0064 movel %a5@(100),%d1
tty->highwater = tty->rawInBuf.Size * 3/4;
43efc: 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;
43f00: 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';
43f02: 7c03 moveq #3,%d6
tty->lowwater = tty->rawInBuf.Size * 1/2;
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
43f04: 1039 0005 e52c moveb 5e52c <c.6356>,%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;
43f0a: 2b41 00bc movel %d1,%a5@(188)
tty->highwater = tty->rawInBuf.Size * 3/4;
/*
* Bump name characer
*/
if (c++ == 'z')
43f0e: 49c0 extbl %d0
43f10: 2a00 movel %d0,%d5
43f12: 2240 moveal %d0,%a1
43f14: 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';
43f16: 1b46 0041 moveb %d6,%a5@(65)
tty->termios.c_cc[VQUIT] = '\034';
43f1a: 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;
43f1c: 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';
43f20: 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';
43f22: 1b46 0042 moveb %d6,%a5@(66)
tty->termios.c_cc[VERASE] = '\177';
43f26: 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;
43f28: 2008 movel %a0,%d0
43f2a: e488 lsrl #2,%d0
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
43f2c: 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';
43f30: 1b46 0043 moveb %d6,%a5@(67)
tty->termios.c_cc[VKILL] = '\025';
43f34: 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;
43f36: 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';
43f3a: 1b46 0044 moveb %d6,%a5@(68)
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
43f3e: 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';
43f42: 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';
43f44: 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';
43f46: 1b46 0045 moveb %d6,%a5@(69)
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
43f4a: 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';
43f4c: 1b41 004c moveb %d1,%a5@(76)
tty->termios.c_cc[VEOL2] = '\000';
43f50: 1b41 0051 moveb %d1,%a5@(81)
tty->termios.c_cc[VSTART] = '\021';
43f54: 1b46 0049 moveb %d6,%a5@(73)
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
43f58: 721a moveq #26,%d1
tty->termios.c_cc[VREPRINT] = '\022';
43f5a: 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';
43f5c: 1b40 004a moveb %d0,%a5@(74)
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
43f60: 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';
43f62: 1b41 004b moveb %d1,%a5@(75)
tty->termios.c_cc[VREPRINT] = '\022';
43f66: 1b46 004d moveb %d6,%a5@(77)
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
43f6a: 7217 moveq #23,%d1
tty->termios.c_cc[VLNEXT] = '\026';
43f6c: 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';
43f6e: 1b40 004e moveb %d0,%a5@(78)
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
43f72: 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';
43f78: 1b41 004f moveb %d1,%a5@(79)
tty->termios.c_cc[VLNEXT] = '\026';
43f7c: 1b46 0050 moveb %d6,%a5@(80)
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
43f80: 2b40 0034 movel %d0,%a5@(52)
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
43f84: 223c 0000 08bd movel #2237,%d1
43f8a: 2b41 0038 movel %d1,%a5@(56)
tty->termios.c_lflag =
43f8e: 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')
43f94: 303c 007a movew #122,%d0
43f98: 13c5 0005 e52c moveb %d5,5e52c <c.6356>
* 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 =
43f9e: 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')
43fa2: b089 cmpl %a1,%d0
43fa4: 6608 bnes 43fae <rtems_termios_open+0x26a> <== ALWAYS TAKEN
c = 'a';
43fa6: 7261 moveq #97,%d1 <== NOT EXECUTED
43fa8: 13c1 0005 e52c moveb %d1,5e52c <c.6356> <== NOT EXECUTED
}
args->iop->data1 = tty;
if (!tty->refcount++) {
43fae: 202a 0008 movel %a2@(8),%d0
43fb2: 2c00 movel %d0,%d6
43fb4: 5286 addql #1,%d6
*/
if (c++ == 'z')
c = 'a';
}
args->iop->data1 = tty;
43fb6: 2053 moveal %a3@,%a0
43fb8: 214a 0034 movel %a2,%a0@(52)
if (!tty->refcount++) {
43fbc: 2546 0008 movel %d6,%a2@(8)
43fc0: 4a80 tstl %d0
43fc2: 661c bnes 43fe0 <rtems_termios_open+0x29c>
if (tty->device.firstOpen)
43fc4: 206a 0098 moveal %a2@(152),%a0
43fc8: 4a88 tstl %a0
43fca: 670c beqs 43fd8 <rtems_termios_open+0x294> <== NEVER TAKEN
(*tty->device.firstOpen)(major, minor, arg);
43fcc: 2f0b movel %a3,%sp@-
43fce: 2f03 movel %d3,%sp@-
43fd0: 2f02 movel %d2,%sp@-
43fd2: 4e90 jsr %a0@
43fd4: 4fef 000c lea %sp@(12),%sp
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43fd8: 7002 moveq #2,%d0
43fda: b0aa 00b4 cmpl %a2@(180),%d0
43fde: 672c beqs 4400c <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);
43fe0: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@-
43fe6: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
43fec: 588f addql #4,%sp
}
43fee: 2004 movel %d4,%d0
43ff0: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
43ff6: 4e5e unlk %fp
43ff8: 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))
43ffa: b6aa 0010 cmpl %a2@(16),%d3
43ffe: 67ae beqs 43fae <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) {
44000: 2452 moveal %a2@,%a2 <== NOT EXECUTED
44002: 4a8a tstl %a2 <== NOT EXECUTED
44004: 6600 fd78 bnew 43d7e <rtems_termios_open+0x3a> <== NOT EXECUTED
44008: 6000 fd82 braw 43d8c <rtems_termios_open+0x48> <== NOT EXECUTED
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_start(
4400c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4400e: 487a 15fe pea %pc@(4560e <rtems_termios_rxdaemon>) <== NOT EXECUTED
44012: 47f9 0004 6904 lea 46904 <rtems_task_start>,%a3 <== NOT EXECUTED
44018: 2f2a 00c4 movel %a2@(196),%sp@- <== NOT EXECUTED
4401c: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
4401e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44022: 4a80 tstl %d0 <== NOT EXECUTED
44024: 664c bnes 44072 <rtems_termios_open+0x32e> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_task_start(
44026: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44028: 487a 18b2 pea %pc@(458dc <rtems_termios_txdaemon>) <== NOT EXECUTED
4402c: 2f2a 00c8 movel %a2@(200),%sp@- <== NOT EXECUTED
44030: 4e93 jsr %a3@ <== NOT EXECUTED
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
44032: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44036: 4a80 tstl %d0 <== NOT EXECUTED
44038: 6638 bnes 44072 <rtems_termios_open+0x32e> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
4403a: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
44040: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
44046: 588f addql #4,%sp <== NOT EXECUTED
44048: 60a4 bras 43fee <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 (
4404a: 486d 0068 pea %a5@(104)
rtems_build_name ('T', 'R', 'r', c),
4404e: 1039 0005 e52c moveb 5e52c <c.6356>,%d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
44054: 42a7 clrl %sp@-
44056: 4878 0024 pea 24 <OPER2+0x10>
rtems_build_name ('T', 'R', 'r', c),
4405a: 49c0 extbl %d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
4405c: 0080 5452 7200 oril #1414689280,%d0
44062: 42a7 clrl %sp@-
44064: 2f00 movel %d0,%sp@-
44066: 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)
44068: 4fef 0014 lea %sp@(20),%sp
4406c: 4a80 tstl %d0
4406e: 6700 fe84 beqw 43ef4 <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);
44072: 2f00 movel %d0,%sp@-
44074: 4eb9 0004 6bac jsr 46bac <rtems_fatal_error_occurred>
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
4407a: 486d 00c8 pea %a5@(200) <== NOT EXECUTED
4407e: 2a3c 0004 6654 movel #288340,%d5 <== NOT EXECUTED
44084: 2045 moveal %d5,%a0 <== NOT EXECUTED
44086: 42a7 clrl %sp@- <== NOT EXECUTED
44088: 4878 0500 pea 500 <DBL_MAX_EXP+0xff> <== NOT EXECUTED
4408c: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
44090: 4878 000a pea a <LASTO> <== NOT EXECUTED
rtems_build_name ('T', 'x', 'T', c),
44094: 1039 0005 e52c moveb 5e52c <c.6356>,%d0 <== NOT EXECUTED
4409a: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
4409c: 0080 5478 5400 oril #1417171968,%d0 <== NOT EXECUTED
440a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
440a4: 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)
440a6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
440aa: 4a80 tstl %d0 <== NOT EXECUTED
440ac: 66c4 bnes 44072 <rtems_termios_open+0x32e> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
440ae: 486d 00c4 pea %a5@(196) <== NOT EXECUTED
440b2: 2045 moveal %d5,%a0 <== NOT EXECUTED
rtems_build_name ('R', 'x', 'T', c),
440b4: 1039 0005 e52c moveb 5e52c <c.6356>,%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 (
440ba: 42a7 clrl %sp@- <== NOT EXECUTED
440bc: 4878 0500 pea 500 <DBL_MAX_EXP+0xff> <== NOT EXECUTED
rtems_build_name ('R', 'x', 'T', c),
440c0: 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 (
440c2: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
440c6: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
440ca: 0080 5278 5400 oril #1383617536,%d0 <== NOT EXECUTED
440d0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
440d2: 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)
440d4: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
440d8: 4a80 tstl %d0 <== NOT EXECUTED
440da: 6700 fe06 beqw 43ee2 <rtems_termios_open+0x19e> <== NOT EXECUTED
440de: 6092 bras 44072 <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;
440e0: 23cd 0005 fb6c movel %a5,5fb6c <rtems_termios_ttyTail>
440e6: 6000 fd4a braw 43e32 <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);
440ea: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
return RTEMS_NO_MEMORY;
440f0: 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);
440f2: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
440f8: 588f addql #4,%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
440fa: 2004 movel %d4,%d0 <== NOT EXECUTED
440fc: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44102: 4e5e unlk %fp <== NOT EXECUTED
44104: 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);
44106: 2f0d movel %a5,%sp@- <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
44108: 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);
4410a: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
44110: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
44116: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
4411c: 508f addql #8,%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
4411e: 2004 movel %d4,%d0 <== NOT EXECUTED
44120: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44126: 4e5e unlk %fp <== NOT EXECUTED
44128: 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));
4412a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4412c: 45f9 0004 2cfc lea 42cfc <free>,%a2 <== NOT EXECUTED
free(tty);
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_NO_MEMORY;
44132: 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));
44134: 4e92 jsr %a2@ <== NOT EXECUTED
free(tty);
44136: 2f0d movel %a5,%sp@- <== NOT EXECUTED
44138: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
4413a: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
44140: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
44146: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
4414a: 2004 movel %d4,%d0 <== NOT EXECUTED
4414c: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44152: 4e5e unlk %fp <== NOT EXECUTED
44154: 4e75 rts <== NOT EXECUTED
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
if (tty->cbuf == NULL) {
free((void *)(tty->rawOutBuf.theBuf));
44156: 2f06 movel %d6,%sp@- <== NOT EXECUTED
44158: 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;
4415e: 781a moveq #26,%d4 <== NOT EXECUTED
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
if (tty->cbuf == NULL) {
free((void *)(tty->rawOutBuf.theBuf));
44160: 4e92 jsr %a2@ <== NOT EXECUTED
free((void *)(tty->rawInBuf.theBuf));
44162: 2f05 movel %d5,%sp@- <== NOT EXECUTED
44164: 4e92 jsr %a2@ <== NOT EXECUTED
free(tty);
44166: 2f0d movel %a5,%sp@- <== NOT EXECUTED
44168: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
4416a: 2f39 0005 fb68 movel 5fb68 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
44170: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
44176: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
return RTEMS_SUCCESSFUL;
}
4417a: 2004 movel %d4,%d0 <== NOT EXECUTED
4417c: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44182: 4e5e unlk %fp <== NOT EXECUTED
0004473a <rtems_termios_puts>:
* Send characters to device-specific code
*/
void
rtems_termios_puts (
const void *_buf, int len, struct rtems_termios_tty *tty)
{
4473a: 4e56 ffdc linkw %fp,#-36
4473e: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@
44742: 286e 0008 moveal %fp@(8),%a4
44746: 242e 000c movel %fp@(12),%d2
4474a: 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) {
4474e: 4aaa 00b4 tstl %a2@(180)
44752: 6700 00c6 beqw 4481a <rtems_termios_puts+0xe0>
(*tty->device.write)(tty->minor, (void *)buf, len);
return;
}
newHead = tty->rawOutBuf.Head;
44756: 2c2a 0080 movel %a2@(128),%d6
while (len) {
4475a: 4a82 tstl %d2
4475c: 6700 008e beqw 447ec <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);
44760: 2a3c 0000 0700 movel #1792,%d5
44766: 47f9 0004 6458 lea 46458 <rtems_semaphore_obtain>,%a3
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
4476c: 222a 0088 movel %a2@(136),%d1
44770: 5286 addql #1,%d6
rtems_interrupt_disable (level);
44772: 2005 movel %d5,%d0
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
44774: 4c41 6007 remul %d1,%d7,%d6
44778: 2c07 movel %d7,%d6
rtems_interrupt_disable (level);
4477a: 40c3 movew %sr,%d3
4477c: 8083 orl %d3,%d0
4477e: 46c0 movew %d0,%sr
while (newHead == tty->rawOutBuf.Tail) {
44780: 282a 0084 movel %a2@(132),%d4
44784: be84 cmpl %d4,%d7
44786: 662c bnes 447b4 <rtems_termios_puts+0x7a> <== ALWAYS TAKEN
tty->rawOutBufState = rob_wait;
44788: 7002 moveq #2,%d0 <== NOT EXECUTED
4478a: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable (level);
4478e: 46c3 movew %d3,%sr <== NOT EXECUTED
sc = rtems_semaphore_obtain(
44790: 42a7 clrl %sp@- <== NOT EXECUTED
44792: 42a7 clrl %sp@- <== NOT EXECUTED
44794: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
44798: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
4479a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4479e: 4a80 tstl %d0 <== NOT EXECUTED
447a0: 6600 0094 bnew 44836 <rtems_termios_puts+0xfc> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
447a4: 2005 movel %d5,%d0 <== NOT EXECUTED
447a6: 40c3 movew %sr,%d3 <== NOT EXECUTED
447a8: 8083 orl %d3,%d0 <== NOT EXECUTED
447aa: 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) {
447ac: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED
447b0: b880 cmpl %d0,%d4 <== NOT EXECUTED
447b2: 67d4 beqs 44788 <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++;
447b4: 202a 0080 movel %a2@(128),%d0
447b8: 206a 007c moveal %a2@(124),%a0
447bc: 119c 0800 moveb %a4@+,%a0@(00000000,%d0:l)
tty->rawOutBuf.Head = newHead;
447c0: 2547 0080 movel %d7,%a2@(128)
if (tty->rawOutBufState == rob_idle) {
447c4: 4aaa 0094 tstl %a2@(148)
447c8: 661c bnes 447e6 <rtems_termios_puts+0xac> <== NEVER TAKEN
/* check, whether XOFF has been received */
if (!(tty->flow_ctrl & FL_ORCVXOF)) {
447ca: 202a 00b8 movel %a2@(184),%d0
447ce: 0800 0004 btst #4,%d0
447d2: 6722 beqs 447f6 <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;
447d4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
447d8: 7220 moveq #32,%d1 <== NOT EXECUTED
447da: 8081 orl %d1,%d0 <== NOT EXECUTED
447dc: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy;
447e0: 7001 moveq #1,%d0 <== NOT EXECUTED
447e2: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
}
rtems_interrupt_enable (level);
447e6: 46c3 movew %d3,%sr
len--;
447e8: 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) {
447ea: 6680 bnes 4476c <rtems_termios_puts+0x32> <== NOT EXECUTED
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
447ec: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
447f2: 4e5e unlk %fp <== NOT EXECUTED
447f4: 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,
447f6: 4878 0001 pea 1 <ADD>
(char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
447fa: 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,
447fe: d0aa 007c addl %a2@(124),%d0
44802: 2f00 movel %d0,%sp@-
44804: 2f2a 0010 movel %a2@(16),%sp@-
44808: 206a 00a4 moveal %a2@(164),%a0
4480c: 4e90 jsr %a0@
4480e: 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;
44812: 7001 moveq #1,%d0
44814: 2540 0094 movel %d0,%a2@(148)
44818: 60cc bras 447e6 <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);
4481a: 226a 00a4 moveal %a2@(164),%a1
4481e: 2d6a 0010 0008 movel %a2@(16),%fp@(8) <== NOT EXECUTED
44824: 2d42 0010 movel %d2,%fp@(16) <== NOT EXECUTED
44828: 2d4c 000c movel %a4,%fp@(12) <== NOT EXECUTED
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
4482c: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
44832: 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);
44834: 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);
44836: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44838: 4eb9 0004 6bac jsr 46bac <rtems_fatal_error_occurred> <== NOT EXECUTED
00044ffa <rtems_termios_read>:
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_termios_read (void *arg)
{
44ffa: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
44ffe: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
45002: 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);
45006: 2c3c 0004 6458 movel #287832,%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;
4500c: 2055 moveal %a5@,%a0 <== NOT EXECUTED
4500e: 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);
45012: 2046 moveal %d6,%a0 <== NOT EXECUTED
45014: 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;
45016: 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);
4501a: 42a7 clrl %sp@- <== NOT EXECUTED
4501c: 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;
45020: 286d 000c moveal %a5@(12),%a4 <== NOT EXECUTED
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
45024: 4e90 jsr %a0@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
45026: 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);
4502a: 2a00 movel %d0,%d5 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
4502c: 662e bnes 4505c <rtems_termios_read+0x62> <== NOT EXECUTED
return sc;
if (rtems_termios_linesw[tty->t_line].l_read != NULL) {
4502e: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
45032: eb88 lsll #5,%d0 <== NOT EXECUTED
45034: 0680 0005 f334 addil #389940,%d0 <== NOT EXECUTED
4503a: 2240 moveal %d0,%a1 <== NOT EXECUTED
4503c: 2051 moveal %a1@,%a0 <== NOT EXECUTED
4503e: 4a88 tstl %a0 <== NOT EXECUTED
45040: 6726 beqs 45068 <rtems_termios_read+0x6e> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);
45042: 2f0d movel %a5,%sp@- <== NOT EXECUTED
45044: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45046: 4e90 jsr %a0@ <== NOT EXECUTED
45048: 2a00 movel %d0,%d5 <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
4504a: 42aa 00e4 clrl %a2@(228) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
4504e: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
45052: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
45058: 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;
}
4505c: 2005 movel %d5,%d0 <== NOT EXECUTED
4505e: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
45064: 4e5e unlk %fp <== NOT EXECUTED
45066: 4e75 rts <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
rtems_semaphore_release (tty->isem);
return sc;
}
if (tty->cindex == tty->ccount) {
45068: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
4506c: b0aa 0024 cmpl %a2@(36),%d0 <== NOT EXECUTED
45070: 674e beqs 450c0 <rtems_termios_read+0xc6> <== NOT EXECUTED
sc = fillBufferQueue (tty);
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
45072: 4a84 tstl %d4 <== NOT EXECUTED
45074: 6724 beqs 4509a <rtems_termios_read+0xa0> <== NOT EXECUTED
45076: 202a 0024 movel %a2@(36),%d0 <== NOT EXECUTED
4507a: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
4507e: 6c1a bges 4509a <rtems_termios_read+0xa0> <== NOT EXECUTED
*buffer++ = tty->cbuf[tty->cindex++];
45080: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
count--;
45084: 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++];
45086: 18f0 0800 moveb %a0@(00000000,%d0:l),%a4@+ <== NOT EXECUTED
4508a: 5280 addql #1,%d0 <== NOT EXECUTED
4508c: 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)) {
45090: 4a84 tstl %d4 <== NOT EXECUTED
45092: 6706 beqs 4509a <rtems_termios_read+0xa0> <== NOT EXECUTED
45094: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
45098: 6de6 blts 45080 <rtems_termios_read+0x86> <== NOT EXECUTED
*buffer++ = tty->cbuf[tty->cindex++];
count--;
}
args->bytes_moved = args->count - count;
4509a: 202d 0010 movel %a5@(16),%d0 <== NOT EXECUTED
4509e: 9084 subl %d4,%d0 <== NOT EXECUTED
450a0: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
450a4: 42aa 00e4 clrl %a2@(228) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
450a8: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
450ac: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
450b2: 588f addql #4,%sp <== NOT EXECUTED
}
450b4: 2005 movel %d5,%d0 <== NOT EXECUTED
450b6: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
450bc: 4e5e unlk %fp <== NOT EXECUTED
450be: 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 &&
450c0: 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;
450c4: 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;
450ca: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
450ce: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
tty->read_start_column = tty->column;
if (tty->device.pollRead != NULL &&
450d2: 4a88 tstl %a0 <== NOT EXECUTED
450d4: 6708 beqs 450de <rtems_termios_read+0xe4> <== NOT EXECUTED
450d6: 4aaa 00b4 tstl %a2@(180) <== NOT EXECUTED
450da: 6700 0162 beqw 4523e <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)(
450de: 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;
450e2: 7401 moveq #1,%d2 <== NOT EXECUTED
450e4: 47fa fdca lea %pc@(44eb0 <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;
450e8: 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)(
450ec: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
450f0: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
450f4: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
450f8: b081 cmpl %d1,%d0 <== NOT EXECUTED
450fa: 6700 00cc beqw 451c8 <rtems_termios_read+0x1ce> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
450fe: 2039 0005 e520 movel 5e520 <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED
45104: 5380 subql #1,%d0 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
45106: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
4510a: 6f00 00bc blew 451c8 <rtems_termios_read+0x1ce> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
unsigned char c;
unsigned int newHead;
newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;
4510e: 262a 005c movel %a2@(92),%d3 <== NOT EXECUTED
45112: 5283 addql #1,%d3 <== NOT EXECUTED
45114: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
c = tty->rawInBuf.theBuf[newHead];
45118: 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;
4511c: 4c40 3001 remul %d0,%d1,%d3 <== NOT EXECUTED
c = tty->rawInBuf.theBuf[newHead];
45120: 1630 1800 moveb %a0@(00000000,%d1:l),%d3 <== NOT EXECUTED
tty->rawInBuf.Head = newHead;
45124: 2541 005c movel %d1,%a2@(92) <== NOT EXECUTED
if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)
45128: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
4512c: 206a 0064 moveal %a2@(100),%a0 <== NOT EXECUTED
45130: d088 addl %a0,%d0 <== NOT EXECUTED
45132: 9081 subl %d1,%d0 <== NOT EXECUTED
% tty->rawInBuf.Size)
45134: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED
45138: 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)
4513c: beaa 00bc cmpl %a2@(188),%d7 <== NOT EXECUTED
45140: 6446 bccs 45188 <rtems_termios_read+0x18e> <== NOT EXECUTED
% tty->rawInBuf.Size)
< tty->lowwater) {
tty->flow_ctrl &= ~FL_IREQXOF;
45142: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45146: 72fe moveq #-2,%d1 <== NOT EXECUTED
45148: c081 andl %d1,%d0 <== NOT EXECUTED
4514a: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* if tx stopped and XON should be sent... */
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
4514e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45152: 0280 0000 0202 andil #514,%d0 <== NOT EXECUTED
45158: 0c80 0000 0202 cmpil #514,%d0 <== NOT EXECUTED
4515e: 6700 008a beqw 451ea <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) {
45162: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45166: 0800 0008 btst #8,%d0 <== NOT EXECUTED
4516a: 671c beqs 45188 <rtems_termios_read+0x18e> <== NOT EXECUTED
tty->flow_ctrl &= ~FL_IRTSOFF;
4516c: 222a 00b8 movel %a2@(184),%d1 <== NOT EXECUTED
45170: 7efb moveq #-5,%d7 <== NOT EXECUTED
45172: c287 andl %d7,%d1 <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
45174: 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;
45178: 2541 00b8 movel %d1,%a2@(184) <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
4517c: 4a88 tstl %a0 <== NOT EXECUTED
4517e: 6708 beqs 45188 <rtems_termios_read+0x18e> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
45180: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45184: 4e90 jsr %a0@ <== NOT EXECUTED
45186: 588f addql #4,%sp <== NOT EXECUTED
}
}
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
45188: 7002 moveq #2,%d0 <== NOT EXECUTED
4518a: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
4518e: 6700 008c beqw 4521c <rtems_termios_read+0x222> <== NOT EXECUTED
if (siproc (c, tty))
45192: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45194: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
4519a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4519c: 4e93 jsr %a3@ <== NOT EXECUTED
4519e: 508f addql #8,%sp <== NOT EXECUTED
wait = 0;
451a0: 4a80 tstl %d0 <== NOT EXECUTED
451a2: 57c0 seq %d0 <== NOT EXECUTED
451a4: 49c0 extbl %d0 <== NOT EXECUTED
451a6: c480 andl %d0,%d2 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
451a8: 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;
451ac: 262a 0070 movel %a2@(112),%d3 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
451b0: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
451b4: b081 cmpl %d1,%d0 <== NOT EXECUTED
451b6: 6710 beqs 451c8 <rtems_termios_read+0x1ce> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
451b8: 2039 0005 e520 movel 5e520 <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED
451be: 5380 subql #1,%d0 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
451c0: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
451c4: 6e00 ff48 bgtw 4510e <rtems_termios_read+0x114> <== NOT EXECUTED
}
/*
* Wait for characters
*/
if ( wait ) {
451c8: 4a82 tstl %d2 <== NOT EXECUTED
451ca: 6700 fea6 beqw 45072 <rtems_termios_read+0x78> <== NOT EXECUTED
sc = rtems_semaphore_obtain(
451ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED
451d0: 2f2a 006c movel %a2@(108),%sp@- <== NOT EXECUTED
451d4: 2046 moveal %d6,%a0 <== NOT EXECUTED
451d6: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
451da: 4e90 jsr %a0@ <== NOT EXECUTED
tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
if (sc != RTEMS_SUCCESSFUL)
451dc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
451e0: 4a80 tstl %d0 <== NOT EXECUTED
451e2: 6700 ff0c beqw 450f0 <rtems_termios_read+0xf6> <== NOT EXECUTED
451e6: 6000 fe8a braw 45072 <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)
451ea: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
451ee: 670c beqs 451fc <rtems_termios_read+0x202> <== NOT EXECUTED
|| (tty->flow_ctrl & FL_OSTOP))) {
451f0: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
451f4: 0800 0005 btst #5,%d0 <== NOT EXECUTED
451f8: 6700 ff68 beqw 45162 <rtems_termios_read+0x168> <== NOT EXECUTED
/* XON should be sent now... */
(*tty->device.write)(
451fc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45200: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
45204: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45208: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4520c: 4e90 jsr %a0@ <== NOT EXECUTED
4520e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
45212: 7002 moveq #2,%d0 <== NOT EXECUTED
45214: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
45218: 6600 ff78 bnew 45192 <rtems_termios_read+0x198> <== NOT EXECUTED
if (siproc (c, tty))
wait = 0;
} else {
siproc (c, tty);
4521c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4521e: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
45224: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45226: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
45228: 508f addql #8,%sp <== NOT EXECUTED
4522a: 4280 clrl %d0 <== NOT EXECUTED
4522c: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED
wait = 0;
45230: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
45234: 5ec0 sgt %d0 <== NOT EXECUTED
45236: 49c0 extbl %d0 <== NOT EXECUTED
45238: c480 andl %d0,%d2 <== NOT EXECUTED
4523a: 6000 ff6c braw 451a8 <rtems_termios_read+0x1ae> <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
4523e: 7002 moveq #2,%d0 <== NOT EXECUTED
45240: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
45244: 6740 beqs 45286 <rtems_termios_read+0x28c> <== NOT EXECUTED
45246: 47fa fc68 lea %pc@(44eb0 <siproc>),%a3 <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
4524a: 243c 0004 69c0 movel #289216,%d2 <== NOT EXECUTED
{
int n;
if (tty->termios.c_lflag & ICANON) {
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
45250: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45254: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
45256: 588f addql #4,%sp <== NOT EXECUTED
45258: 4a80 tstl %d0 <== NOT EXECUTED
4525a: 6d1a blts 45276 <rtems_termios_read+0x27c> <== NOT EXECUTED
rtems_task_wake_after (1);
} else {
if (siproc (n, tty))
4525c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4525e: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
45264: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45266: 4e93 jsr %a3@ <== NOT EXECUTED
45268: 508f addql #8,%sp <== NOT EXECUTED
4526a: 4a80 tstl %d0 <== NOT EXECUTED
4526c: 6600 fe04 bnew 45072 <rtems_termios_read+0x78> <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
45270: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
45274: 60da bras 45250 <rtems_termios_read+0x256> <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
45276: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4527a: 2042 moveal %d2,%a0 <== NOT EXECUTED
4527c: 4e90 jsr %a0@ <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
4527e: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
45282: 588f addql #4,%sp <== NOT EXECUTED
45284: 60ca bras 45250 <rtems_termios_read+0x256> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
45286: 47fa fc28 lea %pc@(44eb0 <siproc>),%a3 <== NOT EXECUTED
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
4528a: 263c 0004 5d34 movel #286004,%d3 <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
45290: 243c 0004 69c0 movel #289216,%d2 <== NOT EXECUTED
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
45296: 2243 moveal %d3,%a1 <== NOT EXECUTED
45298: 4e91 jsr %a1@ <== NOT EXECUTED
4529a: 2c00 movel %d0,%d6 <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
4529c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
452a0: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
452a4: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
452a6: 588f addql #4,%sp <== NOT EXECUTED
452a8: 4a80 tstl %d0 <== NOT EXECUTED
452aa: 6d38 blts 452e4 <rtems_termios_read+0x2ea> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
452ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
452ae: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
452b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
452b6: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
452b8: 508f addql #8,%sp <== NOT EXECUTED
452ba: 4281 clrl %d1 <== NOT EXECUTED
452bc: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED
452c0: 1200 moveb %d0,%d1 <== NOT EXECUTED
452c2: b2aa 0020 cmpl %a2@(32),%d1 <== NOT EXECUTED
452c6: 6f00 fdaa blew 45072 <rtems_termios_read+0x78> <== NOT EXECUTED
break;
if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])
452ca: 4a00 tstb %d0 <== NOT EXECUTED
452cc: 67ce beqs 4529c <rtems_termios_read+0x2a2> <== NOT EXECUTED
452ce: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
452d2: 66c2 bnes 45296 <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);
452d4: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
452d8: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
452dc: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
452de: 588f addql #4,%sp <== NOT EXECUTED
452e0: 4a80 tstl %d0 <== NOT EXECUTED
452e2: 6cc8 bges 452ac <rtems_termios_read+0x2b2> <== NOT EXECUTED
if (tty->termios.c_cc[VMIN]) {
452e4: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED
452e8: 6732 beqs 4531c <rtems_termios_read+0x322> <== NOT EXECUTED
if (tty->termios.c_cc[VTIME] && tty->ccount) {
452ea: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
452ee: 6706 beqs 452f6 <rtems_termios_read+0x2fc> <== NOT EXECUTED
452f0: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED
452f4: 660c bnes 45302 <rtems_termios_read+0x308> <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
452f6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
452fa: 2042 moveal %d2,%a0 <== NOT EXECUTED
452fc: 4e90 jsr %a0@ <== NOT EXECUTED
452fe: 588f addql #4,%sp <== NOT EXECUTED
45300: 609a bras 4529c <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();
45302: 2043 moveal %d3,%a0 <== NOT EXECUTED
45304: 4e90 jsr %a0@ <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
45306: 9086 subl %d6,%d0 <== NOT EXECUTED
45308: b0aa 0054 cmpl %a2@(84),%d0 <== NOT EXECUTED
4530c: 6200 fd64 bhiw 45072 <rtems_termios_read+0x78> <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
45310: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45314: 2042 moveal %d2,%a0 <== NOT EXECUTED
45316: 4e90 jsr %a0@ <== NOT EXECUTED
45318: 588f addql #4,%sp <== NOT EXECUTED
4531a: 6080 bras 4529c <rtems_termios_read+0x2a2> <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
break;
}
}
} else {
if (!tty->termios.c_cc[VTIME])
4531c: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
45320: 6700 fd50 beqw 45072 <rtems_termios_read+0x78> <== NOT EXECUTED
break;
now = rtems_clock_get_ticks_since_boot();
45324: 2243 moveal %d3,%a1 <== NOT EXECUTED
45326: 4e91 jsr %a1@ <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
45328: 9086 subl %d6,%d0 <== NOT EXECUTED
4532a: b0aa 0054 cmpl %a2@(84),%d0 <== NOT EXECUTED
4532e: 6200 fd42 bhiw 45072 <rtems_termios_read+0x78> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
45332: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45336: 2042 moveal %d2,%a0 <== NOT EXECUTED
45338: 4e90 jsr %a0@ <== NOT EXECUTED
4533a: 588f addql #4,%sp <== NOT EXECUTED
4533c: 6000 ff5e braw 4529c <rtems_termios_read+0x2a2> <== NOT EXECUTED
000456aa <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)
{
456aa: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
456ae: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
456b2: 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))
456b6: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
456ba: 0280 0000 0403 andil #1027,%d0 <== NOT EXECUTED
456c0: 0c80 0000 0401 cmpil #1025,%d0 <== NOT EXECUTED
456c6: 6700 0140 beqw 45808 <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) {
456ca: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
456ce: 7603 moveq #3,%d3 <== NOT EXECUTED
456d0: 7202 moveq #2,%d1 <== NOT EXECUTED
456d2: c083 andl %d3,%d0 <== NOT EXECUTED
456d4: b280 cmpl %d0,%d1 <== NOT EXECUTED
456d6: 6700 0172 beqw 4584a <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 ) {
456da: 222a 0080 movel %a2@(128),%d1 <== NOT EXECUTED
456de: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED
456e2: b081 cmpl %d1,%d0 <== NOT EXECUTED
456e4: 6700 009a beqw 45780 <rtems_termios_refill_transmitter+0xd6><== NOT EXECUTED
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
}
rtems_interrupt_disable(level);
456e8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
456ee: 40c2 movew %sr,%d2 <== NOT EXECUTED
456f0: 8082 orl %d2,%d0 <== NOT EXECUTED
456f2: 46c0 movew %d0,%sr <== NOT EXECUTED
len = tty->t_dqlen;
456f4: 222a 0090 movel %a2@(144),%d1 <== NOT EXECUTED
tty->t_dqlen = 0;
456f8: 42aa 0090 clrl %a2@(144) <== NOT EXECUTED
rtems_interrupt_enable(level);
456fc: 46c2 movew %d2,%sr <== NOT EXECUTED
newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;
456fe: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED
45702: d280 addl %d0,%d1 <== NOT EXECUTED
45704: 202a 0088 movel %a2@(136),%d0 <== NOT EXECUTED
45708: 4c40 1002 remul %d0,%d2,%d1 <== NOT EXECUTED
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
4570c: 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;
4570e: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
if (tty->rawOutBufState == rob_wait) {
45712: b0aa 0094 cmpl %a2@(148),%d0 <== NOT EXECUTED
45716: 6700 00d8 beqw 457f0 <rtems_termios_refill_transmitter+0x146><== NOT EXECUTED
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
if (newTail == tty->rawOutBuf.Head) {
4571a: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED
4571e: b480 cmpl %d0,%d2 <== NOT EXECUTED
45720: 6776 beqs 45798 <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))
45722: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45726: 0280 0000 0210 andil #528,%d0 <== NOT EXECUTED
4572c: 0c80 0000 0210 cmpil #528,%d0 <== NOT EXECUTED
45732: 6700 015a beqw 4588e <rtems_termios_refill_transmitter+0x1e4><== NOT EXECUTED
nToSend = 0;
} else {
/*
* Buffer not empty, start tranmitter
*/
if (newTail > tty->rawOutBuf.Head)
45736: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED
4573a: b082 cmpl %d2,%d0 <== NOT EXECUTED
4573c: 647c bccs 457ba <rtems_termios_refill_transmitter+0x110><== NOT EXECUTED
nToSend = tty->rawOutBuf.Size - newTail;
4573e: 262a 0088 movel %a2@(136),%d3 <== NOT EXECUTED
45742: 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)) {
45744: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45748: 0280 0000 0600 andil #1536,%d0 <== NOT EXECUTED
4574e: 667c bnes 457cc <rtems_termios_refill_transmitter+0x122><== NOT EXECUTED
45750: 2003 movel %d3,%d0 <== NOT EXECUTED
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
45752: 7201 moveq #1,%d1 <== NOT EXECUTED
(*tty->device.write)(
45754: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45756: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED
4575a: d082 addl %d2,%d0 <== NOT EXECUTED
4575c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4575e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45762: 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*/
45766: 2541 0094 movel %d1,%a2@(148) <== NOT EXECUTED
(*tty->device.write)(
4576a: 4e90 jsr %a0@ <== NOT EXECUTED
4576c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
45770: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
}
return nToSend;
}
45774: 2003 movel %d3,%d0 <== NOT EXECUTED
45776: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4577c: 4e5e unlk %fp <== NOT EXECUTED
4577e: 4e75 rts <== NOT EXECUTED
} else {
if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {
/*
* buffer was empty
*/
if (tty->rawOutBufState == rob_wait) {
45780: 7602 moveq #2,%d3 <== NOT EXECUTED
45782: b6aa 0094 cmpl %a2@(148),%d3 <== NOT EXECUTED
45786: 6700 0130 beqw 458b8 <rtems_termios_refill_transmitter+0x20e><== NOT EXECUTED
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
4578a: 4283 clrl %d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
4578c: 2003 movel %d3,%d0 <== NOT EXECUTED
4578e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
45794: 4e5e unlk %fp <== NOT EXECUTED
45796: 4e75 rts <== NOT EXECUTED
nToSend = 0;
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
45798: 206a 00d4 moveal %a2@(212),%a0 <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
4579c: 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) {
457a0: 4a88 tstl %a0 <== NOT EXECUTED
457a2: 6700 012e beqw 458d2 <rtems_termios_refill_transmitter+0x228><== NOT EXECUTED
(*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);
457a6: 2f2a 00d8 movel %a2@(216),%sp@- <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
457aa: 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);
457ac: 486a 0030 pea %a2@(48) <== NOT EXECUTED
457b0: 4e90 jsr %a0@ <== NOT EXECUTED
457b2: 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*/
457b4: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
457b8: 60ba bras 45774 <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;
457ba: 262a 0080 movel %a2@(128),%d3 <== NOT EXECUTED
457be: 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)) {
457c0: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
457c4: 0280 0000 0600 andil #1536,%d0 <== NOT EXECUTED
457ca: 6784 beqs 45750 <rtems_termios_refill_transmitter+0xa6><== NOT EXECUTED
457cc: 7001 moveq #1,%d0 <== NOT EXECUTED
nToSend = 1;
}
tty->rawOutBufState = rob_busy; /*apm*/
457ce: 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;
457d0: 7601 moveq #1,%d3 <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
457d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
457d4: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED
457d8: d082 addl %d2,%d0 <== NOT EXECUTED
457da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
457dc: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
457e0: 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*/
457e4: 2541 0094 movel %d1,%a2@(148) <== NOT EXECUTED
(*tty->device.write)(
457e8: 4e90 jsr %a0@ <== NOT EXECUTED
457ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
457ee: 6080 bras 45770 <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);
457f0: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
457f4: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
if (newTail == tty->rawOutBuf.Head) {
457fa: 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);
457fe: 588f addql #4,%sp <== NOT EXECUTED
}
if (newTail == tty->rawOutBuf.Head) {
45800: b480 cmpl %d0,%d2 <== NOT EXECUTED
45802: 6600 ff1e bnew 45722 <rtems_termios_refill_transmitter+0x78><== NOT EXECUTED
45806: 6090 bras 45798 <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);
45808: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4580c: 486a 004a pea %a2@(74) <== NOT EXECUTED
45810: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45814: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
45818: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
4581a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45820: 40c1 movew %sr,%d1 <== NOT EXECUTED
45822: 8081 orl %d1,%d0 <== NOT EXECUTED
45824: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl |= FL_ISNTXOF;
45826: 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--;
45828: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
4582c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45830: 8082 orl %d2,%d0 <== NOT EXECUTED
45832: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
45836: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
45838: 7601 moveq #1,%d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
4583a: 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);
4583c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
45840: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
45846: 4e5e unlk %fp <== NOT EXECUTED
45848: 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);
4584a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4584e: 486a 0049 pea %a2@(73) <== NOT EXECUTED
45852: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45856: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4585a: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
4585c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45862: 40c1 movew %sr,%d1 <== NOT EXECUTED
45864: 8081 orl %d1,%d0 <== NOT EXECUTED
45866: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl &= ~FL_ISNTXOF;
45868: 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--;
4586a: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl &= ~FL_ISNTXOF;
4586e: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
45872: c082 andl %d2,%d0 <== NOT EXECUTED
45874: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
45878: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
4587a: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
4587e: 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);
45880: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
45884: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4588a: 4e5e unlk %fp <== NOT EXECUTED
4588c: 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);
4588e: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
45892: 40c1 movew %sr,%d1 <== NOT EXECUTED
45894: 8081 orl %d1,%d0 <== NOT EXECUTED
45896: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl |= FL_OSTOP;
45898: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4589c: 7620 moveq #32,%d3 <== NOT EXECUTED
4589e: 8083 orl %d3,%d0 <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
458a0: 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;
458a4: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
458a8: 2543 0094 movel %d3,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable(level);
458ac: 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*/
458ae: 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;
458b2: 4203 clrb %d3 <== NOT EXECUTED
458b4: 6000 febe braw 45774 <rtems_termios_refill_transmitter+0xca><== NOT EXECUTED
*/
if (tty->rawOutBufState == rob_wait) {
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
458b8: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
}
return 0;
458bc: 4203 clrb %d3 <== NOT EXECUTED
*/
if (tty->rawOutBufState == rob_wait) {
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
458be: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
458c4: 588f addql #4,%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
458c6: 2003 movel %d3,%d0 <== NOT EXECUTED
458c8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
458ce: 4e5e unlk %fp <== NOT EXECUTED
458d0: 4e75 rts <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
458d2: 2542 0084 movel %d2,%a2@(132) <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
458d6: 4283 clrl %d3 <== NOT EXECUTED
458d8: 6000 fe9a braw 45774 <rtems_termios_refill_transmitter+0xca><== NOT EXECUTED
0004560e <rtems_termios_rxdaemon>:
/*
* this task actually processes any receive events
*/
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{
4560e: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
45612: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
45616: 240e movel %fp,%d2 <== NOT EXECUTED
45618: 260e movel %fp,%d3 <== NOT EXECUTED
4561a: 5d82 subql #6,%d2 <== NOT EXECUTED
4561c: 47f9 0004 5da0 lea 45da0 <rtems_event_receive>,%a3 <== NOT EXECUTED
45622: 49f9 0004 6798 lea 46798 <rtems_task_delete>,%a4 <== NOT EXECUTED
45628: 5383 subql #1,%d3 <== NOT EXECUTED
4562a: 4bf9 0004 535c lea 4535c <rtems_termios_enqueue_raw_characters>,%a5<== NOT EXECUTED
45630: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
45634: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45636: 42a7 clrl %sp@- <== NOT EXECUTED
45638: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4563c: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
45640: 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) {
45642: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45646: 7001 moveq #1,%d0 <== NOT EXECUTED
45648: c0ae fffa andl %fp@(-6),%d0 <== NOT EXECUTED
4564c: 663e bnes 4568c <rtems_termios_rxdaemon+0x7e> <== NOT EXECUTED
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
4564e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
45652: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
45656: 4e90 jsr %a0@ <== NOT EXECUTED
if (c != EOF) {
45658: 588f addql #4,%sp <== NOT EXECUTED
4565a: 72ff moveq #-1,%d1 <== NOT EXECUTED
4565c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4565e: 67d4 beqs 45634 <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);
45660: 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;
45664: 1d40 ffff moveb %d0,%fp@(-1) <== NOT EXECUTED
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
45668: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4566a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4566c: 4e95 jsr %a5@ <== NOT EXECUTED
4566e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
45672: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45674: 42a7 clrl %sp@- <== NOT EXECUTED
45676: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4567a: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
4567e: 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) {
45680: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45684: 7001 moveq #1,%d0 <== NOT EXECUTED
45686: c0ae fffa andl %fp@(-6),%d0 <== NOT EXECUTED
4568a: 67c2 beqs 4564e <rtems_termios_rxdaemon+0x40> <== NOT EXECUTED
tty->rxTaskId = 0;
4568c: 42aa 00c4 clrl %a2@(196) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
45690: 42a7 clrl %sp@- <== NOT EXECUTED
45692: 4e94 jsr %a4@ <== NOT EXECUTED
45694: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
45696: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4569a: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
4569e: 4e90 jsr %a0@ <== NOT EXECUTED
if (c != EOF) {
456a0: 588f addql #4,%sp <== NOT EXECUTED
456a2: 72ff moveq #-1,%d1 <== NOT EXECUTED
456a4: b280 cmpl %d0,%d1 <== NOT EXECUTED
456a6: 678c beqs 45634 <rtems_termios_rxdaemon+0x26> <== NOT EXECUTED
456a8: 60b6 bras 45660 <rtems_termios_rxdaemon+0x52> <== NOT EXECUTED
00045340 <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)
{
45340: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* send event to rx daemon task
*/
rtems_event_send(tty->rxTaskId,TERMIOS_RX_PROC_EVENT);
45344: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45348: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4534c: 2f28 00c4 movel %a0@(196),%sp@- <== NOT EXECUTED
45350: 4eb9 0004 5f48 jsr 45f48 <rtems_event_send> <== NOT EXECUTED
45356: 508f addql #8,%sp <== NOT EXECUTED
}
45358: 4e5e unlk %fp <== NOT EXECUTED
00047684 <rtems_termios_set_initial_baud>:
int rtems_termios_set_initial_baud(
struct rtems_termios_tty *ttyp,
int32_t baud
)
{
47684: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47688: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4768a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4768e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int cflags_baud;
cflags_baud = rtems_termios_number_to_baud(baud);
47690: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47694: 4eb9 0004 5964 jsr 45964 <rtems_termios_number_to_baud> <== NOT EXECUTED
if ( cflags_baud == -1 )
4769a: 588f addql #4,%sp <== NOT EXECUTED
4769c: 72ff moveq #-1,%d1 <== NOT EXECUTED
4769e: b280 cmpl %d0,%d1 <== NOT EXECUTED
476a0: 6720 beqs 476c2 <rtems_termios_set_initial_baud+0x3e><== NOT EXECUTED
return -1;
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
476a2: 242a 0038 movel %a2@(56),%d2 <== NOT EXECUTED
return 0;
476a6: 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;
476a8: 0282 ffff eff0 andil #-4112,%d2 <== NOT EXECUTED
476ae: 8082 orl %d2,%d0 <== NOT EXECUTED
return 0;
}
476b0: 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;
476b4: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
return 0;
}
476b8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
476bc: 2001 movel %d1,%d0 <== NOT EXECUTED
476be: 4e5e unlk %fp <== NOT EXECUTED
476c0: 4e75 rts <== NOT EXECUTED
476c2: 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;
476c6: 72ff moveq #-1,%d1 <== NOT EXECUTED
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
return 0;
}
476c8: 2001 movel %d1,%d0 <== NOT EXECUTED
476ca: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
476ce: 4e5e unlk %fp <== NOT EXECUTED
...
000458dc <rtems_termios_txdaemon>:
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
458dc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
458e0: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
458e4: 240e movel %fp,%d2 <== NOT EXECUTED
458e6: 5982 subql #4,%d2 <== NOT EXECUTED
458e8: 49f9 0004 5da0 lea 45da0 <rtems_event_receive>,%a4 <== NOT EXECUTED
458ee: 4bf9 0004 6798 lea 46798 <rtems_task_delete>,%a5 <== NOT EXECUTED
458f4: 47f9 0004 56aa lea 456aa <rtems_termios_refill_transmitter>,%a3<== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
458fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
458fc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
45900: 42a7 clrl %sp@- <== NOT EXECUTED
45902: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
45906: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
4590a: 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) {
4590c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45910: 7001 moveq #1,%d0 <== NOT EXECUTED
45912: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED
45916: 663a bnes 45952 <rtems_termios_txdaemon+0x76> <== NOT EXECUTED
}
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
45918: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
4591c: eb88 lsll #5,%d0 <== NOT EXECUTED
4591e: 0680 0005 f340 addil #389952,%d0 <== NOT EXECUTED
45924: 2240 moveal %d0,%a1 <== NOT EXECUTED
45926: 2051 moveal %a1@,%a0 <== NOT EXECUTED
45928: 4a88 tstl %a0 <== NOT EXECUTED
4592a: 6706 beqs 45932 <rtems_termios_txdaemon+0x56> <== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
4592c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4592e: 4e90 jsr %a0@ <== NOT EXECUTED
45930: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* try to push further characters to device
*/
rtems_termios_refill_transmitter(tty);
45932: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45934: 4e93 jsr %a3@ <== NOT EXECUTED
}
45936: 588f addql #4,%sp <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
45938: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4593a: 42a7 clrl %sp@- <== NOT EXECUTED
4593c: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
45940: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
45944: 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) {
45946: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4594a: 7001 moveq #1,%d0 <== NOT EXECUTED
4594c: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED
45950: 67c6 beqs 45918 <rtems_termios_txdaemon+0x3c> <== NOT EXECUTED
tty->txTaskId = 0;
45952: 42aa 00c8 clrl %a2@(200) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
45956: 42a7 clrl %sp@- <== NOT EXECUTED
45958: 4e95 jsr %a5@ <== NOT EXECUTED
4595a: 588f addql #4,%sp <== NOT EXECUTED
4595c: 60ba bras 45918 <rtems_termios_txdaemon+0x3c> <== NOT EXECUTED
00044f24 <rtems_termios_write>:
rtems_termios_puts (&c, 1, tty);
}
rtems_status_code
rtems_termios_write (void *arg)
{
44f24: 4e56 ffe8 linkw %fp,#-24
44f28: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
44f2c: 266e 0008 moveal %fp@(8),%a3
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
44f30: 2053 moveal %a3@,%a0
44f32: 2468 0034 moveal %a0@(52),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
44f36: 42a7 clrl %sp@-
44f38: 42a7 clrl %sp@-
44f3a: 2f2a 0018 movel %a2@(24),%sp@-
44f3e: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
if (sc != RTEMS_SUCCESSFUL)
44f44: 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);
44f48: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL)
44f4a: 662a bnes 44f76 <rtems_termios_write+0x52> <== NEVER TAKEN
return sc;
if (rtems_termios_linesw[tty->t_line].l_write != NULL) {
44f4c: 202a 00cc movel %a2@(204),%d0
44f50: eb88 lsll #5,%d0
44f52: 0680 0005 f338 addil #389944,%d0
44f58: 2240 moveal %d0,%a1
44f5a: 2051 moveal %a1@,%a0
44f5c: 4a88 tstl %a0
44f5e: 6722 beqs 44f82 <rtems_termios_write+0x5e> <== ALWAYS TAKEN
sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);
44f60: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44f62: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44f64: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f66: 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);
44f6a: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f6c: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44f72: 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;
}
44f76: 2002 movel %d2,%d0 <== NOT EXECUTED
44f78: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
44f7e: 4e5e unlk %fp <== NOT EXECUTED
44f80: 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) {
44f82: 7001 moveq #1,%d0
44f84: c0aa 0034 andl %a2@(52),%d0
44f88: 6740 beqs 44fca <rtems_termios_write+0xa6> <== NEVER TAKEN
uint32_t count = args->count;
44f8a: 262b 0010 movel %a3@(16),%d3
char *buffer = args->buffer;
44f8e: 286b 000c moveal %a3@(12),%a4
while (count--)
44f92: 675e beqs 44ff2 <rtems_termios_write+0xce> <== NEVER TAKEN
44f94: 4bfa f8a8 lea %pc@(4483e <oproc>),%a5
oproc (*buffer++, tty);
44f98: 4280 clrl %d0
44f9a: 101c moveb %a4@+,%d0
44f9c: 5383 subql #1,%d3
44f9e: 2f0a movel %a2,%sp@-
44fa0: 2f00 movel %d0,%sp@-
44fa2: 4e95 jsr %a5@
return sc;
}
if (tty->termios.c_oflag & OPOST) {
uint32_t count = args->count;
char *buffer = args->buffer;
while (count--)
44fa4: 508f addql #8,%sp <== NOT EXECUTED
44fa6: 4a83 tstl %d3 <== NOT EXECUTED
44fa8: 66ee bnes 44f98 <rtems_termios_write+0x74> <== NOT EXECUTED
44faa: 202b 0010 movel %a3@(16),%d0 <== NOT EXECUTED
oproc (*buffer++, tty);
args->bytes_moved = args->count;
44fae: 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);
44fb2: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
44fb6: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44fbc: 588f addql #4,%sp <== NOT EXECUTED
}
44fbe: 2002 movel %d2,%d0 <== NOT EXECUTED
44fc0: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
44fc6: 4e5e unlk %fp <== NOT EXECUTED
44fc8: 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);
44fca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44fcc: 2f2b 0010 movel %a3@(16),%sp@- <== NOT EXECUTED
44fd0: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
44fd4: 4eb9 0004 473a jsr 4473a <rtems_termios_puts> <== NOT EXECUTED
args->bytes_moved = args->count;
44fda: 276b 0010 0018 movel %a3@(16),%a3@(24) <== NOT EXECUTED
44fe0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
rtems_semaphore_release (tty->osem);
44fe4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
44fe8: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44fee: 588f addql #4,%sp <== NOT EXECUTED
44ff0: 60cc bras 44fbe <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--)
44ff2: 4280 clrl %d0 <== NOT EXECUTED
oproc (*buffer++, tty);
args->bytes_moved = args->count;
44ff4: 2740 0018 movel %d0,%a3@(24) <== NOT EXECUTED
44ff8: 60b8 bras 44fb2 <rtems_termios_write+0x8e> <== NOT EXECUTED
00058954 <rtems_timer_cancel>:
*/
rtems_status_code rtems_timer_cancel(
rtems_id id
)
{
58954: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58958: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5895c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58960: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58966: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
5896c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58970: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58974: 6706 beqs 5897c <rtems_timer_cancel+0x28> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58976: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58978: 4e5e unlk %fp <== NOT EXECUTED
5897a: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Timer_Is_dormant_class( the_timer->the_class ) )
5897c: 7204 moveq #4,%d1 <== NOT EXECUTED
5897e: 2040 moveal %d0,%a0 <== NOT EXECUTED
58980: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED
58984: 670c beqs 58992 <rtems_timer_cancel+0x3e> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
58986: 4868 0010 pea %a0@(16) <== NOT EXECUTED
5898a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
58990: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
58992: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58998: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5899a: 4e5e unlk %fp <== NOT EXECUTED
...
00046c70 <rtems_timer_create>:
rtems_status_code rtems_timer_create(
rtems_name name,
rtems_id *id
)
{
46c70: 4e56 fff4 linkw %fp,#-12
46c74: 48d7 040c moveml %d2-%d3/%a2,%sp@
46c78: 242e 0008 movel %fp@(8),%d2
46c7c: 246e 000c moveal %fp@(12),%a2
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
46c80: 6768 beqs 46cea <rtems_timer_create+0x7a> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
46c82: 4a8a tstl %a2
46c84: 6700 0082 beqw 46d08 <rtems_timer_create+0x98>
46c88: 2039 0005 ffda movel 5ffda <_Thread_Dispatch_disable_level>,%d0
46c8e: 5280 addql #1,%d0
46c90: 23c0 0005 ffda movel %d0,5ffda <_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 );
46c96: 4879 0006 083c pea 6083c <_Timer_Information>
46c9c: 4eb9 0004 7c64 jsr 47c64 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
46ca2: 588f addql #4,%sp
46ca4: 2040 moveal %d0,%a0
46ca6: 4a80 tstl %d0
46ca8: 674c beqs 46cf6 <rtems_timer_create+0x86> <== NEVER TAKEN
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46caa: 2028 0008 movel %a0@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cae: 4281 clrl %d1
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_timer->the_class = TIMER_DORMANT;
46cb0: 7604 moveq #4,%d3
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cb2: 2279 0006 0854 moveal 60854 <_Timer_Information+0x18>,%a1
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cb8: 3200 movew %d0,%d1
46cba: 2143 0038 movel %d3,%a0@(56)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46cbe: 42a8 0018 clrl %a0@(24)
the_watchdog->routine = routine;
46cc2: 42a8 002c clrl %a0@(44)
the_watchdog->id = id;
46cc6: 42a8 0030 clrl %a0@(48)
the_watchdog->user_data = user_data;
46cca: 42a8 0034 clrl %a0@(52)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cce: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
46cd2: 2142 000c movel %d2,%a0@(12)
&_Timer_Information,
&the_timer->Object,
(Objects_Name) name
);
*id = the_timer->Object.id;
46cd6: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
46cd8: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
46cde: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
(Objects_Name) name
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46ce4: 4280 clrl %d0
}
46ce6: 4e5e unlk %fp
46ce8: 4e75 rts
)
{
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46cea: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46cec: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46cf2: 4e5e unlk %fp <== NOT EXECUTED
46cf4: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
_Thread_Enable_dispatch();
46cf6: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
46cfc: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46cfe: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46d04: 4e5e unlk %fp <== NOT EXECUTED
46d06: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46d08: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d0a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46d10: 4e5e unlk %fp <== NOT EXECUTED
00058a44 <rtems_timer_delete>:
*/
rtems_status_code rtems_timer_delete(
rtems_id id
)
{
58a44: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
58a48: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58a4a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58a4e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58a52: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58a58: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58a5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58a62: 2440 moveal %d0,%a2 <== NOT EXECUTED
58a64: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58a68: 663a bnes 58aa4 <rtems_timer_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
58a6a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
58a6c: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58a72: 4eb9 0005 b47c jsr 5b47c <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
58a78: 486a 0010 pea %a2@(16) <== NOT EXECUTED
58a7c: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Timer_Free (
Timer_Control *the_timer
)
{
_Objects_Free( &_Timer_Information, &the_timer->Object );
58a82: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58a84: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58a8a: 4eb9 0005 b740 jsr 5b740 <_Objects_Free> <== NOT EXECUTED
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
58a90: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58a96: 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;
58a9a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
58a9e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58aa0: 4e5e unlk %fp <== NOT EXECUTED
58aa2: 4e75 rts <== NOT EXECUTED
58aa4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58aa8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58aaa: 4e5e unlk %fp <== NOT EXECUTED
...
00046d14 <rtems_timer_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
46d14: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
46d18: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
46d1c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
46d20: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
46d24: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
46d28: 4a82 tstl %d2 <== NOT EXECUTED
46d2a: 6700 0094 beqw 46dc0 <rtems_timer_fire_after+0xac> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( !routine )
46d2e: 4a83 tstl %d3 <== NOT EXECUTED
46d30: 6700 00ae beqw 46de0 <rtems_timer_fire_after+0xcc> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
46d34: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46d38: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46d3a: 4879 0006 083c pea 6083c <_Timer_Information> <== NOT EXECUTED
46d40: 4eb9 0004 8124 jsr 48124 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
46d46: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46d4a: 2440 moveal %d0,%a2 <== NOT EXECUTED
46d4c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46d50: 6662 bnes 46db4 <rtems_timer_fire_after+0xa0> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
46d52: 2a00 movel %d0,%d5 <== NOT EXECUTED
46d54: 0685 0000 0010 addil #16,%d5 <== NOT EXECUTED
46d5a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46d5c: 4eb9 0004 9ce8 jsr 49ce8 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
46d62: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
46d68: 40c1 movew %sr,%d1 <== NOT EXECUTED
46d6a: 8081 orl %d1,%d0 <== NOT EXECUTED
46d6c: 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 ) {
46d6e: 588f addql #4,%sp <== NOT EXECUTED
46d70: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
46d74: 6656 bnes 46dcc <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;
46d76: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
46d7a: 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;
46d80: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
46d84: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
46d88: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_ISR_Enable( level );
46d8c: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46d8e: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46d92: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46d94: 4879 0006 00ba pea 600ba <_Watchdog_Ticks_chain> <== NOT EXECUTED
46d9a: 4eb9 0004 9b94 jsr 49b94 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_timer->Ticker, ticks );
_Thread_Enable_dispatch();
46da0: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46da6: 508f addql #8,%sp <== NOT EXECUTED
46da8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46daa: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46db0: 4e5e unlk %fp <== NOT EXECUTED
46db2: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46db4: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46db6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46dbc: 4e5e unlk %fp <== NOT EXECUTED
46dbe: 4e75 rts <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
46dc0: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dc2: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46dc8: 4e5e unlk %fp <== NOT EXECUTED
46dca: 4e75 rts <== NOT EXECUTED
* 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 );
46dcc: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
46dce: 4eb9 0004 8c56 jsr 48c56 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46dd4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dd6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46ddc: 4e5e unlk %fp <== NOT EXECUTED
46dde: 4e75 rts <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
46de0: 7009 moveq #9,%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
00058b88 <rtems_timer_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58b88: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
58b8c: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
58b90: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
58b94: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
if ( !_TOD_Is_set )
58b98: 4a39 0007 eafc tstb 7eafc <_TOD_Is_set> <== NOT EXECUTED
58b9e: 660c bnes 58bac <rtems_timer_fire_when+0x24> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
58ba0: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ba2: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58ba8: 4e5e unlk %fp <== NOT EXECUTED
58baa: 4e75 rts <== NOT EXECUTED
rtems_interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !_TOD_Validate( wall_time ) )
58bac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58bae: 4eb9 0005 5bd0 jsr 55bd0 <_TOD_Validate> <== NOT EXECUTED
58bb4: 588f addql #4,%sp <== NOT EXECUTED
58bb6: 4a00 tstb %d0 <== NOT EXECUTED
58bb8: 671a beqs 58bd4 <rtems_timer_fire_when+0x4c> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
58bba: 4a83 tstl %d3 <== NOT EXECUTED
58bbc: 6700 00a8 beqw 58c66 <rtems_timer_fire_when+0xde> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58bc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58bc2: 4eb9 0005 5ac8 jsr 55ac8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58bc8: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58bca: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58bcc: b0b9 0007 eb96 cmpl 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED
58bd2: 620c bhis 58be0 <rtems_timer_fire_when+0x58> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
58bd4: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bd6: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58bdc: 4e5e unlk %fp <== NOT EXECUTED
58bde: 4e75 rts <== NOT EXECUTED
58be0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58be4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58be8: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58bee: 4eb9 0005 b8e8 jsr 5b8e8 <_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 ) {
58bf4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58bf8: 2440 moveal %d0,%a2 <== NOT EXECUTED
58bfa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58bfe: 665a bnes 58c5a <rtems_timer_fire_when+0xd2> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58c00: 2800 movel %d0,%d4 <== NOT EXECUTED
58c02: 0684 0000 0010 addil #16,%d4 <== NOT EXECUTED
58c08: 2f04 movel %d4,%sp@- <== NOT EXECUTED
58c0a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
58c10: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY;
58c16: 7002 moveq #2,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c18: 94b9 0007 eb96 subl 7eb96 <_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;
58c1e: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58c22: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c26: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
58c2a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58c2e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58c32: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
58c36: 2f04 movel %d4,%sp@- <== NOT EXECUTED
58c38: 4879 0007 ebc0 pea 7ebc0 <_Watchdog_Seconds_chain> <== NOT EXECUTED
58c3e: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED
&the_timer->Ticker,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
58c44: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58c4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58c4e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c50: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58c56: 4e5e unlk %fp <== NOT EXECUTED
58c58: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58c5a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58c5c: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58c62: 4e5e unlk %fp <== NOT EXECUTED
58c64: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58c66: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c68: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58c6e: 4e5e unlk %fp <== NOT EXECUTED
...
00058c74 <rtems_timer_get_information>:
rtems_status_code rtems_timer_get_information(
rtems_id id,
rtems_timer_information *the_info
)
{
58c74: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
58c78: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58c7a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
58c7e: 4a8a tstl %a2 <== NOT EXECUTED
58c80: 6752 beqs 58cd4 <rtems_timer_get_information+0x60><== NOT EXECUTED
58c82: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58c86: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58c8a: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58c90: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58c96: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58c9a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58c9e: 662a bnes 58cca <rtems_timer_get_information+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
the_info->the_class = the_timer->the_class;
58ca0: 2040 moveal %d0,%a0 <== NOT EXECUTED
58ca2: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED
the_info->initial = the_timer->Ticker.initial;
58ca6: 41e8 001c lea %a0@(28),%a0 <== NOT EXECUTED
58caa: 2550 0004 movel %a0@,%a2@(4) <== NOT EXECUTED
the_info->start_time = the_timer->Ticker.start_time;
58cae: 5088 addql #8,%a0 <== NOT EXECUTED
58cb0: 2550 0008 movel %a0@,%a2@(8) <== NOT EXECUTED
the_info->stop_time = the_timer->Ticker.stop_time;
58cb4: 5888 addql #4,%a0 <== NOT EXECUTED
58cb6: 2550 000c movel %a0@,%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
58cba: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cc0: 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;
58cc4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cc6: 4e5e unlk %fp <== NOT EXECUTED
58cc8: 4e75 rts <== NOT EXECUTED
58cca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58cce: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58cd0: 4e5e unlk %fp <== NOT EXECUTED
58cd2: 4e75 rts <== NOT EXECUTED
58cd4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
58cd8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cda: 4e5e unlk %fp <== NOT EXECUTED
...
00058ce0 <rtems_timer_ident>:
rtems_status_code rtems_timer_ident(
rtems_name name,
rtems_id *id
)
{
58ce0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
58ce4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
58ce8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
58cee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58cf2: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58cf8: 4eb9 0005 ba98 jsr 5ba98 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
58cfe: 41f9 0007 7ed0 lea 77ed0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
58d04: 4e5e unlk %fp <== NOT EXECUTED
58d06: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
000593f6 <rtems_timer_initiate_server>:
rtems_status_code rtems_timer_initiate_server(
uint32_t priority,
uint32_t stack_size,
rtems_attribute attribute_set
)
{
593f6: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
593fa: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
593fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59400: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59402: 4a80 tstl %d0 <== NOT EXECUTED
59404: 6748 beqs 5944e <rtems_timer_initiate_server+0x58><== NOT EXECUTED
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
59406: 4281 clrl %d1 <== NOT EXECUTED
59408: 1239 0007 8e82 moveb 78e82 <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 ) &&
5940e: b280 cmpl %d0,%d1 <== NOT EXECUTED
59410: 644a bccs 5945c <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 )
59412: 72ff moveq #-1,%d1 <== NOT EXECUTED
59414: b280 cmpl %d0,%d1 <== NOT EXECUTED
59416: 6636 bnes 5944e <rtems_timer_initiate_server+0x58><== NOT EXECUTED
59418: 2239 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
5941e: 5281 addql #1,%d1 <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
_priority = 0;
59420: 4283 clrl %d3 <== NOT EXECUTED
59422: 23c1 0007 eaec movel %d1,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
59428: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
5942a: 1439 0007 9fca moveb 79fca <initialized.3677>,%d2 <== NOT EXECUTED
initialized = true;
59430: 13c0 0007 9fca moveb %d0,79fca <initialized.3677> <== NOT EXECUTED
_Thread_Enable_dispatch();
59436: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
5943c: 4a02 tstb %d2 <== NOT EXECUTED
5943e: 6744 beqs 59484 <rtems_timer_initiate_server+0x8e><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59440: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
tmpInitialized = initialized;
initialized = true;
_Thread_Enable_dispatch();
if ( tmpInitialized )
return RTEMS_INCORRECT_STATE;
59444: 700e moveq #14,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59446: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
5944a: 4e5e unlk %fp <== NOT EXECUTED
5944c: 4e75 rts <== NOT EXECUTED
5944e: 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;
59452: 7013 moveq #19,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59454: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
59458: 4e5e unlk %fp <== NOT EXECUTED
5945a: 4e75 rts <== NOT EXECUTED
5945c: 2239 0007 eaec movel 7eaec <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
59462: 5281 addql #1,%d1 <== NOT EXECUTED
59464: 2600 movel %d0,%d3 <== NOT EXECUTED
59466: 23c1 0007 eaec movel %d1,7eaec <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
5946c: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
5946e: 1439 0007 9fca moveb 79fca <initialized.3677>,%d2 <== NOT EXECUTED
initialized = true;
59474: 13c0 0007 9fca moveb %d0,79fca <initialized.3677> <== NOT EXECUTED
_Thread_Enable_dispatch();
5947a: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
59480: 4a02 tstb %d2 <== NOT EXECUTED
59482: 66bc bnes 59440 <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(
59484: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
59488: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5948c: 08c1 000f bset #15,%d1 <== NOT EXECUTED
59490: 2f01 movel %d1,%sp@- <== NOT EXECUTED
59492: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
59496: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5949a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5949c: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED
594a2: 4eb9 0005 8028 jsr 58028 <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) {
594a8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
594ac: 4a80 tstl %d0 <== NOT EXECUTED
594ae: 6714 beqs 594c4 <rtems_timer_initiate_server+0xce><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594b0: 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;
594b4: 4201 clrb %d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594b6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
594ba: 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;
594bc: 13c1 0007 9fca moveb %d1,79fca <initialized.3677> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594c2: 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)
594c4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
594c8: 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(
594ca: 2079 0007 ea82 moveal 7ea82 <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED
594d0: 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;
594d2: 2239 0007 ec16 movel 7ec16 <_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(
594d8: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
594dc: 23d0 0007 9f4c movel %a0@,79f4c <_Timer_server_Default> <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
594e2: 41f9 0007 9f80 lea 79f80 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
594e8: 4879 0007 9f4c pea 79f4c <_Timer_server_Default> <== NOT EXECUTED
594ee: 487a fb80 pea %pc@(59070 <_Timer_server_Body>) <== NOT EXECUTED
594f2: 23c8 0007 9f7c movel %a0,79f7c <_Timer_server_Default+0x30><== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
594f8: 41f9 0007 9f7c lea 79f7c <_Timer_server_Default+0x30>,%a0 <== NOT EXECUTED
594fe: 23c8 0007 9f84 movel %a0,79f84 <_Timer_server_Default+0x38><== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59504: 41f9 0007 9fb8 lea 79fb8 <_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;
5950a: 23c1 0007 9f88 movel %d1,79f88 <_Timer_server_Default+0x3c><== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59510: 223c 0007 9fb4 movel #499636,%d1 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59516: 23c8 0007 9fb4 movel %a0,79fb4 <_Timer_server_Default+0x68><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5951c: 41f9 0007 eb96 lea 7eb96 <_TOD_Now>,%a0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59522: 23c1 0007 9fbc movel %d1,79fbc <_Timer_server_Default+0x70><== NOT EXECUTED
59528: 23d0 0007 9fc0 movel %a0@,79fc0 <_Timer_server_Default+0x74><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5952e: 223c 0005 c2f4 movel #377588,%d1 <== NOT EXECUTED
59534: 41f9 0005 c2f4 lea 5c2f4 <_Thread_Delay_ended>,%a0 <== NOT EXECUTED
5953a: 23c1 0007 9f70 movel %d1,79f70 <_Timer_server_Default+0x24><== NOT EXECUTED
ts->insert_chain = NULL;
ts->active = false;
59540: 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;
59542: 42b9 0007 9fc4 clrl 79fc4 <_Timer_server_Default+0x78> <== NOT EXECUTED
ts->active = false;
59548: 13c1 0007 9fc8 moveb %d1,79fc8 <_Timer_server_Default+0x7c><== NOT EXECUTED
5954e: 23c8 0007 9fa8 movel %a0,79fa8 <_Timer_server_Default+0x5c><== NOT EXECUTED
/*
* The default timer server is now available.
*/
_Timer_server = ts;
59554: 41f9 0007 9f4c lea 79f4c <_Timer_server_Default>,%a0 <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
5955a: 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;
5955c: 223c 0005 929a movel #365210,%d1 <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
59562: 42b9 0007 9f80 clrl 79f80 <_Timer_server_Default+0x34> <== NOT EXECUTED
59568: 42b9 0007 9fb8 clrl 79fb8 <_Timer_server_Default+0x6c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5956e: 42b9 0007 9f5c clrl 79f5c <_Timer_server_Default+0x10> <== NOT EXECUTED
59574: 23c1 0007 9f50 movel %d1,79f50 <_Timer_server_Default+0x4> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
5957a: 23c0 0007 9f74 movel %d0,79f74 <_Timer_server_Default+0x28><== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
59580: 23c8 0007 f3c8 movel %a0,7f3c8 <_Timer_server> <== NOT EXECUTED
the_watchdog->user_data = user_data;
59586: 42b9 0007 9f78 clrl 79f78 <_Timer_server_Default+0x2c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5958c: 42b9 0007 9f94 clrl 79f94 <_Timer_server_Default+0x48> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
59592: 23c0 0007 9fac movel %d0,79fac <_Timer_server_Default+0x60><== NOT EXECUTED
the_watchdog->user_data = user_data;
59598: 42b9 0007 9fb0 clrl 79fb0 <_Timer_server_Default+0x64> <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
5959e: 4eb9 0005 8734 jsr 58734 <rtems_task_start> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
595a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if (status) {
initialized = false;
}
#endif
return status;
595a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
595ac: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
595b0: 4e5e unlk %fp <== NOT EXECUTED
00058d0c <rtems_timer_reset>:
*/
rtems_status_code rtems_timer_reset(
rtems_id id
)
{
58d0c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
58d10: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
58d14: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58d18: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58d1c: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58d22: 4eb9 0005 b8e8 jsr 5b8e8 <_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 ) {
58d28: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58d2c: 2440 moveal %d0,%a2 <== NOT EXECUTED
58d2e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58d32: 670e beqs 58d42 <rtems_timer_reset+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58d34: 7404 moveq #4,%d2 <== NOT EXECUTED
}
58d36: 2002 movel %d2,%d0 <== NOT EXECUTED
58d38: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
58d3e: 4e5e unlk %fp <== NOT EXECUTED
58d40: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
58d42: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED
58d46: 671a beqs 58d62 <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 ) {
58d48: 7201 moveq #1,%d1 <== NOT EXECUTED
58d4a: b280 cmpl %d0,%d1 <== NOT EXECUTED
58d4c: 673c beqs 58d8a <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;
58d4e: 740b moveq #11,%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58d50: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
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 ) {
_Watchdog_Remove( &the_timer->Ticker );
58d62: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58d66: 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 );
58d68: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58d6a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
58d70: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58d72: 4879 0007 ebcc pea 7ebcc <_Watchdog_Ticks_chain> <== NOT EXECUTED
58d78: 4eb9 0005 d680 jsr 5d680 <_Watchdog_Insert> <== NOT EXECUTED
58d7e: 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();
58d82: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
58d88: 60cc bras 58d56 <rtems_timer_reset+0x4a> <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58d8a: 486a 0010 pea %a2@(16) <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58d8e: 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;
58d90: 2679 0007 f3c8 moveal 7f3c8 <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58d96: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58d9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58d9e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58da0: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
58da4: 4e90 jsr %a0@ <== NOT EXECUTED
58da6: 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();
58daa: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
58db0: 60a4 bras 58d56 <rtems_timer_reset+0x4a> <== NOT EXECUTED
...
00058db4 <rtems_timer_server_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58db4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
58db8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
58dbc: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
58dc0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
58dc4: 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;
58dc8: 2479 0007 f3c8 moveal 7f3c8 <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58dce: 4a8a tstl %a2 <== NOT EXECUTED
58dd0: 6700 009c beqw 58e6e <rtems_timer_server_fire_after+0xba><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !routine )
58dd4: 4a82 tstl %d2 <== NOT EXECUTED
58dd6: 6700 00a2 beqw 58e7a <rtems_timer_server_fire_after+0xc6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( ticks == 0 )
58dda: 4a83 tstl %d3 <== NOT EXECUTED
58ddc: 660c bnes 58dea <rtems_timer_server_fire_after+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
58dde: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58de0: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58de6: 4e5e unlk %fp <== NOT EXECUTED
58de8: 4e75 rts <== NOT EXECUTED
58dea: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58dee: 2f04 movel %d4,%sp@- <== NOT EXECUTED
58df0: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58df6: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58dfc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58e00: 2640 moveal %d0,%a3 <== NOT EXECUTED
58e02: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58e06: 665a bnes 58e62 <rtems_timer_server_fire_after+0xae><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58e08: 486b 0010 pea %a3@(16) <== NOT EXECUTED
58e0c: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
58e12: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
58e18: 40c1 movew %sr,%d1 <== NOT EXECUTED
58e1a: 8081 orl %d1,%d0 <== NOT EXECUTED
58e1c: 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 ) {
58e1e: 588f addql #4,%sp <== NOT EXECUTED
58e20: 4aab 0018 tstl %a3@(24) <== NOT EXECUTED
58e24: 6660 bnes 58e86 <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;
58e26: 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;
58e28: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED
58e2e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58e32: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58e36: 2742 002c movel %d2,%a3@(44) <== NOT EXECUTED
the_watchdog->id = id;
58e3a: 2744 0030 movel %d4,%a3@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = ticks;
58e3e: 2743 001c movel %d3,%a3@(28) <== NOT EXECUTED
_ISR_Enable( level );
58e42: 46c1 movew %d1,%sr <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58e44: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58e46: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58e48: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
58e4c: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58e4e: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58e54: 508f addql #8,%sp <== NOT EXECUTED
58e56: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e58: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e5e: 4e5e unlk %fp <== NOT EXECUTED
58e60: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58e62: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58e64: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e6a: 4e5e unlk %fp <== NOT EXECUTED
58e6c: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58e6e: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e70: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e76: 4e5e unlk %fp <== NOT EXECUTED
58e78: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58e7a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e7c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e82: 4e5e unlk %fp <== NOT EXECUTED
58e84: 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 );
58e86: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
58e88: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58e8e: 4280 clrl %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
...
00058e9c <rtems_timer_server_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58e9c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
58ea0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
58ea4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
58ea8: 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;
58eac: 2479 0007 f3c8 moveal 7f3c8 <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58eb2: 4a8a tstl %a2 <== NOT EXECUTED
58eb4: 6700 00c8 beqw 58f7e <rtems_timer_server_fire_when+0xe2><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
58eb8: 4a39 0007 eafc tstb 7eafc <_TOD_Is_set> <== NOT EXECUTED
58ebe: 6700 00a6 beqw 58f66 <rtems_timer_server_fire_when+0xca><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !routine )
58ec2: 4a83 tstl %d3 <== NOT EXECUTED
58ec4: 6700 00ac beqw 58f72 <rtems_timer_server_fire_when+0xd6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
58ec8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58eca: 4eb9 0005 5bd0 jsr 55bd0 <_TOD_Validate> <== NOT EXECUTED
58ed0: 588f addql #4,%sp <== NOT EXECUTED
58ed2: 4a00 tstb %d0 <== NOT EXECUTED
58ed4: 660c bnes 58ee2 <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;
58ed6: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ed8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58ede: 4e5e unlk %fp <== NOT EXECUTED
58ee0: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
58ee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58ee4: 4eb9 0005 5ac8 jsr 55ac8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58eea: 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 );
58eec: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58eee: b0b9 0007 eb96 cmpl 7eb96 <_TOD_Now>,%d0 <== NOT EXECUTED
58ef4: 63e0 blss 58ed6 <rtems_timer_server_fire_when+0x3a><== NOT EXECUTED
58ef6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58efa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58efe: 4879 0007 f38e pea 7f38e <_Timer_Information> <== NOT EXECUTED
58f04: 4eb9 0005 b8e8 jsr 5b8e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58f0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58f0e: 2640 moveal %d0,%a3 <== NOT EXECUTED
58f10: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58f14: 6674 bnes 58f8a <rtems_timer_server_fire_when+0xee><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58f16: 486b 0010 pea %a3@(16) <== NOT EXECUTED
58f1a: 4eb9 0005 d7d4 jsr 5d7d4 <_Watchdog_Remove> <== NOT EXECUTED
the_watchdog->user_data = user_data;
58f20: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
58f26: 7003 moveq #3,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
58f28: 94b9 0007 eb96 subl 7eb96 <_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;
58f2e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58f32: 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();
58f36: 2742 001c movel %d2,%a3@(28) <== NOT EXECUTED
58f3a: 2740 0030 movel %d0,%a3@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58f3e: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58f42: 2743 002c movel %d3,%a3@(44) <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58f46: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58f48: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58f4a: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
58f4e: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58f50: 4eb9 0005 c49a jsr 5c49a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58f56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58f5a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f5c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f62: 4e5e unlk %fp <== NOT EXECUTED
58f64: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
58f66: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f68: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f6e: 4e5e unlk %fp <== NOT EXECUTED
58f70: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58f72: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f74: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f7a: 4e5e unlk %fp <== NOT EXECUTED
58f7c: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58f7e: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f80: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f86: 4e5e unlk %fp <== NOT EXECUTED
58f88: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58f8a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58f8c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f92: 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 fb20 movel 5fb20 <rtems_panic_in_progress>,%d1 <== NOT EXECUTED
4296c: 2001 movel %d1,%d0 <== NOT EXECUTED
4296e: 5280 addql #1,%d0 <== NOT EXECUTED
42970: 23c0 0005 fb20 movel %d0,5fb20 <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 fc78 movel 5fc78 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
42980: 5280 addql #1,%d0 <== NOT EXECUTED
42982: 23c0 0005 fc78 movel %d0,5fc78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
RTEMS_COMPILER_MEMORY_BARRIER();
42988: 2039 0005 fb20 movel 5fb20 <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 e5f8 moveal 5e5f8 <_impure_ptr>,%a0 <== NOT EXECUTED
4299c: 45f9 0004 ec4e lea 4ec4e <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 f076 lea 4f076 <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 e5f8 moveal 5e5f8 <_impure_ptr>,%a0 <== NOT EXECUTED
429d0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
429d4: 4eb9 0005 5474 jsr 55474 <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 f90c lea 4f90c <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 cf0a pea 5cf0a <IMFS_ops+0x6a> <== NOT EXECUTED
42a08: 2079 0005 e5f8 moveal 5e5f8 <_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 d39a pea 5d39a <rtems_status_assoc+0x19e> <== NOT EXECUTED
42a20: 2079 0005 e5f8 moveal 5e5f8 <_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 e5f8 moveal 5e5f8 <_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 e5f8 moveal 5e5f8 <_impure_ptr>,%a0 <== NOT EXECUTED
42a66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a68: 4879 0005 ceef pea 5ceef <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 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
42a88: 47f9 0004 f076 lea 4f076 <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 e5f8 moveal 5e5f8 <_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 5474 jsr 55474 <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 e5f8 moveal 5e5f8 <_impure_ptr>,%a0 <== NOT EXECUTED
42ac2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42ac4: 4879 0005 cefd pea 5cefd <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 d39a pea 5d39a <rtems_status_assoc+0x19e> <== NOT EXECUTED
42adc: 2079 0005 e5f8 moveal 5e5f8 <_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 e5f8 moveal 5e5f8 <_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
000470d0 <rtems_workspace_allocate>:
*/
bool rtems_workspace_allocate(
uintptr_t bytes,
void **pointer
)
{
470d0: 4e56 0000 linkw %fp,#0
470d4: 202e 0008 movel %fp@(8),%d0
470d8: 2f0a movel %a2,%sp@-
470da: 246e 000c moveal %fp@(12),%a2
void *ptr;
/*
* check the arguments
*/
if ( !pointer )
470de: 4a8a tstl %a2
470e0: 6704 beqs 470e6 <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
if ( !bytes )
470e2: 4a80 tstl %d0
470e4: 660a bnes 470f0 <rtems_workspace_allocate+0x20> <== ALWAYS TAKEN
if (!ptr)
return false;
*pointer = ptr;
return true;
}
470e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
470ea: 4e5e unlk %fp <== NOT EXECUTED
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
470ec: 4200 clrb %d0 <== NOT EXECUTED
*pointer = ptr;
return true;
}
470ee: 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 );
470f0: 42a7 clrl %sp@-
470f2: 42a7 clrl %sp@-
470f4: 2f00 movel %d0,%sp@-
470f6: 4879 0006 0726 pea 60726 <_Workspace_Area>
470fc: 4eb9 0004 87f4 jsr 487f4 <_Protected_heap_Allocate_aligned_with_boundary>
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
47102: 4fef 0010 lea %sp@(16),%sp
47106: 4a80 tstl %d0
47108: 67dc beqs 470e6 <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
*pointer = ptr;
4710a: 2480 movel %d0,%a2@
return true;
}
4710c: 246e fffc moveal %fp@(-4),%a2
47110: 4e5e unlk %fp
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
*pointer = ptr;
return true;
47112: 7001 moveq #1,%d0 <== NOT EXECUTED
}
00047116 <rtems_workspace_free>:
* _Workspace_Allocate
*/
bool rtems_workspace_free(
void *pointer
)
{
47116: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Protected_heap_Free( &_Workspace_Area, pointer );
4711a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4711e: 4879 0006 0726 pea 60726 <_Workspace_Area> <== NOT EXECUTED
47124: 4eb9 0004 8834 jsr 48834 <_Protected_heap_Free> <== NOT EXECUTED
}
4712a: 4e5e unlk %fp <== NOT EXECUTED
...
000470ac <rtems_workspace_get_information>:
#include <string.h> /* for memset */
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
470ac: 4e56 0000 linkw %fp,#0
470b0: 202e 0008 movel %fp@(8),%d0
if ( !the_info )
470b4: 6714 beqs 470ca <rtems_workspace_get_information+0x1e><== NEVER TAKEN
return false;
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
470b6: 2f00 movel %d0,%sp@-
470b8: 4879 0006 0726 pea 60726 <_Workspace_Area>
470be: 4eb9 0004 886c jsr 4886c <_Protected_heap_Get_information>
470c4: 508f addql #8,%sp
}
470c6: 4e5e unlk %fp
470c8: 4e75 rts
470ca: 4e5e unlk %fp <== NOT EXECUTED
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
if ( !the_info )
return false;
470cc: 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 0e2c lea 50e2c <__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 00b4 moveal 600b4 <__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 00b8 movel 600b8 <_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 0e2c lea 50e2c <__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 00b8 movel 600b8 <_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
00046f90 <sched_get_priority_max>:
int sched_get_priority_max(
int policy
)
{
switch ( policy ) {
46f90: 7004 moveq #4,%d0 <== NOT EXECUTED
#include <rtems/posix/priority.h>
int sched_get_priority_max(
int policy
)
{
46f92: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46f96: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
switch ( policy ) {
46f9a: b081 cmpl %d1,%d0 <== NOT EXECUTED
46f9c: 6412 bccs 46fb0 <sched_get_priority_max+0x20> <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46f9e: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED
46fa4: 7216 moveq #22,%d1 <== NOT EXECUTED
46fa6: 2040 moveal %d0,%a0 <== NOT EXECUTED
46fa8: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
}
46faa: 4e5e unlk %fp <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46fac: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
}
46fae: 4e75 rts <== NOT EXECUTED
int sched_get_priority_max(
int policy
)
{
switch ( policy ) {
46fb0: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
46fb4: e3a8 lsll %d1,%d0 <== NOT EXECUTED
46fb6: 7217 moveq #23,%d1 <== NOT EXECUTED
46fb8: c081 andl %d1,%d0 <== NOT EXECUTED
46fba: 67e2 beqs 46f9e <sched_get_priority_max+0xe> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
46fbc: 4280 clrl %d0 <== NOT EXECUTED
46fbe: 1039 0005 f846 moveb 5f846 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
}
46fc4: 4e5e unlk %fp <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
46fc6: 5380 subql #1,%d0 <== NOT EXECUTED
}
...
00046fcc <sched_get_priority_min>:
int sched_get_priority_min(
int policy
)
{
switch ( policy ) {
46fcc: 7004 moveq #4,%d0 <== NOT EXECUTED
#include <rtems/posix/priority.h>
int sched_get_priority_min(
int policy
)
{
46fce: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46fd2: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
switch ( policy ) {
46fd6: b081 cmpl %d1,%d0 <== NOT EXECUTED
46fd8: 6412 bccs 46fec <sched_get_priority_min+0x20> <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46fda: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED
46fe0: 7216 moveq #22,%d1 <== NOT EXECUTED
46fe2: 2040 moveal %d0,%a0 <== NOT EXECUTED
46fe4: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
}
46fe6: 4e5e unlk %fp <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
46fe8: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
}
46fea: 4e75 rts <== NOT EXECUTED
int sched_get_priority_min(
int policy
)
{
switch ( policy ) {
46fec: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
46ff0: e3a8 lsll %d1,%d0 <== NOT EXECUTED
46ff2: 7217 moveq #23,%d1 <== NOT EXECUTED
46ff4: c081 andl %d1,%d0 <== NOT EXECUTED
46ff6: 67e2 beqs 46fda <sched_get_priority_min+0xe> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
46ff8: 7001 moveq #1,%d0 <== NOT EXECUTED
}
46ffa: 4e5e unlk %fp <== NOT EXECUTED
...
000462cc <sched_getparam>:
int sched_getparam(
pid_t pid __attribute__((unused)),
struct sched_param *param __attribute__((unused))
)
{
462cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
462d0: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
462d6: 7258 moveq #88,%d1 <== NOT EXECUTED
462d8: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
462da: 70ff moveq #-1,%d0 <== NOT EXECUTED
462dc: 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 );
462de: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000462e4 <sched_getscheduler>:
#include <rtems/posix/time.h>
int sched_getscheduler(
pid_t pid __attribute__((unused))
)
{
462e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
462e8: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
462ee: 7258 moveq #88,%d1 <== NOT EXECUTED
462f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
462f2: 70ff moveq #-1,%d0 <== NOT EXECUTED
462f4: 4e5e unlk %fp <== NOT EXECUTED
int sched_getscheduler(
pid_t pid __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
462f6: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00047000 <sched_rr_get_interval>:
int sched_rr_get_interval(
pid_t pid,
struct timespec *interval
)
{
47000: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47004: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47006: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4700a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4700c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid && pid != getpid() )
47010: 4a83 tstl %d3 <== NOT EXECUTED
47012: 6622 bnes 47036 <sched_rr_get_interval+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
if ( !interval )
47014: 4a82 tstl %d2 <== NOT EXECUTED
47016: 6742 beqs 4705a <sched_rr_get_interval+0x5a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
47018: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4701a: 2f39 0006 1080 movel 61080 <_Thread_Ticks_per_timeslice>,%sp@-<== NOT EXECUTED
47020: 4eb9 0004 a920 jsr 4a920 <_Timespec_From_ticks> <== NOT EXECUTED
return 0;
}
47026: 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;
4702a: 508f addql #8,%sp <== NOT EXECUTED
4702c: 4280 clrl %d0 <== NOT EXECUTED
}
4702e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
47032: 4e5e unlk %fp <== NOT EXECUTED
47034: 4e75 rts <== NOT EXECUTED
{
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid && pid != getpid() )
47036: 4eb9 0004 36ac jsr 436ac <getpid> <== NOT EXECUTED
4703c: b680 cmpl %d0,%d3 <== NOT EXECUTED
4703e: 67d4 beqs 47014 <sched_rr_get_interval+0x14> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
47040: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED
47046: 7403 moveq #3,%d2 <== NOT EXECUTED
47048: 2040 moveal %d0,%a0 <== NOT EXECUTED
4704a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4704c: 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;
}
4704e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47052: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
47056: 4e5e unlk %fp <== NOT EXECUTED
47058: 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 );
4705a: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
47060: 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 );
47064: 2040 moveal %d0,%a0 <== NOT EXECUTED
47066: 7216 moveq #22,%d1 <== NOT EXECUTED
47068: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
4706a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4706e: 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 );
47070: 2081 movel %d1,%a0@ <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
return 0;
}
000462fc <sched_setparam>:
int sched_setparam(
pid_t pid __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
462fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46300: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
46306: 7258 moveq #88,%d1 <== NOT EXECUTED
46308: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4630a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4630c: 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 );
4630e: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00046314 <sched_setscheduler>:
int sched_setscheduler(
pid_t pid __attribute__((unused)),
int policy __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
46314: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46318: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
4631e: 7258 moveq #88,%d1 <== NOT EXECUTED
46320: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46322: 70ff moveq #-1,%d0 <== NOT EXECUTED
46324: 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 );
46326: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00047074 <sched_yield>:
#include <rtems/seterr.h>
#include <rtems/posix/priority.h>
#include <rtems/posix/time.h>
int sched_yield( void )
{
47074: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47078: 2039 0006 10c8 movel 610c8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4707e: 5280 addql #1,%d0 <== NOT EXECUTED
47080: 23c0 0006 10c8 movel %d0,610c8 <_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 );
47086: 4879 0006 114e pea 6114e <_Scheduler> <== NOT EXECUTED
4708c: 2079 0006 1156 moveal 61156 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
47092: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
47094: 4eb9 0004 9cea jsr 49cea <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
4709a: 4280 clrl %d0 <== NOT EXECUTED
4709c: 4e5e unlk %fp <== NOT EXECUTED
00049158 <sem_close>:
*/
int sem_close(
sem_t *sem
)
{
49158: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4915c: 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 );
49160: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49164: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
49166: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4916c: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
49172: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49176: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4917a: 6712 beqs 4918e <sem_close+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4917c: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
49182: 7216 moveq #22,%d1 <== NOT EXECUTED
49184: 2040 moveal %d0,%a0 <== NOT EXECUTED
49186: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49188: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4918a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4918c: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
the_semaphore->open_count -= 1;
4918e: 2040 moveal %d0,%a0 <== NOT EXECUTED
49190: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED
_POSIX_Semaphore_Delete( the_semaphore );
49194: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49196: 4eb9 0004 fc5c jsr 4fc5c <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
4919c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
491a2: 588f addql #4,%sp <== NOT EXECUTED
491a4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
491a6: 4e5e unlk %fp <== NOT EXECUTED
...
000491ac <sem_destroy>:
*/
int sem_destroy(
sem_t *sem
)
{
491ac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
491b0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
491b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
491b8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
491ba: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
491c0: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
491c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
491ca: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
491ce: 6712 beqs 491e2 <sem_destroy+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
491d0: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
491d6: 7216 moveq #22,%d1 <== NOT EXECUTED
491d8: 2040 moveal %d0,%a0 <== NOT EXECUTED
491da: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
491dc: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
491de: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
491e0: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Undefined operation on a named semaphore.
*/
if ( the_semaphore->named == true ) {
491e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
491e4: 4a28 0014 tstb %a0@(20) <== NOT EXECUTED
491e8: 6616 bnes 49200 <sem_destroy+0x54> <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EINVAL );
}
_POSIX_Semaphore_Delete( the_semaphore );
491ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
491ec: 4eb9 0004 fc5c jsr 4fc5c <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
491f2: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
491f8: 588f addql #4,%sp <== NOT EXECUTED
491fa: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
491fc: 4e5e unlk %fp <== NOT EXECUTED
491fe: 4e75 rts <== NOT EXECUTED
/*
* Undefined operation on a named semaphore.
*/
if ( the_semaphore->named == true ) {
_Thread_Enable_dispatch();
49200: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49206: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
4920c: 7216 moveq #22,%d1 <== NOT EXECUTED
4920e: 2040 moveal %d0,%a0 <== NOT EXECUTED
49210: 70ff moveq #-1,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
49212: 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 );
49214: 2081 movel %d1,%a0@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
00049218 <sem_getvalue>:
int sem_getvalue(
sem_t *sem,
int *sval
)
{
49218: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4921c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
49220: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49224: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
49226: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4922c: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
49232: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49236: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4923a: 6712 beqs 4924e <sem_getvalue+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4923c: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
49242: 7216 moveq #22,%d1 <== NOT EXECUTED
49244: 2040 moveal %d0,%a0 <== NOT EXECUTED
49246: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49248: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4924a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4924c: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
*sval = _CORE_semaphore_Get_count( &the_semaphore->Semaphore );
4924e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
49252: 2240 moveal %d0,%a1 <== NOT EXECUTED
49254: 20a9 0062 movel %a1@(98),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49258: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4925e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
49260: 4e5e unlk %fp <== NOT EXECUTED
00049264 <sem_init>:
int sem_init(
sem_t *sem,
int pshared,
unsigned int value
)
{
49264: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
49268: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4926a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
4926e: 4a8a tstl %a2 <== NOT EXECUTED
49270: 672e beqs 492a0 <sem_init+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
status = _POSIX_Semaphore_Create_support(
49272: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49276: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4927a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4927e: 42a7 clrl %sp@- <== NOT EXECUTED
49280: 4eb9 0004 fafc jsr 4fafc <_POSIX_Semaphore_Create_support> <== NOT EXECUTED
pshared,
value,
&the_semaphore
);
if ( status != -1 )
49286: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4928a: 72ff moveq #-1,%d1 <== NOT EXECUTED
4928c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4928e: 6708 beqs 49298 <sem_init+0x34> <== NOT EXECUTED
*sem = the_semaphore->Object.id;
49290: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
49294: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return status;
}
49298: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4929c: 4e5e unlk %fp <== NOT EXECUTED
4929e: 4e75 rts <== NOT EXECUTED
{
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
rtems_set_errno_and_return_minus_one( EINVAL );
492a0: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
if ( status != -1 )
*sem = the_semaphore->Object.id;
return status;
}
492a6: 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 );
492aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
492ac: 7216 moveq #22,%d1 <== NOT EXECUTED
492ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( status != -1 )
*sem = the_semaphore->Object.id;
return status;
}
492b0: 4e5e unlk %fp <== NOT EXECUTED
{
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
rtems_set_errno_and_return_minus_one( EINVAL );
492b2: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( status != -1 )
*sem = the_semaphore->Object.id;
return status;
}
...
000492b8 <sem_open>:
int oflag,
...
/* mode_t mode, */
/* unsigned int value */
)
{
492b8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
492bc: 2039 0006 4f74 movel 64f74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
492c2: 5280 addql #1,%d0 <== NOT EXECUTED
492c4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
492c8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED
492cc: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
492d0: 23c0 0006 4f74 movel %d0,64f74 <_Thread_Dispatch_disable_level><== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
492d6: 2803 movel %d3,%d4 <== NOT EXECUTED
492d8: 0284 0000 0200 andil #512,%d4 <== NOT EXECUTED
492de: 6600 0086 bnew 49366 <sem_open+0xae> <== NOT EXECUTED
/* unsigned int value */
)
{
va_list arg;
mode_t mode;
unsigned int value = 0;
492e2: 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 );
492e4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
492e8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
492ea: 4eb9 0004 fcb4 jsr 4fcb4 <_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 ) {
492f0: 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 );
492f2: 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 ) {
492f4: 6726 beqs 4931c <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) ) ) {
492f6: 7002 moveq #2,%d0 <== NOT EXECUTED
492f8: b082 cmpl %d2,%d0 <== NOT EXECUTED
492fa: 6604 bnes 49300 <sem_open+0x48> <== NOT EXECUTED
492fc: 4a84 tstl %d4 <== NOT EXECUTED
492fe: 666e bnes 4936e <sem_open+0xb6> <== NOT EXECUTED
_Thread_Enable_dispatch();
49300: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, sem_t * );
49306: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
4930c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4930e: 70ff moveq #-1,%d0 <== NOT EXECUTED
49310: 2082 movel %d2,%a0@ <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
49312: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
49318: 4e5e unlk %fp <== NOT EXECUTED
4931a: 4e75 rts <== NOT EXECUTED
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
4931c: 0283 0000 0a00 andil #2560,%d3 <== NOT EXECUTED
49322: 0c83 0000 0a00 cmpil #2560,%d3 <== NOT EXECUTED
49328: 6772 beqs 4939c <sem_open+0xe4> <== NOT EXECUTED
4932a: 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();
4932e: 45f9 0004 c0fe lea 4c0fe <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED
49334: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
49338: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4933e: 4eb9 0004 b544 jsr 4b544 <_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;
49344: 2040 moveal %d0,%a0 <== NOT EXECUTED
49346: 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 );
4934a: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
the_semaphore->open_count += 1;
_Thread_Enable_dispatch();
4934e: 4e92 jsr %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49350: 4e92 jsr %a2@ <== NOT EXECUTED
goto return_id;
49352: 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;
49356: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4935a: 5080 addql #8,%d0 <== NOT EXECUTED
#endif
return id;
}
4935c: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
49362: 4e5e unlk %fp <== NOT EXECUTED
49364: 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 );
49366: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
4936a: 6000 ff78 braw 492e4 <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(
4936e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
49372: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49374: 42a7 clrl %sp@- <== NOT EXECUTED
49376: 2f05 movel %d5,%sp@- <== NOT EXECUTED
49378: 4eb9 0004 fafc jsr 4fafc <_POSIX_Semaphore_Create_support> <== NOT EXECUTED
4937e: 2400 movel %d0,%d2 <== NOT EXECUTED
/*
* errno was set by Create_support, so don't set it again.
*/
_Thread_Enable_dispatch();
49380: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( status == -1 )
49386: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4938a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4938c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4938e: 66c6 bnes 49356 <sem_open+0x9e> <== NOT EXECUTED
return SEM_FAILED;
49390: 70ff moveq #-1,%d0 <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
49392: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
49398: 4e5e unlk %fp <== NOT EXECUTED
4939a: 4e75 rts <== NOT EXECUTED
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_Thread_Enable_dispatch();
4939c: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
493a2: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
493a8: 7211 moveq #17,%d1 <== NOT EXECUTED
493aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
493ac: 70ff moveq #-1,%d0 <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
493ae: 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 * );
493b4: 2081 movel %d1,%a0@ <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
493b6: 4e5e unlk %fp <== NOT EXECUTED
...
000493bc <sem_post>:
*/
int sem_post(
sem_t *sem
)
{
493bc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
493c0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
493c4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
493c8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
493ca: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
493d0: 4eb9 0004 b544 jsr 4b544 <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
493d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
493da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
493de: 6712 beqs 493f2 <sem_post+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
493e0: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
493e6: 7216 moveq #22,%d1 <== NOT EXECUTED
493e8: 2040 moveal %d0,%a0 <== NOT EXECUTED
493ea: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
493ec: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
493ee: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
493f0: 4e75 rts <== NOT EXECUTED
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_CORE_semaphore_Surrender(
493f2: 2040 moveal %d0,%a0 <== NOT EXECUTED
493f4: 42a7 clrl %sp@- <== NOT EXECUTED
493f6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
493fa: 4868 001a pea %a0@(26) <== NOT EXECUTED
493fe: 4eb9 0004 aab0 jsr 4aab0 <_CORE_semaphore_Surrender> <== NOT EXECUTED
NULL /* XXX need to define a routine to handle this case */
#else
NULL
#endif
);
_Thread_Enable_dispatch();
49404: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4940a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4940e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
49410: 4e5e unlk %fp <== NOT EXECUTED
00049414 <sem_timedwait>:
int sem_timedwait(
sem_t *sem,
const struct timespec *abstime
)
{
49414: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
49418: 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 );
4941a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4941e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
int sem_timedwait(
sem_t *sem,
const struct timespec *abstime
)
{
49422: 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 );
49426: 4eb9 0004 ef14 jsr 4ef14 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
4942c: 508f addql #8,%sp <== NOT EXECUTED
4942e: 7203 moveq #3,%d1 <== NOT EXECUTED
49430: b280 cmpl %d0,%d1 <== NOT EXECUTED
49432: 671a beqs 4944e <sem_timedwait+0x3a> <== NOT EXECUTED
do_wait = false;
lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks );
49434: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
49438: 42a7 clrl %sp@- <== NOT EXECUTED
4943a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4943c: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
49442: 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 );
49446: 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;
}
4944a: 4e5e unlk %fp <== NOT EXECUTED
4944c: 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 );
4944e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
49452: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49456: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49458: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
4945e: 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 );
49462: 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;
}
49466: 4e5e unlk %fp <== NOT EXECUTED
...
0004946c <sem_trywait>:
*/
int sem_trywait(
sem_t *sem
)
{
4946c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Semaphore_Wait_support(sem, false, THREAD_QUEUE_WAIT_FOREVER);
49470: 42a7 clrl %sp@- <== NOT EXECUTED
49472: 42a7 clrl %sp@- <== NOT EXECUTED
49474: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49478: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
}
4947e: 4e5e unlk %fp <== NOT EXECUTED
...
00049484 <sem_unlink>:
*/
int sem_unlink(
const char *name
)
{
49484: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
49488: 2039 0006 4f74 movel 64f74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4948e: 5280 addql #1,%d0 <== NOT EXECUTED
49490: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49492: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49494: 23c0 0006 4f74 movel %d0,64f74 <_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 );
4949a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4949e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
494a2: 4eb9 0004 fcb4 jsr 4fcb4 <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED
if ( status != 0 ) {
494a8: 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 );
494aa: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != 0 ) {
494ac: 6644 bnes 494f2 <sem_unlink+0x6e> <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
494ae: 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(
494b0: 2079 0006 51c2 moveal 651c2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
494b6: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED
494ba: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED
&_POSIX_Semaphore_Information,
_Objects_Get_index( the_semaphore_id )
);
the_semaphore->linked = false;
494be: 4200 clrb %d0 <== NOT EXECUTED
494c0: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove (
POSIX_Semaphore_Control *the_semaphore
)
{
_Objects_Namespace_remove(
494c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
494c6: 4879 0006 51aa pea 651aa <_POSIX_Semaphore_Information> <== NOT EXECUTED
494cc: 4eb9 0004 b6c4 jsr 4b6c4 <_Objects_Namespace_remove> <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
494d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
494d4: 4eb9 0004 fc5c jsr 4fc5c <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
494da: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
494e0: 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;
494e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
494e8: 4280 clrl %d0 <== NOT EXECUTED
}
494ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
494ee: 4e5e unlk %fp <== NOT EXECUTED
494f0: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
if ( status != 0 ) {
_Thread_Enable_dispatch();
494f2: 4eb9 0004 c0fe jsr 4c0fe <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
494f8: 4eb9 0005 2ae4 jsr 52ae4 <__errno> <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
_Thread_Enable_dispatch();
return 0;
}
494fe: 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 );
49502: 2040 moveal %d0,%a0 <== NOT EXECUTED
49504: 70ff moveq #-1,%d0 <== NOT EXECUTED
49506: 2082 movel %d2,%a0@ <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
_Thread_Enable_dispatch();
return 0;
}
49508: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4950c: 4e5e unlk %fp <== NOT EXECUTED
00049510 <sem_wait>:
*/
int sem_wait(
sem_t *sem
)
{
49510: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Semaphore_Wait_support( sem, true, THREAD_QUEUE_WAIT_FOREVER );
49514: 42a7 clrl %sp@- <== NOT EXECUTED
49516: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4951a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4951e: 4eb9 0004 fd28 jsr 4fd28 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
}
49524: 4e5e unlk %fp <== NOT EXECUTED
00045e64 <seteuid>:
int seteuid( uid_t euid )
{
_POSIX_types_Euid = euid;
return 0;
}
45e64: 4280 clrl %d0 <== NOT EXECUTED
#include <unistd.h>
#include <rtems/userenv.h>
int seteuid( uid_t euid )
{
45e66: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Euid = euid;
45e6a: 2079 0006 0f00 moveal 60f00 <rtems_current_user_env>,%a0 <== NOT EXECUTED
45e70: 316e 000a 0036 movew %fp@(10),%a0@(54) <== NOT EXECUTED
return 0;
}
45e76: 4e5e unlk %fp <== NOT EXECUTED
...
00044b40 <setgid>:
gid_t gid
)
{
_POSIX_types_Gid = gid;
return 0;
}
44b40: 4280 clrl %d0 <== NOT EXECUTED
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setgid(
gid_t gid
)
{
44b42: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Gid = gid;
44b46: 2079 0005 fff0 moveal 5fff0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
44b4c: 316e 000a 0034 movew %fp@(10),%a0@(52) <== NOT EXECUTED
return 0;
}
44b52: 4e5e unlk %fp <== NOT EXECUTED
...
00043ca0 <setgrent>:
void setgrent(void)
{
43ca0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
init_etc_passwd_group();
43ca4: 4eb9 0004 37aa jsr 437aa <init_etc_passwd_group> <== NOT EXECUTED
if (group_fp != NULL)
43caa: 2039 0006 0df0 movel 60df0 <group_fp>,%d0 <== NOT EXECUTED
43cb0: 670a beqs 43cbc <setgrent+0x1c> <== NOT EXECUTED
fclose(group_fp);
43cb2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43cb4: 4eb9 0004 f922 jsr 4f922 <fclose> <== NOT EXECUTED
43cba: 588f addql #4,%sp <== NOT EXECUTED
group_fp = fopen("/etc/group", "r");
43cbc: 4879 0005 f687 pea 5f687 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43cc2: 4879 0005 ee18 pea 5ee18 <rtems_status_assoc+0x21a> <== NOT EXECUTED
43cc8: 4eb9 0005 0020 jsr 50020 <fopen> <== NOT EXECUTED
43cce: 508f addql #8,%sp <== NOT EXECUTED
}
43cd0: 4e5e unlk %fp <== NOT EXECUTED
{
init_etc_passwd_group();
if (group_fp != NULL)
fclose(group_fp);
group_fp = fopen("/etc/group", "r");
43cd2: 23c0 0006 0df0 movel %d0,60df0 <group_fp> <== NOT EXECUTED
}
000461c4 <setitimer>:
int setitimer(
int which,
const struct itimerval *value,
struct itimerval *ovalue
)
{
461c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !value )
461c8: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
461cc: 6732 beqs 46200 <setitimer+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
if ( !ovalue )
461ce: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
461d2: 672c beqs 46200 <setitimer+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
switch ( which ) {
461d4: 7002 moveq #2,%d0 <== NOT EXECUTED
461d6: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
461da: 6412 bccs 461ee <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 );
461dc: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED
}
461e2: 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 );
461e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
461e6: 7016 moveq #22,%d0 <== NOT EXECUTED
461e8: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
461ea: 70ff moveq #-1,%d0 <== NOT EXECUTED
461ec: 4e75 rts <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
461ee: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED
461f4: 7258 moveq #88,%d1 <== NOT EXECUTED
461f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
461f8: 70ff moveq #-1,%d0 <== NOT EXECUTED
461fa: 4e5e unlk %fp <== NOT EXECUTED
switch ( which ) {
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
461fc: 2081 movel %d1,%a0@ <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
461fe: 4e75 rts <== NOT EXECUTED
{
if ( !value )
rtems_set_errno_and_return_minus_one( EFAULT );
if ( !ovalue )
rtems_set_errno_and_return_minus_one( EFAULT );
46200: 4eb9 0004 f138 jsr 4f138 <__errno> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46206: 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 );
46208: 2040 moveal %d0,%a0 <== NOT EXECUTED
4620a: 700e moveq #14,%d0 <== NOT EXECUTED
4620c: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4620e: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00044b58 <setpgid>:
int setpgid(
pid_t pid __attribute__((unused)),
pid_t pgid __attribute__((unused))
)
{
44b58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
44b5c: 4eb9 0004 f7d4 jsr 4f7d4 <__errno> <== NOT EXECUTED
44b62: 7258 moveq #88,%d1 <== NOT EXECUTED
44b64: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
44b66: 70ff moveq #-1,%d0 <== NOT EXECUTED
44b68: 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 );
44b6a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00043b54 <setpwent>:
void setpwent(void)
{
43b54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
init_etc_passwd_group();
43b58: 4eb9 0004 37aa jsr 437aa <init_etc_passwd_group> <== NOT EXECUTED
if (passwd_fp != NULL)
43b5e: 2039 0006 0eca movel 60eca <passwd_fp>,%d0 <== NOT EXECUTED
43b64: 670a beqs 43b70 <setpwent+0x1c> <== NOT EXECUTED
fclose(passwd_fp);
43b66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43b68: 4eb9 0004 f922 jsr 4f922 <fclose> <== NOT EXECUTED
43b6e: 588f addql #4,%sp <== NOT EXECUTED
passwd_fp = fopen("/etc/passwd", "r");
43b70: 4879 0005 f687 pea 5f687 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43b76: 4879 0005 eda3 pea 5eda3 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
43b7c: 4eb9 0005 0020 jsr 50020 <fopen> <== NOT EXECUTED
43b82: 508f addql #8,%sp <== NOT EXECUTED
}
43b84: 4e5e unlk %fp <== NOT EXECUTED
{
init_etc_passwd_group();
if (passwd_fp != NULL)
fclose(passwd_fp);
passwd_fp = fopen("/etc/passwd", "r");
43b86: 23c0 0006 0eca movel %d0,60eca <passwd_fp> <== NOT EXECUTED
}
00044b70 <setsid>:
*
* 4.3.2 Create Session and Set Process Group ID, P1003.1b-1993, p. 88
*/
pid_t setsid( void )
{
44b70: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
44b74: 4eb9 0004 f7d4 jsr 4f7d4 <__errno> <== NOT EXECUTED
44b7a: 7201 moveq #1,%d1 <== NOT EXECUTED
44b7c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
44b7e: 70ff moveq #-1,%d0 <== NOT EXECUTED
44b80: 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 );
44b82: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00044b88 <setuid>:
uid_t uid
)
{
_POSIX_types_Uid = uid;
return 0;
}
44b88: 4280 clrl %d0 <== NOT EXECUTED
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setuid(
uid_t uid
)
{
44b8a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Uid = uid;
44b8e: 2079 0005 fff0 moveal 5fff0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
44b94: 316e 000a 0032 movew %fp@(10),%a0@(50) <== NOT EXECUTED
return 0;
}
44b9a: 4e5e unlk %fp <== NOT EXECUTED
...
00046d90 <sigaction>:
int sigaction(
int sig,
const struct sigaction *act,
struct sigaction *oact
)
{
46d90: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
46d94: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
46d98: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
46d9c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
46da0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
if ( oact )
46da4: 4a89 tstl %a1 <== NOT EXECUTED
46da6: 6718 beqs 46dc0 <sigaction+0x30> <== NOT EXECUTED
*oact = _POSIX_signals_Vectors[ sig ];
46da8: 2202 movel %d2,%d1 <== NOT EXECUTED
46daa: 2002 movel %d2,%d0 <== NOT EXECUTED
46dac: e989 lsll #4,%d1 <== NOT EXECUTED
46dae: e588 lsll #2,%d0 <== NOT EXECUTED
46db0: 2041 moveal %d1,%a0 <== NOT EXECUTED
46db2: 91c0 subal %d0,%a0 <== NOT EXECUTED
46db4: d1fc 0006 2174 addal #401780,%a0 <== NOT EXECUTED
46dba: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED
46dbc: 22d8 movel %a0@+,%a1@+ <== NOT EXECUTED
46dbe: 2290 movel %a0@,%a1@ <== NOT EXECUTED
if ( !sig )
46dc0: 4a82 tstl %d2 <== NOT EXECUTED
46dc2: 6700 0088 beqw 46e4c <sigaction+0xbc> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
46dc6: 2002 movel %d2,%d0 <== NOT EXECUTED
46dc8: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
46dca: 721f moveq #31,%d1 <== NOT EXECUTED
46dcc: b280 cmpl %d0,%d1 <== NOT EXECUTED
46dce: 657c bcss 46e4c <sigaction+0xbc> <== NOT EXECUTED
*
* NOTE: Solaris documentation claims to "silently enforce" this which
* contradicts the POSIX specification.
*/
if ( sig == SIGKILL )
46dd0: 7009 moveq #9,%d0 <== NOT EXECUTED
46dd2: b082 cmpl %d2,%d0 <== NOT EXECUTED
46dd4: 6776 beqs 46e4c <sigaction+0xbc> <== NOT EXECUTED
/*
* Evaluate the new action structure and set the global signal vector
* appropriately.
*/
if ( act ) {
46dd6: 4a8a tstl %a2 <== NOT EXECUTED
46dd8: 6766 beqs 46e40 <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 );
46dda: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
46de0: 40c3 movew %sr,%d3 <== NOT EXECUTED
46de2: 8083 orl %d3,%d0 <== NOT EXECUTED
46de4: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( act->sa_handler == SIG_DFL ) {
46de6: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
46dea: 6730 beqs 46e1c <sigaction+0x8c> <== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
} else {
_POSIX_signals_Clear_process_signals( sig );
46dec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46dee: 4eb9 0004 cb84 jsr 4cb84 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = *act;
46df4: 588f addql #4,%sp <== NOT EXECUTED
46df6: 2002 movel %d2,%d0 <== NOT EXECUTED
46df8: 224a moveal %a2,%a1 <== NOT EXECUTED
46dfa: e98a lsll #4,%d2 <== NOT EXECUTED
46dfc: e588 lsll #2,%d0 <== NOT EXECUTED
46dfe: 2042 moveal %d2,%a0 <== NOT EXECUTED
46e00: 91c0 subal %d0,%a0 <== NOT EXECUTED
46e02: d1fc 0006 2174 addal #401780,%a0 <== NOT EXECUTED
46e08: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
46e0a: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
46e0c: 2091 movel %a1@,%a0@ <== NOT EXECUTED
}
_ISR_Enable( level );
46e0e: 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;
46e10: 4280 clrl %d0 <== NOT EXECUTED
}
46e12: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46e18: 4e5e unlk %fp <== NOT EXECUTED
46e1a: 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 ];
46e1c: 2002 movel %d2,%d0 <== NOT EXECUTED
46e1e: e98a lsll #4,%d2 <== NOT EXECUTED
46e20: e588 lsll #2,%d0 <== NOT EXECUTED
46e22: 9480 subl %d0,%d2 <== NOT EXECUTED
46e24: 2242 moveal %d2,%a1 <== NOT EXECUTED
46e26: 2042 moveal %d2,%a0 <== NOT EXECUTED
46e28: d3fc 0005 f6e2 addal #390882,%a1 <== NOT EXECUTED
46e2e: d1fc 0006 2174 addal #401780,%a0 <== NOT EXECUTED
46e34: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
46e36: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
46e38: 2091 movel %a1@,%a0@ <== NOT EXECUTED
} else {
_POSIX_signals_Clear_process_signals( sig );
_POSIX_signals_Vectors[ sig ] = *act;
}
_ISR_Enable( level );
46e3a: 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;
46e3c: 4280 clrl %d0 <== NOT EXECUTED
46e3e: 60d2 bras 46e12 <sigaction+0x82> <== NOT EXECUTED
46e40: 4280 clrl %d0 <== NOT EXECUTED
}
46e42: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46e48: 4e5e unlk %fp <== NOT EXECUTED
46e4a: 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 );
46e4c: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
46e52: 7216 moveq #22,%d1 <== NOT EXECUTED
46e54: 2040 moveal %d0,%a0 <== NOT EXECUTED
46e56: 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;
}
46e58: 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 );
46e5e: 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;
}
46e60: 4e5e unlk %fp <== NOT EXECUTED
00046e64 <sigaddset>:
int sigaddset(
sigset_t *set,
int signo
)
{
46e64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46e68: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46e6c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
46e70: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !set )
46e72: 4a88 tstl %a0 <== NOT EXECUTED
46e74: 671e beqs 46e94 <sigaddset+0x30> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
46e76: 4a80 tstl %d0 <== NOT EXECUTED
46e78: 671a beqs 46e94 <sigaddset+0x30> <== NOT EXECUTED
46e7a: 2400 movel %d0,%d2 <== NOT EXECUTED
46e7c: 5382 subql #1,%d2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
46e7e: 701f moveq #31,%d0 <== NOT EXECUTED
46e80: b082 cmpl %d2,%d0 <== NOT EXECUTED
46e82: 6510 bcss 46e94 <sigaddset+0x30> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
46e84: 7201 moveq #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set |= signo_to_mask(signo);
return 0;
46e86: 4280 clrl %d0 <== NOT EXECUTED
46e88: e5a9 lsll %d2,%d1 <== NOT EXECUTED
}
46e8a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
46e8e: 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);
46e90: 8390 orl %d1,%a0@ <== NOT EXECUTED
return 0;
}
46e92: 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 );
46e94: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
46e9a: 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 );
46e9e: 2040 moveal %d0,%a0 <== NOT EXECUTED
46ea0: 7216 moveq #22,%d1 <== NOT EXECUTED
46ea2: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
46ea4: 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 );
46ea6: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set |= signo_to_mask(signo);
return 0;
}
...
00049354 <sigdelset>:
int sigdelset(
sigset_t *set,
int signo
)
{
49354: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49358: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4935c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
49360: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !set )
49362: 4a88 tstl %a0 <== NOT EXECUTED
49364: 672a beqs 49390 <sigdelset+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
49366: 4a80 tstl %d0 <== NOT EXECUTED
49368: 671c beqs 49386 <sigdelset+0x32> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
4936a: 2400 movel %d0,%d2 <== NOT EXECUTED
4936c: 5382 subql #1,%d2 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
4936e: 701f moveq #31,%d0 <== NOT EXECUTED
49370: b082 cmpl %d2,%d0 <== NOT EXECUTED
49372: 651c bcss 49390 <sigdelset+0x3c> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
49374: 7201 moveq #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set &= ~signo_to_mask(signo);
return 0;
49376: 4280 clrl %d0 <== NOT EXECUTED
49378: e5a9 lsll %d2,%d1 <== NOT EXECUTED
}
4937a: 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);
4937e: 4681 notl %d1 <== NOT EXECUTED
return 0;
}
49380: 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);
49382: c390 andl %d1,%a0@ <== NOT EXECUTED
return 0;
}
49384: 4e75 rts <== NOT EXECUTED
49386: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
4938a: 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;
}
4938c: 4e5e unlk %fp <== NOT EXECUTED
4938e: 4e75 rts <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
49390: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
return 0;
}
49396: 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 );
4939a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4939c: 7216 moveq #22,%d1 <== NOT EXECUTED
4939e: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
return 0;
}
493a0: 4e5e unlk %fp <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
493a2: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
return 0;
}
...
0004bf28 <sigemptyset>:
#include <rtems/seterr.h>
int sigemptyset(
sigset_t *set
)
{
4bf28: 4e56 0000 linkw %fp,#0
4bf2c: 206e 0008 moveal %fp@(8),%a0
if ( !set )
4bf30: 4a88 tstl %a0
4bf32: 6708 beqs 4bf3c <sigemptyset+0x14> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
*set = 0;
return 0;
4bf34: 4280 clrl %d0
}
4bf36: 4e5e unlk %fp
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
*set = 0;
4bf38: 4290 clrl %a0@
return 0;
}
4bf3a: 4e75 rts
int sigemptyset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4bf3c: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
4bf42: 7216 moveq #22,%d1 <== NOT EXECUTED
4bf44: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bf46: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set = 0;
return 0;
}
4bf48: 4e5e unlk %fp <== NOT EXECUTED
int sigemptyset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4bf4a: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set = 0;
return 0;
}
...
000493d0 <sigfillset>:
#include <rtems/seterr.h>
int sigfillset(
sigset_t *set
)
{
493d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
493d4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !set )
493d8: 4a88 tstl %a0 <== NOT EXECUTED
493da: 670a beqs 493e6 <sigfillset+0x16> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
*set = SIGNAL_ALL_MASK;
493dc: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
493de: 4e5e unlk %fp <== NOT EXECUTED
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
*set = SIGNAL_ALL_MASK;
493e0: 2080 movel %d0,%a0@ <== NOT EXECUTED
return 0;
493e2: 4280 clrl %d0 <== NOT EXECUTED
}
493e4: 4e75 rts <== NOT EXECUTED
int sigfillset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
493e6: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED
493ec: 7216 moveq #22,%d1 <== NOT EXECUTED
493ee: 2040 moveal %d0,%a0 <== NOT EXECUTED
493f0: 70ff moveq #-1,%d0 <== NOT EXECUTED
*set = SIGNAL_ALL_MASK;
return 0;
}
493f2: 4e5e unlk %fp <== NOT EXECUTED
int sigfillset(
sigset_t *set
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
493f4: 2081 movel %d1,%a0@ <== NOT EXECUTED
*set = SIGNAL_ALL_MASK;
return 0;
}
000493f8 <sigismember>:
int sigismember(
const sigset_t *set,
int signo
)
{
493f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
493fc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
49400: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !set )
49404: 4a88 tstl %a0 <== NOT EXECUTED
49406: 6724 beqs 4942c <sigismember+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
49408: 4a80 tstl %d0 <== NOT EXECUTED
4940a: 671a beqs 49426 <sigismember+0x2e> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
4940c: 2200 movel %d0,%d1 <== NOT EXECUTED
4940e: 5381 subql #1,%d1 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
49410: 701f moveq #31,%d0 <== NOT EXECUTED
49412: b081 cmpl %d1,%d0 <== NOT EXECUTED
49414: 6516 bcss 4942c <sigismember+0x34> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
49416: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49418: 4e5e unlk %fp <== NOT EXECUTED
4941a: 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) )
4941c: c090 andl %a0@,%d0 <== NOT EXECUTED
const sigset_t *set,
int signo
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
4941e: 56c0 sne %d0 <== NOT EXECUTED
49420: 49c0 extbl %d0 <== NOT EXECUTED
49422: 4480 negl %d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49424: 4e75 rts <== NOT EXECUTED
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
49426: 4280 clrl %d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49428: 4e5e unlk %fp <== NOT EXECUTED
4942a: 4e75 rts <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
4942c: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED
49432: 7216 moveq #22,%d1 <== NOT EXECUTED
49434: 2040 moveal %d0,%a0 <== NOT EXECUTED
49436: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
49438: 4e5e unlk %fp <== NOT EXECUTED
if ( !signo )
return 0;
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
4943a: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
...
00046d0c <signal>:
sighandler_t signal(
int signum,
sighandler_t handler
)
{
46d0c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
struct sigaction s;
struct sigaction old;
s.sa_handler = handler ;
46d10: 2d6e 000c fffc movel %fp@(12),%fp@(-4) <== NOT EXECUTED
sigemptyset(&s.sa_mask);
46d16: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
46d1a: 4eb9 0004 6ce4 jsr 46ce4 <sigemptyset> <== NOT EXECUTED
s.sa_flags = SA_RESTART;
#else
s.sa_flags = 0;
#endif
sigaction( signum, &s, &old );
46d20: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED
46d24: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
46d28: 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;
46d2c: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
#endif
sigaction( signum, &s, &old );
46d30: 4eb9 0004 6bc8 jsr 46bc8 <sigaction> <== NOT EXECUTED
return (sighandler_t) old.sa_handler;
}
46d36: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
46d3a: 4e5e unlk %fp <== NOT EXECUTED
...
00046ed4 <sigpending>:
#include <rtems/seterr.h>
int sigpending(
sigset_t *set
)
{
46ed4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46ed8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set )
46edc: 4a88 tstl %a0 <== NOT EXECUTED
46ede: 671c beqs 46efc <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;
46ee0: 2279 0006 2142 moveal 62142 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
return 0;
46ee6: 4280 clrl %d0 <== NOT EXECUTED
}
46ee8: 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;
46eea: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED
46eee: 2239 0006 2368 movel 62368 <_POSIX_signals_Pending>,%d1 <== NOT EXECUTED
46ef4: 82a9 00d4 orl %a1@(212),%d1 <== NOT EXECUTED
46ef8: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
46efa: 4e75 rts <== NOT EXECUTED
)
{
POSIX_API_Control *api;
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
46efc: 4eb9 0004 fb60 jsr 4fb60 <__errno> <== NOT EXECUTED
46f02: 7216 moveq #22,%d1 <== NOT EXECUTED
46f04: 2040 moveal %d0,%a0 <== NOT EXECUTED
46f06: 70ff moveq #-1,%d0 <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
return 0;
}
46f08: 4e5e unlk %fp <== NOT EXECUTED
)
{
POSIX_API_Control *api;
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
46f0a: 2081 movel %d1,%a0@ <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
*set = api->signals_pending | _POSIX_signals_Pending;
return 0;
}
...
00046f10 <sigprocmask>:
int sigprocmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
46f10: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
return pthread_sigmask( how, set, oset );
#else
return -1;
#endif
}
46f14: 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 );
46f16: 4ef9 0004 d318 jmp 4d318 <pthread_sigmask> <== NOT EXECUTED
00049488 <sigqueue>:
int sigqueue(
pid_t pid,
int signo,
const union sigval value
)
{
49488: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, signo, &value );
4948c: 486e 0010 pea %fp@(16) <== NOT EXECUTED
49490: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49494: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49498: 4eb9 0004 f31c jsr 4f31c <killinfo> <== NOT EXECUTED
}
4949e: 4e5e unlk %fp <== NOT EXECUTED
...
000494a4 <sigsuspend>:
#include <rtems/seterr.h>
int sigsuspend(
const sigset_t *sigmask
)
{
494a4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
494a8: 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 );
494ac: 240e movel %fp,%d2 <== NOT EXECUTED
494ae: 5982 subql #4,%d2 <== NOT EXECUTED
494b0: 45f9 0004 947c lea 4947c <sigprocmask>,%a2 <== NOT EXECUTED
494b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#include <rtems/seterr.h>
int sigsuspend(
const sigset_t *sigmask
)
{
494b8: 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 );
494bc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
494be: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
494c2: 4e92 jsr %a2@ <== NOT EXECUTED
current_unblocked_signals = ~(*sigmask);
494c4: 2013 movel %a3@,%d0 <== NOT EXECUTED
494c6: 4680 notl %d0 <== NOT EXECUTED
status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL );
494c8: 42a7 clrl %sp@- <== NOT EXECUTED
494ca: 42a7 clrl %sp@- <== NOT EXECUTED
494cc: 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);
494d0: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL );
494d4: 4eb9 0004 954c jsr 4954c <sigtimedwait> <== NOT EXECUTED
(void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL );
494da: 42a7 clrl %sp@- <== NOT EXECUTED
494dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
494de: 42a7 clrl %sp@- <== NOT EXECUTED
494e0: 4e92 jsr %a2@ <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
assert( status != -1 );
#endif
rtems_set_errno_and_return_minus_one( EINTR );
494e2: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
494e6: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED
494ec: 7204 moveq #4,%d1 <== NOT EXECUTED
494ee: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
494f0: 70ff moveq #-1,%d0 <== NOT EXECUTED
494f2: 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 );
494f8: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
494fa: 4e5e unlk %fp <== NOT EXECUTED
...
00047224 <sigtimedwait>:
int sigtimedwait(
const sigset_t *set,
siginfo_t *info,
const struct timespec *timeout
)
{
47224: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
47228: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4722c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
47230: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
47234: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
/*
* Error check parameters before disabling interrupts.
*/
if ( !set )
47238: 4a8b tstl %a3 <== NOT EXECUTED
4723a: 6700 01b2 beqw 473ee <sigtimedwait+0x1ca> <== NOT EXECUTED
/* NOTE: This is very specifically a RELATIVE not ABSOLUTE time
* in the Open Group specification.
*/
interval = 0;
if ( timeout ) {
4723e: 4a82 tstl %d2 <== NOT EXECUTED
47240: 6700 0124 beqw 47366 <sigtimedwait+0x142> <== NOT EXECUTED
if ( !_Timespec_Is_valid( timeout ) )
47244: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47246: 4eb9 0004 abe4 jsr 4abe4 <_Timespec_Is_valid> <== NOT EXECUTED
4724c: 588f addql #4,%sp <== NOT EXECUTED
4724e: 4a00 tstb %d0 <== NOT EXECUTED
47250: 6700 01b6 beqw 47408 <sigtimedwait+0x1e4> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
interval = _Timespec_To_ticks( timeout );
47254: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47256: 4eb9 0004 ac60 jsr 4ac60 <_Timespec_To_ticks> <== NOT EXECUTED
if ( !interval )
4725c: 588f addql #4,%sp <== NOT EXECUTED
4725e: 4a80 tstl %d0 <== NOT EXECUTED
47260: 6700 018c beqw 473ee <sigtimedwait+0x1ca> <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
47264: 4a8a tstl %a2 <== NOT EXECUTED
47266: 6700 0106 beqw 4736e <sigtimedwait+0x14a> <== NOT EXECUTED
the_thread = _Thread_Executing;
4726a: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
47270: 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 ];
47276: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
4727a: 40c3 movew %sr,%d3 <== NOT EXECUTED
4727c: 8283 orl %d3,%d1 <== NOT EXECUTED
4727e: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( *set & api->signals_pending ) {
47280: 2213 movel %a3@,%d1 <== NOT EXECUTED
47282: 2801 movel %d1,%d4 <== NOT EXECUTED
47284: 242c 00d4 movel %a4@(212),%d2 <== NOT EXECUTED
47288: c882 andl %d2,%d4 <== NOT EXECUTED
4728a: 6600 010a bnew 47396 <sigtimedwait+0x172> <== NOT EXECUTED
return the_info->si_signo;
}
/* Process pending signals? */
if ( *set & _POSIX_signals_Pending ) {
4728e: 2439 0006 2828 movel 62828 <_POSIX_signals_Pending>,%d2 <== NOT EXECUTED
47294: c282 andl %d2,%d1 <== NOT EXECUTED
47296: 6600 0094 bnew 4732c <sigtimedwait+0x108> <== NOT EXECUTED
4729a: 2239 0006 2178 movel 62178 <_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;
472a0: 74ff moveq #-1,%d2 <== NOT EXECUTED
472a2: 5281 addql #1,%d1 <== NOT EXECUTED
472a4: 2482 movel %d2,%a2@ <== NOT EXECUTED
472a6: 23c1 0006 2178 movel %d1,62178 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
the_thread->Wait.return_code = EINTR;
472ac: 7204 moveq #4,%d1 <== NOT EXECUTED
}
the_info->si_signo = -1;
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
472ae: 43f9 0006 27c0 lea 627c0 <_POSIX_signals_Wait_queue>,%a1 <== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
472b4: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED
the_thread->Wait.option = *set;
472b8: 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;
472bc: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
the_thread->Wait.return_argument = the_info;
472c0: 214a 0028 movel %a2,%a0@(40) <== NOT EXECUTED
}
the_info->si_signo = -1;
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
472c4: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED
472c8: 23c1 0006 27f0 movel %d1,627f0 <_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 );
472ce: 46c3 movew %d3,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );
472d0: 4879 0004 a84c pea 4a84c <_Thread_queue_Timeout> <== NOT EXECUTED
472d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
472d8: 4879 0006 27c0 pea 627c0 <_POSIX_signals_Wait_queue> <== NOT EXECUTED
472de: 4eb9 0004 a488 jsr 4a488 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
472e4: 4eb9 0004 9fae jsr 49fae <_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 );
472ea: 42a7 clrl %sp@- <== NOT EXECUTED
472ec: 42a7 clrl %sp@- <== NOT EXECUTED
472ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472f0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
472f2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
472f4: 4eb9 0004 d358 jsr 4d358 <_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)
472fa: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
47300: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
47304: 7004 moveq #4,%d0 <== NOT EXECUTED
47306: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
4730a: 6600 00c2 bnew 473ce <sigtimedwait+0x1aa> <== NOT EXECUTED
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
4730e: 2412 movel %a2@,%d2 <== NOT EXECUTED
47310: 2202 movel %d2,%d1 <== NOT EXECUTED
47312: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
47316: 5381 subql #1,%d1 <== NOT EXECUTED
47318: e3a8 lsll %d1,%d0 <== NOT EXECUTED
4731a: c093 andl %a3@,%d0 <== NOT EXECUTED
4731c: 6700 00b0 beqw 473ce <sigtimedwait+0x1aa> <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
47320: 2002 movel %d2,%d0 <== NOT EXECUTED
47322: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED
47328: 4e5e unlk %fp <== NOT EXECUTED
4732a: 4e75 rts <== NOT EXECUTED
}
/* Process pending signals? */
if ( *set & _POSIX_signals_Pending ) {
signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );
4732c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4732e: 4eb9 0004 71d8 jsr 471d8 <_POSIX_signals_Get_lowest> <== NOT EXECUTED
47334: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_signals_Clear_signals( api, signo, the_info, true, false );
47336: 4297 clrl %sp@ <== NOT EXECUTED
47338: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4733c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4733e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47340: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47342: 4eb9 0004 d358 jsr 4d358 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
_ISR_Enable( level );
47348: 46c3 movew %d3,%sr <== NOT EXECUTED
the_info->si_signo = signo;
the_info->si_code = SI_USER;
4734a: 7201 moveq #1,%d1 <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
4734c: 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;
4734e: 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;
47352: 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;
47356: 2482 movel %d2,%a2@ <== NOT EXECUTED
the_info->si_code = SI_USER;
47358: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
4735c: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED
47362: 4e5e unlk %fp <== NOT EXECUTED
47364: 4e75 rts <== NOT EXECUTED
/* NOTE: This is very specifically a RELATIVE not ABSOLUTE time
* in the Open Group specification.
*/
interval = 0;
47366: 4280 clrl %d0 <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
47368: 4a8a tstl %a2 <== NOT EXECUTED
4736a: 6600 fefe bnew 4726a <sigtimedwait+0x46> <== NOT EXECUTED
the_thread = _Thread_Executing;
4736e: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
47374: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
47378: 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 ];
4737e: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
47382: 40c3 movew %sr,%d3 <== NOT EXECUTED
47384: 8283 orl %d3,%d1 <== NOT EXECUTED
47386: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( *set & api->signals_pending ) {
47388: 2213 movel %a3@,%d1 <== NOT EXECUTED
4738a: 2801 movel %d1,%d4 <== NOT EXECUTED
4738c: 242c 00d4 movel %a4@(212),%d2 <== NOT EXECUTED
47390: c882 andl %d2,%d4 <== NOT EXECUTED
47392: 6700 fefa beqw 4728e <sigtimedwait+0x6a> <== NOT EXECUTED
/* XXX real info later */
the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
47396: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47398: 4eb9 0004 71d8 jsr 471d8 <_POSIX_signals_Get_lowest> <== NOT EXECUTED
4739e: 2480 movel %d0,%a2@ <== NOT EXECUTED
_POSIX_signals_Clear_signals(
473a0: 4297 clrl %sp@ <== NOT EXECUTED
473a2: 42a7 clrl %sp@- <== NOT EXECUTED
473a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
473a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
473a8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
473aa: 4eb9 0004 d358 jsr 4d358 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
the_info->si_signo,
the_info,
false,
false
);
_ISR_Enable( level );
473b0: 46c3 movew %d3,%sr <== NOT EXECUTED
the_info->si_code = SI_USER;
473b2: 7001 moveq #1,%d0 <== NOT EXECUTED
the_info->si_value.sival_int = 0;
return the_info->si_signo;
473b4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
473b8: 2412 movel %a2@,%d2 <== NOT EXECUTED
false,
false
);
_ISR_Enable( level );
the_info->si_code = SI_USER;
473ba: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
473be: 2002 movel %d2,%d0 <== NOT EXECUTED
false
);
_ISR_Enable( level );
the_info->si_code = SI_USER;
the_info->si_value.sival_int = 0;
473c0: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
473c4: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED
473ca: 4e5e unlk %fp <== NOT EXECUTED
473cc: 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;
473ce: 4eb9 0005 0260 jsr 50260 <__errno> <== NOT EXECUTED
return -1;
473d4: 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;
473d6: 2240 moveal %d0,%a1 <== NOT EXECUTED
return -1;
}
return the_info->si_signo;
}
473d8: 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;
473da: 2079 0006 2602 moveal 62602 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
return -1;
}
return the_info->si_signo;
}
473e0: 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;
473e6: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED
return -1;
}
return the_info->si_signo;
}
473ea: 4e5e unlk %fp <== NOT EXECUTED
473ec: 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 );
473ee: 4eb9 0005 0260 jsr 50260 <__errno> <== NOT EXECUTED
473f4: 74ff moveq #-1,%d2 <== NOT EXECUTED
473f6: 7616 moveq #22,%d3 <== NOT EXECUTED
473f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
473fa: 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 );
473fc: 2083 movel %d3,%a0@ <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
473fe: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED
47404: 4e5e unlk %fp <== NOT EXECUTED
47406: 4e75 rts <== NOT EXECUTED
interval = 0;
if ( timeout ) {
if ( !_Timespec_Is_valid( timeout ) )
rtems_set_errno_and_return_minus_one( EINVAL );
47408: 4eb9 0005 0260 jsr 50260 <__errno> <== NOT EXECUTED
4740e: 74ff moveq #-1,%d2 <== NOT EXECUTED
47410: 7816 moveq #22,%d4 <== NOT EXECUTED
47412: 2240 moveal %d0,%a1 <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
47414: 2002 movel %d2,%d0 <== NOT EXECUTED
interval = 0;
if ( timeout ) {
if ( !_Timespec_Is_valid( timeout ) )
rtems_set_errno_and_return_minus_one( EINVAL );
47416: 2284 movel %d4,%a1@ <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
return -1;
}
return the_info->si_signo;
}
47418: 4cee 1c1c ffdc moveml %fp@(-36),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4741e: 4e5e unlk %fp <== NOT EXECUTED
...
00049764 <sigwait>:
int sigwait(
const sigset_t *set,
int *sig
)
{
49764: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49768: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4976a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int status;
status = sigtimedwait( set, NULL, NULL );
4976e: 42a7 clrl %sp@- <== NOT EXECUTED
49770: 42a7 clrl %sp@- <== NOT EXECUTED
49772: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49776: 4eb9 0004 954c jsr 4954c <sigtimedwait> <== NOT EXECUTED
if ( status != -1 ) {
4977c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49780: 72ff moveq #-1,%d1 <== NOT EXECUTED
49782: b280 cmpl %d0,%d1 <== NOT EXECUTED
49784: 6710 beqs 49796 <sigwait+0x32> <== NOT EXECUTED
if ( sig )
49786: 4a8a tstl %a2 <== NOT EXECUTED
49788: 671e beqs 497a8 <sigwait+0x44> <== NOT EXECUTED
*sig = status;
4978a: 2480 movel %d0,%a2@ <== NOT EXECUTED
return 0;
}
return errno;
}
4978c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
status = sigtimedwait( set, NULL, NULL );
if ( status != -1 ) {
if ( sig )
*sig = status;
return 0;
49790: 4280 clrl %d0 <== NOT EXECUTED
}
return errno;
}
49792: 4e5e unlk %fp <== NOT EXECUTED
49794: 4e75 rts <== NOT EXECUTED
if ( sig )
*sig = status;
return 0;
}
return errno;
49796: 4eb9 0005 2164 jsr 52164 <__errno> <== NOT EXECUTED
}
4979c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( sig )
*sig = status;
return 0;
}
return errno;
497a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
497a2: 4e5e unlk %fp <== NOT EXECUTED
if ( sig )
*sig = status;
return 0;
}
return errno;
497a4: 2010 movel %a0@,%d0 <== NOT EXECUTED
}
497a6: 4e75 rts <== NOT EXECUTED
497a8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
status = sigtimedwait( set, NULL, NULL );
if ( status != -1 ) {
if ( sig )
*sig = status;
return 0;
497ac: 4280 clrl %d0 <== NOT EXECUTED
}
return errno;
}
497ae: 4e5e unlk %fp <== NOT EXECUTED
...
0004974c <sigwaitinfo>:
int sigwaitinfo(
const sigset_t *set,
siginfo_t *info
)
{
4974c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return sigtimedwait( set, info, NULL );
49750: 42a7 clrl %sp@- <== NOT EXECUTED
49752: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49756: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4975a: 4eb9 0004 954c jsr 4954c <sigtimedwait> <== NOT EXECUTED
}
49760: 4e5e unlk %fp <== NOT EXECUTED
00044eb0 <siproc>:
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
44eb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44eb4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44eb6: 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)) {
44eba: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
44ebe: 0280 0000 0e78 andil #3704,%d0 <== NOT EXECUTED
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
44ec4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44ec6: 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)) {
44eca: 4a80 tstl %d0 <== NOT EXECUTED
44ecc: 661c bnes 44eea <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);
44ece: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
return i;
}
44ed2: 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);
44ed6: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
44edc: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return i;
}
44ee0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44ee4: 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);
44ee6: 6000 fdd0 braw 44cb8 <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);
44eea: 42a7 clrl %sp@- <== NOT EXECUTED
i = iproc (c, tty);
44eec: 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);
44ef2: 42a7 clrl %sp@- <== NOT EXECUTED
44ef4: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
44ef8: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
i = iproc (c, tty);
44efe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44f00: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44f02: 4eba fdb4 jsr %pc@(44cb8 <iproc>) <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f06: 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);
44f0a: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44f0c: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
else {
i = iproc (c, tty);
}
return i;
}
44f12: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
44f16: 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);
44f18: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else {
i = iproc (c, tty);
}
return i;
}
44f1c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44f20: 4e5e unlk %fp <== NOT EXECUTED
00043a20 <stat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
43a20: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
43a24: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
43a28: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
43a2c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
43a30: 6770 beqs 43aa2 <stat+0x82> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
43a32: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43a34: 280e movel %fp,%d4 <== NOT EXECUTED
43a36: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED
43a3c: 4eb9 0004 dd78 jsr 4dd78 <strlen> <== NOT EXECUTED
43a42: 7201 moveq #1,%d1 <== NOT EXECUTED
43a44: 2e81 movel %d1,%sp@ <== NOT EXECUTED
43a46: 2f04 movel %d4,%sp@- <== NOT EXECUTED
43a48: 42a7 clrl %sp@- <== NOT EXECUTED
43a4a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43a4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43a4e: 4eb9 0004 2cd4 jsr 42cd4 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
43a54: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43a58: 4a80 tstl %d0 <== NOT EXECUTED
43a5a: 670c beqs 43a68 <stat+0x48> <== NOT EXECUTED
return -1;
43a5c: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
43a5e: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
43a64: 4e5e unlk %fp <== NOT EXECUTED
43a66: 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) );
43a68: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED
43a6c: 42a7 clrl %sp@- <== NOT EXECUTED
43a6e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43a70: 4eb9 0004 d36c jsr 4d36c <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
43a76: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
43a7a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43a7c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
43a7e: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43a82: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
43a84: 2f04 movel %d4,%sp@- <== NOT EXECUTED
43a86: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
43a8a: 4eb9 0004 2db8 jsr 42db8 <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
43a90: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
43a94: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
43a98: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
43a9e: 4e5e unlk %fp <== NOT EXECUTED
43aa0: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
rtems_set_errno_and_return_minus_one( EFAULT );
43aa2: 4eb9 0004 ca50 jsr 4ca50 <__errno> <== NOT EXECUTED
43aa8: 740e moveq #14,%d2 <== NOT EXECUTED
43aaa: 2040 moveal %d0,%a0 <== NOT EXECUTED
43aac: 70ff moveq #-1,%d0 <== NOT EXECUTED
43aae: 2082 movel %d2,%a0@ <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
43ab0: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
43ab6: 4e5e unlk %fp <== NOT EXECUTED
0004687c <statvfs>:
#include <sys/statvfs.h>
int
statvfs (const char *path, struct statvfs *sb)
{
4687c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
46880: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
46884: 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 ) )
46888: 260e movel %fp,%d3 <== NOT EXECUTED
4688a: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
46890: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#include <sys/statvfs.h>
int
statvfs (const char *path, struct statvfs *sb)
{
46892: 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 ) )
46896: 4eb9 0005 37c4 jsr 537c4 <strlen> <== NOT EXECUTED
4689c: 7201 moveq #1,%d1 <== NOT EXECUTED
4689e: 2e81 movel %d1,%sp@ <== NOT EXECUTED
468a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
468a2: 42a7 clrl %sp@- <== NOT EXECUTED
468a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
468a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
468a8: 4eb9 0004 5314 jsr 45314 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
468ae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
468b2: 4a80 tstl %d0 <== NOT EXECUTED
468b4: 670c beqs 468c2 <statvfs+0x46> <== NOT EXECUTED
return -1;
468b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );
rtems_filesystem_freenode( &loc );
return result;
}
468b8: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
468be: 4e5e unlk %fp <== NOT EXECUTED
468c0: 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));
468c2: 2044 moveal %d4,%a0 <== NOT EXECUTED
468c4: 4298 clrl %a0@+ <== NOT EXECUTED
*/
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
return -1;
mt_entry = loc.mt_entry;
468c6: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED
fs_mount_root = &mt_entry->mt_fs_root;
memset (sb, 0, sizeof (struct statvfs));
468ca: 4298 clrl %a0@+ <== NOT EXECUTED
468cc: 4298 clrl %a0@+ <== NOT EXECUTED
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: 4290 clrl %a0@ <== NOT EXECUTED
result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );
468e4: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED
468e8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
468ea: 4869 001c pea %a1@(28) <== NOT EXECUTED
468ee: 2068 0044 moveal %a0@(68),%a0 <== NOT EXECUTED
468f2: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
468f4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
468f6: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
468fa: 4eb9 0004 53f8 jsr 453f8 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
46900: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
46904: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
46908: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
4690e: 4e5e unlk %fp <== NOT EXECUTED
...
00045f78 <symlink>:
int symlink(
const char *actualpath,
const char *sympath
)
{
45f78: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
45f7c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45f7e: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
45f82: 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 );
45f84: 240e movel %fp,%d2 <== NOT EXECUTED
45f86: 0682 ffff ffe4 addil #-28,%d2 <== NOT EXECUTED
45f8c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45f8e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45f92: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45f94: 4eb9 0004 5e7c jsr 45e7c <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*loc.ops->evalformake_h)( &sympath[i], &loc, &name_start );
45f9a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45f9e: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED
45fa2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45fa4: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45fa8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45faa: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
45fae: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 )
45fb0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45fb4: 4a80 tstl %d0 <== NOT EXECUTED
45fb6: 670e beqs 45fc6 <symlink+0x4e> <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45fb8: 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;
45fbc: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45fbe: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED
45fc2: 4e5e unlk %fp <== NOT EXECUTED
45fc4: 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);
45fc6: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
45fca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45fce: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45fd2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45fd4: 2068 0038 moveal %a0@(56),%a0 <== NOT EXECUTED
45fd8: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45fda: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45fdc: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
45fe0: 4eb9 0004 4a8c jsr 44a8c <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
45fe6: 202e ffe0 movel %fp@(-32),%d0 <== NOT EXECUTED
45fea: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
45fee: 242e ffd8 movel %fp@(-40),%d2 <== NOT EXECUTED
45ff2: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED
45ff6: 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 f854 movel 5f854 <_global_impure_ptr>,%sp@- <== NOT EXECUTED
45200: 4eb9 0005 0adc jsr 50adc <_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 8f38 jsr 48f38 <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 1e42 moveal 61e42 <_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 0adc jsr 50adc <_fwalk> <== NOT EXECUTED
_Thread_Executing->libc_reent = current_reent;
451b2: 2079 0006 1e42 moveal 61e42 <_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 ff64 jsr 4ff64 <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
00045f4c <sysconf>:
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
45f4c: 7002 moveq #2,%d0 <== NOT EXECUTED
*/
long sysconf(
int name
)
{
45f4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45f52: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
45f56: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( name == _SC_CLK_TCK )
45f58: b081 cmpl %d1,%d0 <== NOT EXECUTED
45f5a: 6726 beqs 45f82 <sysconf+0x36> <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
if ( name == _SC_OPEN_MAX )
45f5c: 7004 moveq #4,%d0 <== NOT EXECUTED
45f5e: b081 cmpl %d1,%d0 <== NOT EXECUTED
45f60: 6738 beqs 45f9a <sysconf+0x4e> <== NOT EXECUTED
return rtems_libio_number_iops;
if ( name == _SC_GETPW_R_SIZE_MAX )
return 1024;
45f62: 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 )
45f68: 7433 moveq #51,%d2 <== NOT EXECUTED
45f6a: b481 cmpl %d1,%d2 <== NOT EXECUTED
45f6c: 670c beqs 45f7a <sysconf+0x2e> <== NOT EXECUTED
return 1024;
if ( name == _SC_PAGESIZE )
45f6e: 143c 0008 moveb #8,%d2 <== NOT EXECUTED
return PAGE_SIZE;
45f72: 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 )
45f76: b481 cmpl %d1,%d2 <== NOT EXECUTED
45f78: 662e bnes 45fa8 <sysconf+0x5c> <== NOT EXECUTED
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
}
45f7a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
45f7e: 4e5e unlk %fp <== NOT EXECUTED
45f80: 4e75 rts <== NOT EXECUTED
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
return (TOD_MICROSECONDS_PER_SECOND /
45f82: 41f9 0005 ea64 lea 5ea64 <Configuration+0xc>,%a0 <== NOT EXECUTED
45f88: 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 );
}
45f8e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
45f92: 4e5e unlk %fp <== NOT EXECUTED
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
return (TOD_MICROSECONDS_PER_SECOND /
45f94: 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 );
}
45f98: 4e75 rts <== NOT EXECUTED
45f9a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
45f9e: 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;
45fa0: 2039 0005 e984 movel 5e984 <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 );
}
45fa6: 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 );
45fa8: 4eb9 0004 eee4 jsr 4eee4 <__errno> <== NOT EXECUTED
}
45fae: 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 );
45fb2: 2040 moveal %d0,%a0 <== NOT EXECUTED
45fb4: 7216 moveq #22,%d1 <== NOT EXECUTED
45fb6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
45fb8: 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 );
45fba: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
000479cc <tcdrain>:
#include <rtems/libio.h>
int tcdrain(
int fd
)
{
479cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return ioctl( fd, RTEMS_IO_TCDRAIN, 0 );
479d0: 42a7 clrl %sp@- <== NOT EXECUTED
479d2: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
479d6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
479da: 4eb9 0004 f274 jsr 4f274 <ioctl> <== NOT EXECUTED
}
479e0: 4e5e unlk %fp <== NOT EXECUTED
00043d14 <tcflow>:
int tcflow (
int fd __attribute__((unused)),
int action
)
{
43d14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
case TCOOFF:
case TCOON:
case TCIOFF:
case TCION:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d18: 4eb9 0004 cc98 jsr 4cc98 <__errno> <== NOT EXECUTED
43d1e: 7216 moveq #22,%d1 <== NOT EXECUTED
43d20: 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 );
}
43d22: 70ff moveq #-1,%d0 <== NOT EXECUTED
43d24: 4e5e unlk %fp <== NOT EXECUTED
case TCOOFF:
case TCOON:
case TCIOFF:
case TCION:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d26: 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 );
}
...
00043d2c <tcflush>:
int tcflush (
int fd __attribute__((unused)),
int queue
)
{
43d2c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
switch (queue) {
case TCIFLUSH:
case TCOFLUSH:
case TCIOFLUSH:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d30: 4eb9 0004 cc98 jsr 4cc98 <__errno> <== NOT EXECUTED
43d36: 7216 moveq #22,%d1 <== NOT EXECUTED
43d38: 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;
}
43d3a: 70ff moveq #-1,%d0 <== NOT EXECUTED
43d3c: 4e5e unlk %fp <== NOT EXECUTED
switch (queue) {
case TCIFLUSH:
case TCOFLUSH:
case TCIOFLUSH:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
43d3e: 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;
}
...
00045738 <tcgetattr>:
int tcgetattr(
int fd,
struct termios *tp
)
{
45738: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return ioctl( fd, RTEMS_IO_GET_ATTRIBUTES, tp );
4573c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
45740: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45744: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45748: 4eb9 0004 cde4 jsr 4cde4 <ioctl> <== NOT EXECUTED
}
4574e: 4e5e unlk %fp <== NOT EXECUTED
...
00043d44 <tcgetpgrp>:
#include <sys/types.h>
#include <unistd.h>
pid_t tcgetpgrp(int fd __attribute__((unused)))
{
43d44: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid();
}
43d48: 4e5e unlk %fp <== NOT EXECUTED
#include <sys/types.h>
#include <unistd.h>
pid_t tcgetpgrp(int fd __attribute__((unused)))
{
return getpid();
43d4a: 4ef9 0004 300c jmp 4300c <getpid> <== NOT EXECUTED
00043d50 <tcsendbreak>:
int tcsendbreak (
int fd __attribute__((unused)),
int duration __attribute__((unused)) )
{
return 0;
}
43d50: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/libio.h>
int tcsendbreak (
int fd __attribute__((unused)),
int duration __attribute__((unused)) )
{
43d52: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
43d56: 4e5e unlk %fp <== NOT EXECUTED
...
00045754 <tcsetattr>:
int tcsetattr(
int fd,
int opt,
struct termios *tp
)
{
45754: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45758: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4575c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4575e: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
45762: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45764: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
switch (opt) {
45768: 4a80 tstl %d0 <== NOT EXECUTED
4576a: 6738 beqs 457a4 <tcsetattr+0x50> <== NOT EXECUTED
4576c: 7201 moveq #1,%d1 <== NOT EXECUTED
4576e: b280 cmpl %d0,%d1 <== NOT EXECUTED
45770: 671c beqs 4578e <tcsetattr+0x3a> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
45772: 4eb9 0005 044c jsr 5044c <__errno> <== NOT EXECUTED
45778: 2040 moveal %d0,%a0 <== NOT EXECUTED
4577a: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
}
}
45780: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
45784: 70ff moveq #-1,%d0 <== NOT EXECUTED
45786: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4578a: 4e5e unlk %fp <== NOT EXECUTED
4578c: 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)
4578e: 42a7 clrl %sp@- <== NOT EXECUTED
45790: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
45794: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45796: 4eb9 0004 cde4 jsr 4cde4 <ioctl> <== NOT EXECUTED
4579c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
457a0: 4a80 tstl %d0 <== NOT EXECUTED
457a2: 6ddc blts 45780 <tcsetattr+0x2c> <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
457a4: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
457a8: 7002 moveq #2,%d0 <== NOT EXECUTED
457aa: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
}
457ae: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
457b2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
457b6: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
457ba: 4e5e unlk %fp <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
457bc: 4ef9 0004 cde4 jmp 4cde4 <ioctl> <== NOT EXECUTED
...
00043d5c <tcsetpgrp>:
int tcsetpgrp(
int fd __attribute__((unused)),
pid_t pid __attribute__((unused)) )
{
return 0;
}
43d5c: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/libio.h>
int tcsetpgrp(
int fd __attribute__((unused)),
pid_t pid __attribute__((unused)) )
{
43d5e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
43d62: 4e5e unlk %fp <== NOT EXECUTED
...
00046014 <timer_create>:
timer_t *timerid
)
{
POSIX_Timer_Control *ptimer;
if ( clock_id != CLOCK_REALTIME )
46014: 7001 moveq #1,%d0 <== NOT EXECUTED
int timer_create(
clockid_t clock_id,
struct sigevent *evp,
timer_t *timerid
)
{
46016: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4601a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4601c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
46020: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46022: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Timer_Control *ptimer;
if ( clock_id != CLOCK_REALTIME )
46026: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
4602a: 6600 00c4 bnew 460f0 <timer_create+0xdc> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !timerid )
4602e: 4a8b tstl %a3 <== NOT EXECUTED
46030: 6700 00be beqw 460f0 <timer_create+0xdc> <== NOT EXECUTED
/*
* The data of the structure evp are checked in order to verify if they
* are coherent.
*/
if (evp != NULL) {
46034: 4a8a tstl %a2 <== NOT EXECUTED
46036: 671e beqs 46056 <timer_create+0x42> <== NOT EXECUTED
/* The structure has data */
if ( ( evp->sigev_notify != SIGEV_NONE ) &&
46038: 2012 movel %a2@,%d0 <== NOT EXECUTED
4603a: 7201 moveq #1,%d1 <== NOT EXECUTED
4603c: 5380 subql #1,%d0 <== NOT EXECUTED
4603e: b280 cmpl %d0,%d1 <== NOT EXECUTED
46040: 6500 00ae bcsw 460f0 <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 )
46044: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
46048: 6700 00a6 beqw 460f0 <timer_create+0xdc> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
4604c: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(evp->sigev_signo) )
4604e: 721f moveq #31,%d1 <== NOT EXECUTED
46050: b280 cmpl %d0,%d1 <== NOT EXECUTED
46052: 6500 009c bcsw 460f0 <timer_create+0xdc> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46056: 2039 0006 09c8 movel 609c8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4605c: 5280 addql #1,%d0 <== NOT EXECUTED
4605e: 23c0 0006 09c8 movel %d0,609c8 <_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 );
46064: 4879 0006 0c38 pea 60c38 <_POSIX_Timer_Information> <== NOT EXECUTED
4606a: 4eb9 0004 8180 jsr 48180 <_Objects_Allocate> <== NOT EXECUTED
/*
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
46070: 588f addql #4,%sp <== NOT EXECUTED
46072: 2040 moveal %d0,%a0 <== NOT EXECUTED
46074: 4a80 tstl %d0 <== NOT EXECUTED
46076: 6700 0092 beqw 4610a <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;
4607a: 7002 moveq #2,%d0 <== NOT EXECUTED
4607c: 1140 003c moveb %d0,%a0@(60) <== NOT EXECUTED
ptimer->thread_id = _Thread_Executing->Object.id;
46080: 2279 0006 0e52 moveal 60e52 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
46086: 2169 0008 0038 movel %a1@(8),%a0@(56) <== NOT EXECUTED
if ( evp != NULL ) {
4608c: 4a8a tstl %a2 <== NOT EXECUTED
4608e: 6710 beqs 460a0 <timer_create+0x8c> <== NOT EXECUTED
ptimer->inf.sigev_notify = evp->sigev_notify;
46090: 2152 003e movel %a2@,%a0@(62) <== NOT EXECUTED
ptimer->inf.sigev_signo = evp->sigev_signo;
46094: 216a 0004 0042 movel %a2@(4),%a0@(66) <== NOT EXECUTED
ptimer->inf.sigev_value = evp->sigev_value;
4609a: 216a 0008 0046 movel %a2@(8),%a0@(70) <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
460a0: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
460a4: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
460a6: 2279 0006 0c50 moveal 60c50 <_POSIX_Timer_Information+0x18>,%a1<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
460ac: 3200 movew %d0,%d1 <== NOT EXECUTED
}
ptimer->overrun = 0;
460ae: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED
ptimer->timer_data.it_value.tv_sec = 0;
460b2: 42a8 005a clrl %a0@(90) <== NOT EXECUTED
ptimer->timer_data.it_value.tv_nsec = 0;
460b6: 42a8 005e clrl %a0@(94) <== NOT EXECUTED
ptimer->timer_data.it_interval.tv_sec = 0;
460ba: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
ptimer->timer_data.it_interval.tv_nsec = 0;
460be: 42a8 0056 clrl %a0@(86) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
460c2: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
460c6: 42a8 002c clrl %a0@(44) <== NOT EXECUTED
the_watchdog->id = id;
460ca: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
460ce: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
460d2: 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;
460d6: 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;
460da: 2680 movel %d0,%a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
460dc: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
460e2: 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;
460e6: 4280 clrl %d0 <== NOT EXECUTED
}
460e8: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
460ec: 4e5e unlk %fp <== NOT EXECUTED
460ee: 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 );
460f0: 4eb9 0004 f400 jsr 4f400 <__errno> <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
460f6: 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 );
460fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
460fc: 7216 moveq #22,%d1 <== NOT EXECUTED
460fe: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46100: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
46104: 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 );
46106: 2081 movel %d1,%a0@ <== NOT EXECUTED
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46108: 4e75 rts <== NOT EXECUTED
/*
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
_Thread_Enable_dispatch();
4610a: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
46110: 4eb9 0004 f400 jsr 4f400 <__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
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
4611a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4611c: 720b moveq #11,%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
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
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;
}
...
00046d1c <timer_delete>:
int timer_delete(
timer_t timerid
)
{
46d1c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46d20: 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 );
46d22: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46d26: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46d2a: 4879 0006 1af0 pea 61af0 <_POSIX_Timer_Information> <== NOT EXECUTED
46d30: 4eb9 0004 91a8 jsr 491a8 <_Objects_Get> <== NOT EXECUTED
*/
POSIX_Timer_Control *ptimer;
Objects_Locations location;
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
46d36: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46d3a: 2440 moveal %d0,%a2 <== NOT EXECUTED
46d3c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46d40: 6716 beqs 46d58 <timer_delete+0x3c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46d42: 4eb9 0005 0458 jsr 50458 <__errno> <== NOT EXECUTED
}
46d48: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46d4c: 2040 moveal %d0,%a0 <== NOT EXECUTED
46d4e: 7216 moveq #22,%d1 <== NOT EXECUTED
46d50: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
46d52: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46d54: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
46d56: 4e75 rts <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Objects_Close( &_POSIX_Timer_Information, &ptimer->Object );
46d58: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46d5a: 4879 0006 1af0 pea 61af0 <_POSIX_Timer_Information> <== NOT EXECUTED
46d60: 4eb9 0004 8d78 jsr 48d78 <_Objects_Close> <== NOT EXECUTED
ptimer->state = POSIX_TIMER_STATE_FREE;
46d66: 7001 moveq #1,%d0 <== NOT EXECUTED
46d68: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
(void) _Watchdog_Remove( &ptimer->Timer );
46d6c: 486a 0010 pea %a2@(16) <== NOT EXECUTED
46d70: 4eb9 0004 ae68 jsr 4ae68 <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free (
POSIX_Timer_Control *the_timer
)
{
_Objects_Free( &_POSIX_Timer_Information, &the_timer->Object );
46d76: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46d78: 4879 0006 1af0 pea 61af0 <_POSIX_Timer_Information> <== NOT EXECUTED
46d7e: 4eb9 0004 903c jsr 4903c <_Objects_Free> <== NOT EXECUTED
_POSIX_Timer_Free( ptimer );
_Thread_Enable_dispatch();
46d84: 4eb9 0004 9cda jsr 49cda <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46d8a: 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;
46d8e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46d92: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46d94: 4e5e unlk %fp <== NOT EXECUTED
000479e4 <timer_getoverrun>:
* its execution, _POSIX_Timer_TSR will have to set this counter to 0.
*/
int timer_getoverrun(
timer_t timerid
)
{
479e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
479e8: 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 );
479ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED
479ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
479f2: 4879 0006 305c pea 6305c <_POSIX_Timer_Information> <== NOT EXECUTED
479f8: 4eb9 0004 9df4 jsr 49df4 <_Objects_Get> <== NOT EXECUTED
int overrun;
POSIX_Timer_Control *ptimer;
Objects_Locations location;
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
479fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47a02: 2040 moveal %d0,%a0 <== NOT EXECUTED
47a04: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47a08: 6718 beqs 47a22 <timer_getoverrun+0x3e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47a0a: 4eb9 0005 0c44 jsr 50c44 <__errno> <== NOT EXECUTED
47a10: 74ff moveq #-1,%d2 <== NOT EXECUTED
47a12: 2040 moveal %d0,%a0 <== NOT EXECUTED
47a14: 7016 moveq #22,%d0 <== NOT EXECUTED
47a16: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
47a18: 2002 movel %d2,%d0 <== NOT EXECUTED
47a1a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47a1e: 4e5e unlk %fp <== NOT EXECUTED
47a20: 4e75 rts <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
case OBJECTS_LOCAL:
overrun = ptimer->overrun;
47a22: 2428 0066 movel %a0@(102),%d2 <== NOT EXECUTED
ptimer->overrun = 0;
47a26: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED
_Thread_Enable_dispatch();
47a2a: 4eb9 0004 a926 jsr 4a926 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
47a30: 2002 movel %d2,%d0 <== NOT EXECUTED
47a32: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47a36: 4e5e unlk %fp <== NOT EXECUTED
...
00047a3c <timer_gettime>:
int timer_gettime(
timer_t timerid,
struct itimerspec *value
)
{
47a3c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
47a40: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47a42: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47a44: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Timer_Control *ptimer;
Objects_Locations location;
struct timespec current_time;
Watchdog_Interval left;
if ( !value )
47a48: 4a8a tstl %a2 <== NOT EXECUTED
47a4a: 676a beqs 47ab6 <timer_gettime+0x7a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* Reads the current time */
_TOD_Get( ¤t_time );
47a4c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
47a50: 4eb9 0004 9388 jsr 49388 <_TOD_Get> <== NOT EXECUTED
47a56: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47a5a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47a5e: 4879 0006 305c pea 6305c <_POSIX_Timer_Information> <== NOT EXECUTED
47a64: 4eb9 0004 9df4 jsr 49df4 <_Objects_Get> <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
47a6a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47a6e: 2640 moveal %d0,%a3 <== NOT EXECUTED
47a70: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47a74: 6640 bnes 47ab6 <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 );
47a76: 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 */
47a7a: 222b 001c movel %a3@(28),%d1 <== NOT EXECUTED
47a7e: d2ab 0024 addl %a3@(36),%d1 <== NOT EXECUTED
47a82: 2039 0006 2f16 movel 62f16 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
_Watchdog_Ticks_since_boot; /* now */
_Timespec_From_ticks( left, &value->it_value );
47a88: 9280 subl %d0,%d1 <== NOT EXECUTED
47a8a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47a8c: 4eb9 0004 b55c jsr 4b55c <_Timespec_From_ticks> <== NOT EXECUTED
value->it_interval = ptimer->timer_data.it_interval;
47a92: 202b 0052 movel %a3@(82),%d0 <== NOT EXECUTED
47a96: 222b 0056 movel %a3@(86),%d1 <== NOT EXECUTED
47a9a: 2480 movel %d0,%a2@ <== NOT EXECUTED
47a9c: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
_Thread_Enable_dispatch();
47aa0: 4eb9 0004 a926 jsr 4a926 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
47aa6: 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;
47aaa: 508f addql #8,%sp <== NOT EXECUTED
47aac: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
47aae: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED
47ab2: 4e5e unlk %fp <== NOT EXECUTED
47ab4: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47ab6: 4eb9 0005 0c44 jsr 50c44 <__errno> <== NOT EXECUTED
}
47abc: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47ac0: 2040 moveal %d0,%a0 <== NOT EXECUTED
47ac2: 7216 moveq #22,%d1 <== NOT EXECUTED
47ac4: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
47ac6: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED
47aca: 4e5e unlk %fp <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
47acc: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
0004612c <timer_settime>:
timer_t timerid,
int flags,
const struct itimerspec *value,
struct itimerspec *ovalue
)
{
4612c: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
46130: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
46134: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
46138: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
4613c: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
Objects_Locations location;
bool activated;
uint32_t initial_period;
struct itimerspec normalize;
if ( !value )
46140: 4a8b tstl %a3 <== NOT EXECUTED
46142: 6700 019e beqw 462e2 <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) ) ) {
46146: 486b 0008 pea %a3@(8) <== NOT EXECUTED
4614a: 45f9 0004 9ddc lea 49ddc <_Timespec_Is_valid>,%a2 <== NOT EXECUTED
46150: 4e92 jsr %a2@ <== NOT EXECUTED
46152: 588f addql #4,%sp <== NOT EXECUTED
46154: 4a00 tstb %d0 <== NOT EXECUTED
46156: 6700 018a beqw 462e2 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {
4615a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4615c: 4e92 jsr %a2@ <== NOT EXECUTED
4615e: 588f addql #4,%sp <== NOT EXECUTED
46160: 4a00 tstb %d0 <== NOT EXECUTED
46162: 6700 017e beqw 462e2 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
46166: 7004 moveq #4,%d0 <== NOT EXECUTED
46168: b08c cmpl %a4,%d0 <== NOT EXECUTED
4616a: 6700 00fa beqw 46266 <timer_settime+0x13a> <== NOT EXECUTED
4616e: 4a8c tstl %a4 <== NOT EXECUTED
46170: 6600 0170 bnew 462e2 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
46174: 260e movel %fp,%d3 <== NOT EXECUTED
46176: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED
4617c: 204b moveal %a3,%a0 <== NOT EXECUTED
4617e: 2243 moveal %d3,%a1 <== NOT EXECUTED
46180: 240e movel %fp,%d2 <== NOT EXECUTED
46182: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED
46188: 49ee ffec lea %fp@(-20),%a4 <== NOT EXECUTED
4618c: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED
46190: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
46192: 2242 moveal %d2,%a1 <== NOT EXECUTED
46194: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
46196: 2898 movel %a0@+,%a4@ <== NOT EXECUTED
46198: 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 );
4619a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4619e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
461a2: 4879 0006 0c38 pea 60c38 <_POSIX_Timer_Information> <== NOT EXECUTED
461a8: 4eb9 0004 8640 jsr 48640 <_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 ) {
461ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
461b2: 2440 moveal %d0,%a2 <== NOT EXECUTED
461b4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
461b8: 6600 0128 bnew 462e2 <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 ) {
461bc: 4aae ffec tstl %fp@(-20) <== NOT EXECUTED
461c0: 6608 bnes 461ca <timer_settime+0x9e> <== NOT EXECUTED
461c2: 4aae fff0 tstl %fp@(-16) <== NOT EXECUTED
461c6: 6700 0132 beqw 462fa <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 );
461ca: 2f0b movel %a3,%sp@- <== NOT EXECUTED
461cc: 47f9 0004 9e58 lea 49e58 <_Timespec_To_ticks>,%a3 <== NOT EXECUTED
461d2: 4e93 jsr %a3@ <== NOT EXECUTED
461d4: 2540 0062 movel %d0,%a2@(98) <== NOT EXECUTED
initial_period = _Timespec_To_ticks( &normalize.it_value );
461d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
461da: 4e93 jsr %a3@ <== NOT EXECUTED
activated = _POSIX_Timer_Insert_helper(
461dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
461de: 4879 0004 6400 pea 46400 <_POSIX_Timer_TSR> <== NOT EXECUTED
461e4: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
461e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461ea: 486a 0010 pea %a2@(16) <== NOT EXECUTED
461ee: 4eb9 0004 c91c jsr 4c91c <_POSIX_Timer_Insert_helper> <== NOT EXECUTED
initial_period,
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated ) {
461f4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
461f8: 4a00 tstb %d0 <== NOT EXECUTED
461fa: 6700 0166 beqw 46362 <timer_settime+0x236> <== NOT EXECUTED
/*
* The timer has been started and is running. So we return the
* old ones in "ovalue"
*/
if ( ovalue )
461fe: 4a84 tstl %d4 <== NOT EXECUTED
46200: 6700 0172 beqw 46374 <timer_settime+0x248> <== NOT EXECUTED
*ovalue = ptimer->timer_data;
46204: 220a movel %a2,%d1 <== NOT EXECUTED
46206: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED
4620c: 2044 moveal %d4,%a0 <== NOT EXECUTED
4620e: 2241 moveal %d1,%a1 <== NOT EXECUTED
46210: 200a movel %a2,%d0 <== NOT EXECUTED
46212: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED
46218: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED
4621c: 280a movel %a2,%d4 <== NOT EXECUTED
4621e: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED
46224: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED
46226: 2240 moveal %d0,%a1 <== NOT EXECUTED
46228: 20d1 movel %a1@,%a0@+ <== NOT EXECUTED
4622a: 2244 moveal %d4,%a1 <== NOT EXECUTED
4622c: 20d3 movel %a3@,%a0@+ <== NOT EXECUTED
4622e: 2091 movel %a1@,%a0@ <== NOT EXECUTED
ptimer->timer_data = normalize;
46230: 2041 moveal %d1,%a0 <== NOT EXECUTED
46232: 2243 moveal %d3,%a1 <== NOT EXECUTED
46234: 2091 movel %a1@,%a0@ <== NOT EXECUTED
46236: 2040 moveal %d0,%a0 <== NOT EXECUTED
46238: 2242 moveal %d2,%a1 <== NOT EXECUTED
4623a: 2091 movel %a1@,%a0@ <== NOT EXECUTED
4623c: 2044 moveal %d4,%a0 <== NOT EXECUTED
4623e: 2694 movel %a4@,%a3@ <== NOT EXECUTED
46240: 2095 movel %a5@,%a0@ <== NOT EXECUTED
/* Indicate that the time is running */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
46242: 7003 moveq #3,%d0 <== NOT EXECUTED
46244: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
_TOD_Get( &ptimer->time );
46248: 486a 006a pea %a2@(106) <== NOT EXECUTED
4624c: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
46252: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46258: 588f addql #4,%sp <== NOT EXECUTED
4625a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4625c: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED
46262: 4e5e unlk %fp <== NOT EXECUTED
46264: 4e75 rts <== NOT EXECUTED
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
46266: 260e movel %fp,%d3 <== NOT EXECUTED
46268: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED
4626e: 204b moveal %a3,%a0 <== NOT EXECUTED
46270: 2243 moveal %d3,%a1 <== NOT EXECUTED
46272: 240e movel %fp,%d2 <== NOT EXECUTED
46274: 0682 ffff ffe8 addil #-24,%d2 <== NOT EXECUTED
4627a: 200e movel %fp,%d0 <== NOT EXECUTED
4627c: 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 ) )
46282: 2840 moveal %d0,%a4 <== NOT EXECUTED
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
46284: 4bee fff0 lea %fp@(-16),%a5 <== NOT EXECUTED
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
struct timespec now;
_TOD_Get( &now );
46288: 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;
4628c: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
4628e: 2242 moveal %d2,%a1 <== NOT EXECUTED
46290: 2298 movel %a0@+,%a1@ <== NOT EXECUTED
46292: 2898 movel %a0@+,%a4@ <== NOT EXECUTED
46294: 2a90 movel %a0@,%a5@ <== NOT EXECUTED
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
struct timespec now;
_TOD_Get( &now );
46296: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46298: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED
/* Check for seconds in the past */
if ( _Timespec_Greater_than( &now, &normalize.it_value ) )
4629e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
462a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
462a2: 4eb9 0004 9da8 jsr 49da8 <_Timespec_Greater_than> <== NOT EXECUTED
462a8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
462ac: 4a00 tstb %d0 <== NOT EXECUTED
462ae: 6632 bnes 462e2 <timer_settime+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
462b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
462b2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
462b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
462b6: 4eb9 0004 9e08 jsr 49e08 <_Timespec_Subtract> <== NOT EXECUTED
462bc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
462c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
462c4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
462c8: 4879 0006 0c38 pea 60c38 <_POSIX_Timer_Information> <== NOT EXECUTED
462ce: 4eb9 0004 8640 jsr 48640 <_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 ) {
462d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
462d8: 2440 moveal %d0,%a2 <== NOT EXECUTED
462da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
462de: 6700 fedc beqw 461bc <timer_settime+0x90> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
462e2: 4eb9 0004 f400 jsr 4f400 <__errno> <== NOT EXECUTED
462e8: 7216 moveq #22,%d1 <== NOT EXECUTED
462ea: 2040 moveal %d0,%a0 <== NOT EXECUTED
462ec: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
462ee: 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 );
462f4: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
462f6: 4e5e unlk %fp <== NOT EXECUTED
462f8: 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 );
462fa: 486a 0010 pea %a2@(16) <== NOT EXECUTED
462fe: 4eb9 0004 a2c4 jsr 4a2c4 <_Watchdog_Remove> <== NOT EXECUTED
/* The old data of the timer are returned */
if ( ovalue )
46304: 588f addql #4,%sp <== NOT EXECUTED
46306: 4a84 tstl %d4 <== NOT EXECUTED
46308: 6700 00b6 beqw 463c0 <timer_settime+0x294> <== NOT EXECUTED
*ovalue = ptimer->timer_data;
4630c: 220a movel %a2,%d1 <== NOT EXECUTED
4630e: 0681 0000 0052 addil #82,%d1 <== NOT EXECUTED
46314: 2244 moveal %d4,%a1 <== NOT EXECUTED
46316: 2041 moveal %d1,%a0 <== NOT EXECUTED
46318: 200a movel %a2,%d0 <== NOT EXECUTED
4631a: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED
46320: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED
46324: 280a movel %a2,%d4 <== NOT EXECUTED
46326: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED
4632c: 22d0 movel %a0@,%a1@+ <== NOT EXECUTED
4632e: 2040 moveal %d0,%a0 <== NOT EXECUTED
46330: 22d0 movel %a0@,%a1@+ <== NOT EXECUTED
46332: 2044 moveal %d4,%a0 <== NOT EXECUTED
46334: 22d3 movel %a3@,%a1@+ <== NOT EXECUTED
46336: 2290 movel %a0@,%a1@ <== NOT EXECUTED
/* The new data are set */
ptimer->timer_data = normalize;
46338: 2241 moveal %d1,%a1 <== NOT EXECUTED
4633a: 2043 moveal %d3,%a0 <== NOT EXECUTED
4633c: 2290 movel %a0@,%a1@ <== NOT EXECUTED
4633e: 2240 moveal %d0,%a1 <== NOT EXECUTED
46340: 2042 moveal %d2,%a0 <== NOT EXECUTED
46342: 2290 movel %a0@,%a1@ <== NOT EXECUTED
46344: 2244 moveal %d4,%a1 <== NOT EXECUTED
46346: 2694 movel %a4@,%a3@ <== NOT EXECUTED
46348: 2295 movel %a5@,%a1@ <== NOT EXECUTED
/* Indicates that the timer is created and stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
4634a: 7004 moveq #4,%d0 <== NOT EXECUTED
4634c: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/* Returns with success */
_Thread_Enable_dispatch();
46350: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46356: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
46358: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4635e: 4e5e unlk %fp <== NOT EXECUTED
46360: 4e75 rts <== NOT EXECUTED
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated ) {
_Thread_Enable_dispatch();
46362: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
46368: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4636a: 4cee 3c1c ffc8 moveml %fp@(-56),%d2-%d4/%a2-%a5 <== NOT EXECUTED
46370: 4e5e unlk %fp <== NOT EXECUTED
46372: 4e75 rts <== NOT EXECUTED
46374: 220a movel %a2,%d1 <== NOT EXECUTED
46376: 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;
4637c: 2041 moveal %d1,%a0 <== NOT EXECUTED
4637e: 2243 moveal %d3,%a1 <== NOT EXECUTED
46380: 200a movel %a2,%d0 <== NOT EXECUTED
46382: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED
46388: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED
4638c: 280a movel %a2,%d4 <== NOT EXECUTED
4638e: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED
46394: 2091 movel %a1@,%a0@ <== NOT EXECUTED
46396: 2040 moveal %d0,%a0 <== NOT EXECUTED
46398: 2242 moveal %d2,%a1 <== NOT EXECUTED
4639a: 2091 movel %a1@,%a0@ <== NOT EXECUTED
4639c: 2044 moveal %d4,%a0 <== NOT EXECUTED
4639e: 2694 movel %a4@,%a3@ <== NOT EXECUTED
463a0: 2095 movel %a5@,%a0@ <== NOT EXECUTED
/* Indicate that the time is running */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
463a2: 7003 moveq #3,%d0 <== NOT EXECUTED
463a4: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
_TOD_Get( &ptimer->time );
463a8: 486a 006a pea %a2@(106) <== NOT EXECUTED
463ac: 4eb9 0004 7bfc jsr 47bfc <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
463b2: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
463b8: 588f addql #4,%sp <== NOT EXECUTED
463ba: 4280 clrl %d0 <== NOT EXECUTED
463bc: 6000 fe9e braw 4625c <timer_settime+0x130> <== NOT EXECUTED
463c0: 220a movel %a2,%d1 <== NOT EXECUTED
463c2: 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;
463c8: 2241 moveal %d1,%a1 <== NOT EXECUTED
463ca: 2043 moveal %d3,%a0 <== NOT EXECUTED
463cc: 200a movel %a2,%d0 <== NOT EXECUTED
463ce: 0680 0000 0056 addil #86,%d0 <== NOT EXECUTED
463d4: 47ea 005a lea %a2@(90),%a3 <== NOT EXECUTED
463d8: 280a movel %a2,%d4 <== NOT EXECUTED
463da: 0684 0000 005e addil #94,%d4 <== NOT EXECUTED
463e0: 2290 movel %a0@,%a1@ <== NOT EXECUTED
463e2: 2240 moveal %d0,%a1 <== NOT EXECUTED
463e4: 2042 moveal %d2,%a0 <== NOT EXECUTED
463e6: 2290 movel %a0@,%a1@ <== NOT EXECUTED
463e8: 2244 moveal %d4,%a1 <== NOT EXECUTED
463ea: 2694 movel %a4@,%a3@ <== NOT EXECUTED
463ec: 2295 movel %a5@,%a1@ <== NOT EXECUTED
/* Indicates that the timer is created and stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
463ee: 7004 moveq #4,%d0 <== NOT EXECUTED
463f0: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/* Returns with success */
_Thread_Enable_dispatch();
463f4: 4eb9 0004 9172 jsr 49172 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
463fa: 4280 clrl %d0 <== NOT EXECUTED
463fc: 6000 ff5a braw 46358 <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 5c60 jmp 45c60 <_times> <== NOT EXECUTED
00049740 <truncate>:
int truncate(
const char *path,
off_t length
)
{
49740: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49744: 2f03 movel %d3,%sp@- <== NOT EXECUTED
49746: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_WRONLY );
49748: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4974c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49750: 4eb9 0004 7190 jsr 47190 <open> <== NOT EXECUTED
if ( fd == -1 )
49756: 508f addql #8,%sp <== NOT EXECUTED
)
{
int status;
int fd;
fd = open( path, O_WRONLY );
49758: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( fd == -1 )
4975a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4975c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4975e: 672c beqs 4978c <truncate+0x4c> <== NOT EXECUTED
return -1;
status = ftruncate( fd, length );
49760: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49764: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49768: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4976a: 4eb9 0004 f180 jsr 4f180 <ftruncate> <== NOT EXECUTED
49770: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
49772: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49774: 4eb9 0004 5964 jsr 45964 <close> <== NOT EXECUTED
return status;
}
4977a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4977e: 2003 movel %d3,%d0 <== NOT EXECUTED
status = ftruncate( fd, length );
(void) close( fd );
return status;
49780: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
49784: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
49788: 4e5e unlk %fp <== NOT EXECUTED
4978a: 4e75 rts <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_WRONLY );
if ( fd == -1 )
return -1;
4978c: 76ff moveq #-1,%d3 <== NOT EXECUTED
status = ftruncate( fd, length );
(void) close( fd );
return status;
}
4978e: 2003 movel %d3,%d0 <== NOT EXECUTED
49790: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
49794: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
49798: 4e5e unlk %fp <== NOT EXECUTED
00046206 <ualarm>:
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
46206: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4620a: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
4620e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Initialize the timer used to implement alarm().
*/
if ( !the_timer->routine ) {
46212: 4ab9 0006 1ed8 tstl 61ed8 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED
46218: 6700 0086 beqw 462a0 <ualarm+0x9a> <== NOT EXECUTED
_Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
} else {
Watchdog_States state;
state = _Watchdog_Remove( the_timer );
4621c: 4879 0006 1ebc pea 61ebc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED
46222: 4eb9 0004 a038 jsr 4a038 <_Watchdog_Remove> <== NOT EXECUTED
if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
46228: 588f addql #4,%sp <== NOT EXECUTED
4622a: 7201 moveq #1,%d1 <== NOT EXECUTED
4622c: 5580 subql #2,%d0 <== NOT EXECUTED
4622e: b280 cmpl %d0,%d1 <== NOT EXECUTED
46230: 6400 0098 bccw 462ca <ualarm+0xc4> <== NOT EXECUTED
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
useconds_t remaining = 0;
46234: 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 ) {
46236: 4a82 tstl %d2 <== NOT EXECUTED
46238: 660c bnes 46246 <ualarm+0x40> <== NOT EXECUTED
_Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );
}
return remaining;
}
4623a: 2003 movel %d3,%d0 <== NOT EXECUTED
4623c: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED
46242: 4e5e unlk %fp <== NOT EXECUTED
46244: 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 );
46246: 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;
46248: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
ticks = _Timespec_To_ticks( &tp );
4624e: 5184 subql #8,%d4 <== NOT EXECUTED
46250: 45f9 0004 9b38 lea 49b38 <_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;
46256: 4c41 2000 remul %d1,%d0,%d2 <== NOT EXECUTED
4625a: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
4625e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
46264: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
ticks = _Timespec_To_ticks( &tp );
46268: 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;
4626a: 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;
4626e: 2d42 fff8 movel %d2,%fp@(-8) <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
ticks = _Timespec_To_ticks( &tp );
46272: 4e92 jsr %a2@ <== NOT EXECUTED
if ( ticks == 0 )
ticks = 1;
_Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );
46274: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46276: 4e92 jsr %a2@ <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46278: 4879 0006 1ebc pea 61ebc <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED
4627e: 4879 0006 1768 pea 61768 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46284: 23c0 0006 1ec8 movel %d0,61ec8 <_POSIX_signals_Ualarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4628a: 4eb9 0004 9ee4 jsr 49ee4 <_Watchdog_Insert> <== NOT EXECUTED
46290: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
return remaining;
}
46294: 2003 movel %d3,%d0 <== NOT EXECUTED
46296: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED
4629c: 4e5e unlk %fp <== NOT EXECUTED
4629e: 4e75 rts <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
462a0: 42b9 0006 1ec4 clrl 61ec4 <_POSIX_signals_Ualarm_timer+0x8><== NOT EXECUTED
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
useconds_t remaining = 0;
462a6: 4283 clrl %d3 <== NOT EXECUTED
the_watchdog->routine = routine;
462a8: 203c 0004 61c4 movel #287172,%d0 <== NOT EXECUTED
the_watchdog->id = id;
462ae: 42b9 0006 1edc clrl 61edc <_POSIX_signals_Ualarm_timer+0x20><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
462b4: 23c0 0006 1ed8 movel %d0,61ed8 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id;
the_watchdog->user_data = user_data;
462ba: 42b9 0006 1ee0 clrl 61ee0 <_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 ) {
462c0: 4a82 tstl %d2 <== NOT EXECUTED
462c2: 6700 ff76 beqw 4623a <ualarm+0x34> <== NOT EXECUTED
462c6: 6000 ff7e braw 46246 <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);
462ca: 2039 0006 1ed0 movel 61ed0 <_POSIX_signals_Ualarm_timer+0x14>,%d0<== NOT EXECUTED
462d0: d0b9 0006 1ec8 addl 61ec8 <_POSIX_signals_Ualarm_timer+0xc>,%d0<== NOT EXECUTED
/* remaining is now in ticks */
_Timespec_From_ticks( ticks, &tp );
462d6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
462da: 90b9 0006 1ed4 subl 61ed4 <_POSIX_signals_Ualarm_timer+0x18>,%d0<== NOT EXECUTED
remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
462e0: 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 );
462e6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
462e8: 4eb9 0004 9aac jsr 49aac <_Timespec_From_ticks> <== NOT EXECUTED
remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
462ee: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
462f2: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
remaining += tp.tv_nsec / 1000;
462f6: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED
462fc: 508f addql #8,%sp <== NOT EXECUTED
462fe: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
46302: 4c44 3803 remsl %d4,%d3,%d3 <== NOT EXECUTED
46306: 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 ) {
46308: 4a82 tstl %d2 <== NOT EXECUTED
4630a: 6700 ff2e beqw 4623a <ualarm+0x34> <== NOT EXECUTED
4630e: 6000 ff36 braw 46246 <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 0270 moveal 60270 <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
000462f0 <uname>:
*/
int uname(
struct utsname *name
)
{
462f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
462f4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
462f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
462f8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
release = 5.3
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
462fc: 4a8a tstl %a2 <== NOT EXECUTED
462fe: 6700 00b6 beqw 463b6 <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 );
46302: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
46306: 204a moveal %a2,%a0 <== NOT EXECUTED
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
46308: 4879 0005 e881 pea 5e881 <rtems_filesystem_default_pathconf+0xb5><== NOT EXECUTED
4630e: 47f9 0005 0504 lea 50504 <snprintf>,%a3 <== NOT EXECUTED
46314: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
46318: 486a 0020 pea %a2@(32) <== NOT EXECUTED
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
4631c: 20fc 5254 454d movel #1381254477,%a0@+ <== NOT EXECUTED
46322: 20fc 5300 0000 movel #1392508928,%a0@+ <== NOT EXECUTED
46328: 4298 clrl %a0@+ <== NOT EXECUTED
4632a: 4298 clrl %a0@+ <== NOT EXECUTED
4632c: 4298 clrl %a0@+ <== NOT EXECUTED
4632e: 4298 clrl %a0@+ <== NOT EXECUTED
46330: 4298 clrl %a0@+ <== NOT EXECUTED
46332: 4290 clrl %a0@ <== NOT EXECUTED
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
46334: 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 );
46336: 4879 0005 e889 pea 5e889 <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) );
4633c: 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 );
46342: 4879 0005 e895 pea 5e895 <rtems_filesystem_default_pathconf+0xc9><== NOT EXECUTED
46348: 4879 0005 e8a7 pea 5e8a7 <rtems_filesystem_default_pathconf+0xdb><== NOT EXECUTED
4634e: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
46352: 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) );
46356: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED
4635a: 203c 2e39 392e movel #775502126,%d0 <== NOT EXECUTED
46360: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
46364: 203c 3000 0000 movel #805306368,%d0 <== NOT EXECUTED
4636a: 42aa 004c clrl %a2@(76) <== NOT EXECUTED
4636e: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
46372: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
46376: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED
4637a: 42aa 0058 clrl %a2@(88) <== NOT EXECUTED
4637e: 42aa 005c clrl %a2@(92) <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
46382: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED
46386: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
4638a: 42aa 0068 clrl %a2@(104) <== NOT EXECUTED
4638e: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
46392: 42aa 0070 clrl %a2@(112) <== NOT EXECUTED
46396: 42aa 0074 clrl %a2@(116) <== NOT EXECUTED
4639a: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED
4639e: 42aa 007c clrl %a2@(124) <== NOT EXECUTED
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
463a2: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
}
463a4: 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;
463a8: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
463ac: 4280 clrl %d0 <== NOT EXECUTED
}
463ae: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
463b2: 4e5e unlk %fp <== NOT EXECUTED
463b4: 4e75 rts <== NOT EXECUTED
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
463b6: 4eb9 0004 f8ec jsr 4f8ec <__errno> <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
return 0;
}
463bc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
463c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
463c2: 720e moveq #14,%d1 <== NOT EXECUTED
463c4: 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;
}
463c6: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
463ca: 4e5e unlk %fp <== NOT EXECUTED
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
463cc: 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;
}
00046c70 <unlink>:
#include <rtems/seterr.h>
int unlink(
const char *path
)
{
46c70: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED
46c74: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
46c78: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Get the node to be unlinked. Find the parent path first.
*/
parentpathlen = rtems_filesystem_dirname ( path );
46c7c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46c7e: 4eb9 0004 3de8 jsr 43de8 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( parentpathlen == 0 )
46c84: 588f addql #4,%sp <== NOT EXECUTED
46c86: 4a80 tstl %d0 <== NOT EXECUTED
46c88: 6600 00f4 bnew 46d7e <unlink+0x10e> <== NOT EXECUTED
rtems_filesystem_get_start_loc( path, &i, &parentloc );
46c8c: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED
46c90: 4283 clrl %d3 <== NOT EXECUTED
46c92: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46c94: 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;
46c98: 4204 clrb %d4 <== NOT EXECUTED
*/
parentpathlen = rtems_filesystem_dirname ( path );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( path, &i, &parentloc );
46c9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46c9c: 4eb9 0004 4e6c jsr 44e6c <rtems_filesystem_get_start_loc> <== NOT EXECUTED
46ca2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
46ca6: 2d52 ffd4 movel %a2@,%fp@(-44) <== NOT EXECUTED
name = path + parentpathlen;
46caa: d682 addl %d2,%d3 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
46cac: 47f9 0005 4038 lea 54038 <strlen>,%a3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
46cb2: 240e movel %fp,%d2 <== NOT EXECUTED
46cb4: 0682 ffff ffd4 addil #-44,%d2 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
46cba: 2d6e ffec ffd8 movel %fp@(-20),%fp@(-40) <== NOT EXECUTED
46cc0: 2d6e fff0 ffdc movel %fp@(-16),%fp@(-36) <== NOT EXECUTED
46cc6: 2d6e fff4 ffe0 movel %fp@(-12),%fp@(-32) <== NOT EXECUTED
46ccc: 2d6e fff8 ffe4 movel %fp@(-8),%fp@(-28) <== NOT EXECUTED
name = path + parentpathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
46cd2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46cd4: 4e93 jsr %a3@ <== NOT EXECUTED
46cd6: 2e80 movel %d0,%sp@ <== NOT EXECUTED
46cd8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46cda: 4eb9 0004 3e2a jsr 43e2a <rtems_filesystem_prefix_separators><== NOT EXECUTED
46ce0: d680 addl %d0,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
46ce2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46ce4: 4e93 jsr %a3@ <== NOT EXECUTED
46ce6: 4297 clrl %sp@ <== NOT EXECUTED
46ce8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46cea: 42a7 clrl %sp@- <== NOT EXECUTED
46cec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46cee: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46cf0: 4eb9 0004 3d2c jsr 43d2c <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &loc, false );
if ( result != 0 ) {
46cf6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
46cfa: 4a80 tstl %d0 <== NOT EXECUTED
46cfc: 6656 bnes 46d54 <unlink+0xe4> <== NOT EXECUTED
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return -1;
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
46cfe: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
46d02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46d04: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
46d08: 4e90 jsr %a0@ <== NOT EXECUTED
46d0a: 588f addql #4,%sp <== NOT EXECUTED
46d0c: 7201 moveq #1,%d1 <== NOT EXECUTED
46d0e: b280 cmpl %d0,%d1 <== NOT EXECUTED
46d10: 6700 0092 beqw 46da4 <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 );
46d14: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46d16: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
46d1a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46d1c: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
46d20: 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 );
46d26: 4e90 jsr %a0@ <== NOT EXECUTED
46d28: 2600 movel %d0,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
46d2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46d2c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
46d2e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46d32: 4a04 tstb %d4 <== NOT EXECUTED
46d34: 660c bnes 46d42 <unlink+0xd2> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return result;
}
46d36: 2003 movel %d3,%d0 <== NOT EXECUTED
46d38: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46d3e: 4e5e unlk %fp <== NOT EXECUTED
46d40: 4e75 rts <== NOT EXECUTED
result = (*loc.ops->unlink_h)( &parentloc, &loc );
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
46d42: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46d44: 4e93 jsr %a3@ <== NOT EXECUTED
46d46: 588f addql #4,%sp <== NOT EXECUTED
return result;
}
46d48: 2003 movel %d3,%d0 <== NOT EXECUTED
46d4a: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46d50: 4e5e unlk %fp <== NOT EXECUTED
46d52: 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 )
46d54: 4a04 tstb %d4 <== NOT EXECUTED
46d56: 660e bnes 46d66 <unlink+0xf6> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return -1;
46d58: 76ff moveq #-1,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
46d5a: 2003 movel %d3,%d0 <== NOT EXECUTED
46d5c: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46d62: 4e5e unlk %fp <== NOT EXECUTED
46d64: 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 );
46d66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return -1;
46d68: 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 );
46d6a: 4eb9 0004 3e80 jsr 43e80 <rtems_filesystem_freenode> <== NOT EXECUTED
46d70: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
46d72: 2003 movel %d3,%d0 <== NOT EXECUTED
46d74: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46d7a: 4e5e unlk %fp <== NOT EXECUTED
46d7c: 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,
46d7e: 42a7 clrl %sp@- <== NOT EXECUTED
46d80: 45ee ffe8 lea %fp@(-24),%a2 <== NOT EXECUTED
46d84: 2600 movel %d0,%d3 <== NOT EXECUTED
46d86: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46d88: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
46d8c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46d8e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46d90: 4eb9 0004 3d9c jsr 43d9c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&parentloc,
false );
if ( result != 0 )
46d96: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46d9a: 4a80 tstl %d0 <== NOT EXECUTED
46d9c: 66ba bnes 46d58 <unlink+0xe8> <== NOT EXECUTED
return -1;
free_parentloc = true;
46d9e: 7801 moveq #1,%d4 <== NOT EXECUTED
46da0: 6000 ff04 braw 46ca6 <unlink+0x36> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
return -1;
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_filesystem_freenode( &loc );
46da4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46da6: 47f9 0004 3e80 lea 43e80 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
46dac: 4e93 jsr %a3@ <== NOT EXECUTED
if ( free_parentloc )
46dae: 588f addql #4,%sp <== NOT EXECUTED
46db0: 4a04 tstb %d4 <== NOT EXECUTED
46db2: 661a bnes 46dce <unlink+0x15e> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
rtems_set_errno_and_return_minus_one( EISDIR );
46db4: 4eb9 0005 2c94 jsr 52c94 <__errno> <== NOT EXECUTED
46dba: 76ff moveq #-1,%d3 <== NOT EXECUTED
46dbc: 2040 moveal %d0,%a0 <== NOT EXECUTED
46dbe: 7015 moveq #21,%d0 <== NOT EXECUTED
46dc0: 2080 movel %d0,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
46dc2: 2003 movel %d3,%d0 <== NOT EXECUTED
46dc4: 4cee 0c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46dca: 4e5e unlk %fp <== NOT EXECUTED
46dcc: 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 );
46dce: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
46dd0: 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 );
46dd2: 4e93 jsr %a3@ <== NOT EXECUTED
46dd4: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
46dd6: 4eb9 0005 2c94 jsr 52c94 <__errno> <== NOT EXECUTED
46ddc: 2040 moveal %d0,%a0 <== NOT EXECUTED
46dde: 7015 moveq #21,%d0 <== NOT EXECUTED
46de0: 2080 movel %d0,%a0@ <== NOT EXECUTED
46de2: 60de bras 46dc2 <unlink+0x152> <== NOT EXECUTED
00046ff0 <unmount>:
*/
int unmount(
const char *path
)
{
46ff0: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
46ff4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
46ff8: 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 ) )
46ffc: 240e movel %fp,%d2 <== NOT EXECUTED
46ffe: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
47004: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47006: 4eb9 0005 1184 jsr 51184 <strlen> <== NOT EXECUTED
4700c: 7201 moveq #1,%d1 <== NOT EXECUTED
4700e: 2e81 movel %d1,%sp@ <== NOT EXECUTED
47010: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47012: 42a7 clrl %sp@- <== NOT EXECUTED
47014: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47016: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47018: 4eb9 0004 3cf8 jsr 43cf8 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
4701e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
47022: 4a80 tstl %d0 <== NOT EXECUTED
47024: 6664 bnes 4708a <unmount+0x9a> <== NOT EXECUTED
return -1;
mt_entry = loc.mt_entry;
47026: 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 ){
4702a: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
4702e: b0aa 001c cmpl %a2@(28),%d0 <== NOT EXECUTED
47032: 6600 00b6 bnew 470ea <unmount+0xfa> <== NOT EXECUTED
/*
* Free the loc node and just use the nodes from the mt_entry .
*/
rtems_filesystem_freenode( &loc );
47036: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47038: 47f9 0004 3ddc lea 43ddc <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
4703e: 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 )
47040: 2079 0006 0a94 moveal 60a94 <rtems_current_user_env>,%a0 <== NOT EXECUTED
47046: 588f addql #4,%sp <== NOT EXECUTED
47048: b5e8 0014 cmpal %a0@(20),%a2 <== NOT EXECUTED
4704c: 6700 00be beqw 4710c <unmount+0x11c> <== NOT EXECUTED
/*
* Verify there are no file systems below the path specified
*/
if ( rtems_filesystem_mount_iterate( is_fs_below_mount_point,
47050: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
47054: 487a ff82 pea %pc@(46fd8 <is_fs_below_mount_point>) <== NOT EXECUTED
47058: 4eb9 0004 46c4 jsr 446c4 <rtems_filesystem_mount_iterate> <== NOT EXECUTED
4705e: 508f addql #8,%sp <== NOT EXECUTED
47060: 4a00 tstb %d0 <== NOT EXECUTED
47062: 6600 00a8 bnew 4710c <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 )
47066: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47068: 4eb9 0004 4194 jsr 44194 <rtems_libio_is_open_files_in_fs> <== NOT EXECUTED
4706e: 588f addql #4,%sp <== NOT EXECUTED
47070: 7201 moveq #1,%d1 <== NOT EXECUTED
47072: b280 cmpl %d0,%d1 <== NOT EXECUTED
47074: 6700 0096 beqw 4710c <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 )
47078: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
4707c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4707e: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED
47082: 4e90 jsr %a0@ <== NOT EXECUTED
47084: 588f addql #4,%sp <== NOT EXECUTED
47086: 4a80 tstl %d0 <== NOT EXECUTED
47088: 670c beqs 47096 <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;
4708a: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
4708c: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED
47092: 4e5e unlk %fp <== NOT EXECUTED
47094: 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){
47096: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
4709a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4709c: 2068 002c moveal %a0@(44),%a0 <== NOT EXECUTED
470a0: 4e90 jsr %a0@ <== NOT EXECUTED
470a2: 588f addql #4,%sp <== NOT EXECUTED
470a4: 4a80 tstl %d0 <== NOT EXECUTED
470a6: 667c bnes 47124 <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 );
470a8: 42a7 clrl %sp@- <== NOT EXECUTED
470aa: 42a7 clrl %sp@- <== NOT EXECUTED
470ac: 2f39 0006 211c movel 6211c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
470b2: 4eb9 0004 7bdc jsr 47bdc <rtems_semaphore_obtain> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
470b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470ba: 4eb9 0004 863c jsr 4863c <_Chain_Extract> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
470c0: 2f39 0006 211c movel 6211c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
470c6: 4eb9 0004 7d1c jsr 47d1c <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 );
470cc: 486a 0008 pea %a2@(8) <== NOT EXECUTED
470d0: 4e93 jsr %a3@ <== NOT EXECUTED
free( mt_entry );
470d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470d4: 4eb9 0004 3df0 jsr 43df0 <free> <== NOT EXECUTED
return 0;
470da: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
470de: 4280 clrl %d0 <== NOT EXECUTED
}
470e0: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED
470e6: 4e5e unlk %fp <== NOT EXECUTED
470e8: 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 );
470ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
470ec: 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 );
470ee: 4eb9 0004 3ddc jsr 43ddc <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
470f4: 4eb9 0004 fc90 jsr 4fc90 <__errno> <== NOT EXECUTED
470fa: 588f addql #4,%sp <== NOT EXECUTED
470fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
470fe: 70ff moveq #-1,%d0 <== NOT EXECUTED
47100: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
47102: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED
47108: 4e5e unlk %fp <== NOT EXECUTED
4710a: 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 );
4710c: 4eb9 0004 fc90 jsr 4fc90 <__errno> <== NOT EXECUTED
47112: 7210 moveq #16,%d1 <== NOT EXECUTED
47114: 2040 moveal %d0,%a0 <== NOT EXECUTED
47116: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
47118: 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 );
4711e: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
47120: 4e5e unlk %fp <== NOT EXECUTED
47122: 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 )
47124: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
47128: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4712a: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED
4712e: 4e90 jsr %a0@ <== NOT EXECUTED
47130: 588f addql #4,%sp <== NOT EXECUTED
47132: 4a80 tstl %d0 <== NOT EXECUTED
47134: 6700 ff54 beqw 4708a <unmount+0x9a> <== NOT EXECUTED
rtems_fatal_error_occurred( 0 );
47138: 42a7 clrl %sp@- <== NOT EXECUTED
4713a: 4eb9 0004 82e0 jsr 482e0 <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 1c64 jsr 51c64 <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: 222a 0004 movel %a2@(4),%d1 <== NOT EXECUTED
46fce: 2012 movel %a2@,%d0 <== NOT EXECUTED
now.actime = now.modtime = time( NULL );
times = &now;
}
result = (*temp_loc.ops->utime_h)( &temp_loc, times->actime, times->modtime );
46fd0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46fd2: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
46fd6: 2f00 movel %d0,%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 3f2c jsr 53f2c <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: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47018: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
4701c: 2f00 movel %d0,%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
0004632c <vfork>:
#include <unistd.h>
pid_t vfork(void)
{
return -1;
}
4632c: 70ff moveq #-1,%d0 <== NOT EXECUTED
#include <sys/types.h>
#include <unistd.h>
pid_t vfork(void)
{
4632e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
46332: 4e5e unlk %fp <== NOT EXECUTED
...
000459bc <vprintk>:
*/
void vprintk(
const char *fmt,
va_list ap
)
{
459bc: 4e56 ffc0 linkw %fp,#-64
459c0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
459c4: 246e 0008 moveal %fp@(8),%a2
for (; *fmt != '\0'; fmt++) {
459c8: 1012 moveb %a2@,%d0
*/
void vprintk(
const char *fmt,
va_list ap
)
{
459ca: 2a6e 000c moveal %fp@(12),%a5
for (; *fmt != '\0'; fmt++) {
459ce: 6700 01ae beqw 45b7e <vprintk+0x1c2>
459d2: 47f9 0005 d451 lea 5d451 <rtems_filesystem_default_pathconf+0xb5>,%a3
bool minus = false;
bool sign = false;
char lead = ' ';
char c;
if (*fmt != '%') {
459d8: 49c0 extbl %d0
459da: 7225 moveq #37,%d1
459dc: b280 cmpl %d0,%d1
459de: 6600 01dc bnew 45bbc <vprintk+0x200>
BSP_output_char(*fmt);
continue;
}
fmt++;
459e2: 528a addql #1,%a2
if (*fmt == '0' ) {
459e4: 7430 moveq #48,%d2
459e6: 1012 moveb %a2@,%d0
459e8: 1200 moveb %d0,%d1
459ea: 49c1 extbl %d1
459ec: b481 cmpl %d1,%d2
459ee: 6700 0218 beqw 45c08 <vprintk+0x24c>
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
bool sign = false;
char lead = ' ';
459f2: 7c20 moveq #32,%d6
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
459f4: 762d moveq #45,%d3
459f6: b681 cmpl %d1,%d3
459f8: 6700 01e2 beqw 45bdc <vprintk+0x220>
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
459fc: 2400 movel %d0,%d2
459fe: 0682 ffff ffd0 addil #-48,%d2
45a04: 7a09 moveq #9,%d5
45a06: 0282 0000 00ff andil #255,%d2
{
for (; *fmt != '\0'; fmt++) {
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
45a0c: 4204 clrb %d4
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a0e: ba82 cmpl %d2,%d5
45a10: 6500 01ea bcsw 45bfc <vprintk+0x240>
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
45a14: 41ea 0001 lea %a2@(1),%a0 <== NOT EXECUTED
45a18: 4282 clrl %d2 <== NOT EXECUTED
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
width *= 10;
45a1a: 2602 movel %d2,%d3 <== NOT EXECUTED
width += ((unsigned) *fmt - '0');
45a1c: 2448 moveal %a0,%a2 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a1e: 5288 addql #1,%a0 <== NOT EXECUTED
45a20: 7a09 moveq #9,%d5 <== NOT EXECUTED
width *= 10;
45a22: e78b lsll #3,%d3 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a24: 1012 moveb %a2@,%d0 <== NOT EXECUTED
width *= 10;
45a26: 2243 moveal %d3,%a1 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a28: 2600 movel %d0,%d3 <== NOT EXECUTED
45a2a: 0683 ffff ffd0 addil #-48,%d3 <== NOT EXECUTED
width *= 10;
45a30: 43f1 2a00 lea %a1@(00000000,%d2:l:2),%a1 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a34: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
width *= 10;
width += ((unsigned) *fmt - '0');
45a3a: 43f1 18d0 lea %a1@(ffffffd0,%d1:l),%a1 <== NOT EXECUTED
45a3e: 1200 moveb %d0,%d1 <== NOT EXECUTED
45a40: 2409 movel %a1,%d2 <== NOT EXECUTED
45a42: 49c1 extbl %d1 <== NOT EXECUTED
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45a44: ba83 cmpl %d3,%d5 <== NOT EXECUTED
45a46: 64d2 bccs 45a1a <vprintk+0x5e> <== NOT EXECUTED
width *= 10;
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
45a48: 766c moveq #108,%d3 <== NOT EXECUTED
45a4a: 1200 moveb %d0,%d1 <== NOT EXECUTED
45a4c: 49c1 extbl %d1 <== NOT EXECUTED
45a4e: b681 cmpl %d1,%d3 <== NOT EXECUTED
45a50: 6700 0136 beqw 45b88 <vprintk+0x1cc> <== NOT EXECUTED
lflag = true;
c = *++fmt;
}
if ( c == 'c' ) {
45a54: 49c0 extbl %d0
45a56: 7a63 moveq #99,%d5
45a58: ba80 cmpl %d0,%d5
45a5a: 6700 013a beqw 45b96 <vprintk+0x1da>
/* 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' ) {
45a5e: 7673 moveq #115,%d3
45a60: b680 cmpl %d0,%d3
45a62: 6700 01b2 beqw 45c16 <vprintk+0x25a>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
45a66: 7a6f moveq #111,%d5
45a68: ba80 cmpl %d0,%d5
45a6a: 6700 0166 beqw 45bd2 <vprintk+0x216>
45a6e: 764f moveq #79,%d3
45a70: b680 cmpl %d0,%d3
45a72: 6700 015e beqw 45bd2 <vprintk+0x216>
base = 8; sign = false;
} else if ( c == 'i' || c == 'I' ||
45a76: 1a3c 0069 moveb #105,%d5
45a7a: ba80 cmpl %d0,%d5
45a7c: 6700 0134 beqw 45bb2 <vprintk+0x1f6>
45a80: 163c 0049 moveb #73,%d3
45a84: b680 cmpl %d0,%d3
45a86: 6700 012a beqw 45bb2 <vprintk+0x1f6>
45a8a: 1a3c 0064 moveb #100,%d5
45a8e: ba80 cmpl %d0,%d5
45a90: 6700 0120 beqw 45bb2 <vprintk+0x1f6>
c == 'd' || c == 'D' ) {
45a94: 163c 0044 moveb #68,%d3 <== NOT EXECUTED
45a98: b680 cmpl %d0,%d3 <== NOT EXECUTED
45a9a: 6700 0116 beqw 45bb2 <vprintk+0x1f6> <== NOT EXECUTED
base = 10; sign = true;
} else if ( c == 'u' || c == 'U' ) {
45a9e: 1a3c 0075 moveb #117,%d5 <== NOT EXECUTED
45aa2: ba80 cmpl %d0,%d5 <== NOT EXECUTED
45aa4: 6700 024e beqw 45cf4 <vprintk+0x338> <== NOT EXECUTED
45aa8: 163c 0055 moveb #85,%d3 <== NOT EXECUTED
45aac: b680 cmpl %d0,%d3 <== NOT EXECUTED
45aae: 6700 0244 beqw 45cf4 <vprintk+0x338> <== NOT EXECUTED
base = 10; sign = false;
} else if ( c == 'x' || c == 'X' ) {
45ab2: 1a3c 0078 moveb #120,%d5 <== NOT EXECUTED
45ab6: ba80 cmpl %d0,%d5 <== NOT EXECUTED
45ab8: 6700 0256 beqw 45d10 <vprintk+0x354> <== NOT EXECUTED
45abc: 163c 0058 moveb #88,%d3 <== NOT EXECUTED
45ac0: b680 cmpl %d0,%d3 <== NOT EXECUTED
45ac2: 6700 024c beqw 45d10 <vprintk+0x354> <== NOT EXECUTED
base = 16; sign = false;
} else if ( c == 'p' ) {
45ac6: 1a3c 0070 moveb #112,%d5 <== NOT EXECUTED
45aca: ba80 cmpl %d0,%d5 <== NOT EXECUTED
45acc: 6600 00ee bnew 45bbc <vprintk+0x200> <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45ad0: 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;
45ad2: 7610 moveq #16,%d3 <== NOT EXECUTED
45ad4: 4200 clrb %d0 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45ad6: 2815 movel %a5@,%d4
lflag ? va_arg(ap, long) : (long) va_arg(ap, int),
45ad8: 588d addql #4,%a5
unsigned long unsigned_num;
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
45ada: 4a00 tstb %d0
45adc: 6706 beqs 45ae4 <vprintk+0x128> <== NEVER TAKEN
45ade: 4a84 tstl %d4
45ae0: 6d00 01dc bltw 45cbe <vprintk+0x302>
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45ae4: 2004 movel %d4,%d0
45ae6: 4c43 0000 remul %d3,%d0,%d0
45aea: 6700 01f4 beqw 45ce0 <vprintk+0x324>
45aee: 2200 movel %d0,%d1
45af0: 43ee ffec lea %fp@(-20),%a1
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
45af4: 91c8 subal %a0,%a0
while ((n = unsigned_num / base) > 0) {
toPrint[count++] = (char) (unsigned_num - (n * base));
45af6: 5288 addql #1,%a0
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45af8: 1e03 moveb %d3,%d7
toPrint[count++] = (char) (unsigned_num - (n * base));
45afa: 3a00 movew %d0,%d5
45afc: 2d42 ffe8 movel %d2,%fp@(-24)
45b00: cbc7 mulsw %d7,%d5
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b02: 4c43 1001 remul %d3,%d1,%d1
toPrint[count++] = (char) (unsigned_num - (n * base));
45b06: 9885 subl %d5,%d4
45b08: 2a04 movel %d4,%d5
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b0a: 2800 movel %d0,%d4
toPrint[count++] = (char) (unsigned_num - (n * base));
45b0c: 12c5 moveb %d5,%a1@+
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b0e: 4a81 tstl %d1
45b10: 671a beqs 45b2c <vprintk+0x170> <== ALWAYS TAKEN
45b12: 2001 movel %d1,%d0 <== NOT EXECUTED
45b14: 2200 movel %d0,%d1 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
45b16: 5288 addql #1,%a0 <== NOT EXECUTED
45b18: 3a00 movew %d0,%d5 <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b1a: 4c43 1001 remul %d3,%d1,%d1 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
45b1e: cbc7 mulsw %d7,%d5 <== NOT EXECUTED
45b20: 9885 subl %d5,%d4 <== NOT EXECUTED
45b22: 2a04 movel %d4,%d5 <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b24: 2800 movel %d0,%d4 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
45b26: 12c5 moveb %d5,%a1@+ <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45b28: 4a81 tstl %d1 <== NOT EXECUTED
45b2a: 66e6 bnes 45b12 <vprintk+0x156> <== NOT EXECUTED
45b2c: 2608 movel %a0,%d3
45b2e: 5283 addql #1,%d3
45b30: 242e ffe8 movel %fp@(-24),%d2
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
45b34: 1d80 88ec moveb %d0,%fp@(ffffffec,%a0:l)
for (n=maxwidth ; n > count; n-- )
45b38: b682 cmpl %d2,%d3
45b3a: 6412 bccs 45b4e <vprintk+0x192> <== ALWAYS TAKEN
BSP_output_char(lead);
45b3c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
45b3e: 2079 0005 e410 moveal 5e410 <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-- )
45b44: 5382 subql #1,%d2 <== NOT EXECUTED
BSP_output_char(lead);
45b46: 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-- )
45b48: 588f addql #4,%sp <== NOT EXECUTED
45b4a: b682 cmpl %d2,%d3 <== NOT EXECUTED
45b4c: 65ee bcss 45b3c <vprintk+0x180> <== NOT EXECUTED
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45b4e: 4a83 tstl %d3
45b50: 6724 beqs 45b76 <vprintk+0x1ba> <== NEVER TAKEN
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
45b52: 49ee ffec lea %fp@(-20),%a4
45b56: d9c3 addal %d3,%a4
45b58: 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)])]);
45b5a: 2079 0005 e410 moveal 5e410 <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++) {
45b60: 5282 addql #1,%d2
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
45b62: 1024 moveb %a4@-,%d0
45b64: 49c0 extbl %d0
45b66: 1033 0800 moveb %a3@(00000000,%d0:l),%d0
45b6a: 49c0 extbl %d0
45b6c: 2f00 movel %d0,%sp@-
45b6e: 4e90 jsr %a0@
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
45b70: 588f addql #4,%sp
45b72: b682 cmpl %d2,%d3
45b74: 62e4 bhis 45b5a <vprintk+0x19e>
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45b76: 528a addql #1,%a2
45b78: 1012 moveb %a2@,%d0
45b7a: 6600 fe5c bnew 459d8 <vprintk+0x1c>
sign,
width,
lead
);
}
}
45b7e: 4cee 3cfc ffc0 moveml %fp@(-64),%d2-%d7/%a2-%a5
45b84: 4e5e unlk %fp
45b86: 4e75 rts
fmt++;
}
if ((c = *fmt) == 'l') {
lflag = true;
c = *++fmt;
45b88: 528a addql #1,%a2 <== NOT EXECUTED
}
if ( c == 'c' ) {
45b8a: 7a63 moveq #99,%d5 <== NOT EXECUTED
fmt++;
}
if ((c = *fmt) == 'l') {
lflag = true;
c = *++fmt;
45b8c: 1012 moveb %a2@,%d0 <== NOT EXECUTED
}
if ( c == 'c' ) {
45b8e: 49c0 extbl %d0 <== NOT EXECUTED
45b90: ba80 cmpl %d0,%d5 <== NOT EXECUTED
45b92: 6600 feca bnew 45a5e <vprintk+0xa2> <== NOT EXECUTED
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
45b96: 2015 movel %a5@,%d0
BSP_output_char(chr);
45b98: 49c0 extbl %d0
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45b9a: 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);
45b9c: 588d addql #4,%a5
BSP_output_char(chr);
45b9e: 2f00 movel %d0,%sp@-
45ba0: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0
45ba6: 4e90 jsr %a0@
continue;
45ba8: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45baa: 1012 moveb %a2@,%d0
45bac: 6600 fe2a bnew 459d8 <vprintk+0x1c>
45bb0: 60cc bras 45b7e <vprintk+0x1c2> <== 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;
45bb2: 760a moveq #10,%d3
} else {
BSP_output_char(c);
continue;
}
printNum(
45bb4: 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;
45bb6: 7001 moveq #1,%d0
45bb8: 6000 ff1c braw 45ad6 <vprintk+0x11a>
} 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);
45bbc: 2f00 movel %d0,%sp@-
45bbe: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45bc4: 528a addql #1,%a2
} 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);
45bc6: 4e90 jsr %a0@
continue;
45bc8: 588f addql #4,%sp
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
45bca: 1012 moveb %a2@,%d0
45bcc: 6600 fe0a bnew 459d8 <vprintk+0x1c>
45bd0: 60ac bras 45b7e <vprintk+0x1c2>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
45bd2: 7608 moveq #8,%d3 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45bd4: 49c6 extbl %d6 <== NOT EXECUTED
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
45bd6: 4200 clrb %d0 <== NOT EXECUTED
45bd8: 6000 fefc braw 45ad6 <vprintk+0x11a> <== NOT EXECUTED
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
fmt++;
45bdc: 528a addql #1,%a2 <== NOT EXECUTED
}
while (*fmt >= '0' && *fmt <= '9' ) {
45bde: 7a09 moveq #9,%d5 <== NOT EXECUTED
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
fmt++;
45be0: 1012 moveb %a2@,%d0 <== NOT EXECUTED
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
45be2: 7801 moveq #1,%d4 <== NOT EXECUTED
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
45be4: 2400 movel %d0,%d2 <== NOT EXECUTED
45be6: 0682 ffff ffd0 addil #-48,%d2 <== NOT EXECUTED
45bec: 1200 moveb %d0,%d1 <== NOT EXECUTED
45bee: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
45bf4: 49c1 extbl %d1 <== NOT EXECUTED
45bf6: ba82 cmpl %d2,%d5 <== NOT EXECUTED
45bf8: 6400 fe1a bccw 45a14 <vprintk+0x58> <== NOT EXECUTED
45bfc: 4282 clrl %d2
width *= 10;
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
45bfe: 766c moveq #108,%d3
45c00: b681 cmpl %d1,%d3
45c02: 6600 fe50 bnew 45a54 <vprintk+0x98>
45c06: 6080 bras 45b88 <vprintk+0x1cc> <== NOT EXECUTED
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
45c08: 528a addql #1,%a2 <== NOT EXECUTED
45c0a: 1012 moveb %a2@,%d0 <== NOT EXECUTED
BSP_output_char(*fmt);
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
45c0c: 7c30 moveq #48,%d6 <== NOT EXECUTED
45c0e: 1200 moveb %d0,%d1 <== NOT EXECUTED
45c10: 49c1 extbl %d1 <== NOT EXECUTED
45c12: 6000 fde0 braw 459f4 <vprintk+0x38> <== NOT EXECUTED
}
if ( c == 's' ) {
unsigned i, len;
char *s, *str;
str = va_arg(ap, char *);
45c16: 2855 moveal %a5@,%a4
45c18: 588d addql #4,%a5
if ( str == NULL ) {
45c1a: 4a8c tstl %a4
45c1c: 6700 00e0 beqw 45cfe <vprintk+0x342>
str = "";
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
45c20: 4a14 tstb %a4@
45c22: 6700 00e6 beqw 45d0a <vprintk+0x34e>
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
45c26: 41ec 0001 lea %a4@(1),%a0
if ( str == NULL ) {
str = "";
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
45c2a: 4283 clrl %d3
45c2c: 5283 addql #1,%d3
45c2e: 4a18 tstb %a0@+
45c30: 66fa bnes 45c2c <vprintk+0x270>
;
/* leading spaces */
if ( !minus )
45c32: 4a04 tstb %d4
45c34: 661a bnes 45c50 <vprintk+0x294> <== NEVER TAKEN
for ( i=len ; i<width ; i++ )
45c36: b483 cmpl %d3,%d2
45c38: 6316 blss 45c50 <vprintk+0x294> <== ALWAYS TAKEN
45c3a: 2a03 movel %d3,%d5 <== NOT EXECUTED
BSP_output_char(' ');
45c3c: 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++ )
45c40: 5285 addql #1,%d5 <== NOT EXECUTED
BSP_output_char(' ');
45c42: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0 <== NOT EXECUTED
45c48: 4e90 jsr %a0@ <== NOT EXECUTED
for ( len=0, s=str ; *s ; len++, s++ )
;
/* leading spaces */
if ( !minus )
for ( i=len ; i<width ; i++ )
45c4a: 588f addql #4,%sp <== NOT EXECUTED
45c4c: b485 cmpl %d5,%d2 <== NOT EXECUTED
45c4e: 62ec bhis 45c3c <vprintk+0x280> <== NOT EXECUTED
BSP_output_char(' ');
/* no width option */
if (width == 0) {
45c50: 4a82 tstl %d2
45c52: 6606 bnes 45c5a <vprintk+0x29e> <== NEVER TAKEN
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c54: 4a83 tstl %d3
45c56: 672c beqs 45c84 <vprintk+0x2c8>
45c58: 2403 movel %d3,%d2
45c5a: 1014 moveb %a4@,%d0
45c5c: 6726 beqs 45c84 <vprintk+0x2c8> <== NEVER TAKEN
BSP_output_char(*str);
45c5e: 49c0 extbl %d0
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c60: 528c addql #1,%a4
BSP_output_char(*str);
45c62: 2f00 movel %d0,%sp@-
45c64: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0
45c6a: 4e90 jsr %a0@
45c6c: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c6e: 101c moveb %a4@+,%d0
45c70: 6712 beqs 45c84 <vprintk+0x2c8> <== NEVER TAKEN
BSP_output_char(*str);
45c72: 49c0 extbl %d0
45c74: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0
45c7a: 2f00 movel %d0,%sp@-
45c7c: 4e90 jsr %a0@
45c7e: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
45c80: 101c moveb %a4@+,%d0
45c82: 66ee bnes 45c72 <vprintk+0x2b6>
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
45c84: 4a04 tstb %d4
45c86: 6700 feee beqw 45b76 <vprintk+0x1ba>
for ( i=len ; i<width ; i++ )
45c8a: b483 cmpl %d3,%d2 <== NOT EXECUTED
45c8c: 6300 fee8 blsw 45b76 <vprintk+0x1ba> <== NOT EXECUTED
BSP_output_char(' ');
45c90: 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++ )
45c94: 5283 addql #1,%d3 <== NOT EXECUTED
BSP_output_char(' ');
45c96: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0 <== NOT EXECUTED
45c9c: 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++ )
45c9e: 588f addql #4,%sp <== NOT EXECUTED
45ca0: b483 cmpl %d3,%d2 <== NOT EXECUTED
45ca2: 6300 fed2 blsw 45b76 <vprintk+0x1ba> <== 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 e410 moveal 5e410 <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: 62d6 bhis 45c90 <vprintk+0x2d4> <== NOT EXECUTED
45cba: 6000 feba braw 45b76 <vprintk+0x1ba> <== NOT EXECUTED
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
45cbe: 4878 002d pea 2d <OPER2+0x19> <== NOT EXECUTED
unsigned_num = (unsigned long) -num;
45cc2: 4484 negl %d4 <== NOT EXECUTED
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
45cc4: 2079 0005 e410 moveal 5e410 <BSP_output_char>,%a0 <== NOT EXECUTED
45cca: 4e90 jsr %a0@ <== NOT EXECUTED
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
45ccc: 588f addql #4,%sp <== NOT EXECUTED
45cce: 4a82 tstl %d2 <== NOT EXECUTED
45cd0: 6700 fe12 beqw 45ae4 <vprintk+0x128> <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45cd4: 2004 movel %d4,%d0 <== NOT EXECUTED
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
45cd6: 5382 subql #1,%d2 <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
45cd8: 4c43 0000 remul %d3,%d0,%d0 <== NOT EXECUTED
45cdc: 6600 fe10 bnew 45aee <vprintk+0x132> <== NOT EXECUTED
45ce0: 2004 movel %d4,%d0 <== NOT EXECUTED
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
45ce2: 91c8 subal %a0,%a0 <== NOT EXECUTED
while ((n = unsigned_num / base) > 0) {
45ce4: 7601 moveq #1,%d3 <== NOT EXECUTED
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
45ce6: 1d80 88ec moveb %d0,%fp@(ffffffec,%a0:l) <== NOT EXECUTED
for (n=maxwidth ; n > count; n-- )
45cea: b682 cmpl %d2,%d3 <== NOT EXECUTED
45cec: 6500 fe4e bcsw 45b3c <vprintk+0x180> <== NOT EXECUTED
45cf0: 6000 fe5c braw 45b4e <vprintk+0x192> <== 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;
45cf4: 760a moveq #10,%d3 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45cf6: 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;
45cf8: 4200 clrb %d0 <== NOT EXECUTED
45cfa: 6000 fdda braw 45ad6 <vprintk+0x11a> <== NOT EXECUTED
char *s, *str;
str = va_arg(ap, char *);
if ( str == NULL ) {
str = "";
45cfe: 49f9 0005 d450 lea 5d450 <rtems_filesystem_default_pathconf+0xb4>,%a4<== NOT EXECUTED
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
45d04: 4a14 tstb %a4@ <== NOT EXECUTED
45d06: 6600 ff1e bnew 45c26 <vprintk+0x26a> <== NOT EXECUTED
45d0a: 4283 clrl %d3
45d0c: 6000 ff24 braw 45c32 <vprintk+0x276>
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;
45d10: 7610 moveq #16,%d3 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
45d12: 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;
45d14: 4200 clrb %d0 <== NOT EXECUTED
45d16: 6000 fdbe braw 45ad6 <vprintk+0x11a> <== NOT EXECUTED
...
00046338 <wait>:
#include <rtems/seterr.h>
int wait(
int *stat_loc
)
{
46338: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4633c: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
46342: 7258 moveq #88,%d1 <== NOT EXECUTED
46344: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
46346: 70ff moveq #-1,%d0 <== NOT EXECUTED
46348: 4e5e unlk %fp <== NOT EXECUTED
int wait(
int *stat_loc
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4634a: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
00046350 <waitpid>:
int waitpid(
pid_t pid,
int *stat_loc,
int options
)
{
46350: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
46354: 4eb9 0004 f28c jsr 4f28c <__errno> <== NOT EXECUTED
4635a: 7258 moveq #88,%d1 <== NOT EXECUTED
4635c: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
4635e: 70ff moveq #-1,%d0 <== NOT EXECUTED
46360: 4e5e unlk %fp <== NOT EXECUTED
pid_t pid,
int *stat_loc,
int options
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
46362: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
...
0005c068 <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
5c068: 4e56 fff4 linkw %fp,#-12
5c06c: 202e 0008 movel %fp@(8),%d0
5c070: 222e 000c movel %fp@(12),%d1
5c074: 206e 0010 moveal %fp@(16),%a0
5c078: 48d7 040c moveml %d2-%d3/%a2,%sp@
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5c07c: b0b9 0005 e314 cmpl 5e314 <rtems_libio_number_iops>,%d0
5c082: 6468 bccs 5c0ec <write+0x84> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
5c084: 2400 movel %d0,%d2
5c086: ed88 lsll #6,%d0
5c088: e78a lsll #3,%d2
5c08a: 2479 0005 fb24 moveal 5fb24 <rtems_libio_iops>,%a2
5c090: 9082 subl %d2,%d0
5c092: d5c0 addal %d0,%a2
rtems_libio_check_is_open( iop );
5c094: 202a 0014 movel %a2@(20),%d0
5c098: 0800 0008 btst #8,%d0
5c09c: 674e beqs 5c0ec <write+0x84> <== NEVER TAKEN
rtems_libio_check_buffer( buffer );
5c09e: 4a81 tstl %d1
5c0a0: 6762 beqs 5c104 <write+0x9c> <== NEVER TAKEN
rtems_libio_check_count( count );
5c0a2: 4a88 tstl %a0
5c0a4: 673a beqs 5c0e0 <write+0x78> <== NEVER TAKEN
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
5c0a6: 44c0 movew %d0,%ccr
5c0a8: 665a bnes 5c104 <write+0x9c> <== NEVER TAKEN
/*
* Now process the write() request.
*/
rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c0aa: 226a 0020 moveal %a2@(32),%a1
5c0ae: 2f08 movel %a0,%sp@-
5c0b0: 2f01 movel %d1,%sp@-
5c0b2: 2f0a movel %a2,%sp@-
5c0b4: 2069 000c moveal %a1@(12),%a0
5c0b8: 4e90 jsr %a0@
if ( rc > 0 )
5c0ba: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
/*
* Now process the write() request.
*/
rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5c0be: 2200 movel %d0,%d1 <== NOT EXECUTED
if ( rc > 0 )
5c0c0: 6f14 bles 5c0d6 <write+0x6e> <== NOT EXECUTED
iop->offset += rc;
5c0c2: 2401 movel %d1,%d2 <== NOT EXECUTED
5c0c4: 5bc1 smi %d1 <== NOT EXECUTED
5c0c6: 49c1 extbl %d1 <== NOT EXECUTED
5c0c8: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED
5c0cc: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
5c0d0: d781 addxl %d1,%d3 <== NOT EXECUTED
5c0d2: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5c0d6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5c0dc: 4e5e unlk %fp <== NOT EXECUTED
5c0de: 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 );
5c0e0: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c0e2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5c0e8: 4e5e unlk %fp <== NOT EXECUTED
5c0ea: 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 );
5c0ec: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c0f2: 7409 moveq #9,%d2 <== NOT EXECUTED
5c0f4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c0f6: 70ff moveq #-1,%d0 <== NOT EXECUTED
5c0f8: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c0fa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5c100: 4e5e unlk %fp <== NOT EXECUTED
5c102: 4e75 rts <== NOT EXECUTED
rtems_libio_check_fd( fd );
iop = rtems_libio_iop( fd );
rtems_libio_check_is_open( iop );
rtems_libio_check_buffer( buffer );
rtems_libio_check_count( count );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
5c104: 4eb9 0004 e8e4 jsr 4e8e4 <__errno> <== NOT EXECUTED
5c10a: 7216 moveq #22,%d1 <== NOT EXECUTED
5c10c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5c10e: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c110: 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 );
5c116: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5c118: 4e5e unlk %fp <== NOT EXECUTED
0004717c <writev>:
ssize_t writev(
int fd,
const struct iovec *iov,
int iovcnt
)
{
4717c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
47180: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
47184: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
47188: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4718c: 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 );
47190: b0b9 0005 f0e4 cmpl 5f0e4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
47196: 6400 00e8 bccw 47280 <writev+0x104> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
4719a: 2200 movel %d0,%d1 <== NOT EXECUTED
4719c: ed88 lsll #6,%d0 <== NOT EXECUTED
4719e: e789 lsll #3,%d1 <== NOT EXECUTED
471a0: 2679 0006 08f4 moveal 608f4 <rtems_libio_iops>,%a3 <== NOT EXECUTED
471a6: 9081 subl %d1,%d0 <== NOT EXECUTED
471a8: d7c0 addal %d0,%a3 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
471aa: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
471ae: 0800 0008 btst #8,%d0 <== NOT EXECUTED
471b2: 6700 00cc beqw 47280 <writev+0x104> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
471b6: 44c0 movew %d0,%ccr <== NOT EXECUTED
471b8: 6640 bnes 471fa <writev+0x7e> <== NOT EXECUTED
/*
* Argument validation on IO vector
*/
if ( !iov )
471ba: 4a8a tstl %a2 <== NOT EXECUTED
471bc: 673c beqs 471fa <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
471be: 4a82 tstl %d2 <== NOT EXECUTED
471c0: 6f38 bles 471fa <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
471c2: 0c82 0000 0400 cmpil #1024,%d2 <== NOT EXECUTED
471c8: 6e30 bgts 471fa <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
471ca: 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 )
471cc: 4281 clrl %d1 <== NOT EXECUTED
471ce: 93c9 subal %a1,%a1 <== NOT EXECUTED
471d0: 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 )
471d2: 4a90 tstl %a0@ <== NOT EXECUTED
471d4: 6724 beqs 471fa <writev+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
471d6: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
all_zeros = false;
471da: 57c4 seq %d4 <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
471dc: 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++ ) {
471de: 5281 addql #1,%d1 <== NOT EXECUTED
471e0: 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;
471e2: c684 andl %d4,%d3 <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old || total > SSIZE_MAX )
471e4: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
471e6: 6e12 bgts 471fa <writev+0x7e> <== NOT EXECUTED
471e8: 0c80 0000 7fff cmpil #32767,%d0 <== NOT EXECUTED
471ee: 6e0a bgts 471fa <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++ ) {
471f0: b282 cmpl %d2,%d1 <== NOT EXECUTED
471f2: 6c20 bges 47214 <writev+0x98> <== NOT EXECUTED
471f4: 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 )
471f6: 4a90 tstl %a0@ <== NOT EXECUTED
471f8: 66dc bnes 471d6 <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 );
471fa: 4eb9 0004 f970 jsr 4f970 <__errno> <== NOT EXECUTED
47200: 78ff moveq #-1,%d4 <== NOT EXECUTED
47202: 2040 moveal %d0,%a0 <== NOT EXECUTED
47204: 7016 moveq #22,%d0 <== NOT EXECUTED
47206: 2080 movel %d0,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47208: 2004 movel %d4,%d0 <== NOT EXECUTED
4720a: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
47210: 4e5e unlk %fp <== NOT EXECUTED
47212: 4e75 rts <== NOT EXECUTED
}
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
47214: 4a03 tstb %d3 <== NOT EXECUTED
47216: 661c bnes 47234 <writev+0xb8> <== NOT EXECUTED
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t writev(
47218: 588a addql #4,%a2 <== NOT EXECUTED
4721a: 4283 clrl %d3 <== NOT EXECUTED
4721c: 4284 clrl %d4 <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
4721e: 5283 addql #1,%d3 <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
47220: 2012 movel %a2@,%d0 <== NOT EXECUTED
47222: 661e bnes 47242 <writev+0xc6> <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
47224: 508a addql #8,%a2 <== NOT EXECUTED
47226: b682 cmpl %d2,%d3 <== NOT EXECUTED
47228: 6cde bges 47208 <writev+0x8c> <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
4722a: 2012 movel %a2@,%d0 <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
4722c: 5283 addql #1,%d3 <== NOT EXECUTED
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
4722e: 4a80 tstl %d0 <== NOT EXECUTED
47230: 67f2 beqs 47224 <writev+0xa8> <== NOT EXECUTED
47232: 600e bras 47242 <writev+0xc6> <== NOT EXECUTED
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
return 0;
47234: 4284 clrl %d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47236: 2004 movel %d4,%d0 <== NOT EXECUTED
47238: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4723e: 4e5e unlk %fp <== NOT EXECUTED
47240: 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)(
47242: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED
47246: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47248: 2f2a fffc movel %a2@(-4),%sp@- <== NOT EXECUTED
4724c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4724e: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
47252: 4e90 jsr %a0@ <== NOT EXECUTED
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
47254: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47258: 4a80 tstl %d0 <== NOT EXECUTED
4725a: 6d3e blts 4729a <writev+0x11e> <== NOT EXECUTED
return -1;
if ( bytes > 0 ) {
4725c: 6716 beqs 47274 <writev+0xf8> <== NOT EXECUTED
iop->offset += bytes;
total += bytes;
4725e: d880 addl %d0,%d4 <== NOT EXECUTED
if ( bytes < 0 )
return -1;
if ( bytes > 0 ) {
iop->offset += bytes;
47260: 2c00 movel %d0,%d6 <== NOT EXECUTED
47262: 5bc5 smi %d5 <== NOT EXECUTED
47264: 49c5 extbl %d5 <== NOT EXECUTED
47266: ddab 0010 addl %d6,%a3@(16) <== NOT EXECUTED
4726a: 222b 000c movel %a3@(12),%d1 <== NOT EXECUTED
4726e: d385 addxl %d5,%d1 <== NOT EXECUTED
47270: 2741 000c movel %d1,%a3@(12) <== NOT EXECUTED
total += bytes;
}
if (bytes != iov[ v ].iov_len)
47274: b092 cmpl %a2@,%d0 <== NOT EXECUTED
47276: 6690 bnes 47208 <writev+0x8c> <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
47278: 508a addql #8,%a2 <== NOT EXECUTED
4727a: b682 cmpl %d2,%d3 <== NOT EXECUTED
4727c: 6dac blts 4722a <writev+0xae> <== NOT EXECUTED
4727e: 6088 bras 47208 <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 );
47280: 4eb9 0004 f970 jsr 4f970 <__errno> <== NOT EXECUTED
47286: 78ff moveq #-1,%d4 <== NOT EXECUTED
47288: 7209 moveq #9,%d1 <== NOT EXECUTED
4728a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
4728c: 2004 movel %d4,%d0 <== NOT EXECUTED
4728e: 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 );
47294: 2081 movel %d1,%a0@ <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
47296: 4e5e unlk %fp <== NOT EXECUTED
47298: 4e75 rts <== NOT EXECUTED
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
4729a: 78ff moveq #-1,%d4 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
4729c: 2004 movel %d4,%d0 <== NOT EXECUTED
4729e: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
472a4: 4e5e unlk %fp <== NOT EXECUTED