RTEMS 4.11Annotated Report
Thu Jan 27 14:13:22 2011
000433f8 <CPU_usage_Per_thread_handler>:
#include <rtems/cpuuse.h>
static void CPU_usage_Per_thread_handler(
Thread_Control *the_thread
)
{
433f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
433fc: 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
}
43400: 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 );
43402: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED
43406: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED
#else
the_thread->cpu_time_used = 0;
#endif
}
0004a014 <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 ) {
4a014: 7007 moveq #7,%d0
#define MAXSYMLINK 5
int IMFS_Set_handlers(
rtems_filesystem_location_info_t *loc
)
{
4a016: 4e56 0000 linkw %fp,#0
4a01a: 206e 0008 moveal %fp@(8),%a0
4a01e: 2f0a movel %a2,%sp@-
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a020: 2468 0010 moveal %a0@(16),%a2
switch( node->type ) {
4a024: 2250 moveal %a0@,%a1
)
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
4a026: 246a 0034 moveal %a2@(52),%a2
switch( node->type ) {
4a02a: b0a9 0048 cmpl %a1@(72),%d0
4a02e: 6526 bcss 4a056 <IMFS_Set_handlers+0x42> <== NEVER TAKEN
4a030: 2029 0048 movel %a1@(72),%d0
4a034: d080 addl %d0,%d0
4a036: 303b 0808 movew %pc@(4a040 <IMFS_Set_handlers+0x2c>,%d0:l),%d0
4a03a: 48c0 extl %d0
4a03c: 4efb 0802 jmp %pc@(4a040 <IMFS_Set_handlers+0x2c>,%d0:l)
4a040: 0016 .short 0x0016 <== NOT EXECUTED
4a042: 0010 .short 0x0010 <== NOT EXECUTED
4a044: 004c .short 0x004c <== NOT EXECUTED
4a046: 002c .short 0x002c <== NOT EXECUTED
4a048: 002c .short 0x002c <== NOT EXECUTED
4a04a: 001e .short 0x001e <== NOT EXECUTED
4a04c: 001e .short 0x001e <== NOT EXECUTED
4a04e: 003e .short 0x003e <== NOT EXECUTED
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
4a050: 216a 000c 0008 movel %a2@(12),%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a056: 245f moveal %sp@+,%a2
4a058: 4280 clrl %d0
4a05a: 4e5e unlk %fp
4a05c: 4e75 rts
4a05e: 4280 clrl %d0 <== NOT EXECUTED
break;
case IMFS_LINEAR_FILE:
loc->handlers = fs_info->memfile_handlers;
break;
case IMFS_MEMORY_FILE:
loc->handlers = fs_info->memfile_handlers;
4a060: 216a 0008 0008 movel %a2@(8),%a0@(8) <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a066: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4a068: 4e5e unlk %fp <== NOT EXECUTED
4a06a: 4e75 rts <== NOT EXECUTED
4a06c: 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;
4a06e: 203c 0005 cad2 movel #379602,%d0 <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a074: 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;
4a076: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a07a: 4280 clrl %d0 <== NOT EXECUTED
4a07c: 4e75 rts <== NOT EXECUTED
4a07e: 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;
4a080: 216a 0010 0008 movel %a2@(16),%a0@(8) <== NOT EXECUTED
break;
}
return 0;
}
4a086: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4a088: 4e5e unlk %fp <== NOT EXECUTED
4a08a: 4e75 rts <== NOT EXECUTED
4a08c: 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;
4a08e: 203c 0005 ca62 movel #379490,%d0
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a094: 4e5e unlk %fp
switch( node->type ) {
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
break;
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
4a096: 2140 0008 movel %d0,%a0@(8)
loc->handlers = fs_info->fifo_handlers;
break;
}
return 0;
}
4a09a: 4280 clrl %d0 <== NOT EXECUTED
00049d70 <IMFS_allocate_node>:
IMFS_jnode_t *IMFS_allocate_node(
IMFS_jnode_types_t type,
const char *name,
mode_t mode
)
{
49d70: 4e56 fff8 linkw %fp,#-8
49d74: 2f0a movel %a2,%sp@-
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49d76: 4878 0060 pea 60 <DBL_MANT_DIG+0x2b>
49d7a: 4878 0001 pea 1 <ADD>
49d7e: 4eb9 0004 28f0 jsr 428f0 <calloc>
if ( !node )
49d84: 508f addql #8,%sp
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
49d86: 2440 moveal %d0,%a2
if ( !node )
49d88: 4a80 tstl %d0
49d8a: 674e beqs 49dda <IMFS_allocate_node+0x6a> <== NEVER TAKEN
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
strncpy( node->name, name, IMFS_NAME_MAX );
49d8c: 4878 0020 pea 20 <OPER2+0xc>
49d90: 2f2e 000c movel %fp@(12),%sp@-
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
49d94: 256e 0008 0048 movel %fp@(8),%a2@(72)
strncpy( node->name, name, IMFS_NAME_MAX );
49d9a: 486a 000c pea %a2@(12)
return NULL;
/*
* Fill in the basic information
*/
node->st_nlink = 1;
49d9e: 7001 moveq #1,%d0
49da0: 3540 0032 movew %d0,%a2@(50)
node->type = type;
strncpy( node->name, name, IMFS_NAME_MAX );
49da4: 4eb9 0004 eccc jsr 4eccc <strncpy>
/*
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
49daa: 256e 0010 002e movel %fp@(16),%a2@(46)
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49db0: 42a7 clrl %sp@-
49db2: 486e fff8 pea %fp@(-8)
node->st_mode = mode;
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
node->st_gid = getegid();
#else
node->st_uid = 0;
49db6: 4240 clrw %d0
49db8: 3540 0038 movew %d0,%a2@(56)
node->st_gid = 0;
49dbc: 3540 003a movew %d0,%a2@(58)
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
49dc0: 4eb9 0004 2d8c jsr 42d8c <gettimeofday>
node->stat_atime = (time_t) tv.tv_sec;
49dc6: 202e fff8 movel %fp@(-8),%d0
node->stat_mtime = (time_t) tv.tv_sec;
node->stat_ctime = (time_t) tv.tv_sec;
return node;
49dca: 4fef 0014 lea %sp@(20),%sp
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
node->stat_atime = (time_t) tv.tv_sec;
49dce: 2540 003c movel %d0,%a2@(60)
node->stat_mtime = (time_t) tv.tv_sec;
49dd2: 2540 0040 movel %d0,%a2@(64)
node->stat_ctime = (time_t) tv.tv_sec;
49dd6: 2540 0044 movel %d0,%a2@(68)
return node;
}
49dda: 200a movel %a2,%d0
49ddc: 246e fff4 moveal %fp@(-12),%a2
49de0: 4e5e unlk %fp <== NOT EXECUTED
0004a9d4 <IMFS_check_node_remove>:
void IMFS_check_node_remove( IMFS_jnode_t *jnode )
{
4a9d4: 4e56 0000 linkw %fp,#0
4a9d8: 2f0a movel %a2,%sp@-
4a9da: 246e 0008 moveal %fp@(8),%a2
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
4a9de: 2f0a movel %a2,%sp@-
4a9e0: 4eb9 0004 b0d2 jsr 4b0d2 <rtems_libio_is_file_open>
4a9e6: 588f addql #4,%sp
4a9e8: 4a80 tstl %d0
4a9ea: 6634 bnes 4aa20 <IMFS_check_node_remove+0x4c> <== ALWAYS TAKEN
4a9ec: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED
4a9f0: 662e bnes 4aa20 <IMFS_check_node_remove+0x4c> <== NOT EXECUTED
if ( rtems_filesystem_current.node_access == jnode )
4a9f2: 2079 0005 d740 moveal 5d740 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4a9f8: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED
4a9fc: 6744 beqs 4aa42 <IMFS_check_node_remove+0x6e> <== NOT EXECUTED
rtems_filesystem_current.node_access = NULL;
switch ( jnode->type ) {
4a9fe: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4aa02: 7204 moveq #4,%d1 <== NOT EXECUTED
4aa04: b280 cmpl %d0,%d1 <== NOT EXECUTED
4aa06: 6748 beqs 4aa50 <IMFS_check_node_remove+0x7c> <== NOT EXECUTED
4aa08: 123c 0005 moveb #5,%d1 <== NOT EXECUTED
4aa0c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4aa0e: 6718 beqs 4aa28 <IMFS_check_node_remove+0x54> <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4aa10: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4aa14: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4aa18: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4aa1a: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
}
}
4aa20: 246e fffc moveal %fp@(-4),%a2
4aa24: 4e5e unlk %fp
4aa26: 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 );
4aa28: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4aa2a: 4eb9 0004 c7ac jsr 4c7ac <IMFS_memfile_remove> <== NOT EXECUTED
break;
4aa30: 588f addql #4,%sp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4aa32: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4aa36: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4aa3a: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4aa3c: 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 ) {
4aa42: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4aa46: 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;
4aa48: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
switch ( jnode->type ) {
4aa4c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4aa4e: 66b8 bnes 4aa08 <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 );
4aa50: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
4aa54: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
break;
4aa5a: 588f addql #4,%sp <== NOT EXECUTED
default:
break;
}
free( jnode );
4aa5c: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4aa60: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4aa64: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
4aa66: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
00049d3c <IMFS_chown>:
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
49d3c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
49d40: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
49d44: 2f0a movel %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;
49d46: 2450 moveal %a0@,%a2 <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
rtems_set_errno_and_return_minus_one( EPERM );
#endif
jnode->st_uid = owner;
49d48: 356e 000e 0038 movew %fp@(14),%a2@(56) <== NOT EXECUTED
jnode->st_gid = group;
49d4e: 356e 0012 003a movew %fp@(18),%a2@(58) <== NOT EXECUTED
IMFS_update_ctime( jnode );
49d54: 42a7 clrl %sp@- <== NOT EXECUTED
49d56: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
49d5a: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
49d60: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
}
49d66: 4280 clrl %d0 <== NOT EXECUTED
49d68: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
49d6c: 4e5e unlk %fp <== NOT EXECUTED
00049de4 <IMFS_create_node>:
IMFS_jnode_types_t type,
const char *name,
mode_t mode,
const IMFS_types_union *info
)
{
49de4: 4e56 ffec linkw %fp,#-20
49de8: 206e 0008 moveal %fp@(8),%a0
49dec: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
49df0: 242e 000c movel %fp@(12),%d2
49df4: 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 )
49df8: 4a88 tstl %a0
49dfa: 6700 00ac beqw 49ea8 <IMFS_create_node+0xc4>
return NULL;
parent = parent_loc->node_access;
fs_info = parent_loc->mt_entry->fs_info;
49dfe: 2268 0010 moveal %a0@(16),%a1
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49e02: 7007 moveq #7,%d0
* MUST have a parent node to call this routine.
*/
if ( parent_loc == NULL )
return NULL;
parent = parent_loc->node_access;
49e04: 2650 moveal %a0@,%a3
fs_info = parent_loc->mt_entry->fs_info;
49e06: 2469 0034 moveal %a1@(52),%a2
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49e0a: b082 cmpl %d2,%d0
49e0c: 6700 008c beqw 49e9a <IMFS_create_node+0xb6>
return NULL;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
49e10: 2079 0005 d740 moveal 5d740 <rtems_current_user_env>,%a0
49e16: 2028 002c movel %a0@(44),%d0
49e1a: 4680 notl %d0
49e1c: c0ae 0014 andl %fp@(20),%d0
49e20: 2f00 movel %d0,%sp@-
49e22: 2f2e 0010 movel %fp@(16),%sp@-
49e26: 2f02 movel %d2,%sp@-
49e28: 4eb9 0004 9d70 jsr 49d70 <IMFS_allocate_node>
if ( !node )
49e2e: 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 );
49e32: 2a40 moveal %d0,%a5
if ( !node )
49e34: 4a80 tstl %d0
49e36: 6756 beqs 49e8e <IMFS_create_node+0xaa> <== NEVER TAKEN
return NULL;
/*
* Set the type specific information
*/
if ( type == IMFS_DIRECTORY ) {
49e38: 7001 moveq #1,%d0
49e3a: b082 cmpl %d2,%d0
49e3c: 6778 beqs 49eb6 <IMFS_create_node+0xd2>
rtems_chain_initialize_empty(&node->info.directory.Entries);
} else if ( type == IMFS_HARD_LINK ) {
49e3e: 7003 moveq #3,%d0
49e40: b082 cmpl %d2,%d0
49e42: 6700 00d6 beqw 49f1a <IMFS_create_node+0x136>
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
49e46: 7204 moveq #4,%d1
49e48: b282 cmpl %d2,%d1
49e4a: 6700 00ce beqw 49f1a <IMFS_create_node+0x136>
node->info.sym_link.name = info->sym_link.name;
} else if ( type == IMFS_DEVICE ) {
49e4e: 7002 moveq #2,%d0
49e50: b082 cmpl %d2,%d0
49e52: 6700 0098 beqw 49eec <IMFS_create_node+0x108>
node->info.device.major = info->device.major;
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
49e56: 7206 moveq #6,%d1 <== NOT EXECUTED
49e58: b282 cmpl %d2,%d1 <== NOT EXECUTED
49e5a: 6700 010e beqw 49f6a <IMFS_create_node+0x186> <== NOT EXECUTED
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
49e5e: 7205 moveq #5,%d1 <== NOT EXECUTED
49e60: b282 cmpl %d2,%d1 <== NOT EXECUTED
49e62: 6700 013a beqw 49f9e <IMFS_create_node+0x1ba> <== NOT EXECUTED
node->info.file.size = 0;
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
} else if ( type == IMFS_FIFO ) {
49e66: 7207 moveq #7,%d1 <== NOT EXECUTED
49e68: b282 cmpl %d2,%d1 <== NOT EXECUTED
49e6a: 6700 00d6 beqw 49f42 <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;
49e6e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
49e72: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49e74: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49e78: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
49e7c: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
49e80: 2f0d movel %a5,%sp@- <== NOT EXECUTED
49e82: 486b 004c pea %a3@(76) <== NOT EXECUTED
49e86: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49e8c: 508f addql #8,%sp <== NOT EXECUTED
}
49e8e: 200d movel %a5,%d0
49e90: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
49e96: 4e5e unlk %fp
49e98: 4e75 rts
fs_info = parent_loc->mt_entry->fs_info;
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
49e9a: 223c 0005 c9f2 movel #379378,%d1 <== NOT EXECUTED
49ea0: b2aa 0010 cmpl %a2@(16),%d1 <== NOT EXECUTED
49ea4: 6600 ff6a bnew 49e10 <IMFS_create_node+0x2c> <== NOT EXECUTED
fs_info->fifo_handlers == &rtems_filesystem_handlers_default )
return NULL;
49ea8: 9bcd subal %a5,%a5 <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
}
49eaa: 200d movel %a5,%d0 <== NOT EXECUTED
49eac: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
49eb2: 4e5e unlk %fp <== NOT EXECUTED
49eb4: 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 );
49eb6: 41ed 0050 lea %a5@(80),%a0
49eba: 2b48 004c movel %a0,%a5@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
49ebe: 41ed 004c lea %a5@(76),%a0
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
49ec2: 42ad 0050 clrl %a5@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
49ec6: 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;
49eca: 202a 0004 movel %a2@(4),%d0
49ece: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49ed0: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
49ed4: 2540 0004 movel %d0,%a2@(4)
49ed8: 2b40 0034 movel %d0,%a5@(52)
49edc: 2f0d movel %a5,%sp@-
49ede: 486b 004c pea %a3@(76)
49ee2: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49ee8: 508f addql #8,%sp
49eea: 60a2 bras 49e8e <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;
49eec: 2b54 004c movel %a4@,%a5@(76)
node->info.device.minor = info->device.minor;
49ef0: 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;
49ef6: 202a 0004 movel %a2@(4),%d0
49efa: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49efc: 2b4b 0008 movel %a3,%a5@(8)
node->st_ino = ++fs_info->ino_count;
49f00: 2540 0004 movel %d0,%a2@(4)
49f04: 2b40 0034 movel %d0,%a5@(52)
49f08: 2f0d movel %a5,%sp@-
49f0a: 486b 004c pea %a3@(76)
49f0e: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49f14: 508f addql #8,%sp
49f16: 6000 ff76 braw 49e8e <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;
49f1a: 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;
49f1e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
49f22: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49f24: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49f28: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
49f2c: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
49f30: 2f0d movel %a5,%sp@- <== NOT EXECUTED
49f32: 486b 004c pea %a3@(76) <== NOT EXECUTED
49f36: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49f3c: 508f addql #8,%sp <== NOT EXECUTED
49f3e: 6000 ff4e braw 49e8e <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;
49f42: 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;
49f46: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49f4a: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49f4e: 5280 addql #1,%d0 <== NOT EXECUTED
49f50: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
49f54: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
49f58: 2f0d movel %a5,%sp@- <== NOT EXECUTED
49f5a: 486b 004c pea %a3@(76) <== NOT EXECUTED
49f5e: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49f64: 508f addql #8,%sp <== NOT EXECUTED
49f66: 6000 ff26 braw 49e8e <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;
49f6a: 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;
49f6e: 4280 clrl %d0 <== NOT EXECUTED
49f70: 4281 clrl %d1 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49f72: 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;
49f76: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED
49f7a: 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;
49f7e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
49f82: 5280 addql #1,%d0 <== NOT EXECUTED
49f84: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
49f88: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
49f8c: 2f0d movel %a5,%sp@- <== NOT EXECUTED
49f8e: 486b 004c pea %a3@(76) <== NOT EXECUTED
49f92: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49f98: 508f addql #8,%sp <== NOT EXECUTED
49f9a: 6000 fef2 braw 49e8e <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;
49f9e: 42ad 0054 clrl %a5@(84) <== NOT EXECUTED
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
49fa2: 4280 clrl %d0 <== NOT EXECUTED
49fa4: 4281 clrl %d1 <== NOT EXECUTED
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
49fa6: 42ad 0058 clrl %a5@(88) <== NOT EXECUTED
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
49faa: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED
49fae: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
49fb2: 42ad 005c clrl %a5@(92) <== NOT EXECUTED
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
node->st_ino = ++fs_info->ino_count;
49fb6: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
49fba: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
49fbc: 2b4b 0008 movel %a3,%a5@(8) <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
49fc0: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
49fc4: 2b40 0034 movel %d0,%a5@(52) <== NOT EXECUTED
49fc8: 2f0d movel %a5,%sp@- <== NOT EXECUTED
49fca: 486b 004c pea %a3@(76) <== NOT EXECUTED
49fce: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
49fd4: 508f addql #8,%sp <== NOT EXECUTED
49fd6: 6000 feb6 braw 49e8e <IMFS_create_node+0xaa> <== NOT EXECUTED
0004a990 <IMFS_create_orphan>:
#include <rtems/libio_.h>
#include "imfs.h"
void IMFS_create_orphan( IMFS_jnode_t *jnode )
{
4a990: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4a994: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a996: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
4a99a: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4a99e: 670e beqs 4a9ae <IMFS_create_orphan+0x1e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4a9a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a9a2: 4eb9 0004 6eb0 jsr 46eb0 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
4a9a8: 588f addql #4,%sp <== NOT EXECUTED
4a9aa: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
}
--jnode->st_nlink;
IMFS_update_ctime( jnode );
4a9ae: 42a7 clrl %sp@- <== NOT EXECUTED
4a9b0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
}
--jnode->st_nlink;
4a9b4: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED
4a9b8: 5380 subql #1,%d0 <== NOT EXECUTED
4a9ba: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4a9be: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4a9c4: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
4a9ca: 508f addql #8,%sp <== NOT EXECUTED
}
4a9cc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4a9d0: 4e5e unlk %fp <== NOT EXECUTED
00049fda <IMFS_create_root_node>:
return node;
}
IMFS_jnode_t *IMFS_create_root_node(void)
{
49fda: 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) );
49fde: 4878 41ed pea 41ed <D_MAX_EXP+0x39ee>
49fe2: 4879 0005 c850 pea 5c850 <rtems_filesystem_default_pathconf+0xb4>
49fe8: 4878 0001 pea 1 <ADD>
49fec: 4eb9 0004 9d70 jsr 49d70 <IMFS_allocate_node>
if ( !node )
49ff2: 4fef 000c lea %sp@(12),%sp
49ff6: 4a80 tstl %d0
49ff8: 6716 beqs 4a010 <IMFS_create_root_node+0x36> <== NEVER TAKEN
Chain_Node *tail = _Chain_Tail( the_chain );
49ffa: 2240 moveal %d0,%a1
head->next = tail;
head->previous = NULL;
49ffc: 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 );
49ffe: 43e9 0050 lea %a1@(80),%a1
4a002: 2149 004c movel %a1,%a0@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a006: 5989 subql #4,%a1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4a008: 42a8 0050 clrl %a0@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a00c: 2149 0054 movel %a1,%a0@(84)
* NOTE: Root node is always a directory.
*/
rtems_chain_initialize_empty(&node->info.directory.Entries);
return node;
}
4a010: 4e5e unlk %fp <== NOT EXECUTED
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 3a64 moveal 63a64 <_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 2e9c lea 52e9c <fwrite>,%a2 <== NOT EXECUTED
44fd0: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
44fd4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44fd8: 4879 0006 2366 pea 62366 <IntUartPollCallbacks.6323+0x88> <== NOT EXECUTED
44fde: 4e92 jsr %a2@ <== NOT EXECUTED
fprintf(stdout, "/\n" );
44fe0: 2079 0006 3a64 moveal 63a64 <_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 239b pea 6239b <IntUartPollCallbacks.6323+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 39e0 moveal 639e0 <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 3a64 moveal 63a64 <_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 239e pea 6239e <IntUartPollCallbacks.6323+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 2e9c lea 52e9c <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 3a64 moveal 63a64 <_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 2361 pea 62361 <IntUartPollCallbacks.6323+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
0004a124 <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 ) ) {
4a124: 70f8 moveq #-8,%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
4a126: 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 ) ) {
4a12a: 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 */
)
{
4a12e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4a132: 2a6e 0008 moveal %fp@(8),%a5
4a136: 246e 000c moveal %fp@(12),%a2
4a13a: 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 ) ) {
4a13e: 4a80 tstl %d0
4a140: 6600 0238 bnew 4a37a <IMFS_eval_path+0x256>
4a144: 2c0e movel %fp,%d6
4a146: 280e movel %fp,%d4
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
int i = 0;
4a148: 4282 clrl %d2
4a14a: 5986 subql #4,%d6
4a14c: 0684 ffff ffdb addil #-37,%d4
4a152: 2a3c 0004 a8b0 movel #305328,%d5
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a158: 2e3c 0004 a834 movel #305204,%d7
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a15e: 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 );
4a160: 2f06 movel %d6,%sp@-
4a162: 2045 moveal %d5,%a0
4a164: 2f04 movel %d4,%sp@-
4a166: 2f0a movel %a2,%sp@-
4a168: 4875 2800 pea %a5@(00000000,%d2:l)
4a16c: 4e90 jsr %a0@
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a16e: 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 );
4a170: 2600 movel %d0,%d3
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
4a172: 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;
4a176: 202e fffc movel %fp@(-4),%d0
i += len;
if ( !pathloc->node_access )
4a17a: 4a88 tstl %a0
4a17c: 6700 00f8 beqw 4a276 <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;
4a180: 95c0 subal %d0,%a2
i += len;
4a182: 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 )
4a184: 4a83 tstl %d3
4a186: 6662 bnes 4a1ea <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 ) {
4a188: 7201 moveq #1,%d1
4a18a: b2a8 0048 cmpl %a0@(72),%d1
4a18e: 6600 0132 bnew 4a2c2 <IMFS_eval_path+0x19e>
if ( node->info.directory.mt_fs != NULL ) {
4a192: 2068 0058 moveal %a0@(88),%a0
4a196: 4a88 tstl %a0
4a198: 6700 0128 beqw 4a2c2 <IMFS_eval_path+0x19e>
4a19c: 28a8 001c movel %a0@(28),%a4@ <== NOT EXECUTED
4a1a0: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED
4a1a4: 2628 0020 movel %a0@(32),%d3 <== NOT EXECUTED
4a1a8: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED
4a1ac: 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],
4a1b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a1b2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a1b6: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
4a1ba: 4872 8800 pea %a2@(00000000,%a0:l) <== NOT EXECUTED
4a1be: 9488 subl %a0,%d2 <== NOT EXECUTED
4a1c0: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED
4a1c4: 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 ) {
4a1c6: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED
4a1ca: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED
4a1ce: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED
4a1d2: 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],
4a1d6: 4e90 jsr %a0@ <== NOT EXECUTED
4a1d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4a1dc: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a1de: 2003 movel %d3,%d0
4a1e0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a1e6: 4e5e unlk %fp
4a1e8: 4e75 rts
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
if ( node->type == IMFS_DIRECTORY )
4a1ea: 7001 moveq #1,%d0
4a1ec: b0ab 0048 cmpl %a3@(72),%d0
4a1f0: 6700 00b8 beqw 4a2aa <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;
4a1f4: 2648 moveal %a0,%a3
switch( type ) {
4a1f6: 7003 moveq #3,%d0
4a1f8: b083 cmpl %d3,%d0
4a1fa: 671c beqs 4a218 <IMFS_eval_path+0xf4>
4a1fc: 7204 moveq #4,%d1
4a1fe: b283 cmpl %d3,%d1
4a200: 6700 008e beqw 4a290 <IMFS_eval_path+0x16c>
4a204: 103c 0002 moveb #2,%d0
4a208: b083 cmpl %d3,%d0
4a20a: 6748 beqs 4a254 <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) ) {
4a20c: 7004 moveq #4,%d0
4a20e: b083 cmpl %d3,%d0
4a210: 6600 ff4e bnew 4a160 <IMFS_eval_path+0x3c>
4a214: 6000 ff72 braw 4a188 <IMFS_eval_path+0x64> <== NOT EXECUTED
case IMFS_NAME:
/*
* If we are at a link follow it.
*/
if ( node->type == IMFS_HARD_LINK ) {
4a218: 2028 0048 movel %a0@(72),%d0
4a21c: 7203 moveq #3,%d1
4a21e: b280 cmpl %d0,%d1
4a220: 6700 00d8 beqw 4a2fa <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 ) {
4a224: 7204 moveq #4,%d1
4a226: b280 cmpl %d0,%d1
4a228: 6700 0134 beqw 4a35e <IMFS_eval_path+0x23a>
}
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a22c: 7201 moveq #1,%d1
4a22e: b280 cmpl %d0,%d1
4a230: 6600 0162 bnew 4a394 <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 ) {
4a234: 206b 0058 moveal %a3@(88),%a0
4a238: 4a88 tstl %a0
4a23a: 6600 ff60 bnew 4a19c <IMFS_eval_path+0x78>
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a23e: 2f04 movel %d4,%sp@-
4a240: 2047 moveal %d7,%a0
4a242: 2f0b movel %a3,%sp@-
4a244: 4e90 jsr %a0@
if ( !node )
4a246: 508f addql #8,%sp
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a248: 2640 moveal %d0,%a3
if ( !node )
4a24a: 4a80 tstl %d0
4a24c: 6728 beqs 4a276 <IMFS_eval_path+0x152>
/*
* Set the node access to the point we have found.
*/
pathloc->node_access = node;
4a24e: 288b movel %a3,%a4@
4a250: 6000 ff0e braw 4a160 <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 )
4a254: 2279 0005 d740 moveal 5d740 <rtems_current_user_env>,%a1 <== NOT EXECUTED
4a25a: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED
4a25e: 6700 ff00 beqw 4a160 <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) {
4a262: 226c 0010 moveal %a4@(16),%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a266: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED
4a26a: 6700 00a4 beqw 4a310 <IMFS_eval_path+0x1ec> <== NOT EXECUTED
pathnamelen+len,
flags,pathloc);
}
} else {
if ( !node->Parent )
4a26e: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
4a272: 4a8b tstl %a3 <== NOT EXECUTED
4a274: 66d8 bnes 4a24e <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 );
4a276: 4eb9 0004 d85c jsr 4d85c <__errno>
4a27c: 76ff moveq #-1,%d3
4a27e: 7a02 moveq #2,%d5
4a280: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a282: 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 );
4a284: 2085 movel %d5,%a0@
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a286: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a28c: 4e5e unlk %fp
4a28e: 4e75 rts
case IMFS_NO_MORE_PATH:
case IMFS_CURRENT_DIR:
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4a290: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a296: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a298: 785b moveq #91,%d4 <== NOT EXECUTED
4a29a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a29c: 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 );
4a29e: 2084 movel %d4,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a2a0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a2a6: 4e5e unlk %fp <== NOT EXECUTED
4a2a8: 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 ) )
4a2aa: 4878 0001 pea 1 <ADD>
4a2ae: 2f0c movel %a4,%sp@-
4a2b0: 4eb9 0004 a09e jsr 4a09e <IMFS_evaluate_permission>
4a2b6: 508f addql #8,%sp
4a2b8: 4a80 tstl %d0
4a2ba: 6724 beqs 4a2e0 <IMFS_eval_path+0x1bc> <== NEVER TAKEN
4a2bc: 2054 moveal %a4@,%a0
4a2be: 6000 ff34 braw 4a1f4 <IMFS_eval_path+0xd0>
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a2c2: 2f0c movel %a4,%sp@-
4a2c4: 4eb9 0004 a014 jsr 4a014 <IMFS_Set_handlers>
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a2ca: 2eae 0010 movel %fp@(16),%sp@
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
4a2ce: 2600 movel %d0,%d3
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
4a2d0: 2f0c movel %a4,%sp@-
4a2d2: 4eb9 0004 a09e jsr 4a09e <IMFS_evaluate_permission>
4a2d8: 508f addql #8,%sp
4a2da: 4a80 tstl %d0
4a2dc: 6600 ff00 bnew 4a1de <IMFS_eval_path+0xba>
rtems_set_errno_and_return_minus_one( EACCES );
4a2e0: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a2e6: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a2e8: 740d moveq #13,%d2 <== NOT EXECUTED
4a2ea: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a2ec: 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 );
4a2ee: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a2f0: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a2f6: 4e5e unlk %fp <== NOT EXECUTED
4a2f8: 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 );
4a2fa: 42a7 clrl %sp@- <== NOT EXECUTED
4a2fc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a2fe: 4eb9 0004 a0d8 jsr 4a0d8 <IMFS_evaluate_hard_link> <== NOT EXECUTED
node = pathloc->node_access;
4a304: 2654 moveal %a4@,%a3 <== NOT EXECUTED
4a306: 508f addql #8,%sp <== NOT EXECUTED
4a308: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED
4a30c: 6000 ff1e braw 4a22c <IMFS_eval_path+0x108> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a310: 28a9 0008 movel %a1@(8),%a4@ <== NOT EXECUTED
4a314: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
4a318: 2629 000c movel %a1@(12),%d3 <== NOT EXECUTED
4a31c: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED
4a320: 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]),
4a324: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a326: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a32a: 226e fffc moveal %fp@(-4),%a1 <== NOT EXECUTED
4a32e: 4872 9800 pea %a2@(00000000,%a1:l) <== NOT EXECUTED
4a332: 9489 subl %a1,%d2 <== NOT EXECUTED
4a334: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED
4a338: 2250 moveal %a0@,%a1 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
4a33a: 2943 0004 movel %d3,%a4@(4) <== NOT EXECUTED
4a33e: 2941 0008 movel %d1,%a4@(8) <== NOT EXECUTED
4a342: 2948 000c movel %a0,%a4@(12) <== NOT EXECUTED
4a346: 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]),
4a34a: 4e91 jsr %a1@ <== NOT EXECUTED
4a34c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4a350: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a352: 2003 movel %d3,%d0 <== NOT EXECUTED
4a354: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a35a: 4e5e unlk %fp <== NOT EXECUTED
4a35c: 4e75 rts <== NOT EXECUTED
* was broken.
*/
IMFS_assert( node );
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_sym_link( pathloc, 0 );
4a35e: 42a7 clrl %sp@- <== NOT EXECUTED
4a360: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4a362: 4eb9 0004 a3bc jsr 4a3bc <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;
4a368: 2654 moveal %a4@,%a3 <== NOT EXECUTED
if ( result == -1 )
4a36a: 508f addql #8,%sp <== NOT EXECUTED
4a36c: 72ff moveq #-1,%d1 <== NOT EXECUTED
4a36e: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a370: 673c beqs 4a3ae <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;
4a372: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED
4a376: 6000 feb4 braw 4a22c <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 );
4a37a: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a380: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a382: 7e05 moveq #5,%d7 <== NOT EXECUTED
4a384: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a386: 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 );
4a388: 2087 movel %d7,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a38a: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a390: 4e5e unlk %fp <== NOT EXECUTED
4a392: 4e75 rts <== NOT EXECUTED
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a394: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a39a: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a39c: 7c14 moveq #20,%d6 <== NOT EXECUTED
4a39e: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a3a0: 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 );
4a3a2: 2086 movel %d6,%a0@ <== NOT EXECUTED
if ( !IMFS_evaluate_permission( pathloc, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a3a4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a3aa: 4e5e unlk %fp <== NOT EXECUTED
4a3ac: 4e75 rts <== NOT EXECUTED
4a3ae: 2600 movel %d0,%d3 <== NOT EXECUTED
4a3b0: 2003 movel %d3,%d0 <== NOT EXECUTED
4a3b2: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a3b8: 4e5e unlk %fp <== NOT EXECUTED
0004a4fe <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 */
)
{
4a4fe: 4e56 ffb0 linkw %fp,#-80
4a502: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4a506: 286e 0008 moveal %fp@(8),%a4
4a50a: 2e0e movel %fp,%d7
4a50c: 2c0e movel %fp,%d6
int i = 0;
4a50e: 4284 clrl %d4
4a510: 5987 subql #4,%d7
4a512: 0686 ffff ffdb addil #-37,%d6
4a518: 4bf9 0004 a8b0 lea 4a8b0 <IMFS_get_token>,%a5
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a51e: 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 */
)
{
4a520: 266e 000c moveal %fp@(12),%a3
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
4a524: 4eb9 0004 ecb4 jsr 4ecb4 <strlen>
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
4a52a: 2453 moveal %a3@,%a2
/*
* Get the path length.
*/
pathlen = strlen( path );
4a52c: 588f addql #4,%sp
4a52e: 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 );
4a530: 2f07 movel %d7,%sp@-
4a532: 2f06 movel %d6,%sp@-
4a534: 2f02 movel %d2,%sp@-
4a536: 4874 4800 pea %a4@(00000000,%d4:l)
4a53a: 4e95 jsr %a5@
pathlen -= len;
4a53c: 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 );
4a540: 2600 movel %d0,%d3
pathlen -= len;
i += len;
if ( !pathloc->node_access )
4a542: 4fef 0010 lea %sp@(16),%sp
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
4a546: 9485 subl %d5,%d2
i += len;
if ( !pathloc->node_access )
4a548: 2053 moveal %a3@,%a0
4a54a: 4a88 tstl %a0
4a54c: 6700 00ca beqw 4a618 <IMFS_evaluate_for_make+0x11a>
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
4a550: 4a80 tstl %d0
4a552: 6742 beqs 4a596 <IMFS_evaluate_for_make+0x98>
if ( node->type == IMFS_DIRECTORY )
4a554: 7001 moveq #1,%d0
4a556: b0aa 0048 cmpl %a2@(72),%d0
4a55a: 6700 00d6 beqw 4a632 <IMFS_evaluate_for_make+0x134>
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
i += len;
4a55e: 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;
4a560: 2448 moveal %a0,%a2
switch( type ) {
4a562: 7002 moveq #2,%d0
4a564: b083 cmpl %d3,%d0
4a566: 6700 008e beqw 4a5f6 <IMFS_evaluate_for_make+0xf8>
4a56a: 6426 bccs 4a592 <IMFS_evaluate_for_make+0x94>
4a56c: 7203 moveq #3,%d1
4a56e: b283 cmpl %d3,%d1
4a570: 673e beqs 4a5b0 <IMFS_evaluate_for_make+0xb2> <== ALWAYS TAKEN
4a572: 7004 moveq #4,%d0 <== NOT EXECUTED
4a574: b083 cmpl %d3,%d0 <== NOT EXECUTED
4a576: 66b8 bnes 4a530 <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 );
4a578: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a57e: 7c5b moveq #91,%d6 <== NOT EXECUTED
4a580: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a582: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a584: 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;
}
4a586: 2003 movel %d3,%d0
4a588: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a58e: 4e5e unlk %fp
4a590: 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 ) {
4a592: 4a83 tstl %d3
4a594: 669a bnes 4a530 <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 );
4a596: 4eb9 0004 d85c jsr 4d85c <__errno>
4a59c: 76ff moveq #-1,%d3
4a59e: 7e11 moveq #17,%d7
4a5a0: 2040 moveal %d0,%a0
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a5a2: 2003 movel %d3,%d0
pathloc->node_access = node;
break;
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
4a5a4: 2087 movel %d7,%a0@
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a5a6: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5
4a5ac: 4e5e unlk %fp
4a5ae: 4e75 rts
pathloc->node_access = node;
break;
case IMFS_NAME:
if ( node->type == IMFS_HARD_LINK ) {
4a5b0: 2028 0048 movel %a0@(72),%d0
4a5b4: 7203 moveq #3,%d1
4a5b6: b280 cmpl %d0,%d1
4a5b8: 6700 014e beqw 4a708 <IMFS_evaluate_for_make+0x20a>
result = IMFS_evaluate_link( pathloc, 0 );
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
4a5bc: 7204 moveq #4,%d1
4a5be: b280 cmpl %d0,%d1
4a5c0: 6700 0146 beqw 4a708 <IMFS_evaluate_for_make+0x20a>
if ( result == -1 )
return -1;
}
node = pathloc->node_access;
if ( !node )
4a5c4: 4a8a tstl %a2
4a5c6: 6700 015c beqw 4a724 <IMFS_evaluate_for_make+0x226>
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
4a5ca: 7001 moveq #1,%d0
4a5cc: b0aa 0048 cmpl %a2@(72),%d0
4a5d0: 6600 0152 bnew 4a724 <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 ) {
4a5d4: 206a 0058 moveal %a2@(88),%a0
4a5d8: 4a88 tstl %a0
4a5da: 6600 0162 bnew 4a73e <IMFS_evaluate_for_make+0x240>
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a5de: 2f06 movel %d6,%sp@-
4a5e0: 2f0a movel %a2,%sp@-
4a5e2: 4eb9 0004 a834 jsr 4a834 <IMFS_find_match_in_dir>
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a5e8: 508f addql #8,%sp
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
4a5ea: 2440 moveal %d0,%a2
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
4a5ec: 4a80 tstl %d0
4a5ee: 675a beqs 4a64a <IMFS_evaluate_for_make+0x14c>
done = true;
else
pathloc->node_access = node;
4a5f0: 268a movel %a2,%a3@
4a5f2: 6000 ff3c braw 4a530 <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 )
4a5f6: 2279 0005 d740 moveal 5d740 <rtems_current_user_env>,%a1 <== NOT EXECUTED
4a5fc: b1e9 0018 cmpal %a1@(24),%a0 <== NOT EXECUTED
4a600: 6700 ff2e beqw 4a530 <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){
4a604: 226b 0010 moveal %a3@(16),%a1 <== NOT EXECUTED
4a608: b1e9 001c cmpal %a1@(28),%a0 <== NOT EXECUTED
4a60c: 6700 00b0 beqw 4a6be <IMFS_evaluate_for_make+0x1c0> <== NOT EXECUTED
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
}
} else {
if ( !node->Parent )
4a610: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
4a614: 4a8a tstl %a2 <== NOT EXECUTED
4a616: 66d8 bnes 4a5f0 <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 );
4a618: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a61e: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a620: 7a02 moveq #2,%d5 <== NOT EXECUTED
4a622: 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;
}
4a624: 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 );
4a626: 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;
}
4a628: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a62e: 4e5e unlk %fp <== NOT EXECUTED
4a630: 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 ) )
4a632: 4878 0001 pea 1 <ADD>
4a636: 2f0b movel %a3,%sp@-
4a638: 4eb9 0004 a09e jsr 4a09e <IMFS_evaluate_permission>
4a63e: 508f addql #8,%sp
4a640: 4a80 tstl %d0
4a642: 6760 beqs 4a6a4 <IMFS_evaluate_for_make+0x1a6> <== NEVER TAKEN
4a644: 2053 moveal %a3@,%a0
4a646: 6000 ff16 braw 4a55e <IMFS_evaluate_for_make+0x60>
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4a64a: 2004 movel %d4,%d0
4a64c: 90ae fffc subl %fp@(-4),%d0
4a650: d08c addl %a4,%d0
4a652: 206e 0010 moveal %fp@(16),%a0
4a656: 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++) {
4a658: 1034 4800 moveb %a4@(00000000,%d4:l),%d0
4a65c: 671a beqs 4a678 <IMFS_evaluate_for_make+0x17a> <== ALWAYS TAKEN
4a65e: 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(
4a664: 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 ] ) )
4a668: 49c0 extbl %d0 <== NOT EXECUTED
4a66a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a66c: 4e95 jsr %a5@ <== NOT EXECUTED
4a66e: 588f addql #4,%sp <== NOT EXECUTED
4a670: 4a80 tstl %d0 <== NOT EXECUTED
4a672: 67a4 beqs 4a618 <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++) {
4a674: 101a moveb %a2@+,%d0 <== NOT EXECUTED
4a676: 66f0 bnes 4a668 <IMFS_evaluate_for_make+0x16a> <== NOT EXECUTED
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a678: 2f0b movel %a3,%sp@-
4a67a: 4eb9 0004 a014 jsr 4a014 <IMFS_Set_handlers>
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a680: 2053 moveal %a3@,%a0
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4a682: 2600 movel %d0,%d3
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4a684: 588f addql #4,%sp
4a686: 7001 moveq #1,%d0
4a688: b0a8 0048 cmpl %a0@(72),%d0
4a68c: 6600 0096 bnew 4a724 <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 ) )
4a690: 4878 0003 pea 3 <DIVIDE>
4a694: 2f0b movel %a3,%sp@-
4a696: 4eb9 0004 a09e jsr 4a09e <IMFS_evaluate_permission>
4a69c: 508f addql #8,%sp
4a69e: 4a80 tstl %d0
4a6a0: 6600 fee4 bnew 4a586 <IMFS_evaluate_for_make+0x88>
rtems_set_errno_and_return_minus_one( EACCES );
4a6a4: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a6aa: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a6ac: 740d moveq #13,%d2 <== NOT EXECUTED
4a6ae: 2040 moveal %d0,%a0 <== NOT EXECUTED
return result;
}
4a6b0: 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 );
4a6b2: 2082 movel %d2,%a0@ <== NOT EXECUTED
return result;
}
4a6b4: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a6ba: 4e5e unlk %fp <== NOT EXECUTED
4a6bc: 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){
4a6be: 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 );
4a6c2: 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){
4a6c6: 26a9 0008 movel %a1@(8),%a3@ <== NOT EXECUTED
4a6ca: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
4a6ce: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED
4a6d2: 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 );
4a6d6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a6da: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a6dc: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED
4a6e0: 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){
4a6e4: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
4a6e8: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED
4a6ec: 2748 000c movel %a0,%a3@(12) <== NOT EXECUTED
4a6f0: 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 );
4a6f4: 4e91 jsr %a1@ <== NOT EXECUTED
4a6f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a6fa: 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;
}
4a6fc: 2003 movel %d3,%d0 <== NOT EXECUTED
4a6fe: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a704: 4e5e unlk %fp <== NOT EXECUTED
4a706: 4e75 rts <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a708: 42a7 clrl %sp@- <== NOT EXECUTED
4a70a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a70c: 4eb9 0004 a444 jsr 4a444 <IMFS_evaluate_link> <== NOT EXECUTED
if ( result == -1 )
4a712: 508f addql #8,%sp <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
4a714: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( result == -1 )
4a716: 70ff moveq #-1,%d0 <== NOT EXECUTED
4a718: b083 cmpl %d3,%d0 <== NOT EXECUTED
4a71a: 6700 fe6a beqw 4a586 <IMFS_evaluate_for_make+0x88> <== NOT EXECUTED
4a71e: 2453 moveal %a3@,%a2 <== NOT EXECUTED
4a720: 6000 fea2 braw 4a5c4 <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 );
4a724: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a72a: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a72c: 7814 moveq #20,%d4 <== NOT EXECUTED
4a72e: 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;
}
4a730: 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 );
4a732: 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;
}
4a734: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a73a: 4e5e unlk %fp <== NOT EXECUTED
4a73c: 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 ) {
4a73e: 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 );
4a742: 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 ) {
4a746: 26a8 001c movel %a0@(28),%a3@ <== NOT EXECUTED
4a74a: 2268 0028 moveal %a0@(40),%a1 <== NOT EXECUTED
4a74e: 2228 0024 movel %a0@(36),%d1 <== NOT EXECUTED
4a752: 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 );
4a756: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4a75a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a75c: 4874 4800 pea %a4@(00000000,%d4:l) <== NOT EXECUTED
4a760: 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 ) {
4a764: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
4a768: 2741 0008 movel %d1,%a3@(8) <== NOT EXECUTED
4a76c: 2749 000c movel %a1,%a3@(12) <== NOT EXECUTED
4a770: 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 );
4a774: 4e90 jsr %a0@ <== NOT EXECUTED
4a776: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a77a: 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;
}
4a77c: 2003 movel %d3,%d0 <== NOT EXECUTED
4a77e: 4cee 3cfc ffb0 moveml %fp@(-80),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4a784: 4e5e unlk %fp <== NOT EXECUTED
0004a0d8 <IMFS_evaluate_hard_link>:
int IMFS_evaluate_hard_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a0d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a0dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a0de: 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;
4a0e2: 2052 moveal %a2@,%a0 <== NOT EXECUTED
4a0e4: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED
IMFS_Set_handlers( node );
4a0e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a0ea: 4eb9 0004 a014 jsr 4a014 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a0f0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4a0f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a0f6: 4eb9 0004 a09e jsr 4a09e <IMFS_evaluate_permission> <== NOT EXECUTED
4a0fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a100: 4a80 tstl %d0 <== NOT EXECUTED
4a102: 670a beqs 4a10e <IMFS_evaluate_hard_link+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a104: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
*/
if ( !IMFS_evaluate_permission( node, flags ) )
rtems_set_errno_and_return_minus_one( EACCES );
return result;
4a108: 4280 clrl %d0 <== NOT EXECUTED
}
4a10a: 4e5e unlk %fp <== NOT EXECUTED
4a10c: 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 );
4a10e: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
return result;
}
4a114: 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 );
4a118: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a11a: 720d moveq #13,%d1 <== NOT EXECUTED
4a11c: 70ff moveq #-1,%d0 <== NOT EXECUTED
return result;
}
4a11e: 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 );
4a120: 2081 movel %d1,%a0@ <== NOT EXECUTED
return result;
}
0004a444 <IMFS_evaluate_link>:
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a444: 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 );
4a448: 2079 0005 d740 moveal 5d740 <rtems_current_user_env>,%a0 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a44e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
4a452: 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 );
4a456: 4bf9 0004 a3bc lea 4a3bc <IMFS_evaluate_sym_link>,%a5 <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a45c: 49f9 0004 a0d8 lea 4a0d8 <IMFS_evaluate_hard_link>,%a4 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a462: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
IMFS_jnode_t *jnode;
int result = 0;
do {
jnode = node->node_access;
4a466: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a468: 4281 clrl %d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a46a: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED
4a46e: 5280 addql #1,%d0 <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a470: 3200 movew %d0,%d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4a472: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4a476: 7005 moveq #5,%d0 <== NOT EXECUTED
4a478: b081 cmpl %d1,%d0 <== NOT EXECUTED
4a47a: 6564 bcss 4a4e0 <IMFS_evaluate_link+0x9c> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
4a47c: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
4a480: 7203 moveq #3,%d1 <== NOT EXECUTED
4a482: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a484: 6740 beqs 4a4c6 <IMFS_evaluate_link+0x82> <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
else if (jnode->type == IMFS_SYM_LINK )
4a486: 7204 moveq #4,%d1 <== NOT EXECUTED
4a488: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a48a: 671a beqs 4a4a6 <IMFS_evaluate_link+0x62> <== NOT EXECUTED
result = IMFS_evaluate_sym_link( node, flags );
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
4a48c: 5780 subql #3,%d0 <== NOT EXECUTED
4a48e: 7201 moveq #1,%d1 <== NOT EXECUTED
4a490: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a492: 64d2 bccs 4a466 <IMFS_evaluate_link+0x22> <== NOT EXECUTED
4a494: 4280 clrl %d0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a496: 4241 clrw %d1 <== NOT EXECUTED
4a498: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
return result;
}
4a49c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4a4a2: 4e5e unlk %fp <== NOT EXECUTED
4a4a4: 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 );
4a4a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a4a8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a4aa: 4e95 jsr %a5@ <== NOT EXECUTED
4a4ac: 508f addql #8,%sp <== NOT EXECUTED
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
( jnode->type == IMFS_HARD_LINK ) ) );
4a4ae: 4a80 tstl %d0 <== NOT EXECUTED
4a4b0: 6620 bnes 4a4d2 <IMFS_evaluate_link+0x8e> <== NOT EXECUTED
4a4b2: 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 ) ||
4a4b6: 7201 moveq #1,%d1 <== NOT EXECUTED
4a4b8: 5780 subql #3,%d0 <== NOT EXECUTED
( jnode->type == IMFS_HARD_LINK ) ) );
4a4ba: 2079 0005 d740 moveal 5d740 <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 ) ||
4a4c0: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a4c2: 64a2 bccs 4a466 <IMFS_evaluate_link+0x22> <== NOT EXECUTED
4a4c4: 60ce bras 4a494 <IMFS_evaluate_link+0x50> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
4a4c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a4c8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a4ca: 4e94 jsr %a4@ <== NOT EXECUTED
4a4cc: 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 ) ) );
4a4ce: 4a80 tstl %d0 <== NOT EXECUTED
4a4d0: 67e0 beqs 4a4b2 <IMFS_evaluate_link+0x6e> <== NOT EXECUTED
4a4d2: 2079 0005 d740 moveal 5d740 <rtems_current_user_env>,%a0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
4a4d8: 4241 clrw %d1 <== NOT EXECUTED
4a4da: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
4a4de: 60bc bras 4a49c <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;
4a4e0: 4241 clrw %d1 <== NOT EXECUTED
4a4e2: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ELOOP );
4a4e6: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a4ec: 725c moveq #92,%d1 <== NOT EXECUTED
4a4ee: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a4f0: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a4f2: 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 );
4a4f8: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
rtems_filesystem_link_counts = 0;
return result;
}
4a4fa: 4e5e unlk %fp <== NOT EXECUTED
0004a09e <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 ) )
4a09e: 72f8 moveq #-8,%d1
*/
int IMFS_evaluate_permission(
rtems_filesystem_location_info_t *node,
int flags
)
{
4a0a0: 4e56 0000 linkw %fp,#0
4a0a4: 202e 000c movel %fp@(12),%d0
uid_t st_uid;
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
4a0a8: c280 andl %d0,%d1
4a0aa: 661a bnes 4a0c6 <IMFS_evaluate_permission+0x28> <== NEVER TAKEN
/*
* If all of the flags are set we have permission
* to do this.
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
4a0ac: 206e 0008 moveal %fp@(8),%a0
return 1;
return 0;
}
4a0b0: 4e5e unlk %fp
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
flags_to_test <<= 6;
4a0b2: ed88 lsll #6,%d0
/*
* If all of the flags are set we have permission
* to do this.
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
4a0b4: 2050 moveal %a0@,%a0
4a0b6: 2200 movel %d0,%d1
4a0b8: c2a8 002e andl %a0@(46),%d1
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 );
4a0bc: b280 cmpl %d0,%d1
4a0be: 57c0 seq %d0
4a0c0: 49c0 extbl %d0
4a0c2: 4480 negl %d0
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a0c4: 4e75 rts
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 );
4a0c6: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a0cc: 7201 moveq #1,%d1 <== NOT EXECUTED
4a0ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a0d0: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
4a0d2: 4e5e unlk %fp <== 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 );
4a0d4: 2081 movel %d1,%a0@ <== NOT EXECUTED
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
0004a3bc <IMFS_evaluate_sym_link>:
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a3bc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4a3c0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4a3c4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *jnode = node->node_access;
4a3c8: 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;
4a3ca: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4a3ce: 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(
4a3d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a3d4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4a3d8: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED
4a3dc: 4eb9 0004 b404 jsr 4b404 <rtems_filesystem_get_sym_start_loc><== NOT EXECUTED
);
/*
* Use eval path to evaluate the path of the symbolic link.
*/
result = IMFS_eval_path(
4a3e2: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED
4a3e6: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED
4a3ea: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a3ec: 4eb9 0004 ecb4 jsr 4ecb4 <strlen> <== NOT EXECUTED
4a3f2: 2e8a movel %a2,%sp@ <== NOT EXECUTED
4a3f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a3f6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a3f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a3fa: 4eb9 0004 a124 jsr 4a124 <IMFS_eval_path> <== NOT EXECUTED
4a400: 2600 movel %d0,%d3 <== NOT EXECUTED
strlen( &jnode->info.sym_link.name[i] ),
flags,
node
);
IMFS_Set_handlers( node );
4a402: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a404: 4eb9 0004 a014 jsr 4a014 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
4a40a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4a40e: 2e82 movel %d2,%sp@ <== NOT EXECUTED
4a410: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a412: 4eb9 0004 a09e jsr 4a09e <IMFS_evaluate_permission> <== NOT EXECUTED
4a418: 508f addql #8,%sp <== NOT EXECUTED
4a41a: 4a80 tstl %d0 <== NOT EXECUTED
4a41c: 670c beqs 4a42a <IMFS_evaluate_sym_link+0x6e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
return result;
}
4a41e: 2003 movel %d3,%d0 <== NOT EXECUTED
4a420: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4a426: 4e5e unlk %fp <== NOT EXECUTED
4a428: 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 );
4a42a: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4a430: 76ff moveq #-1,%d3 <== NOT EXECUTED
4a432: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a434: 700d moveq #13,%d0 <== NOT EXECUTED
4a436: 2080 movel %d0,%a0@ <== NOT EXECUTED
return result;
}
4a438: 2003 movel %d3,%d0 <== NOT EXECUTED
4a43a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4a440: 4e5e unlk %fp <== NOT EXECUTED
0004d304 <IMFS_fchmod>:
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4d304: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4d308: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d30c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = loc->node_access;
4d30e: 2450 moveal %a0@,%a2 <== 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);
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4d310: 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);
4d314: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4d318: 0281 0000 0fff andil #4095,%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);
4d31e: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4d324: 8280 orl %d0,%d1 <== NOT EXECUTED
4d326: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4d32a: 42a7 clrl %sp@- <== NOT EXECUTED
4d32c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4d330: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4d336: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
}
4d33c: 4280 clrl %d0 <== NOT EXECUTED
4d33e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4d342: 4e5e unlk %fp <== NOT EXECUTED
...
0004d348 <IMFS_fdatasync>:
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
return 0;
}
4d348: 4280 clrl %d0 <== NOT EXECUTED
#include "imfs.h"
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
4d34a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4d34e: 4e5e unlk %fp <== NOT EXECUTED
...
0004376c <IMFS_fifo_close>:
}
int IMFS_fifo_close(
rtems_libio_t *iop
)
{
4376c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43770: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43772: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43774: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int err = 0;
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
43778: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
pipe_release(&JNODE2PIPE(jnode), iop);
4377c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4377e: 486b 004c pea %a3@(76) <== NOT EXECUTED
43782: 4eb9 0004 cd1a jsr 4cd1a <pipe_release> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
43788: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
4378e: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
IMFS_check_node_remove(jnode);
43792: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43794: 4eb9 0004 3e0c jsr 43e0c <IMFS_check_node_remove> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
4379a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4379e: 4280 clrl %d0 <== NOT EXECUTED
437a0: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
437a4: 4e5e unlk %fp <== NOT EXECUTED
000435e4 <IMFS_fifo_ioctl>:
int IMFS_fifo_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
435e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
435e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
435ec: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
435f0: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
435f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int err;
if (command == FIONBIO) {
435f6: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED
435fc: 6724 beqs 43622 <IMFS_fifo_ioctl+0x3e> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
return 0;
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
435fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED
43600: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43604: 2f09 movel %a1,%sp@- <== NOT EXECUTED
43606: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43608: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED
4360c: 4eb9 0004 d622 jsr 4d622 <pipe_ioctl> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43612: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
43616: 4a80 tstl %d0 <== NOT EXECUTED
43618: 6d46 blts 43660 <IMFS_fifo_ioctl+0x7c> <== NOT EXECUTED
}
4361a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4361e: 4e5e unlk %fp <== NOT EXECUTED
43620: 4e75 rts <== NOT EXECUTED
)
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
43622: 4a89 tstl %a1 <== NOT EXECUTED
43624: 6724 beqs 4364a <IMFS_fifo_ioctl+0x66> <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
43626: 4a91 tstl %a1@ <== NOT EXECUTED
43628: 6710 beqs 4363a <IMFS_fifo_ioctl+0x56> <== NOT EXECUTED
iop->flags |= LIBIO_FLAGS_NO_DELAY;
4362a: 7201 moveq #1,%d1 <== NOT EXECUTED
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
return 0;
4362c: 4280 clrl %d0 <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
4362e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
43632: 4e5e unlk %fp <== NOT EXECUTED
if (command == FIONBIO) {
if (buffer == NULL)
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
43634: 83a8 0014 orl %d1,%a0@(20) <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
43638: 4e75 rts <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4363a: 72fe moveq #-2,%d1 <== NOT EXECUTED
return 0;
4363c: 4280 clrl %d0 <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
4363e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
43642: 4e5e unlk %fp <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
iop->flags |= LIBIO_FLAGS_NO_DELAY;
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
43644: c3a8 0014 andl %d1,%a0@(20) <== NOT EXECUTED
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
}
43648: 4e75 rts <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
4364a: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
)
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
43650: 740e moveq #14,%d2 <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
43652: 2040 moveal %d0,%a0 <== NOT EXECUTED
43654: 70ff moveq #-1,%d0 <== NOT EXECUTED
43656: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
43658: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4365c: 4e5e unlk %fp <== NOT EXECUTED
4365e: 4e75 rts <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
43660: 2400 movel %d0,%d2 <== NOT EXECUTED
43662: 4482 negl %d2 <== NOT EXECUTED
43664: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
4366a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4366c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4366e: 2082 movel %d2,%a0@ <== NOT EXECUTED
43670: 60e6 bras 43658 <IMFS_fifo_ioctl+0x74> <== NOT EXECUTED
0004357c <IMFS_fifo_lseek>:
rtems_off64_t IMFS_fifo_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4357c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43580: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
43584: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43586: 2f02 movel %d2,%sp@- <== NOT EXECUTED
off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
43588: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4358a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4358e: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43592: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43596: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4359a: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED
4359e: 4eb9 0004 d682 jsr 4d682 <pipe_lseek> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
435a4: 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);
435a8: 2600 movel %d0,%d3 <== NOT EXECUTED
435aa: 2400 movel %d0,%d2 <== NOT EXECUTED
435ac: 5bc1 smi %d1 <== NOT EXECUTED
435ae: 49c1 extbl %d1 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
435b0: 4a81 tstl %d1 <== NOT EXECUTED
435b2: 6b10 bmis 435c4 <IMFS_fifo_lseek+0x48> <== NOT EXECUTED
}
435b4: 2001 movel %d1,%d0 <== NOT EXECUTED
435b6: 2202 movel %d2,%d1 <== NOT EXECUTED
435b8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
435bc: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
435c0: 4e5e unlk %fp <== NOT EXECUTED
435c2: 4e75 rts <== NOT EXECUTED
rtems_off64_t offset,
int whence
)
{
off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
IMFS_FIFO_RETURN(err);
435c4: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
435ca: 4483 negl %d3 <== NOT EXECUTED
435cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
435ce: 72ff moveq #-1,%d1 <== NOT EXECUTED
435d0: 74ff moveq #-1,%d2 <== NOT EXECUTED
435d2: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
435d4: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
435d8: 2001 movel %d1,%d0 <== NOT EXECUTED
435da: 2202 movel %d2,%d1 <== NOT EXECUTED
435dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
435e0: 4e5e unlk %fp <== NOT EXECUTED
000437a8 <IMFS_fifo_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
437a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
437ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
437b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
437b2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
437b4: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
437b8: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED
437bc: 2f08 movel %a0,%sp@- <== NOT EXECUTED
437be: 4eb9 0004 cde8 jsr 4cde8 <fifo_open> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
437c4: 508f addql #8,%sp <== NOT EXECUTED
uint32_t mode
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
437c6: 2400 movel %d0,%d2 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
437c8: 6d0a blts 437d4 <IMFS_fifo_open+0x2c> <== NOT EXECUTED
}
437ca: 2002 movel %d2,%d0 <== NOT EXECUTED
437cc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
437d0: 4e5e unlk %fp <== NOT EXECUTED
437d2: 4e75 rts <== NOT EXECUTED
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
IMFS_FIFO_RETURN(err);
437d4: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
437da: 4482 negl %d2 <== NOT EXECUTED
437dc: 2040 moveal %d0,%a0 <== NOT EXECUTED
437de: 2082 movel %d2,%a0@ <== NOT EXECUTED
437e0: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
437e2: 2002 movel %d2,%d0 <== NOT EXECUTED
437e4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
437e8: 4e5e unlk %fp <== NOT EXECUTED
000436f2 <IMFS_fifo_read>:
ssize_t IMFS_fifo_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
436f2: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
436f6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
436fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
436fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
436fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED
43700: 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;
43704: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
43708: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4370c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
43710: 4eb9 0004 d240 jsr 4d240 <pipe_read> <== NOT EXECUTED
if (err > 0)
43716: 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);
4371a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0)
4371c: 6f22 bles 43740 <IMFS_fifo_read+0x4e> <== NOT EXECUTED
IMFS_update_atime(jnode);
4371e: 42a7 clrl %sp@- <== NOT EXECUTED
43720: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
43724: 4eb9 0004 4a94 jsr 44a94 <gettimeofday> <== NOT EXECUTED
4372a: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
43730: 2002 movel %d2,%d0 <== NOT EXECUTED
43732: 508f addql #8,%sp <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
43734: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
43738: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4373c: 4e5e unlk %fp <== NOT EXECUTED
4373e: 4e75 rts <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0)
IMFS_update_atime(jnode);
IMFS_FIFO_RETURN(err);
43740: 4a80 tstl %d0 <== NOT EXECUTED
43742: 660e bnes 43752 <IMFS_fifo_read+0x60> <== NOT EXECUTED
}
43744: 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);
43748: 4280 clrl %d0 <== NOT EXECUTED
}
4374a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4374e: 4e5e unlk %fp <== NOT EXECUTED
43750: 4e75 rts <== NOT EXECUTED
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
if (err > 0)
IMFS_update_atime(jnode);
IMFS_FIFO_RETURN(err);
43752: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
43758: 4482 negl %d2 <== NOT EXECUTED
4375a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4375c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4375e: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
43760: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
43764: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
43768: 4e5e unlk %fp <== NOT EXECUTED
00043672 <IMFS_fifo_write>:
ssize_t IMFS_fifo_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
43672: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
43676: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4367a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4367c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
4367e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
43680: 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;
43684: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
43688: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4368c: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
43690: 4eb9 0004 d432 jsr 4d432 <pipe_write> <== NOT EXECUTED
if (err > 0) {
43696: 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);
4369a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0) {
4369c: 6f28 bles 436c6 <IMFS_fifo_write+0x54> <== NOT EXECUTED
IMFS_mtime_ctime_update(jnode);
4369e: 42a7 clrl %sp@- <== NOT EXECUTED
436a0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
436a4: 4eb9 0004 4a94 jsr 44a94 <gettimeofday> <== NOT EXECUTED
436aa: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
436ae: 2002 movel %d2,%d0 <== NOT EXECUTED
436b0: 508f addql #8,%sp <== NOT EXECUTED
436b2: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED
}
IMFS_FIFO_RETURN(err);
}
436b6: 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);
436ba: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED
}
IMFS_FIFO_RETURN(err);
}
436be: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
436c2: 4e5e unlk %fp <== NOT EXECUTED
436c4: 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);
436c6: 4a80 tstl %d0 <== NOT EXECUTED
436c8: 660e bnes 436d8 <IMFS_fifo_write+0x66> <== NOT EXECUTED
}
436ca: 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);
436ce: 4280 clrl %d0 <== NOT EXECUTED
}
436d0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
436d4: 4e5e unlk %fp <== NOT EXECUTED
436d6: 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);
436d8: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
436de: 4482 negl %d2 <== NOT EXECUTED
436e0: 2040 moveal %d0,%a0 <== NOT EXECUTED
436e2: 70ff moveq #-1,%d0 <== NOT EXECUTED
436e4: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
436e6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
436ea: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
436ee: 4e5e unlk %fp <== NOT EXECUTED
0004a834 <IMFS_find_match_in_dir>:
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a834: 4e56 fff0 linkw %fp,#-16
4a838: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4a83c: 4879 0005 ca5a pea 5ca5a <dotname>
4a842: 47f9 0004 e75c lea 4e75c <strcmp>,%a3
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a848: 242e 000c movel %fp@(12),%d2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4a84c: 2f02 movel %d2,%sp@-
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4a84e: 246e 0008 moveal %fp@(8),%a2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4a852: 4e93 jsr %a3@
4a854: 508f addql #8,%sp
4a856: 4a80 tstl %d0
4a858: 6714 beqs 4a86e <IMFS_find_match_in_dir+0x3a> <== NEVER TAKEN
return directory;
if ( !strcmp( name, dotdotname ) )
4a85a: 4879 0005 ca5c pea 5ca5c <dotdotname>
4a860: 2f02 movel %d2,%sp@-
4a862: 4e93 jsr %a3@
4a864: 508f addql #8,%sp
4a866: 4a80 tstl %d0
4a868: 6610 bnes 4a87a <IMFS_find_match_in_dir+0x46> <== ALWAYS TAKEN
return directory->Parent;
4a86a: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
4a86e: 200a movel %a2,%d0
4a870: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4a876: 4e5e unlk %fp
4a878: 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));
4a87a: 260a movel %a2,%d3
4a87c: 0683 0000 0050 addil #80,%d3
4a882: 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 );
4a886: b680 cmpl %d0,%d3
4a888: 6716 beqs 4a8a0 <IMFS_find_match_in_dir+0x6c>
4a88a: 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 ) )
4a88c: 486a 000c pea %a2@(12)
4a890: 2f02 movel %d2,%sp@-
4a892: 4e93 jsr %a3@
4a894: 508f addql #8,%sp
4a896: 4a80 tstl %d0
4a898: 67d4 beqs 4a86e <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 ) {
4a89a: 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 );
4a89c: b68a cmpl %a2,%d3
4a89e: 66ec bnes 4a88c <IMFS_find_match_in_dir+0x58>
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
4a8a0: 95ca subal %a2,%a2
}
4a8a2: 200a movel %a2,%d0
4a8a4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4a8aa: 4e5e unlk %fp
...
0004a788 <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
)
{
4a788: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
4a78c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a790: 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;
4a794: 47ee ffec lea %fp@(-20),%a3 <== NOT EXECUTED
4a798: 49f9 0004 a014 lea 4a014 <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 );
4a79e: 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;
4a7a4: 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;
4a7a8: 2468 001c moveal %a0@(28),%a2 <== NOT EXECUTED
loc = temp_mt_entry->mt_fs_root;
4a7ac: 2d68 0020 fff0 movel %a0@(32),%fp@(-16) <== NOT EXECUTED
4a7b2: 2d68 0024 fff4 movel %a0@(36),%fp@(-12) <== NOT EXECUTED
4a7b8: 2d68 0028 fff8 movel %a0@(40),%fp@(-8) <== NOT EXECUTED
4a7be: 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;
4a7c4: 42a8 001c clrl %a0@(28) <== NOT EXECUTED
do {
next = jnode->Parent;
4a7c8: 242a 0008 movel %a2@(8),%d2 <== NOT EXECUTED
loc.node_access = (void *)jnode;
4a7cc: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED
IMFS_Set_handlers( &loc );
4a7d0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a7d2: 4e94 jsr %a4@ <== NOT EXECUTED
if ( jnode->type != IMFS_DIRECTORY ) {
4a7d4: 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 );
4a7d6: 200a movel %a2,%d0 <== NOT EXECUTED
4a7d8: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED
4a7de: 7201 moveq #1,%d1 <== NOT EXECUTED
4a7e0: b2aa 0048 cmpl %a2@(72),%d1 <== NOT EXECUTED
4a7e4: 6634 bnes 4a81a <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
4a7e6: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED
4a7ea: 672e beqs 4a81a <IMFS_fsunmount+0x92> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
}
if ( jnode != NULL ) {
4a7ec: 4a8a tstl %a2 <== NOT EXECUTED
4a7ee: 671e beqs 4a80e <IMFS_fsunmount+0x86> <== NOT EXECUTED
if ( jnode->type == IMFS_DIRECTORY ) {
4a7f0: 7001 moveq #1,%d0 <== NOT EXECUTED
4a7f2: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
4a7f6: 66d0 bnes 4a7c8 <IMFS_fsunmount+0x40> <== NOT EXECUTED
4a7f8: 220a movel %a2,%d1 <== NOT EXECUTED
4a7fa: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4a800: 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 ) )
4a804: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a806: 67c0 beqs 4a7c8 <IMFS_fsunmount+0x40> <== NOT EXECUTED
jnode = jnode_get_first_child( jnode );
4a808: 2440 moveal %d0,%a2 <== NOT EXECUTED
}
}
} while (jnode != NULL);
4a80a: 4a80 tstl %d0 <== NOT EXECUTED
4a80c: 66ba bnes 4a7c8 <IMFS_fsunmount+0x40> <== NOT EXECUTED
return 0;
4a80e: 4280 clrl %d0 <== NOT EXECUTED
}
4a810: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED
4a816: 4e5e unlk %fp <== NOT EXECUTED
4a818: 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 );
4a81a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
if (result != 0)
return -1;
jnode = next;
4a81c: 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 );
4a81e: 42a7 clrl %sp@- <== NOT EXECUTED
4a820: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0)
4a822: 508f addql #8,%sp <== NOT EXECUTED
4a824: 4a80 tstl %d0 <== NOT EXECUTED
4a826: 67c4 beqs 4a7ec <IMFS_fsunmount+0x64> <== NOT EXECUTED
return -1;
4a828: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
4a82a: 4cee 3c04 ffd8 moveml %fp@(-40),%d2/%a2-%a5 <== NOT EXECUTED
4a830: 4e5e unlk %fp <== NOT EXECUTED
0004a8b0 <IMFS_get_token>:
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4a8b0: 4e56 ffe4 linkw %fp,#-28
4a8b4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4a8b8: 246e 0008 moveal %fp@(8),%a2
4a8bc: 49f9 0004 3c2c lea 43c2c <rtems_filesystem_is_separator>,%a4
int pathlen,
char *token,
int *token_len
)
{
register int i = 0;
4a8c2: 4282 clrl %d2
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4a8c4: 161a moveb %a2@+,%d3
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4a8c6: 2a6e 0010 moveal %fp@(16),%a5
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
4a8ca: 264d moveal %a5,%a3
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
4a8cc: 1003 moveb %d3,%d0
const char *path,
int pathlen,
char *token,
int *token_len
)
{
4a8ce: 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) ) {
4a8d2: 49c0 extbl %d0
4a8d4: 2f00 movel %d0,%sp@-
4a8d6: 4e94 jsr %a4@
4a8d8: 588f addql #4,%sp
4a8da: 4a80 tstl %d0
4a8dc: 6620 bnes 4a8fe <IMFS_get_token+0x4e>
4a8de: b882 cmpl %d2,%d4
4a8e0: 6f1c bles 4a8fe <IMFS_get_token+0x4e> <== NEVER TAKEN
token[i] = c;
if ( i == IMFS_NAME_MAX )
4a8e2: 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;
4a8e4: 16c3 moveb %d3,%a3@+
if ( i == IMFS_NAME_MAX )
4a8e6: b082 cmpl %d2,%d0
4a8e8: 6700 0082 beqw 4a96c <IMFS_get_token+0xbc>
return IMFS_INVALID_TOKEN;
if ( !IMFS_is_valid_name_char(c) )
type = IMFS_INVALID_TOKEN;
c = path [++i];
4a8ec: 5282 addql #1,%d2
4a8ee: 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) ) {
4a8f0: 1003 moveb %d3,%d0
4a8f2: 49c0 extbl %d0
4a8f4: 2f00 movel %d0,%sp@-
4a8f6: 4e94 jsr %a4@
4a8f8: 588f addql #4,%sp
4a8fa: 4a80 tstl %d0
4a8fc: 67e0 beqs 4a8de <IMFS_get_token+0x2e>
/*
* Copy a seperator into token.
*/
if ( i == 0 ) {
4a8fe: 4a82 tstl %d2
4a900: 6626 bnes 4a928 <IMFS_get_token+0x78>
token[i] = c;
4a902: 1a83 moveb %d3,%a5@
if ( (token[i] != '\0') && pathlen ) {
4a904: 6718 beqs 4a91e <IMFS_get_token+0x6e>
4a906: 4a84 tstl %d4
4a908: 6714 beqs 4a91e <IMFS_get_token+0x6e> <== NEVER TAKEN
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4a90a: 206e 0014 moveal %fp@(20),%a0
if ( i == 0 ) {
token[i] = c;
if ( (token[i] != '\0') && pathlen ) {
i++;
4a90e: 7401 moveq #1,%d2
type = IMFS_CURRENT_DIR;
4a910: 7001 moveq #1,%d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4a912: 2082 movel %d2,%a0@
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4a914: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a91a: 4e5e unlk %fp
4a91c: 4e75 rts
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4a91e: 206e 0014 moveal %fp@(20),%a0
if ( (token[i] != '\0') && pathlen ) {
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
4a922: 4280 clrl %d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4a924: 2082 movel %d2,%a0@
4a926: 60ec bras 4a914 <IMFS_get_token+0x64>
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
}
} else if (token[ i-1 ] != '\0') {
4a928: 4a35 28ff tstb %a5@(ffffffff,%d2:l)
4a92c: 6706 beqs 4a934 <IMFS_get_token+0x84> <== NEVER TAKEN
token[i] = '\0';
4a92e: 4200 clrb %d0
4a930: 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 )
4a934: 4879 0005 ca5f pea 5ca5f <dotdotname+0x3>
4a93a: 45f9 0004 e75c lea 4e75c <strcmp>,%a2
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4a940: 206e 0014 moveal %fp@(20),%a0
4a944: 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 )
4a946: 2f0d movel %a5,%sp@-
4a948: 4e92 jsr %a2@
4a94a: 508f addql #8,%sp
4a94c: 4a80 tstl %d0
4a94e: 6728 beqs 4a978 <IMFS_get_token+0xc8> <== NEVER TAKEN
type = IMFS_UP_DIR;
else if ( strcmp( token, "." ) == 0 )
4a950: 4879 0005 ca60 pea 5ca60 <dotdotname+0x4>
4a956: 2f0d movel %a5,%sp@-
4a958: 4e92 jsr %a2@
4a95a: 508f addql #8,%sp
4a95c: 4a80 tstl %d0
4a95e: 6724 beqs 4a984 <IMFS_get_token+0xd4> <== NEVER TAKEN
4a960: 7003 moveq #3,%d0
type = IMFS_CURRENT_DIR;
}
return type;
}
4a962: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4a968: 4e5e unlk %fp
4a96a: 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;
4a96c: 7004 moveq #4,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4a96e: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4a974: 4e5e unlk %fp <== NOT EXECUTED
4a976: 4e75 rts <== NOT EXECUTED
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
type = IMFS_UP_DIR;
4a978: 7002 moveq #2,%d0 <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
}
return type;
}
4a97a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4a980: 4e5e unlk %fp <== NOT EXECUTED
4a982: 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;
4a984: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return type;
}
4a986: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4a98c: 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 d528 movel 5d528 <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 e4e8 movel %d1,5e4e8 <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 9fda jsr 49fda <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 ca2a lea 5ca2a <IMFS_LIMITS_AND_OPTIONS>,%a0
4218e: 43f9 0005 ca2e lea 5ca2e <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 ca32 lea 5ca32 <IMFS_LIMITS_AND_OPTIONS+0x8>,%a0
421a0: 2551 003c movel %a1@,%a2@(60)
421a4: 43f9 0005 ca36 lea 5ca36 <IMFS_LIMITS_AND_OPTIONS+0xc>,%a1
421aa: 2550 0040 movel %a0@,%a2@(64)
421ae: 41f9 0005 ca3a lea 5ca3a <IMFS_LIMITS_AND_OPTIONS+0x10>,%a0
421b4: 2551 0044 movel %a1@,%a2@(68)
421b8: 43f9 0005 ca3e lea 5ca3e <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 ca42 lea 5ca42 <IMFS_LIMITS_AND_OPTIONS+0x18>,%a0
421cc: 2551 004c movel %a1@,%a2@(76)
421d0: 43f9 0005 ca46 lea 5ca46 <IMFS_LIMITS_AND_OPTIONS+0x1c>,%a1
421d6: 2550 0050 movel %a0@,%a2@(80)
421da: 41f9 0005 ca4a lea 5ca4a <IMFS_LIMITS_AND_OPTIONS+0x20>,%a0
421e0: 2551 0054 movel %a1@,%a2@(84)
421e4: 43f9 0005 ca4e lea 5ca4e <IMFS_LIMITS_AND_OPTIONS+0x24>,%a1
421ea: 2550 0058 movel %a0@,%a2@(88)
421ee: 41f9 0005 ca52 lea 5ca52 <IMFS_LIMITS_AND_OPTIONS+0x28>,%a0
421f4: 2551 005c movel %a1@,%a2@(92)
421f8: 43f9 0005 ca56 lea 5ca56 <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 e4ec movel 5e4ec <imfs_instance.5944>,%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 e4ec movel %a1,5e4ec <imfs_instance.5944>
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 d85c jsr 4d85c <__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 ecb4 jsr 4ecb4 <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 a8b0 jsr 4a8b0 <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 9de4 jsr 49de4 <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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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;
}
...
0004c700 <IMFS_memfile_addblock>:
*/
MEMFILE_STATIC int IMFS_memfile_addblock(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4c700: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c704: 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 );
4c706: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c70a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c70e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c712: 4eb9 0004 c2d4 jsr 4c2d4 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( *block_entry_ptr )
4c718: 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 );
4c71c: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( *block_entry_ptr )
4c71e: 4a92 tstl %a2@ <== NOT EXECUTED
4c720: 670a beqs 4c72c <IMFS_memfile_addblock+0x2c> <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4c722: 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;
4c726: 4280 clrl %d0 <== NOT EXECUTED
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
}
4c728: 4e5e unlk %fp <== NOT EXECUTED
4c72a: 4e75 rts <== NOT EXECUTED
return 0;
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
4c72c: 4eb9 0004 c2b0 jsr 4c2b0 <memfile_alloc_block> <== NOT EXECUTED
if ( !memory )
4c732: 4a80 tstl %d0 <== NOT EXECUTED
4c734: 670c beqs 4c742 <IMFS_memfile_addblock+0x42> <== NOT EXECUTED
return 1;
*block_entry_ptr = memory;
4c736: 2480 movel %d0,%a2@ <== NOT EXECUTED
return 0;
}
4c738: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
memory = memfile_alloc_block();
if ( !memory )
return 1;
*block_entry_ptr = memory;
return 0;
4c73c: 4280 clrl %d0 <== NOT EXECUTED
}
4c73e: 4e5e unlk %fp <== NOT EXECUTED
4c740: 4e75 rts <== NOT EXECUTED
4c742: 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;
4c746: 7001 moveq #1,%d0 <== NOT EXECUTED
*block_entry_ptr = memory;
return 0;
}
4c748: 4e5e unlk %fp <== NOT EXECUTED
0004c8ee <IMFS_memfile_extend>:
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4c8ee: 4280 clrl %d0 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4c8f0: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
4c8f4: 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 )
4c8f8: 2c39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4c8fe: 2406 movel %d6,%d2 <== NOT EXECUTED
4c900: e48a lsrl #2,%d2 <== NOT EXECUTED
4c902: 2802 movel %d2,%d4 <== NOT EXECUTED
4c904: 5284 addql #1,%d4 <== NOT EXECUTED
4c906: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4c90a: 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 )
4c90e: 5284 addql #1,%d4 <== NOT EXECUTED
4c910: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4c914: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4c918: 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 )
4c91c: 5384 subql #1,%d4 <== NOT EXECUTED
4c91e: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED
4c922: 2204 movel %d4,%d1 <== NOT EXECUTED
4c924: 2800 movel %d0,%d4 <== NOT EXECUTED
4c926: 2a01 movel %d1,%d5 <== NOT EXECUTED
4c928: 9a83 subl %d3,%d5 <== NOT EXECUTED
4c92a: 9982 subxl %d2,%d4 <== NOT EXECUTED
4c92c: 6f00 00ae blew 4c9dc <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 )
4c930: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4c934: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4c938: 2002 movel %d2,%d0 <== NOT EXECUTED
4c93a: 2203 movel %d3,%d1 <== NOT EXECUTED
4c93c: 9285 subl %d5,%d1 <== NOT EXECUTED
4c93e: 9184 subxl %d4,%d0 <== NOT EXECUTED
4c940: 6f5e bles 4c9a0 <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;
4c942: 49f9 0005 a074 lea 5a074 <__divdi3>,%a4 <== NOT EXECUTED
4c948: 2e06 movel %d6,%d7 <== NOT EXECUTED
4c94a: 5bc6 smi %d6 <== NOT EXECUTED
4c94c: 49c6 extbl %d6 <== NOT EXECUTED
4c94e: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4c950: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4c952: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c954: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c956: 4e94 jsr %a4@ <== NOT EXECUTED
4c958: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c95c: 2641 moveal %d1,%a3 <== NOT EXECUTED
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4c95e: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4c960: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4c962: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c964: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c966: 4e94 jsr %a4@ <== NOT EXECUTED
4c968: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c96c: 2c01 movel %d1,%d6 <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4c96e: b28b cmpl %a3,%d1 <== NOT EXECUTED
4c970: 621a bhis 4c98c <IMFS_memfile_extend+0x9e> <== NOT EXECUTED
4c972: 2801 movel %d1,%d4 <== NOT EXECUTED
4c974: 49f9 0004 c700 lea 4c700 <IMFS_memfile_addblock>,%a4 <== NOT EXECUTED
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
4c97a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c97c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c97e: 4e94 jsr %a4@ <== NOT EXECUTED
4c980: 508f addql #8,%sp <== NOT EXECUTED
4c982: 4a80 tstl %d0 <== NOT EXECUTED
4c984: 6626 bnes 4c9ac <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++ ) {
4c986: 5284 addql #1,%d4 <== NOT EXECUTED
4c988: b88b cmpl %a3,%d4 <== NOT EXECUTED
4c98a: 63ee blss 4c97a <IMFS_memfile_extend+0x8c> <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
4c98c: 4280 clrl %d0 <== NOT EXECUTED
}
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
4c98e: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED
4c992: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED
return 0;
}
4c996: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4c99c: 4e5e unlk %fp <== NOT EXECUTED
4c99e: 4e75 rts <== NOT EXECUTED
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
return 0;
4c9a0: 4280 clrl %d0 <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4c9a2: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4c9a8: 4e5e unlk %fp <== NOT EXECUTED
4c9aa: 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-- ) {
4c9ac: b886 cmpl %d6,%d4 <== NOT EXECUTED
4c9ae: 6514 bcss 4c9c4 <IMFS_memfile_extend+0xd6> <== NOT EXECUTED
4c9b0: 47f9 0004 c8c6 lea 4c8c6 <IMFS_memfile_remove_block>,%a3 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4c9b6: 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-- ) {
4c9b8: 5384 subql #1,%d4 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4c9ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c9bc: 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-- ) {
4c9be: 508f addql #8,%sp <== NOT EXECUTED
4c9c0: b886 cmpl %d6,%d4 <== NOT EXECUTED
4c9c2: 64f2 bccs 4c9b6 <IMFS_memfile_extend+0xc8> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4c9c4: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4c9ca: 721c moveq #28,%d1 <== NOT EXECUTED
4c9cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c9ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4c9d0: 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 );
4c9d6: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4c9d8: 4e5e unlk %fp <== NOT EXECUTED
4c9da: 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 );
4c9dc: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4c9e2: 7416 moveq #22,%d2 <== NOT EXECUTED
4c9e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c9e6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c9e8: 2082 movel %d2,%a0@ <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4c9ea: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4c9f0: 4e5e unlk %fp <== NOT EXECUTED
0004c2d4 <IMFS_memfile_get_block_pointer>:
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4c2d4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4c2d8: 2239 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4c2de: e489 lsrl #2,%d1 <== NOT EXECUTED
4c2e0: 2001 movel %d1,%d0 <== NOT EXECUTED
4c2e2: 5380 subql #1,%d0 <== NOT EXECUTED
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4c2e4: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
4c2e8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4c2ec: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4c2f0: 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 ) {
4c2f4: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c2f6: 651e bcss 4c316 <IMFS_memfile_get_block_pointer+0x42><== NOT EXECUTED
p = info->indirect;
4c2f8: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED
if ( malloc_it ) {
4c2fc: 4a88 tstl %a0 <== NOT EXECUTED
4c2fe: 675a beqs 4c35a <IMFS_memfile_get_block_pointer+0x86><== NOT EXECUTED
if ( !p ) {
4c300: 4a89 tstl %a1 <== NOT EXECUTED
4c302: 6700 00c0 beqw 4c3c4 <IMFS_memfile_get_block_pointer+0xf0><== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4c306: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED
4c30a: 2009 movel %a1,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4c30c: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4c312: 4e5e unlk %fp <== NOT EXECUTED
4c314: 4e75 rts <== NOT EXECUTED
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
4c316: 2001 movel %d1,%d0 <== NOT EXECUTED
4c318: 5280 addql #1,%d0 <== NOT EXECUTED
4c31a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
4c31e: 2240 moveal %d0,%a1 <== NOT EXECUTED
4c320: 5389 subql #1,%a1 <== NOT EXECUTED
4c322: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
4c324: 6544 bcss 4c36a <IMFS_memfile_get_block_pointer+0x96><== NOT EXECUTED
my_block -= FIRST_DOUBLY_INDIRECT;
4c326: 9481 subl %d1,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
4c328: 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;
4c32c: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED
4c330: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
if ( malloc_it ) {
4c334: 4a88 tstl %a0 <== NOT EXECUTED
4c336: 6700 0104 beqw 4c43c <IMFS_memfile_get_block_pointer+0x168><== NOT EXECUTED
if ( !p ) {
4c33a: 4a89 tstl %a1 <== NOT EXECUTED
4c33c: 6700 00a0 beqw 4c3de <IMFS_memfile_get_block_pointer+0x10a><== NOT EXECUTED
if ( !p )
return 0;
info->doubly_indirect = p;
}
p1 = (block_p *)p[ doubly ];
4c340: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4c344: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4c346: 4a88 tstl %a0 <== NOT EXECUTED
4c348: 6764 beqs 4c3ae <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4c34a: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4c34e: 2008 movel %a0,%d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4c350: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4c356: 4e5e unlk %fp <== NOT EXECUTED
4c358: 4e75 rts <== NOT EXECUTED
info->indirect = p;
}
return &info->indirect[ my_block ];
}
if ( !p )
4c35a: 4a89 tstl %a1 <== NOT EXECUTED
4c35c: 66a8 bnes 4c306 <IMFS_memfile_get_block_pointer+0x32><== NOT EXECUTED
if ( !p1 )
return 0;
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
4c35e: 4280 clrl %d0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4c360: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4c366: 4e5e unlk %fp <== NOT EXECUTED
4c368: 4e75 rts <== NOT EXECUTED
}
/*
* Is the block number in the triply indirect portion?
*/
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
4c36a: 2600 movel %d0,%d3 <== NOT EXECUTED
4c36c: 5283 addql #1,%d3 <== NOT EXECUTED
4c36e: 4c01 3800 mulsl %d1,%d3 <== NOT EXECUTED
4c372: 5383 subql #1,%d3 <== NOT EXECUTED
4c374: b682 cmpl %d2,%d3 <== NOT EXECUTED
4c376: 65e6 bcss 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
my_block -= FIRST_TRIPLY_INDIRECT;
4c378: 9480 subl %d0,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4c37a: 4c41 2003 remul %d1,%d3,%d2 <== NOT EXECUTED
4c37e: 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;
4c382: 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;
4c386: 4c41 2004 remul %d1,%d4,%d2 <== NOT EXECUTED
4c38a: 4c41 2002 remul %d1,%d2,%d2 <== NOT EXECUTED
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
if ( malloc_it ) {
4c38e: 4a88 tstl %a0 <== NOT EXECUTED
4c390: 6700 00c4 beqw 4c456 <IMFS_memfile_get_block_pointer+0x182><== NOT EXECUTED
if ( !p ) {
4c394: 4a89 tstl %a1 <== NOT EXECUTED
4c396: 6700 0084 beqw 4c41c <IMFS_memfile_get_block_pointer+0x148><== NOT EXECUTED
if ( !p )
return 0;
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
4c39a: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4c39e: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4c3a0: 4a88 tstl %a0 <== NOT EXECUTED
4c3a2: 675a beqs 4c3fe <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
if ( !p1 )
return 0;
p[ triply ] = (block_p) p1;
}
p2 = (block_p *)p1[ doubly ];
4c3a4: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED
4c3a8: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4c3aa: 4a88 tstl %a0 <== NOT EXECUTED
4c3ac: 669c bnes 4c34a <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
p2 = memfile_alloc_block();
4c3ae: 4eb9 0004 c2b0 jsr 4c2b0 <memfile_alloc_block> <== NOT EXECUTED
4c3b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p2 )
4c3b6: 4a80 tstl %d0 <== NOT EXECUTED
4c3b8: 67a4 beqs 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1[ doubly ] = (block_p) p2;
4c3ba: 2480 movel %d0,%a2@ <== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4c3bc: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4c3c0: 2008 movel %a0,%d0 <== NOT EXECUTED
4c3c2: 608c bras 4c350 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p = info->indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4c3c4: 4eb9 0004 c2b0 jsr 4c2b0 <memfile_alloc_block> <== NOT EXECUTED
if ( !p )
4c3ca: 4a80 tstl %d0 <== NOT EXECUTED
4c3cc: 6790 beqs 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->indirect = p;
4c3ce: 2240 moveal %d0,%a1 <== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4c3d0: 43f1 2c00 lea %a1@(00000000,%d2:l:4),%a1 <== NOT EXECUTED
if ( !p ) {
p = memfile_alloc_block();
if ( !p )
return 0;
info->indirect = p;
4c3d4: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
}
if ( !p )
return 0;
return &info->indirect[ my_block ];
4c3d8: 2009 movel %a1,%d0 <== NOT EXECUTED
4c3da: 6000 ff30 braw 4c30c <IMFS_memfile_get_block_pointer+0x38><== NOT EXECUTED
p = info->doubly_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4c3de: 4eb9 0004 c2b0 jsr 4c2b0 <memfile_alloc_block> <== NOT EXECUTED
4c3e4: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4c3e6: 4a80 tstl %d0 <== NOT EXECUTED
4c3e8: 6700 ff74 beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->doubly_indirect = p;
4c3ec: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED
}
p1 = (block_p *)p[ doubly ];
4c3f0: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4c3f4: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4c3f6: 4a88 tstl %a0 <== NOT EXECUTED
4c3f8: 6600 ff50 bnew 4c34a <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
4c3fc: 60b0 bras 4c3ae <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
info->triply_indirect = p;
}
p1 = (block_p *) p[ triply ];
if ( !p1 ) {
p1 = memfile_alloc_block();
4c3fe: 4eb9 0004 c2b0 jsr 4c2b0 <memfile_alloc_block> <== NOT EXECUTED
4c404: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !p1 )
4c406: 4a80 tstl %d0 <== NOT EXECUTED
4c408: 6700 ff54 beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p[ triply ] = (block_p) p1;
4c40c: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
p2 = (block_p *)p1[ doubly ];
4c40e: 45f0 4c00 lea %a0@(00000000,%d4:l:4),%a2 <== NOT EXECUTED
4c412: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p2 ) {
4c414: 4a88 tstl %a0 <== NOT EXECUTED
4c416: 6600 ff32 bnew 4c34a <IMFS_memfile_get_block_pointer+0x76><== NOT EXECUTED
4c41a: 6092 bras 4c3ae <IMFS_memfile_get_block_pointer+0xda><== NOT EXECUTED
p = info->triply_indirect;
if ( malloc_it ) {
if ( !p ) {
p = memfile_alloc_block();
4c41c: 4eb9 0004 c2b0 jsr 4c2b0 <memfile_alloc_block> <== NOT EXECUTED
4c422: 2240 moveal %d0,%a1 <== NOT EXECUTED
if ( !p )
4c424: 4a80 tstl %d0 <== NOT EXECUTED
4c426: 6700 ff36 beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
info->triply_indirect = p;
4c42a: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
}
p1 = (block_p *) p[ triply ];
4c42e: 45f1 2c00 lea %a1@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4c432: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( !p1 ) {
4c434: 4a88 tstl %a0 <== NOT EXECUTED
4c436: 6600 ff6c bnew 4c3a4 <IMFS_memfile_get_block_pointer+0xd0><== NOT EXECUTED
4c43a: 60c2 bras 4c3fe <IMFS_memfile_get_block_pointer+0x12a><== NOT EXECUTED
}
return (block_p *)&p1[ singly ];
}
if ( !p )
4c43c: 4a89 tstl %a1 <== NOT EXECUTED
4c43e: 6700 ff1e beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p = (block_p *)p[ doubly ];
4c442: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p )
4c446: 4a88 tstl %a0 <== NOT EXECUTED
4c448: 6700 ff14 beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
return (block_p *)&p2[ singly ];
4c44c: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4c450: 2008 movel %a0,%d0 <== NOT EXECUTED
4c452: 6000 fefc braw 4c350 <IMFS_memfile_get_block_pointer+0x7c><== NOT EXECUTED
p1[ doubly ] = (block_p) p2;
}
return (block_p *)&p2[ singly ];
}
if ( !p )
4c456: 4a89 tstl %a1 <== NOT EXECUTED
4c458: 6700 ff04 beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p1 = (block_p *) p[ triply ];
4c45c: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p1 )
4c460: 4a88 tstl %a0 <== NOT EXECUTED
4c462: 6700 fefa beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
p2 = (block_p *)p1[ doubly ];
4c466: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED
if ( !p2 )
4c46a: 4a88 tstl %a0 <== NOT EXECUTED
4c46c: 6700 fef0 beqw 4c35e <IMFS_memfile_get_block_pointer+0x8a><== NOT EXECUTED
return 0;
return (block_p *)&p2[ singly ];
4c470: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4c474: 2008 movel %a0,%d0 <== NOT EXECUTED
4c476: 6000 fed8 braw 4c350 <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 47c8 movel 647c8 <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
0004c47a <IMFS_memfile_read>:
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4c47a: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
4c47e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4c482: 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) {
4c486: 7806 moveq #6,%d4 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4c488: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED
4c48c: 2a6e 0018 moveal %fp@(24),%a5 <== NOT EXECUTED
4c490: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4c494: 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) {
4c498: b8aa 0048 cmpl %a2@(72),%d4 <== NOT EXECUTED
4c49c: 6700 017c beqw 4c61a <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;
4c4a0: 43f5 3800 lea %a5@(00000000,%d3:l),%a1 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size )
4c4a4: 4280 clrl %d0 <== NOT EXECUTED
4c4a6: 2209 movel %a1,%d1 <== NOT EXECUTED
4c4a8: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4c4ac: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4c4b0: 2c00 movel %d0,%d6 <== NOT EXECUTED
4c4b2: 2e01 movel %d1,%d7 <== NOT EXECUTED
4c4b4: 9e85 subl %d5,%d7 <== NOT EXECUTED
4c4b6: 9d84 subxl %d4,%d6 <== NOT EXECUTED
4c4b8: 6f00 0110 blew 4c5ca <IMFS_memfile_read+0x150> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4c4bc: 2c39 0005 e4e8 movel 5e4e8 <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;
4c4c2: 2e05 movel %d5,%d7 <== NOT EXECUTED
4c4c4: 9e83 subl %d3,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4c4c6: 2a06 movel %d6,%d5 <== NOT EXECUTED
4c4c8: 5bc4 smi %d4 <== NOT EXECUTED
4c4ca: 49c4 extbl %d4 <== NOT EXECUTED
4c4cc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c4ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c4d0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c4d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c4d4: 4eb9 0005 a428 jsr 5a428 <__moddi3> <== NOT EXECUTED
4c4da: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c4de: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4c4e0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c4e2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c4e4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c4e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c4e8: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED
4c4ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c4f2: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4c4f4: 4a8c tstl %a4 <== NOT EXECUTED
4c4f6: 6700 010e beqw 4c606 <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 );
4c4fa: 42a7 clrl %sp@- <== NOT EXECUTED
4c4fc: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4c4fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c500: 4eb9 0004 c2d4 jsr 4c2d4 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4c506: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c50a: 4a80 tstl %d0 <== NOT EXECUTED
4c50c: 6700 01c0 beqw 4c6ce <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;
4c510: 9c8c subl %a4,%d6 <== NOT EXECUTED
4c512: 2207 movel %d7,%d1 <== NOT EXECUTED
4c514: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4c516: 6500 0162 bcsw 4c67a <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 );
4c51a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4c51c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c51e: d9d0 addal %a0@,%a4 <== NOT EXECUTED
dest += to_copy;
4c520: 280b movel %a3,%d4 <== NOT EXECUTED
4c522: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4c524: 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++;
4c526: 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 );
4c528: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4c52a: 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 );
4c52c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c52e: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4c534: 2c39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4c53a: 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 ) {
4c53e: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4c540: 623c bhis 4c57e <IMFS_memfile_read+0x104> <== NOT EXECUTED
4c542: 47f9 0004 c2d4 lea 4c2d4 <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 );
4c548: 4bf9 0004 e108 lea 4e108 <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 );
4c54e: 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;
4c550: 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 );
4c552: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
dest += to_copy;
block++;
4c554: 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 );
4c556: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c558: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4c55a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c55e: 4a80 tstl %d0 <== NOT EXECUTED
4c560: 6700 00ac beqw 4c60e <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4c564: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4c566: 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 );
4c568: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4c56a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4c56c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
dest += to_copy;
4c56e: 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 );
4c570: 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 ) {
4c572: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c576: beb9 0005 e4e8 cmpl 5e4e8 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED
4c57c: 64d0 bccs 4c54e <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 ) {
4c57e: 4a87 tstl %d7 <== NOT EXECUTED
4c580: 6728 beqs 4c5aa <IMFS_memfile_read+0x130> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4c582: 42a7 clrl %sp@- <== NOT EXECUTED
4c584: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c586: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c588: 4eb9 0004 c2d4 jsr 4c2d4 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4c58e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c592: 4a80 tstl %d0 <== NOT EXECUTED
4c594: 6778 beqs 4c60e <IMFS_memfile_read+0x194> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4c596: 2040 moveal %d0,%a0 <== NOT EXECUTED
copied += my_length;
4c598: 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 );
4c59a: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4c59c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4c59e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c5a0: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
copied += my_length;
4c5a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
4c5aa: 42a7 clrl %sp@- <== NOT EXECUTED
4c5ac: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c5b0: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4c5b6: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return copied;
4c5bc: 200c movel %a4,%d0 <== NOT EXECUTED
4c5be: 508f addql #8,%sp <== NOT EXECUTED
}
4c5c0: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4c5c6: 4e5e unlk %fp <== NOT EXECUTED
4c5c8: 4e75 rts <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4c5ca: 2c39 0005 e4e8 movel 5e4e8 <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;
4c5d0: 2e0d movel %a5,%d7 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4c5d2: 2a06 movel %d6,%d5 <== NOT EXECUTED
4c5d4: 5bc4 smi %d4 <== NOT EXECUTED
4c5d6: 49c4 extbl %d4 <== NOT EXECUTED
4c5d8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c5da: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c5dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c5de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c5e0: 4eb9 0005 a428 jsr 5a428 <__moddi3> <== NOT EXECUTED
4c5e6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c5ea: 2841 moveal %d1,%a4 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4c5ec: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c5ee: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c5f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c5f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c5f4: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED
4c5fa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4c5fe: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4c600: 4a8c tstl %a4 <== NOT EXECUTED
4c602: 6600 fef6 bnew 4c4fa <IMFS_memfile_read+0x80> <== NOT EXECUTED
unsigned int last_byte;
unsigned int copied;
unsigned int start_offset;
unsigned char *dest;
dest = destination;
4c606: 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;
4c608: 99cc subal %a4,%a4 <== NOT EXECUTED
4c60a: 6000 ff32 braw 4c53e <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;
4c60e: 200c movel %a4,%d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4c610: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4c616: 4e5e unlk %fp <== NOT EXECUTED
4c618: 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))
4c61a: 91c8 subal %a0,%a0 <== NOT EXECUTED
4c61c: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED
4c620: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED
4c624: 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;
4c628: 286a 0054 moveal %a2@(84),%a4 <== NOT EXECUTED
if (my_length > (the_jnode->info.linearfile.size - start))
4c62c: 2800 movel %d0,%d4 <== NOT EXECUTED
4c62e: 2a01 movel %d1,%d5 <== NOT EXECUTED
4c630: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
4c634: 9a83 subl %d3,%d5 <== NOT EXECUTED
4c636: 9982 subxl %d2,%d4 <== NOT EXECUTED
4c638: 2c2e fff0 movel %fp@(-16),%d6 <== NOT EXECUTED
4c63c: 2e2e fff4 movel %fp@(-12),%d7 <== NOT EXECUTED
4c640: 9e85 subl %d5,%d7 <== NOT EXECUTED
4c642: 9d84 subxl %d4,%d6 <== NOT EXECUTED
4c644: 6f5e bles 4c6a4 <IMFS_memfile_read+0x22a> <== NOT EXECUTED
my_length = the_jnode->info.linearfile.size - start;
4c646: 2e01 movel %d1,%d7 <== NOT EXECUTED
4c648: 9e83 subl %d3,%d7 <== NOT EXECUTED
memcpy(dest, &file_ptr[start], my_length);
4c64a: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4c64c: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED
4c650: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c652: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4c658: 42a7 clrl %sp@- <== NOT EXECUTED
4c65a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c65e: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4c664: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4c66a: 2007 movel %d7,%d0 <== NOT EXECUTED
4c66c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4c670: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4c676: 4e5e unlk %fp <== NOT EXECUTED
4c678: 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;
4c67a: 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 );
4c67c: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
4c67e: 280b movel %a3,%d4 <== NOT EXECUTED
4c680: d881 addl %d1,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4c682: 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++;
4c684: 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 );
4c686: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4c688: d9d0 addal %a0@,%a4 <== NOT EXECUTED
4c68a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4c68c: 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 );
4c68e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c690: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4c696: 2c39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4c69c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c6a0: 6000 fe9c braw 4c53e <IMFS_memfile_read+0xc4> <== NOT EXECUTED
/*
* Linear files (as created from a tar file are easier to handle
* than block files).
*/
my_length = length;
4c6a4: 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);
4c6a6: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4c6a8: 4874 3800 pea %a4@(00000000,%d3:l) <== NOT EXECUTED
4c6ac: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c6ae: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4c6b4: 42a7 clrl %sp@- <== NOT EXECUTED
4c6b6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c6ba: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4c6c0: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4c6c6: 2007 movel %d7,%d0 <== NOT EXECUTED
4c6c8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4c6cc: 60a2 bras 4c670 <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;
4c6ce: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4c6d0: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4c6d6: 4e5e unlk %fp <== NOT EXECUTED
0004c7ac <IMFS_memfile_remove>:
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4c7ac: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
4c7b0: 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;
4c7b4: 2839 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d4<== NOT EXECUTED
4c7ba: 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
)
{
4c7bc: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
* + doubly indirect
* + triply indirect
*/
info = &the_jnode->info.file;
if ( info->indirect ) {
4c7c0: 4aac 0054 tstl %a4@(84) <== NOT EXECUTED
4c7c4: 670e beqs 4c7d4 <IMFS_memfile_remove+0x28> <== NOT EXECUTED
memfile_free_blocks_in_table( &info->indirect, to_free );
4c7c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c7c8: 486c 0054 pea %a4@(84) <== NOT EXECUTED
4c7cc: 4eb9 0004 c766 jsr 4c766 <memfile_free_blocks_in_table> <== NOT EXECUTED
4c7d2: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->doubly_indirect ) {
4c7d4: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED
4c7d8: 4a88 tstl %a0 <== NOT EXECUTED
4c7da: 6750 beqs 4c82c <IMFS_memfile_remove+0x80> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4c7dc: 2239 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4c7e2: 2001 movel %d1,%d0 <== NOT EXECUTED
4c7e4: e488 lsrl #2,%d0 <== NOT EXECUTED
4c7e6: 47f9 0004 c766 lea 4c766 <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4c7ec: 6734 beqs 4c822 <IMFS_memfile_remove+0x76> <== NOT EXECUTED
4c7ee: 4280 clrl %d0 <== NOT EXECUTED
4c7f0: 4282 clrl %d2 <== NOT EXECUTED
4c7f2: 47f9 0004 c766 lea 4c766 <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4c7f8: 5282 addql #1,%d2 <== NOT EXECUTED
if ( info->doubly_indirect[i] ) {
4c7fa: e588 lsll #2,%d0 <== NOT EXECUTED
4c7fc: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED
4c800: 6710 beqs 4c812 <IMFS_memfile_remove+0x66> <== NOT EXECUTED
memfile_free_blocks_in_table(
4c802: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c804: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
4c808: 4e93 jsr %a3@ <== NOT EXECUTED
4c80a: 2239 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4c810: 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++ ) {
4c812: 2601 movel %d1,%d3 <== NOT EXECUTED
4c814: 2002 movel %d2,%d0 <== NOT EXECUTED
4c816: e48b lsrl #2,%d3 <== NOT EXECUTED
4c818: b483 cmpl %d3,%d2 <== NOT EXECUTED
4c81a: 6406 bccs 4c822 <IMFS_memfile_remove+0x76> <== NOT EXECUTED
4c81c: 206c 0058 moveal %a4@(88),%a0 <== NOT EXECUTED
4c820: 60d6 bras 4c7f8 <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 );
4c822: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c824: 486c 0058 pea %a4@(88) <== NOT EXECUTED
4c828: 4e93 jsr %a3@ <== NOT EXECUTED
4c82a: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->triply_indirect ) {
4c82c: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED
4c830: 4a88 tstl %a0 <== NOT EXECUTED
4c832: 6700 0086 beqw 4c8ba <IMFS_memfile_remove+0x10e> <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
4c836: 2239 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4c83c: 2001 movel %d1,%d0 <== NOT EXECUTED
4c83e: e488 lsrl #2,%d0 <== NOT EXECUTED
4c840: 47f9 0004 c766 lea 4c766 <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4c846: 6768 beqs 4c8b0 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
4c848: 2450 moveal %a0@,%a2 <== NOT EXECUTED
4c84a: 47f9 0004 c766 lea 4c766 <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4c850: 4a8a tstl %a2 <== NOT EXECUTED
4c852: 675c beqs 4c8b0 <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];
4c854: 4286 clrl %d6 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4c856: 4285 clrl %d5 <== NOT EXECUTED
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
4c858: 4a80 tstl %d0 <== NOT EXECUTED
4c85a: 6728 beqs 4c884 <IMFS_memfile_remove+0xd8> <== NOT EXECUTED
4c85c: 4280 clrl %d0 <== NOT EXECUTED
4c85e: 4282 clrl %d2 <== NOT EXECUTED
4c860: 5282 addql #1,%d2 <== NOT EXECUTED
if ( p[j] ) {
4c862: e588 lsll #2,%d0 <== NOT EXECUTED
4c864: 4ab2 0800 tstl %a2@(00000000,%d0:l) <== NOT EXECUTED
4c868: 6710 beqs 4c87a <IMFS_memfile_remove+0xce> <== NOT EXECUTED
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4c86a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c86c: 4872 0800 pea %a2@(00000000,%d0:l) <== NOT EXECUTED
4c870: 4e93 jsr %a3@ <== NOT EXECUTED
4c872: 2239 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4c878: 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++ ) {
4c87a: 2601 movel %d1,%d3 <== NOT EXECUTED
4c87c: 2002 movel %d2,%d0 <== NOT EXECUTED
4c87e: e48b lsrl #2,%d3 <== NOT EXECUTED
4c880: b682 cmpl %d2,%d3 <== NOT EXECUTED
4c882: 62dc bhis 4c860 <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(
4c884: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c886: 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++ ) {
4c88a: 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(
4c88c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4c88e: 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++ ) {
4c890: 2239 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d1<== NOT EXECUTED
4c896: 2001 movel %d1,%d0 <== NOT EXECUTED
4c898: 508f addql #8,%sp <== NOT EXECUTED
4c89a: e488 lsrl #2,%d0 <== NOT EXECUTED
4c89c: ba80 cmpl %d0,%d5 <== NOT EXECUTED
4c89e: 6410 bccs 4c8b0 <IMFS_memfile_remove+0x104> <== NOT EXECUTED
p = (block_p *) info->triply_indirect[i];
if ( !p ) /* ensure we have a valid pointer */
4c8a0: 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];
4c8a2: 206c 005c moveal %a4@(92),%a0 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4c8a6: 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];
4c8a8: 2470 6800 moveal %a0@(00000000,%d6:l),%a2 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4c8ac: 4a8a tstl %a2 <== NOT EXECUTED
4c8ae: 66a8 bnes 4c858 <IMFS_memfile_remove+0xac> <== NOT EXECUTED
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4c8b0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c8b2: 486c 005c pea %a4@(92) <== NOT EXECUTED
4c8b6: 4e93 jsr %a3@ <== NOT EXECUTED
4c8b8: 508f addql #8,%sp <== NOT EXECUTED
(block_p **)&info->triply_indirect, to_free );
}
return 0;
}
4c8ba: 4280 clrl %d0 <== NOT EXECUTED
4c8bc: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
4c8c2: 4e5e unlk %fp <== NOT EXECUTED
0004c8c6 <IMFS_memfile_remove_block>:
*/
MEMFILE_STATIC int IMFS_memfile_remove_block(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4c8c6: 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 );
4c8ca: 42a7 clrl %sp@- <== NOT EXECUTED
4c8cc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c8d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c8d4: 4eb9 0004 c2d4 jsr 4c2d4 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
IMFS_assert( block_ptr );
ptr = *block_ptr;
4c8da: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c8dc: 2210 movel %a0@,%d1 <== NOT EXECUTED
*block_ptr = 0;
4c8de: 4290 clrl %a0@ <== NOT EXECUTED
memfile_free_block( ptr );
4c8e0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4c8e2: 4eb9 0004 c74c jsr 4c74c <memfile_free_block> <== NOT EXECUTED
return 1;
}
4c8e8: 7001 moveq #1,%d0 <== NOT EXECUTED
4c8ea: 4e5e unlk %fp <== NOT EXECUTED
0004c9f4 <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 ) {
4c9f4: 4280 clrl %d0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4c9f6: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4c9fa: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
4c9fe: 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;
4ca02: 2047 moveal %d7,%a0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4ca04: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4ca08: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4ca0c: 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;
4ca10: d1c3 addal %d3,%a0 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size ) {
4ca12: 2208 movel %a0,%d1 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4ca14: 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 ) {
4ca18: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4ca1c: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4ca20: 9a81 subl %d1,%d5 <== NOT EXECUTED
4ca22: 9980 subxl %d0,%d4 <== NOT EXECUTED
4ca24: 6d00 0118 bltw 4cb3e <IMFS_memfile_write+0x14a> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4ca28: 2c39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4ca2e: 2a06 movel %d6,%d5 <== NOT EXECUTED
4ca30: 5bc4 smi %d4 <== NOT EXECUTED
4ca32: 49c4 extbl %d4 <== NOT EXECUTED
4ca34: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4ca36: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4ca38: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ca3a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ca3c: 4eb9 0005 a428 jsr 5a428 <__moddi3> <== NOT EXECUTED
4ca42: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4ca46: 2641 moveal %d1,%a3 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4ca48: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4ca4a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4ca4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ca4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ca50: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED
4ca56: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4ca5a: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4ca5c: 4a8b tstl %a3 <== NOT EXECUTED
4ca5e: 6700 00d6 beqw 4cb36 <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 );
4ca62: 42a7 clrl %sp@- <== NOT EXECUTED
4ca64: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4ca66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ca68: 4eb9 0004 c2d4 jsr 4c2d4 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4ca6e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ca72: 4a80 tstl %d0 <== NOT EXECUTED
4ca74: 6700 012c beqw 4cba2 <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;
4ca78: 9c8b subl %a3,%d6 <== NOT EXECUTED
4ca7a: be86 cmpl %d6,%d7 <== NOT EXECUTED
4ca7c: 6500 00fa bcsw 4cb78 <IMFS_memfile_write+0x184> <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4ca80: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4ca82: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4ca84: 280c movel %a4,%d4 <== NOT EXECUTED
4ca86: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4ca88: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4ca8a: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4ca8c: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4ca8e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4ca90: d7d0 addal %a0@,%a3 <== NOT EXECUTED
4ca92: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ca94: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4ca9a: 2c39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4caa0: 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 ) {
4caa4: bc87 cmpl %d7,%d6 <== NOT EXECUTED
4caa6: 623c bhis 4cae4 <IMFS_memfile_write+0xf0> <== NOT EXECUTED
4caa8: 47f9 0004 c2d4 lea 4c2d4 <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 );
4caae: 49f9 0004 e108 lea 4e108 <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 );
4cab4: 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;
4cab6: 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 );
4cab8: 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++;
4caba: 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 );
4cabc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cabe: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !block_ptr )
4cac0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cac4: 4a80 tstl %d0 <== NOT EXECUTED
4cac6: 6700 00a4 beqw 4cb6c <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 );
4caca: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4cacc: 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(
4cace: 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 );
4cad0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4cad2: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
src += to_copy;
4cad4: 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 );
4cad6: 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 ) {
4cad8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cadc: beb9 0005 e4e8 cmpl 5e4e8 <imfs_memfile_bytes_per_block>,%d7<== NOT EXECUTED
4cae2: 64d0 bccs 4cab4 <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 ) {
4cae4: 4a87 tstl %d7 <== NOT EXECUTED
4cae6: 6728 beqs 4cb10 <IMFS_memfile_write+0x11c> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4cae8: 42a7 clrl %sp@- <== NOT EXECUTED
4caea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4caec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4caee: 4eb9 0004 c2d4 jsr 4c2d4 <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4caf4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4caf8: 4a80 tstl %d0 <== NOT EXECUTED
4cafa: 6770 beqs 4cb6c <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 );
4cafc: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4cafe: 2040 moveal %d0,%a0 <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4cb00: 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 );
4cb02: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4cb04: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4cb06: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4cb0c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
4cb10: 42a7 clrl %sp@- <== NOT EXECUTED
4cb12: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4cb16: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4cb1c: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
return copied;
4cb20: 2003 movel %d3,%d0 <== NOT EXECUTED
4cb22: 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 );
4cb24: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED
4cb28: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED
return copied;
}
4cb2c: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4cb32: 4e5e unlk %fp <== NOT EXECUTED
4cb34: 4e75 rts <== NOT EXECUTED
unsigned int last_byte;
unsigned int start_offset;
int copied;
const unsigned char *src;
src = source;
4cb36: 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;
4cb38: 4283 clrl %d3 <== NOT EXECUTED
4cb3a: 6000 ff68 braw 4caa4 <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 );
4cb3e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4cb40: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cb42: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cb44: 4eb9 0004 c8ee jsr 4c8ee <IMFS_memfile_extend> <== NOT EXECUTED
if ( status )
4cb4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cb4e: 4a80 tstl %d0 <== NOT EXECUTED
4cb50: 6700 fed6 beqw 4ca28 <IMFS_memfile_write+0x34> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4cb54: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4cb5a: 761c moveq #28,%d3 <== NOT EXECUTED
4cb5c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4cb5e: 70ff moveq #-1,%d0 <== NOT EXECUTED
4cb60: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4cb62: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4cb68: 4e5e unlk %fp <== NOT EXECUTED
4cb6a: 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 )
4cb6c: 2003 movel %d3,%d0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4cb6e: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4cb74: 4e5e unlk %fp <== NOT EXECUTED
4cb76: 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;
4cb78: 2c07 movel %d7,%d6 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4cb7a: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
4cb7c: 280c movel %a4,%d4 <== NOT EXECUTED
4cb7e: d886 addl %d6,%d4 <== NOT EXECUTED
block++;
my_length -= to_copy;
4cb80: 9e86 subl %d6,%d7 <== NOT EXECUTED
copied += to_copy;
4cb82: 2606 movel %d6,%d3 <== NOT EXECUTED
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
src += to_copy;
block++;
4cb84: 5282 addql #1,%d2 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4cb86: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4cb88: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4cb8a: d7d0 addal %a0@,%a3 <== NOT EXECUTED
4cb8c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4cb8e: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4cb94: 2c39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4cb9a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cb9e: 6000 ff04 braw 4caa4 <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;
4cba2: 4280 clrl %d0 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4cba4: 4cee 1cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4cbaa: 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 ecb4 jsr 4ecb4 <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 a8b0 jsr 4a8b0 <IMFS_get_token>
/*
* Figure out what type of IMFS node this is.
*/
if ( S_ISDIR(mode) )
4238a: 4fef 0010 lea %sp@(16),%sp
4238e: 2003 movel %d3,%d0
42390: 0280 0000 f000 andil #61440,%d0
42396: 0c80 0000 4000 cmpil #16384,%d0
4239c: 6756 beqs 423f4 <IMFS_mknod+0xa4>
type = IMFS_DIRECTORY;
else if ( S_ISREG(mode) )
4239e: 0c80 0000 8000 cmpil #32768,%d0
423a4: 6752 beqs 423f8 <IMFS_mknod+0xa8> <== NEVER TAKEN
type = IMFS_MEMORY_FILE;
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
423a6: 0c80 0000 6000 cmpil #24576,%d0
423ac: 673a beqs 423e8 <IMFS_mknod+0x98>
423ae: 0c80 0000 2000 cmpil #8192,%d0
423b4: 6732 beqs 423e8 <IMFS_mknod+0x98> <== ALWAYS TAKEN
type = IMFS_DEVICE;
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
} else if (S_ISFIFO(mode))
423b6: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED
423bc: 673e beqs 423fc <IMFS_mknod+0xac> <== NOT EXECUTED
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
IMFS_token_types type = 0;
423be: 4280 clrl %d0 <== NOT EXECUTED
* was ONLY passed a NULL when we created the root node. We
* added a new IMFS_create_root_node() so this path no longer
* existed. The result was simpler code which should not have
* this path.
*/
new_node = IMFS_create_node( pathloc, type, new_name, mode, &info );
423c0: 486e ffe8 pea %fp@(-24)
423c4: 2f03 movel %d3,%sp@-
423c6: 2f02 movel %d2,%sp@-
423c8: 2f00 movel %d0,%sp@-
423ca: 2f2e 0018 movel %fp@(24),%sp@-
423ce: 4eb9 0004 9de4 jsr 49de4 <IMFS_create_node>
if ( !new_node )
423d4: 4fef 0014 lea %sp@(20),%sp
423d8: 4a80 tstl %d0
423da: 6724 beqs 42400 <IMFS_mknod+0xb0> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( ENOMEM );
return 0;
423dc: 4280 clrl %d0
}
423de: 4cee 007c ffb0 moveml %fp@(-80),%d2-%d6
423e4: 4e5e unlk %fp
423e6: 4e75 rts
type = IMFS_DIRECTORY;
else if ( S_ISREG(mode) )
type = IMFS_MEMORY_FILE;
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
type = IMFS_DEVICE;
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
423e8: 2d46 ffe8 movel %d6,%fp@(-24)
if ( S_ISDIR(mode) )
type = IMFS_DIRECTORY;
else if ( S_ISREG(mode) )
type = IMFS_MEMORY_FILE;
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
type = IMFS_DEVICE;
423ec: 7002 moveq #2,%d0
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
423ee: 2d45 ffec movel %d5,%fp@(-20)
423f2: 60cc bras 423c0 <IMFS_mknod+0x70>
/*
* Figure out what type of IMFS node this is.
*/
if ( S_ISDIR(mode) )
type = IMFS_DIRECTORY;
423f4: 7001 moveq #1,%d0
423f6: 60c8 bras 423c0 <IMFS_mknod+0x70>
else if ( S_ISREG(mode) )
type = IMFS_MEMORY_FILE;
423f8: 7005 moveq #5,%d0 <== NOT EXECUTED
423fa: 60c4 bras 423c0 <IMFS_mknod+0x70> <== NOT EXECUTED
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
type = IMFS_DEVICE;
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
} else if (S_ISFIFO(mode))
type = IMFS_FIFO;
423fc: 7007 moveq #7,%d0 <== NOT EXECUTED
423fe: 60c0 bras 423c0 <IMFS_mknod+0x70> <== NOT EXECUTED
* existed. The result was simpler code which should not have
* this path.
*/
new_node = IMFS_create_node( pathloc, type, new_name, mode, &info );
if ( !new_node )
rtems_set_errno_and_return_minus_one( ENOMEM );
42400: 4eb9 0004 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 3a64 moveal 63a64 <_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 2334 jsr 52334 <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 2353 pea 62353 <IntUartPollCallbacks.6323+0x75> <== NOT EXECUTED
44dd2: 2079 0006 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED
44dd8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44ddc: 4eb9 0005 21e6 jsr 521e6 <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 3a64 moveal 63a64 <_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 232c pea 6232c <IntUartPollCallbacks.6323+0x4e> <== NOT EXECUTED
44e20: 4eb9 0005 2e9c jsr 52e9c <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 3a64 moveal 63a64 <_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 2264 jsr 52264 <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 2a06 movel #403974,%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 3bbe jmp 53bbe <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 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED
44e6c: 4879 0006 22fe pea 622fe <IntUartPollCallbacks.6323+0x20> <== NOT EXECUTED
44e72: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44e76: 4eb9 0005 21e6 jsr 521e6 <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 2a06 movel #403974,%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 3bbe jmp 53bbe <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 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED
44ea0: 4879 0006 2320 pea 62320 <IntUartPollCallbacks.6323+0x42> <== NOT EXECUTED
44ea6: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44eaa: 4eb9 0005 21e6 jsr 521e6 <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 2a06 movel #403974,%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 3bbe jmp 53bbe <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 3a64 moveal 63a64 <_impure_ptr>,%a0 <== NOT EXECUTED
44ed8: 4879 0006 2311 pea 62311 <IntUartPollCallbacks.6323+0x33> <== NOT EXECUTED
44ede: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44ee2: 4eb9 0005 21e6 jsr 521e6 <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 2a06 movel #403974,%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 3bbe jmp 53bbe <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 3a64 moveal 63a64 <_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 2340 pea 62340 <IntUartPollCallbacks.6323+0x62> <== NOT EXECUTED
44f1a: 4eb9 0005 2e9c jsr 52e9c <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 eccc jsr 4eccc <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 6eb0 jsr 46eb0 <_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 6e78 jsr 46e78 <_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
0004aa6c <IMFS_rmnod>:
int IMFS_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4aa6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4aa70: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4aa74: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
4aa76: 2410 movel %a0@,%d2 <== NOT EXECUTED
IMFS_create_orphan( jnode );
4aa78: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4aa7a: 4eb9 0004 a990 jsr 4a990 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( jnode );
4aa80: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4aa82: 4eb9 0004 a9d4 jsr 4a9d4 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4aa88: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4aa8c: 4280 clrl %d0 <== NOT EXECUTED
4aa8e: 4e5e unlk %fp <== NOT EXECUTED
...
0004aa94 <IMFS_stat>:
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4aa94: 7007 moveq #7,%d0
int IMFS_stat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4aa96: 4e56 0000 linkw %fp,#0
4aa9a: 206e 000c moveal %fp@(12),%a0
4aa9e: 2f0a movel %a2,%sp@-
4aaa0: 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;
4aaa4: 2252 moveal %a2@,%a1
switch ( the_jnode->type ) {
4aaa6: b0a9 0048 cmpl %a1@(72),%d0
4aaaa: 6418 bccs 4aac4 <IMFS_stat+0x30> <== ALWAYS TAKEN
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4aaac: 4eb9 0004 d85c jsr 4d85c <__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;
}
4aab2: 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 );
4aab6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4aab8: 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;
}
4aaba: 4e5e unlk %fp <== NOT EXECUTED
case IMFS_FIFO:
buf->st_size = 0;
break;
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
4aabc: 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;
}
4aac2: 4e75 rts <== NOT EXECUTED
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4aac4: 2029 0048 movel %a1@(72),%d0
4aac8: d080 addl %d0,%d0
4aaca: 303b 0808 movew %pc@(4aad4 <IMFS_stat+0x40>,%d0:l),%d0
4aace: 48c0 extl %d0
4aad0: 4efb 0802 jmp %pc@(4aad4 <IMFS_stat+0x40>,%d0:l)
4aad4: ffd8 .short 0xffd8 <== NOT EXECUTED
4aad6: ffd8 .short 0xffd8 <== NOT EXECUTED
4aad8: 00c2 bitrev %d2 <== NOT EXECUTED
4aada: ffd8 .short 0xffd8 <== NOT EXECUTED
4aadc: 0010 .short 0x0010 <== NOT EXECUTED
4aade: 006a .short 0x006a <== NOT EXECUTED
4aae0: 006a .short 0x006a <== NOT EXECUTED
4aae2: 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;
4aae4: 246a 0010 moveal %a2@(16),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4aae8: 4280 clrl %d0 <== NOT EXECUTED
4aaea: 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 );
4aaec: 246a 0034 moveal %a2@(52),%a2 <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
4aaf0: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED
4aaf4: 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 );
4aaf8: 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;
4aafa: 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;
4aafc: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ab02: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4ab08: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ab0e: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4ab14: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4ab1a: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ab20: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ab26: 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 =
4ab2c: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED
4ab32: 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;
}
4ab36: 246e fffc moveal %fp@(-4),%a2
4ab3a: 4e5e unlk %fp
4ab3c: 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;
4ab3e: 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;
4ab42: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED
4ab46: 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 );
4ab4a: 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;
4ab4e: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED
4ab52: 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 );
4ab56: 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;
4ab58: 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;
4ab5a: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4ab60: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_ino = the_jnode->st_ino;
4ab66: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4ab6c: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4ab72: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_atime = the_jnode->stat_atime;
4ab78: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4ab7e: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4ab84: 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 =
4ab8a: 20bc 0000 fffe movel #65534,%a0@ <== NOT EXECUTED
4ab90: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
4ab94: 60a0 bras 4ab36 <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;
4ab96: 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 );
4ab9a: 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 );
4ab9e: 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 );
4aba2: 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 );
4aba8: 2212 movel %a2@,%d1
buf->st_mode = the_jnode->st_mode;
4abaa: 2169 002e 000c movel %a1@(46),%a0@(12)
buf->st_nlink = the_jnode->st_nlink;
4abb0: 3169 0032 0010 movew %a1@(50),%a0@(16)
buf->st_ino = the_jnode->st_ino;
4abb6: 2169 0034 0008 movel %a1@(52),%a0@(8)
buf->st_uid = the_jnode->st_uid;
4abbc: 3169 0038 0012 movew %a1@(56),%a0@(18)
buf->st_gid = the_jnode->st_gid;
4abc2: 3169 003a 0014 movew %a1@(58),%a0@(20)
buf->st_atime = the_jnode->stat_atime;
4abc8: 2169 003c 0026 movel %a1@(60),%a0@(38)
buf->st_mtime = the_jnode->stat_mtime;
4abce: 2169 0040 002e movel %a1@(64),%a0@(46)
buf->st_ctime = the_jnode->stat_ctime;
4abd4: 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 );
4abda: 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;
4abde: 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 =
4abe0: 20bc 0000 fffe movel #65534,%a0@
4abe6: 2141 0004 movel %d1,%a0@(4)
4abea: 6000 ff4a braw 4ab36 <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 ecb4 jsr 4ecb4 <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 a8b0 jsr 4a8b0 <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 e824 jsr 4e824 <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 9de4 jsr 49de4 <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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 a014 jsr 4a014 <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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 135c jsr 5135c <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 dcb6 moveal 5dcb6 <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 dcba moveal 5dcba <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 dcb4 tstb 5dcb4 <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 d600 tstb 5d600 <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 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@-
42fba: 4eb9 0004 7556 jsr 47556 <_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 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@-
42fce: 2439 0005 ed00 movel 5ed00 <rtems_malloc_statistics>,%d2
42fd4: 4eb9 0004 8074 jsr 48074 <_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 ed00 movel %d0,5ed00 <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 e178 jsr 4e178 <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 dcb4 tstb 5dcb4 <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 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@-
43014: 4eb9 0004 7556 jsr 47556 <_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 6ba8 jsr 46ba8 <rtems_fatal_error_occurred>
000420e8 <Stack_check_Dump_threads_usage>:
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
420e8: 70ff moveq #-1,%d0 <== NOT EXECUTED
static rtems_printk_plugin_t print_handler;
void Stack_check_Dump_threads_usage(
Thread_Control *the_thread
)
{
420ea: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
420ee: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
420f2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
420f6: b08a cmpl %a2,%d0 <== NOT EXECUTED
420f8: 6700 015e beqw 42258 <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 );
420fc: 282a 00f0 movel %a2@(240),%d4 <== NOT EXECUTED
the_thread = 0;
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
42100: 47ea 00b0 lea %a2@(176),%a3 <== NOT EXECUTED
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
42104: 206a 00b4 moveal %a2@(180),%a0 <== NOT EXECUTED
}
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
42108: 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++)
4210a: 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);
4210c: 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);
42112: 2608 movel %a0,%d3 <== NOT EXECUTED
42114: 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;
4211a: 2243 moveal %d3,%a1 <== NOT EXECUTED
4211c: 43e9 0010 lea %a1@(16),%a1 <== NOT EXECUTED
for (ebase = base + length; base < ebase; base++)
42120: c082 andl %d2,%d0 <== NOT EXECUTED
42122: d089 addl %a1,%d0 <== NOT EXECUTED
42124: b089 cmpl %a1,%d0 <== NOT EXECUTED
42126: 6300 00ba blsw 421e2 <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
if (*base != U32_PATTERN)
4212a: 223c a5a5 a5a5 movel #-1515870811,%d1 <== NOT EXECUTED
42130: b291 cmpl %a1@,%d1 <== NOT EXECUTED
42132: 6600 013e bnew 42272 <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(
42136: 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)
4213a: 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++)
4213c: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
4213e: 6400 00a2 bccw 421e2 <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
if (*base != U32_PATTERN)
42142: 227c a5a5 a5a5 moveal #-1515870811,%a1 <== NOT EXECUTED
42148: b3d8 cmpal %a0@+,%a1 <== NOT EXECUTED
4214a: 67ee beqs 4213a <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 )
4214c: 4a81 tstl %d1 <== NOT EXECUTED
4214e: 6700 0092 beqw 421e2 <Stack_check_Dump_threads_usage+0xfa><== NOT EXECUTED
used = Stack_check_Calculate_used( low, size, high_water_mark );
42152: d682 addl %d2,%d3 <== NOT EXECUTED
42154: 9681 subl %d1,%d3 <== NOT EXECUTED
else
used = 0;
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
42156: 4a8a tstl %a2 <== NOT EXECUTED
42158: 6700 0090 beqw 421ea <Stack_check_Dump_threads_usage+0x102><== NOT EXECUTED
#endif
{
(*print_handler)(
4215c: 486e fffb pea %fp@(-5) <== NOT EXECUTED
42160: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
42164: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
42168: 2879 0005 eb5c moveal 5eb5c <print_handler>,%a4 <== NOT EXECUTED
4216e: 4eb9 0004 6650 jsr 46650 <rtems_object_get_name> <== NOT EXECUTED
42174: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42176: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
4217a: 4879 0005 c784 pea 5c784 <IntUartPollCallbacks.6323+0x20> <== NOT EXECUTED
42180: 2f39 0005 eb58 movel 5eb58 <print_context>,%sp@- <== NOT EXECUTED
42186: 4e94 jsr %a4@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
42188: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
#endif
{
(*print_handler)(
4218c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42190: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42192: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
42194: 2013 movel %a3@,%d0 <== NOT EXECUTED
42196: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42198: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
4219c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4219e: 4879 0005 c79f pea 5c79f <IntUartPollCallbacks.6323+0x3b> <== NOT EXECUTED
421a4: 2f39 0005 eb58 movel 5eb58 <print_context>,%sp@- <== NOT EXECUTED
421aa: 2079 0005 eb5c moveal 5eb5c <print_handler>,%a0 <== NOT EXECUTED
421b0: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
421b2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
421b6: 4ab9 0005 eb60 tstl 5eb60 <Stack_check_Initialized> <== NOT EXECUTED
421bc: 677a beqs 42238 <Stack_check_Dump_threads_usage+0x150><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
421be: 2f03 movel %d3,%sp@- <== NOT EXECUTED
421c0: 4879 0005 c7ca pea 5c7ca <IntUartPollCallbacks.6323+0x66> <== NOT EXECUTED
421c6: 2f39 0005 eb58 movel 5eb58 <print_context>,%sp@- <== NOT EXECUTED
421cc: 2079 0005 eb5c moveal 5eb5c <print_handler>,%a0 <== NOT EXECUTED
421d2: 4e90 jsr %a0@ <== NOT EXECUTED
421d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
421d8: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED
421de: 4e5e unlk %fp <== NOT EXECUTED
421e0: 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;
421e2: 4283 clrl %d3 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
421e4: 4a8a tstl %a2 <== NOT EXECUTED
421e6: 6600 ff74 bnew 4215c <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 );
421ea: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
421ee: 4879 0005 c791 pea 5c791 <IntUartPollCallbacks.6323+0x2d> <== NOT EXECUTED
421f4: 2f39 0005 eb58 movel 5eb58 <print_context>,%sp@- <== NOT EXECUTED
421fa: 2079 0005 eb5c moveal 5eb5c <print_handler>,%a0 <== NOT EXECUTED
42200: 4e90 jsr %a0@ <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
42202: 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 );
42206: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
(*print_handler)(
4220a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4220c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
4220e: 2013 movel %a3@,%d0 <== NOT EXECUTED
42210: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
42212: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
42216: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42218: 4879 0005 c79f pea 5c79f <IntUartPollCallbacks.6323+0x3b> <== NOT EXECUTED
4221e: 2f39 0005 eb58 movel 5eb58 <print_context>,%sp@- <== NOT EXECUTED
42224: 2079 0005 eb5c moveal 5eb5c <print_handler>,%a0 <== NOT EXECUTED
4222a: 4e90 jsr %a0@ <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
4222c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
42230: 4ab9 0005 eb60 tstl 5eb60 <Stack_check_Initialized> <== NOT EXECUTED
42236: 6686 bnes 421be <Stack_check_Dump_threads_usage+0xd6><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
42238: 4879 0005 c7bd pea 5c7bd <IntUartPollCallbacks.6323+0x59> <== NOT EXECUTED
4223e: 2f39 0005 eb58 movel 5eb58 <print_context>,%sp@- <== NOT EXECUTED
42244: 2079 0005 eb5c moveal 5eb5c <print_handler>,%a0 <== NOT EXECUTED
4224a: 4e90 jsr %a0@ <== NOT EXECUTED
4224c: 508f addql #8,%sp <== NOT EXECUTED
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
}
}
4224e: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED
42254: 4e5e unlk %fp <== NOT EXECUTED
42256: 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)
42258: 2079 0005 f374 moveal 5f374 <Stack_check_Interrupt_stack+0x4>,%a0<== NOT EXECUTED
4225e: 4a88 tstl %a0 <== NOT EXECUTED
42260: 6700 ff76 beqw 421d8 <Stack_check_Dump_threads_usage+0xf0><== NOT EXECUTED
return;
stack = &Stack_check_Interrupt_stack;
42264: 47f9 0005 f370 lea 5f370 <Stack_check_Interrupt_stack>,%a3 <== NOT EXECUTED
the_thread = 0;
current = 0;
4226a: 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;
4226c: 95ca subal %a2,%a2 <== NOT EXECUTED
4226e: 6000 fe98 braw 42108 <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)
42272: 2209 movel %a1,%d1 <== NOT EXECUTED
42274: 6000 fed6 braw 4214c <Stack_check_Dump_threads_usage+0x64><== NOT EXECUTED
00042278 <Stack_check_Initialize>:
/*
* Stack_check_Initialize
*/
void Stack_check_Initialize( void )
{
42278: 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 )
4227c: 4ab9 0005 eb60 tstl 5eb60 <Stack_check_Initialized>
42282: 666a bnes 422ee <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) {
42284: 2039 0005 f67c movel 5f67c <_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 ];
4228a: 223c feed f00d movel #-17960947,%d1
42290: 23c1 0005 f360 movel %d1,5f360 <Stack_check_Pattern>
42296: 223c 0bad 0d06 movel #195890438,%d1
4229c: 23c1 0005 f364 movel %d1,5f364 <Stack_check_Pattern+0x4>
422a2: 223c dead f00d movel #-559026163,%d1
422a8: 23c1 0005 f368 movel %d1,5f368 <Stack_check_Pattern+0x8>
422ae: 223c 600d 0d06 movel #1611468038,%d1
422b4: 23c1 0005 f36c movel %d1,5f36c <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) {
422ba: 4a80 tstl %d0
422bc: 6728 beqs 422e6 <Stack_check_Initialize+0x6e> <== NEVER TAKEN
422be: 2239 0005 f680 movel 5f680 <_Per_CPU_Information+0x4>,%d1
422c4: 6720 beqs 422e6 <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 -
422c6: 9280 subl %d0,%d1 <== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
422c8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
422ca: 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;
422ce: 23c0 0005 f374 movel %d0,5f374 <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);
422d4: 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 -
422d6: 23c1 0005 f370 movel %d1,5f370 <Stack_check_Interrupt_stack><== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
422dc: 4eb9 0004 e714 jsr 4e714 <memset> <== NOT EXECUTED
422e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
Stack_check_Initialized = 1;
422e6: 7001 moveq #1,%d0
422e8: 23c0 0005 eb60 movel %d0,5eb60 <Stack_check_Initialized>
}
422ee: 4e5e unlk %fp <== NOT EXECUTED
00042364 <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)
{
42364: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
42368: 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");
4236c: 4879 0005 c7d0 pea 5c7d0 <IntUartPollCallbacks.6323+0x6c> <== NOT EXECUTED
42372: 47f9 0004 401c lea 4401c <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)
{
42378: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
4237c: 286a 00b4 moveal %a2@(180),%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)
{
42380: 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");
42384: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", running);
42386: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42388: 4879 0005 c7e0 pea 5c7e0 <IntUartPollCallbacks.6323+0x7c> <== NOT EXECUTED
4238e: 4e93 jsr %a3@ <== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
42390: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
42394: 4879 0005 c7fd pea 5c7fd <IntUartPollCallbacks.6323+0x99> <== NOT EXECUTED
4239a: 4e93 jsr %a3@ <== NOT EXECUTED
printk(
4239c: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
423a0: 4879 0005 c80f pea 5c80f <IntUartPollCallbacks.6323+0xab> <== NOT EXECUTED
423a6: 4e93 jsr %a3@ <== NOT EXECUTED
"task name: 0x%08" PRIx32 "\n",
running->Object.name.name_u32
);
printk(
423a8: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED
423ac: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
423b0: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
423b4: 4eb9 0004 6650 jsr 46650 <rtems_object_get_name> <== NOT EXECUTED
423ba: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
423be: 2e80 movel %d0,%sp@ <== NOT EXECUTED
423c0: 4879 0005 c823 pea 5c823 <IntUartPollCallbacks.6323+0xbf> <== NOT EXECUTED
423c6: 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)
423c8: 206a 00b4 moveal %a2@(180),%a0 <== NOT EXECUTED
423cc: 202a 00b0 movel %a2@(176),%d0 <== NOT EXECUTED
);
printk(
"task name string: %s\n",
rtems_object_get_name(running->Object.id, sizeof(name), name)
);
printk(
423d0: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
423d4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
423d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
423d8: 4879 0005 c839 pea 5c839 <IntUartPollCallbacks.6323+0xd5> <== NOT EXECUTED
423de: 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) {
423e0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
423e4: 4a02 tstb %d2 <== NOT EXECUTED
423e6: 670a beqs 423f2 <Stack_check_report_blown_task+0x8e><== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
423e8: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED
423ec: 4eb9 0004 6ff8 jsr 46ff8 <rtems_fatal_error_occurred> <== NOT EXECUTED
(unsigned long) stack->size,
stack->area,
((char *) stack->area + stack->size)
);
if (!pattern_ok) {
printk(
423f2: 486c 0018 pea %a4@(24) <== NOT EXECUTED
423f6: 486c 0008 pea %a4@(8) <== NOT EXECUTED
423fa: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
423fe: 4879 0005 c86a pea 5c86a <IntUartPollCallbacks.6323+0x106> <== NOT EXECUTED
42404: 4e93 jsr %a3@ <== NOT EXECUTED
42406: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
4240a: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED
4240e: 4eb9 0004 6ff8 jsr 46ff8 <rtems_fatal_error_occurred> <== NOT EXECUTED
0004c8b0 <TOD_MICROSECONDS_TO_TICKS>:
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c8b0: 41f9 0006 3030 lea 63030 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4c8b6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c8ba: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4c8be: 4e5e unlk %fp <== NOT EXECUTED
4c8c0: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
...
00047f58 <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47f58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
47f5c: 2039 0005 eba0 movel 5eba0 <Configuration+0xc>,%d0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47f62: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
47f64: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
47f6a: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
47f6e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47f72: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
47f76: 2002 movel %d2,%d0 <== NOT EXECUTED
47f78: 241f movel %sp@+,%d2 <== NOT EXECUTED
47f7a: 4e5e unlk %fp <== NOT EXECUTED
...
0004c970 <TOD_TICKS_PER_SECOND_method>:
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4c970: 41f9 0005 f720 lea 5f720 <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)
{
4c976: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4c97a: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
4c980: 4e5e unlk %fp <== NOT EXECUTED
4c982: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00046e44 <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
46e44: 4e56 0000 linkw %fp,#0
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46e48: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
46e4e: 5280 addql #1,%d0
46e50: 206e 0008 moveal %fp@(8),%a0
46e54: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_CORE_mutex_Surrender(
46e5a: 42a7 clrl %sp@-
46e5c: 2f28 0008 movel %a0@(8),%sp@-
46e60: 4868 0010 pea %a0@(16)
46e64: 4eb9 0004 714c jsr 4714c <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46e6a: 4fef 000c lea %sp@(12),%sp
}
46e6e: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46e70: 4ef9 0004 88c2 jmp 488c2 <_Thread_Enable_dispatch>
...
00046d1e <_API_extensions_Run_postdriver>:
*
* _API_extensions_Run_postdriver
*/
void _API_extensions_Run_postdriver( void )
{
46d1e: 4e56 0000 linkw %fp,#0
46d22: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d24: 2479 0005 efb0 moveal 5efb0 <_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 );
46d2a: b5fc 0005 efb4 cmpal #389044,%a2
46d30: 6710 beqs 46d42 <_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)();
46d32: 206a 0008 moveal %a2@(8),%a0
46d36: 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 ) {
46d38: 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 );
46d3a: b5fc 0005 efb4 cmpal #389044,%a2
46d40: 66f0 bnes 46d32 <_API_extensions_Run_postdriver+0x14><== NEVER TAKEN
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
}
}
46d42: 246e fffc moveal %fp@(-4),%a2
46d46: 4e5e unlk %fp <== NOT EXECUTED
00046d4a <_API_extensions_Run_postswitch>:
*
* _API_extensions_Run_postswitch
*/
void _API_extensions_Run_postswitch( void )
{
46d4a: 4e56 0000 linkw %fp,#0
46d4e: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d50: 2479 0005 efb0 moveal 5efb0 <_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 );
46d56: b5fc 0005 efb4 cmpal #389044,%a2
46d5c: 6718 beqs 46d76 <_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 );
46d5e: 2f39 0005 eff4 movel 5eff4 <_Per_CPU_Information+0xc>,%sp@-
46d64: 206a 000c moveal %a2@(12),%a0
46d68: 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 ) {
46d6a: 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 );
46d6c: 588f addql #4,%sp
46d6e: b5fc 0005 efb4 cmpal #389044,%a2
46d74: 66e8 bnes 46d5e <_API_extensions_Run_postswitch+0x14><== NEVER TAKEN
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d76: 246e fffc moveal %fp@(-4),%a2
46d7a: 4e5e unlk %fp
...
0004f580 <_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];
4f580: 41f9 0006 00f4 lea 600f4 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Barrier_Translate_core_barrier_return_code (
CORE_barrier_Status the_barrier_status
)
{
4f586: 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];
}
4f58a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4f58e: 4e5e unlk %fp <== NOT EXECUTED
4f590: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004eac0 <_CORE_barrier_Release>:
#else
Objects_Id id __attribute__((unused)),
CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused))
#endif
)
{
4eac0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4eac4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4eac8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4eacc: 47f9 0004 ae40 lea 4ae40 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t count;
count = 0;
4ead2: 4282 clrl %d2 <== NOT EXECUTED
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4ead4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ead6: 4e93 jsr %a3@ <== NOT EXECUTED
4ead8: 588f addql #4,%sp <== NOT EXECUTED
4eada: 4a80 tstl %d0 <== NOT EXECUTED
4eadc: 670c beqs 4eaea <_CORE_barrier_Release+0x2a> <== NOT EXECUTED
4eade: 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++;
4eae0: 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)) ) {
4eae2: 4e93 jsr %a3@ <== NOT EXECUTED
4eae4: 588f addql #4,%sp <== NOT EXECUTED
4eae6: 4a80 tstl %d0 <== NOT EXECUTED
4eae8: 66f4 bnes 4eade <_CORE_barrier_Release+0x1e> <== NOT EXECUTED
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
return count;
}
4eaea: 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;
4eaec: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
return count;
}
4eaf0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4eaf6: 4e5e unlk %fp <== NOT EXECUTED
...
0004eafc <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
4eafc: 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
)
{
4eb02: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4eb06: 2279 0006 1938 moveal 61938 <_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
)
{
4eb0c: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4eb10: 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;
4eb14: 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
)
{
4eb18: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4eb1c: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
4eb20: 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 );
4eb24: 40c1 movew %sr,%d1 <== NOT EXECUTED
4eb26: 8081 orl %d1,%d0 <== NOT EXECUTED
4eb28: 46c0 movew %d0,%sr <== NOT EXECUTED
the_barrier->number_of_waiting_threads++;
4eb2a: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
4eb2e: 5280 addql #1,%d0 <== NOT EXECUTED
4eb30: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
4eb34: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED
4eb38: 6606 bnes 4eb40 <_CORE_barrier_Wait+0x44> <== NOT EXECUTED
if ( the_barrier->number_of_waiting_threads ==
4eb3a: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED
4eb3e: 672e beqs 4eb6e <_CORE_barrier_Wait+0x72> <== NOT EXECUTED
4eb40: 7001 moveq #1,%d0 <== NOT EXECUTED
4eb42: 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;
4eb46: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
4eb4a: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
4eb4e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
4eb50: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
4eb54: 203c 0004 b37c movel #308092,%d0 <== NOT EXECUTED
4eb5a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4eb5e: 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 );
4eb62: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
4eb66: 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 );
4eb68: 4ef9 0004 afb8 jmp 4afb8 <_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;
4eb6e: 7001 moveq #1,%d0 <== NOT EXECUTED
4eb70: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
4eb74: 46c1 movew %d1,%sr <== NOT EXECUTED
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
4eb76: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED
4eb7a: 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 );
}
4eb7e: 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 );
4eb82: 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 );
}
4eb86: 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 );
4eb88: 4ef9 0004 eac0 jmp 4eac0 <_CORE_barrier_Release> <== NOT EXECUTED
...
00059ce4 <_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
)
{
59ce4: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
59ce8: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
59cec: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
59cf0: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
59cf4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
59cf8: 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 ) {
59cfc: b4ab 004c cmpl %a3@(76),%d2 <== NOT EXECUTED
59d00: 6262 bhis 59d64 <_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 ) {
59d02: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED
59d06: 664c bnes 59d54 <_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 =
59d08: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d0a: 49f9 0005 c690 lea 5c690 <_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 ) {
59d10: 4283 clrl %d3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
59d12: 4bf9 0006 1960 lea 61960 <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 =
59d18: 4e94 jsr %a4@ <== NOT EXECUTED
59d1a: 588f addql #4,%sp <== NOT EXECUTED
59d1c: 2440 moveal %d0,%a2 <== NOT EXECUTED
59d1e: 4a80 tstl %d0 <== NOT EXECUTED
59d20: 6722 beqs 59d44 <_CORE_message_queue_Broadcast+0x60><== NOT EXECUTED
59d22: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
59d24: 5283 addql #1,%d3 <== NOT EXECUTED
59d26: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59d28: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
59d2c: 4e95 jsr %a5@ <== NOT EXECUTED
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
59d2e: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
59d32: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59d36: 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 =
59d38: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d3a: 4e94 jsr %a4@ <== NOT EXECUTED
59d3c: 588f addql #4,%sp <== NOT EXECUTED
59d3e: 2440 moveal %d0,%a2 <== NOT EXECUTED
59d40: 4a80 tstl %d0 <== NOT EXECUTED
59d42: 66de bnes 59d22 <_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;
59d44: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59d46: 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;
59d48: 2083 movel %d3,%a0@ <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d4a: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
59d50: 4e5e unlk %fp <== NOT EXECUTED
59d52: 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;
59d54: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59d56: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d58: 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;
59d5e: 4290 clrl %a0@ <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d60: 4e5e unlk %fp <== NOT EXECUTED
59d62: 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;
59d64: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d66: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
59d6c: 4e5e unlk %fp <== NOT EXECUTED
00059d70 <_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
)
{
59d70: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59d74: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
59d76: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
59d7a: 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
)
{
59d7e: 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(
59d82: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59d84: 4eb9 0005 ca84 jsr 5ca84 <_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 )
59d8a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59d8e: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED
59d92: 6612 bnes 59da6 <_CORE_message_queue_Close+0x36> <== NOT EXECUTED
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
59d94: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
}
59d9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
59d9e: 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 );
59da0: 4ef9 0005 d7ce jmp 5d7ce <_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 );
59da6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59da8: 4eb9 0005 9de0 jsr 59de0 <_CORE_message_queue_Flush_support><== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
59dae: 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 );
59db4: 588f addql #4,%sp <== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
}
59db6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
59dba: 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 );
59dbc: 4ef9 0005 d7ce jmp 5d7ce <_Workspace_Free> <== NOT EXECUTED
...
00059dc4 <_CORE_message_queue_Flush>:
*/
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
59dc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59dc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( the_message_queue->number_of_pending_messages != 0 )
59dcc: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED
59dd0: 6606 bnes 59dd8 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED
return _CORE_message_queue_Flush_support( the_message_queue );
else
return 0;
}
59dd2: 4280 clrl %d0 <== NOT EXECUTED
59dd4: 4e5e unlk %fp <== NOT EXECUTED
59dd6: 4e75 rts <== NOT EXECUTED
59dd8: 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 );
59dda: 4ef9 0005 9de0 jmp 59de0 <_CORE_message_queue_Flush_support><== NOT EXECUTED
00059de0 <_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 );
59de0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
uint32_t _CORE_message_queue_Flush_support(
CORE_message_queue_Control *the_message_queue
)
{
59de6: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
59dea: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
59dee: 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 );
59df2: 40c1 movew %sr,%d1 <== NOT EXECUTED
59df4: 8081 orl %d1,%d0 <== NOT EXECUTED
59df6: 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;
}
59df8: 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 );
59dfc: 49e8 0060 lea %a0@(96),%a4 <== NOT EXECUTED
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
_ISR_Enable( level );
return count;
}
59e00: 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;
59e04: 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;;
59e08: 2468 0060 moveal %a0@(96),%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;
59e0c: 214b 0060 movel %a3,%a0@(96) <== NOT EXECUTED
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
59e10: 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;
59e14: 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 );
59e16: 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 );
59e1a: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
59e1e: 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 );
59e22: 214b 0058 movel %a3,%a0@(88) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
59e26: 214c 0050 movel %a4,%a0@(80) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
59e2a: 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;
59e2e: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
59e32: 46c1 movew %d1,%sr <== NOT EXECUTED
return count;
}
59e34: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED
59e38: 4e5e unlk %fp <== NOT EXECUTED
000500fc <_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)) {
500fc: 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
)
{
500fe: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
50102: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
50106: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5010a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5010e: 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)) {
50112: 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;
50114: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED
the_message_queue->number_of_pending_messages = 0;
50118: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
the_message_queue->maximum_message_size = maximum_message_size;
5011c: 2540 004c movel %d0,%a2@(76) <== 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)) {
50120: 4a81 tstl %d1 <== NOT EXECUTED
50122: 6718 beqs 5013c <_CORE_message_queue_Initialize+0x40><== NOT EXECUTED
allocated_message_size += sizeof(uint32_t);
50124: 2200 movel %d0,%d1 <== NOT EXECUTED
50126: 5881 addql #4,%d1 <== NOT EXECUTED
allocated_message_size &= ~(sizeof(uint32_t) - 1);
50128: 76fc moveq #-4,%d3 <== NOT EXECUTED
5012a: c283 andl %d3,%d1 <== NOT EXECUTED
}
if (allocated_message_size < maximum_message_size)
5012c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5012e: 640e bccs 5013e <_CORE_message_queue_Initialize+0x42><== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50130: 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;
50136: 4200 clrb %d0 <== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50138: 4e5e unlk %fp <== NOT EXECUTED
5013a: 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)) {
5013c: 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));
5013e: 2601 movel %d1,%d3 <== NOT EXECUTED
50140: 0683 0000 0010 addil #16,%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 *
50146: 2003 movel %d3,%d0 <== NOT EXECUTED
50148: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
if (message_buffering_required < allocated_message_size)
5014c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5014e: 62e0 bhis 50130 <_CORE_message_queue_Initialize+0x34><== NOT EXECUTED
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
50150: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50152: 4eb9 0005 2f56 jsr 52f56 <_Workspace_Allocate> <== NOT EXECUTED
if (the_message_queue->message_buffers == 0)
50158: 588f addql #4,%sp <== NOT EXECUTED
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
5015a: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
5015e: 67d0 beqs 50130 <_CORE_message_queue_Initialize+0x34><== NOT EXECUTED
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
50160: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50162: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50164: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50166: 486a 0060 pea %a2@(96) <== NOT EXECUTED
5016a: 4eb9 0005 4dc8 jsr 54dc8 <_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 );
50170: 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(
50174: 7001 moveq #1,%d0 <== NOT EXECUTED
50176: 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 );
5017a: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED
5017e: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED
50182: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
50186: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED
5018a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
5018e: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED
50192: b090 cmpl %a0@,%d0 <== NOT EXECUTED
50194: 57c0 seq %d0 <== NOT EXECUTED
50196: 49c0 extbl %d0 <== NOT EXECUTED
50198: 4480 negl %d0 <== NOT EXECUTED
5019a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5019c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5019e: 4eb9 0005 250c jsr 5250c <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
501a4: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
501a8: 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;
501ae: 7001 moveq #1,%d0 <== NOT EXECUTED
}
501b0: 4e5e unlk %fp <== NOT EXECUTED
00054e3c <_CORE_message_queue_Insert_message>:
#endif
_CORE_message_queue_Set_message_priority( the_message, submit_type );
#if !defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
_ISR_Disable( level );
54e3c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
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
)
{
54e42: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
54e46: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
54e4a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
54e4c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
54e50: 2f0a movel %a2,%sp@- <== NOT EXECUTED
#endif
_CORE_message_queue_Set_message_priority( the_message, submit_type );
#if !defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
_ISR_Disable( level );
54e52: 40c1 movew %sr,%d1 <== NOT EXECUTED
54e54: 8081 orl %d1,%d0 <== NOT EXECUTED
54e56: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
54e58: 52a8 0048 addql #1,%a0@(72) <== NOT EXECUTED
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST )
54e5c: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
54e62: b0ae 0010 cmpl %fp@(16),%d0 <== NOT EXECUTED
54e66: 6720 beqs 54e88 <_CORE_message_queue_Insert_message+0x4c><== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
54e68: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
after_node->next = the_node;
54e6c: 2149 0050 movel %a1,%a0@(80) <== 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);
54e70: 41e8 0050 lea %a0@(80),%a0 <== NOT EXECUTED
54e74: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
54e78: 228a movel %a2,%a1@ <== NOT EXECUTED
before_node->previous = the_node;
54e7a: 2549 0004 movel %a1,%a2@(4) <== 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 );
54e7e: 46c1 movew %d1,%sr <== 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
}
54e80: 245f moveal %sp@+,%a2 <== NOT EXECUTED
54e82: 265f moveal %sp@+,%a3 <== NOT EXECUTED
54e84: 4e5e unlk %fp <== NOT EXECUTED
54e86: 4e75 rts <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
54e88: 2468 0058 moveal %a0@(88),%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 );
54e8c: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
54e90: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
54e94: 228b movel %a3,%a1@ <== 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;
54e96: 234a 0004 movel %a2,%a1@(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;
54e9a: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST )
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
else
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
54e9c: 46c1 movew %d1,%sr <== 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
}
54e9e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
54ea0: 265f moveal %sp@+,%a3 <== NOT EXECUTED
54ea2: 4e5e unlk %fp <== NOT EXECUTED
...
000501b4 <_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 );
501b4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
501ba: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
501be: 2079 0006 8e8c moveal 68e8c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
501c4: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
501c8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
501cc: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
501d0: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
501d4: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
501d8: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED
501dc: 162e 001b moveb %fp@(27),%d3 <== 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;
501e0: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_ISR_Disable( level );
501e4: 40c1 movew %sr,%d1 <== NOT EXECUTED
501e6: 8081 orl %d1,%d0 <== NOT EXECUTED
501e8: 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 );
501ea: 200a movel %a2,%d0 <== NOT EXECUTED
501ec: 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 );
}
501f2: 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))
501f6: b08b cmpl %a3,%d0 <== NOT EXECUTED
501f8: 674e beqs 50248 <_CORE_message_queue_Seize+0x94> <== 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;
501fa: 2053 moveal %a3@,%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
501fc: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED
50200: 214c 0004 movel %a4,%a0@(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;
50204: 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;
50208: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED
_ISR_Enable( level );
5020c: 46c1 movew %d1,%sr <== NOT EXECUTED
*size_p = the_message->Contents.size;
5020e: 22ab 0008 movel %a3@(8),%a1@ <== 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 );
50212: 45ea 0060 lea %a2@(96),%a2 <== NOT EXECUTED
_Thread_Executing->Wait.count =
50216: 2079 0006 8e8c moveal 68e8c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
5021c: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
50220: 2f11 movel %a1@,%sp@- <== NOT EXECUTED
50222: 486b 000c pea %a3@(12) <== NOT EXECUTED
50226: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50228: 4eb9 0005 75ec jsr 575ec <memcpy> <== 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 );
5022e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
50232: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
50236: 2d4b 000c movel %a3,%fp@(12) <== 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 );
}
5023a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
50240: 4e5e unlk %fp <== NOT EXECUTED
50242: 4ef9 0005 0030 jmp 50030 <_Chain_Append> <== NOT EXECUTED
return;
}
#endif
}
if ( !wait ) {
50248: 4a03 tstb %d3 <== NOT EXECUTED
5024a: 6612 bnes 5025e <_CORE_message_queue_Seize+0xaa> <== NOT EXECUTED
_ISR_Enable( level );
5024c: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
5024e: 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 );
}
50250: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
#endif
}
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
50256: 2140 0034 movel %d0,%a0@(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 );
}
5025a: 4e5e unlk %fp <== NOT EXECUTED
5025c: 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;
5025e: 7001 moveq #1,%d0 <== NOT EXECUTED
50260: 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;
50264: 2142 002c movel %d2,%a0@(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;
50268: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
5026c: 2145 0020 movel %d5,%a0@(32) <== NOT EXECUTED
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
50270: 2149 0028 movel %a1,%a0@(40) <== NOT EXECUTED
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
50274: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
50276: 49f9 0005 2618 lea 52618 <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED
5027c: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED
50280: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED
50284: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
50288: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5028e: 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 );
50290: 4ef9 0005 2254 jmp 52254 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
00050298 <_CORE_message_queue_Submit>:
#endif
CORE_message_queue_Submit_types submit_type,
bool wait,
Watchdog_Interval timeout
)
{
50298: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5029c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
502a0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
502a4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message;
Thread_Control *the_thread;
if ( size > the_message_queue->maximum_message_size ) {
502a8: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED
502ac: 6256 bhis 50304 <_CORE_message_queue_Submit+0x6c><== NOT EXECUTED
}
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
502ae: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
502b2: 675c beqs 50310 <_CORE_message_queue_Submit+0x78><== 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 <
502b4: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED
502b8: 650c bcss 502c6 <_CORE_message_queue_Submit+0x2e><== NOT EXECUTED
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
#if !defined(RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND)
return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
502ba: 7002 moveq #2,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
502bc: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
502c2: 4e5e unlk %fp <== NOT EXECUTED
502c4: 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 );
502c6: 486a 0060 pea %a2@(96) <== NOT EXECUTED
502ca: 4eb9 0005 0090 jsr 50090 <_Chain_Get> <== NOT EXECUTED
502d0: 2640 moveal %d0,%a3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
502d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
502d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
502d8: 486b 000c pea %a3@(12) <== NOT EXECUTED
502dc: 4eb9 0005 75ec jsr 575ec <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_message->Contents.buffer,
size
);
the_message->Contents.size = size;
502e2: 2742 0008 movel %d2,%a3@(8) <== NOT EXECUTED
_CORE_message_queue_Set_message_priority( the_message, submit_type );
_CORE_message_queue_Insert_message(
502e6: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
502ea: 2f0b movel %a3,%sp@- <== NOT EXECUTED
502ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
502ee: 4eb9 0005 4e3c jsr 54e3c <_CORE_message_queue_Insert_message><== NOT EXECUTED
the_message_queue,
the_message,
submit_type
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
502f4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
502f8: 4280 clrl %d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
502fa: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
50300: 4e5e unlk %fp <== NOT EXECUTED
50302: 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;
50304: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50306: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5030c: 4e5e unlk %fp <== NOT EXECUTED
5030e: 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 );
50310: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50312: 4eb9 0005 20dc jsr 520dc <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( the_thread ) {
50318: 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 );
5031a: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( the_thread ) {
5031c: 4a80 tstl %d0 <== NOT EXECUTED
5031e: 672e beqs 5034e <_CORE_message_queue_Submit+0xb6><== NOT EXECUTED
50320: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50322: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50326: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED
5032a: 4eb9 0005 75ec jsr 575ec <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;
50330: 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;
50334: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
50338: 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;
5033a: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_thread->Wait.count = (uint32_t) submit_type;
5033c: 222e 001c movel %fp@(28),%d1 <== NOT EXECUTED
50340: 2741 0024 movel %d1,%a3@(36) <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50344: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5034a: 4e5e unlk %fp <== NOT EXECUTED
5034c: 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 ) {
5034e: 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 <
50352: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED
50356: 6400 ff62 bccw 502ba <_CORE_message_queue_Submit+0x22><== NOT EXECUTED
5035a: 6000 ff6a braw 502c6 <_CORE_message_queue_Submit+0x2e><== NOT EXECUTED
...
00046f20 <_CORE_mutex_Initialize>:
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46f20: 4e56 0000 linkw %fp,#0
46f24: 206e 0008 moveal %fp@(8),%a0
46f28: 2f0a movel %a2,%sp@-
46f2a: 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;
46f2e: 224a moveal %a2,%a1
46f30: 2159 0040 movel %a1@+,%a0@(64)
46f34: 2159 0044 movel %a1@+,%a0@(68)
46f38: 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
)
{
46f3c: 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;
46f40: 3151 004c movew %a1@,%a0@(76)
the_mutex->lock = initial_lock;
46f44: 2140 004e movel %d0,%a0@(78)
the_mutex->blocked_count = 0;
46f48: 42a8 0056 clrl %a0@(86)
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46f4c: 4a80 tstl %d0
46f4e: 6654 bnes 46fa4 <_CORE_mutex_Initialize+0x84>
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46f50: 2279 0005 eff4 moveal 5eff4 <_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;
46f56: 7201 moveq #1,%d1
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
46f58: 2169 0008 005e movel %a1@(8),%a0@(94)
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
46f5e: 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;
46f62: 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 ) ||
46f66: 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;
46f6a: 2149 005a movel %a1,%a0@(90)
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46f6e: b280 cmpl %d0,%d1
46f70: 6762 beqs 46fd4 <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
46f72: 123c 0003 moveb #3,%d1
46f76: b280 cmpl %d0,%d1
46f78: 675a beqs 46fd4 <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46f7a: 4aaa 0006 tstl %a2@(6)
46f7e: 56c0 sne %d0
46f80: 4878 0005 pea 5 <COMPARE>
46f84: 49c0 extbl %d0
46f86: 4878 0400 pea 400 <D_BIAS+0x2>
46f8a: 4480 negl %d0
46f8c: 2f00 movel %d0,%sp@-
46f8e: 2f08 movel %a0,%sp@-
46f90: 4eb9 0004 9038 jsr 49038 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
46f96: 4fef 0010 lea %sp@(16),%sp
46f9a: 4280 clrl %d0
}
46f9c: 246e fffc moveal %fp@(-4),%a2
46fa0: 4e5e unlk %fp
46fa2: 4e75 rts
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46fa4: 4aaa 0006 tstl %a2@(6)
46fa8: 56c0 sne %d0
#endif
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
46faa: 42a8 0052 clrl %a0@(82)
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46fae: 49c0 extbl %d0
46fb0: 4480 negl %d0
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
46fb2: 42a8 005a clrl %a0@(90)
the_mutex->holder_id = 0;
46fb6: 42a8 005e clrl %a0@(94)
}
_Thread_queue_Initialize(
46fba: 4878 0005 pea 5 <COMPARE>
46fbe: 4878 0400 pea 400 <D_BIAS+0x2>
46fc2: 2f00 movel %d0,%sp@-
46fc4: 2f08 movel %a0,%sp@-
46fc6: 4eb9 0004 9038 jsr 49038 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
46fcc: 4fef 0010 lea %sp@(16),%sp
46fd0: 4280 clrl %d0
46fd2: 60c8 bras 46f9c <_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 <
46fd4: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED
46fd8: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED
46fdc: 6228 bhis 47006 <_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++;
46fde: 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(
46fe2: 4aaa 0006 tstl %a2@(6) <== NOT EXECUTED
46fe6: 56c0 sne %d0 <== NOT EXECUTED
46fe8: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
46fec: 49c0 extbl %d0 <== NOT EXECUTED
46fee: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
46ff2: 4480 negl %d0 <== NOT EXECUTED
46ff4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46ff6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
46ff8: 4eb9 0004 9038 jsr 49038 <_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;
46ffe: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47002: 4280 clrl %d0 <== NOT EXECUTED
47004: 6096 bras 46f9c <_CORE_mutex_Initialize+0x7c> <== NOT EXECUTED
}
47006: 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;
4700a: 7006 moveq #6,%d0 <== NOT EXECUTED
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4700c: 4e5e unlk %fp <== NOT EXECUTED
0004709c <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
4709c: 4e56 0000 linkw %fp,#0
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
470a0: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
470a6: 2f0a movel %a2,%sp@-
470a8: 246e 0008 moveal %fp@(8),%a2
470ac: 2f02 movel %d2,%sp@-
470ae: 142e 0013 moveb %fp@(19),%d2
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
470b2: 4a80 tstl %d0
470b4: 6704 beqs 470ba <_CORE_mutex_Seize+0x1e>
470b6: 4a02 tstb %d2
470b8: 6634 bnes 470ee <_CORE_mutex_Seize+0x52> <== ALWAYS TAKEN
470ba: 486e 0018 pea %fp@(24)
470be: 2f0a movel %a2,%sp@-
470c0: 4eb9 0004 b954 jsr 4b954 <_CORE_mutex_Seize_interrupt_trylock>
470c6: 508f addql #8,%sp
470c8: 4a80 tstl %d0
470ca: 6716 beqs 470e2 <_CORE_mutex_Seize+0x46>
470cc: 4a02 tstb %d2
470ce: 6636 bnes 47106 <_CORE_mutex_Seize+0x6a> <== ALWAYS TAKEN
470d0: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED
470d4: 46c0 movew %d0,%sr <== NOT EXECUTED
470d6: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
470dc: 7001 moveq #1,%d0 <== NOT EXECUTED
470de: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
470e2: 242e fff8 movel %fp@(-8),%d2
470e6: 246e fffc moveal %fp@(-4),%a2
470ea: 4e5e unlk %fp
470ec: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
470ee: 7001 moveq #1,%d0
470f0: b0b9 0005 efa0 cmpl 5efa0 <_System_state_Current>,%d0
470f6: 64c2 bccs 470ba <_CORE_mutex_Seize+0x1e>
470f8: 4878 0012 pea 12 <INVALID_OPERATION+0x2>
470fc: 42a7 clrl %sp@-
470fe: 42a7 clrl %sp@-
47100: 4eb9 0004 77b8 jsr 477b8 <_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;
47106: 7001 moveq #1,%d0
47108: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0
4710e: 2540 0030 movel %d0,%a2@(48)
47112: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
47118: 5280 addql #1,%d0
4711a: 216e 000c 0020 movel %fp@(12),%a0@(32)
47120: 214a 0044 movel %a2,%a0@(68)
47124: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level>
4712a: 202e 0018 movel %fp@(24),%d0
4712e: 46c0 movew %d0,%sr
47130: 2f2e 0014 movel %fp@(20),%sp@-
47134: 2f0a movel %a2,%sp@-
47136: 4eb9 0004 7010 jsr 47010 <_CORE_mutex_Seize_interrupt_blocking>
}
4713c: 242e fff8 movel %fp@(-8),%d2
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
47140: 508f addql #8,%sp
}
47142: 246e fffc moveal %fp@(-4),%a2
47146: 4e5e unlk %fp
...
00047010 <_CORE_mutex_Seize_interrupt_blocking>:
)
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47010: 7002 moveq #2,%d0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
47012: 4e56 0000 linkw %fp,#0
Thread_Control *executing;
executing = _Thread_Executing;
47016: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
4701c: 2f0a movel %a2,%sp@-
4701e: 246e 0008 moveal %fp@(8),%a2
47022: 2f02 movel %d2,%sp@-
47024: 242e 000c movel %fp@(12),%d2
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47028: b0aa 0046 cmpl %a2@(70),%d0
4702c: 6728 beqs 47056 <_CORE_mutex_Seize_interrupt_blocking+0x46>
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
4702e: 4879 0004 9144 pea 49144 <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
47034: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
47038: 2f02 movel %d2,%sp@-
4703a: 2f0a movel %a2,%sp@-
4703c: 4eb9 0004 8d80 jsr 48d80 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
47042: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47046: 4fef 000c lea %sp@(12),%sp
}
4704a: 246e fffc moveal %fp@(-4),%a2
4704e: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47050: 4ef9 0004 88c2 jmp 488c2 <_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 ) {
47056: 226a 005a moveal %a2@(90),%a1
4705a: 2028 0014 movel %a0@(20),%d0
4705e: b0a9 0014 cmpl %a1@(20),%d0
47062: 64ca bccs 4702e <_CORE_mutex_Seize_interrupt_blocking+0x1e><== NEVER TAKEN
_Thread_Change_priority(
47064: 42a7 clrl %sp@-
47066: 2f00 movel %d0,%sp@-
47068: 2f09 movel %a1,%sp@-
4706a: 4eb9 0004 83cc jsr 483cc <_Thread_Change_priority>
47070: 4fef 000c lea %sp@(12),%sp
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
47074: 4879 0004 9144 pea 49144 <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
4707a: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
4707e: 2f02 movel %d2,%sp@-
47080: 2f0a movel %a2,%sp@-
47082: 4eb9 0004 8d80 jsr 48d80 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
47088: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
4708c: 4fef 000c lea %sp@(12),%sp
}
47090: 246e fffc moveal %fp@(-4),%a2
47094: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47096: 4ef9 0004 88c2 jmp 488c2 <_Thread_Enable_dispatch>
0004b954 <_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
)
{
4b954: 4e56 0000 linkw %fp,#0
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4b958: 2279 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a1
4b95e: 2f0a movel %a2,%sp@-
4b960: 206e 0008 moveal %fp@(8),%a0
4b964: 2f02 movel %d2,%sp@-
4b966: 246e 000c moveal %fp@(12),%a2
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
4b96a: 42a9 0034 clrl %a1@(52)
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
4b96e: 4aa8 004e tstl %a0@(78)
4b972: 673a beqs 4b9ae <_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;
4b974: 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;
4b976: 2169 0008 005e movel %a1@(8),%a0@(94)
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p );
}
4b97c: 2028 0046 movel %a0@(70),%d0
the_mutex->nest_count = 1;
4b980: 2141 0052 movel %d1,%a0@(82)
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4b984: 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;
4b988: 42a8 004e clrl %a0@(78)
the_mutex->holder = executing;
4b98c: 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 ) ||
4b990: b280 cmpl %d0,%d1
4b992: 672e beqs 4b9c2 <_CORE_mutex_Seize_interrupt_trylock+0x6e>
4b994: 123c 0003 moveb #3,%d1
4b998: b280 cmpl %d0,%d1
4b99a: 674e beqs 4b9ea <_CORE_mutex_Seize_interrupt_trylock+0x96><== NEVER TAKEN
executing->resource_count++;
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4b99c: 2012 movel %a2@,%d0
4b99e: 46c0 movew %d0,%sr
return 0;
4b9a0: 4280 clrl %d0
4b9a2: 242e fff8 movel %fp@(-8),%d2
4b9a6: 246e fffc moveal %fp@(-4),%a2
4b9aa: 4e5e unlk %fp
4b9ac: 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 ) ) {
4b9ae: b3e8 005a cmpal %a0@(90),%a1
4b9b2: 671a beqs 4b9ce <_CORE_mutex_Seize_interrupt_trylock+0x7a>
4b9b4: 242e fff8 movel %fp@(-8),%d2
/*
* The mutex is not available and the caller must deal with the possibility
* of blocking.
*/
return 1;
4b9b8: 7001 moveq #1,%d0
4b9ba: 246e fffc moveal %fp@(-4),%a2
4b9be: 4e5e unlk %fp
4b9c0: 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++;
4b9c2: 52a9 001c addql #1,%a1@(28)
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4b9c6: 2012 movel %a2@,%d0
4b9c8: 46c0 movew %d0,%sr
return 0;
4b9ca: 4280 clrl %d0
4b9cc: 60d4 bras 4b9a2 <_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 ) {
4b9ce: 2028 0040 movel %a0@(64),%d0
4b9d2: 6658 bnes 4ba2c <_CORE_mutex_Seize_interrupt_trylock+0xd8><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
4b9d4: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED
_ISR_Enable( *level_p );
4b9d8: 2012 movel %a2@,%d0 <== NOT EXECUTED
4b9da: 46c0 movew %d0,%sr <== NOT EXECUTED
4b9dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4b9e0: 4280 clrl %d0 <== NOT EXECUTED
4b9e2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b9e6: 4e5e unlk %fp <== NOT EXECUTED
4b9e8: 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++;
4b9ea: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED
4b9ee: 2002 movel %d2,%d0 <== NOT EXECUTED
4b9f0: 5280 addql #1,%d0 <== NOT EXECUTED
4b9f2: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED
*/
{
Priority_Control ceiling;
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
4b9f6: 2228 004a movel %a0@(74),%d1 <== NOT EXECUTED
current = executing->current_priority;
4b9fa: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED
if ( current == ceiling ) {
4b9fe: b081 cmpl %d1,%d0 <== NOT EXECUTED
4ba00: 6700 0082 beqw 4ba84 <_CORE_mutex_Seize_interrupt_trylock+0x130><== NOT EXECUTED
_ISR_Enable( *level_p );
return 0;
}
if ( current > ceiling ) {
4ba04: 6244 bhis 4ba4a <_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;
4ba06: 7206 moveq #6,%d1 <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4ba08: 7001 moveq #1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4ba0a: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4ba0e: 2140 004e movel %d0,%a0@(78) <== NOT EXECUTED
the_mutex->nest_count = 0; /* undo locking above */
4ba12: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
executing->resource_count--; /* undo locking above */
4ba16: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
_ISR_Enable( *level_p );
4ba1a: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba1c: 46c0 movew %d0,%sr <== NOT EXECUTED
4ba1e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4ba22: 4280 clrl %d0 <== NOT EXECUTED
4ba24: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba28: 4e5e unlk %fp <== NOT EXECUTED
4ba2a: 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 ) {
4ba2c: 7201 moveq #1,%d1
4ba2e: b280 cmpl %d0,%d1
4ba30: 6682 bnes 4b9b4 <_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;
4ba32: 7002 moveq #2,%d0 <== NOT EXECUTED
4ba34: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( *level_p );
4ba38: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba3a: 46c0 movew %d0,%sr <== NOT EXECUTED
4ba3c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4ba40: 4280 clrl %d0 <== NOT EXECUTED
4ba42: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba46: 4e5e unlk %fp <== NOT EXECUTED
4ba48: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4ba4a: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4ba50: 5280 addql #1,%d0 <== NOT EXECUTED
4ba52: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return 0;
}
if ( current > ceiling ) {
_Thread_Disable_dispatch();
_ISR_Enable( *level_p );
4ba58: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba5a: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_Change_priority(
4ba5c: 42a7 clrl %sp@- <== NOT EXECUTED
4ba5e: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED
4ba62: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED
4ba66: 4eb9 0004 83cc jsr 483cc <_Thread_Change_priority> <== NOT EXECUTED
the_mutex->holder,
the_mutex->Attributes.priority_ceiling,
false
);
_Thread_Enable_dispatch();
4ba6c: 4eb9 0004 88c2 jsr 488c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
4ba72: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ba76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
4ba7a: 4280 clrl %d0 <== NOT EXECUTED
4ba7c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba80: 4e5e unlk %fp <== NOT EXECUTED
4ba82: 4e75 rts <== NOT EXECUTED
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
current = executing->current_priority;
if ( current == ceiling ) {
_ISR_Enable( *level_p );
4ba84: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba86: 46c0 movew %d0,%sr <== NOT EXECUTED
4ba88: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4ba8c: 4280 clrl %d0 <== NOT EXECUTED
4ba8e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba92: 4e5e unlk %fp <== NOT EXECUTED
...
0004714c <_CORE_mutex_Surrender>:
#else
Objects_Id id __attribute__((unused)),
CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused))
#endif
)
{
4714c: 4e56 0000 linkw %fp,#0
47150: 2f0a movel %a2,%sp@-
47152: 246e 0008 moveal %fp@(8),%a2
Thread_Control *the_thread;
Thread_Control *holder;
holder = the_mutex->holder;
47156: 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 ) {
4715a: 4a2a 0044 tstb %a2@(68)
4715e: 6712 beqs 47172 <_CORE_mutex_Surrender+0x26>
if ( !_Thread_Is_executing( holder ) )
47160: b1f9 0005 eff4 cmpal 5eff4 <_Per_CPU_Information+0xc>,%a0
47166: 670a beqs 47172 <_CORE_mutex_Surrender+0x26> <== ALWAYS TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47168: 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;
4716c: 7003 moveq #3,%d0 <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4716e: 4e5e unlk %fp <== NOT EXECUTED
47170: 4e75 rts <== NOT EXECUTED
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
}
/* XXX already unlocked -- not right status */
if ( !the_mutex->nest_count )
47172: 202a 0052 movel %a2@(82),%d0
47176: 6758 beqs 471d0 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
return CORE_MUTEX_STATUS_SUCCESSFUL;
the_mutex->nest_count--;
47178: 5380 subql #1,%d0
4717a: 2540 0052 movel %d0,%a2@(82)
if ( the_mutex->nest_count != 0 ) {
4717e: 6650 bnes 471d0 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47180: 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 ) ||
47184: 7202 moveq #2,%d1
47186: b280 cmpl %d0,%d1
47188: 6750 beqs 471da <_CORE_mutex_Surrender+0x8e>
4718a: 123c 0003 moveb #3,%d1
4718e: b280 cmpl %d0,%d1
47190: 6748 beqs 471da <_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;
47192: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
47196: 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 ) ) ) {
4719a: 2f0a movel %a2,%sp@-
4719c: 4eb9 0004 8c08 jsr 48c08 <_Thread_queue_Dequeue>
471a2: 588f addql #4,%sp
471a4: 2040 moveal %d0,%a0
471a6: 4a80 tstl %d0
471a8: 6700 0090 beqw 4723a <_CORE_mutex_Surrender+0xee>
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
471ac: 7201 moveq #1,%d1
} else
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
471ae: 2568 0008 005e movel %a0@(8),%a2@(94)
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
471b4: 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;
471b8: 2541 0052 movel %d1,%a2@(82)
switch ( the_mutex->Attributes.discipline ) {
471bc: 123c 0002 moveb #2,%d1
} else
#endif
{
the_mutex->holder = the_thread;
471c0: 2548 005a movel %a0,%a2@(90)
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
471c4: b280 cmpl %d0,%d1
471c6: 6764 beqs 4722c <_CORE_mutex_Surrender+0xe0> <== ALWAYS TAKEN
471c8: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
471cc: b280 cmpl %d0,%d1 <== NOT EXECUTED
471ce: 6734 beqs 47204 <_CORE_mutex_Surrender+0xb8> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471d0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
471d4: 4280 clrl %d0 <== NOT EXECUTED
}
471d6: 4e5e unlk %fp <== NOT EXECUTED
471d8: 4e75 rts <== NOT EXECUTED
_CORE_mutex_Pop_priority( the_mutex, holder );
if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL )
return pop_status;
holder->resource_count--;
471da: 2028 001c movel %a0@(28),%d0
471de: 5380 subql #1,%d0
471e0: 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 &&
471e4: 66ac bnes 47192 <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
471e6: 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 &&
471ea: b0a8 0014 cmpl %a0@(20),%d0
471ee: 67a2 beqs 47192 <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
471f0: 4878 0001 pea 1 <ADD>
471f4: 2f00 movel %d0,%sp@-
471f6: 2f08 movel %a0,%sp@-
471f8: 4eb9 0004 83cc jsr 483cc <_Thread_Change_priority>
471fe: 4fef 000c lea %sp@(12),%sp
47202: 608e bras 47192 <_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 <
47204: 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++;
47208: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
if (the_mutex->Attributes.priority_ceiling <
4720c: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
47210: 64be bccs 471d0 <_CORE_mutex_Surrender+0x84> <== NOT EXECUTED
the_thread->current_priority){
_Thread_Change_priority(
47212: 42a7 clrl %sp@- <== NOT EXECUTED
47214: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47216: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47218: 4eb9 0004 83cc jsr 483cc <_Thread_Change_priority> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4721e: 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(
47222: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47226: 4280 clrl %d0 <== NOT EXECUTED
}
47228: 4e5e unlk %fp <== NOT EXECUTED
4722a: 4e75 rts <== NOT EXECUTED
4722c: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47230: 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++;
47232: 52a8 001c addql #1,%a0@(28)
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47236: 4e5e unlk %fp
47238: 4e75 rts
}
break;
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4723a: 7001 moveq #1,%d0
4723c: 2540 004e movel %d0,%a2@(78)
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47240: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47244: 4200 clrb %d0
}
47246: 4e5e unlk %fp
...
000472a0 <_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
)
{
472a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
472a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472a6: 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)) ) {
472aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472ac: 4eb9 0004 8c08 jsr 48c08 <_Thread_queue_Dequeue> <== NOT EXECUTED
472b2: 588f addql #4,%sp <== NOT EXECUTED
472b4: 4a80 tstl %d0 <== NOT EXECUTED
472b6: 670a beqs 472c2 <_CORE_semaphore_Surrender+0x22> <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
472b8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
472bc: 4280 clrl %d0 <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
472be: 4e5e unlk %fp <== NOT EXECUTED
472c0: 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 );
472c2: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
472c6: 40c1 movew %sr,%d1 <== NOT EXECUTED
472c8: 8081 orl %d1,%d0 <== NOT EXECUTED
472ca: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
472cc: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
472d0: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
472d4: 6412 bccs 472e8 <_CORE_semaphore_Surrender+0x48> <== NOT EXECUTED
the_semaphore->count += 1;
472d6: 5280 addql #1,%d0 <== NOT EXECUTED
472d8: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
472dc: 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 );
472de: 46c1 movew %d1,%sr <== NOT EXECUTED
}
return status;
}
472e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
472e4: 4e5e unlk %fp <== NOT EXECUTED
472e6: 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;
472e8: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
472ea: 46c1 movew %d1,%sr <== NOT EXECUTED
472ec: 60f2 bras 472e0 <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED
...
0004757c <_Chain_Append_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
4757c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Append_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
47582: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47586: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4758a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4758c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
47590: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
47592: 40c2 movew %sr,%d2 <== NOT EXECUTED
47594: 8082 orl %d2,%d0 <== NOT EXECUTED
47596: 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 );
47598: 2209 movel %a1,%d1 <== NOT EXECUTED
4759a: 5881 addql #4,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
4759c: b291 cmpl %a1@,%d1 <== NOT EXECUTED
4759e: 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;
475a0: 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 )
475a4: 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;
475a6: 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;
475aa: 2081 movel %d1,%a0@ <== NOT EXECUTED
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
475ac: 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;
475b0: 2488 movel %a0,%a2@ <== NOT EXECUTED
was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
475b2: 46c2 movew %d2,%sr <== NOT EXECUTED
return was_empty;
}
475b4: 241f movel %sp@+,%d2 <== NOT EXECUTED
475b6: 245f moveal %sp@+,%a2 <== NOT EXECUTED
475b8: 4e5e unlk %fp <== NOT EXECUTED
0004761c <_Chain_Get_with_empty_check>:
)
{
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
4761c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Get_with_empty_check(
Chain_Control *chain,
Chain_Node **node
)
{
47622: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47626: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4762a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4762c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
47630: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
47632: 40c1 movew %sr,%d1 <== NOT EXECUTED
47634: 8081 orl %d1,%d0 <== NOT EXECUTED
47636: 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 );
47638: 2008 movel %a0,%d0 <== NOT EXECUTED
4763a: 5880 addql #4,%d0 <== NOT EXECUTED
Chain_Node *old_first = head->next;
4763c: 2250 moveal %a0@,%a1 <== NOT EXECUTED
if ( old_first != tail ) {
4763e: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
47640: 671a beqs 4765c <_Chain_Get_with_empty_check+0x40><== NOT EXECUTED
Chain_Node *new_first = old_first->next;
47642: 2451 moveal %a1@,%a2 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
47644: b5c0 cmpal %d0,%a2 <== NOT EXECUTED
47646: 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;
47648: 208a movel %a2,%a0@ <== NOT EXECUTED
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
4764a: 4480 negl %d0 <== NOT EXECUTED
if ( old_first != tail ) {
Chain_Node *new_first = old_first->next;
head->next = new_first;
new_first->previous = head;
4764c: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
*the_node = old_first;
47650: 2689 movel %a1,%a3@ <== NOT EXECUTED
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
47652: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
47654: 245f moveal %sp@+,%a2 <== NOT EXECUTED
47656: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47658: 4e5e unlk %fp <== NOT EXECUTED
4765a: 4e75 rts <== NOT EXECUTED
is_empty_now = new_first == tail;
} else
*the_node = NULL;
4765c: 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;
4765e: 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 );
47660: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
47662: 245f moveal %sp@+,%a2 <== NOT EXECUTED
47664: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47666: 4e5e unlk %fp <== NOT EXECUTED
...
0004b8e0 <_Chain_Initialize>:
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4b8e0: 4e56 ffec linkw %fp,#-20
4b8e4: 202e 0010 movel %fp@(16),%d0
4b8e8: 48d7 043c moveml %d2-%d5/%a2,%sp@
4b8ec: 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 );
4b8f0: 280a movel %a2,%d4
4b8f2: 5884 addql #4,%d4
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4b8f4: 262e 000c movel %fp@(12),%d3
4b8f8: 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;
4b8fc: 42aa 0004 clrl %a2@(4)
while ( count-- ) {
4b900: 4a80 tstl %d0
4b902: 6740 beqs 4b944 <_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;
4b904: 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;
4b906: 224a moveal %a2,%a1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b908: 5380 subql #1,%d0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b90a: 2208 movel %a0,%d1
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b90c: 2a00 movel %d0,%d5
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b90e: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4b910: 2288 movel %a0,%a1@
next->previous = current;
4b912: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b916: 4a80 tstl %d0
4b918: 6714 beqs 4b92e <_Chain_Initialize+0x4e>
4b91a: 2248 moveal %a0,%a1
current->next = next;
next->previous = current;
current = next;
next = (Chain_Node *)
4b91c: 2041 moveal %d1,%a0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b91e: 2208 movel %a0,%d1
4b920: 5380 subql #1,%d0
4b922: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4b924: 2288 movel %a0,%a1@
next->previous = current;
4b926: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b92a: 4a80 tstl %d0
4b92c: 66ec bnes 4b91a <_Chain_Initialize+0x3a>
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b92e: 4c05 2800 mulsl %d5,%d2
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b932: 2043 moveal %d3,%a0
4b934: d1c2 addal %d2,%a0
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4b936: 2548 0008 movel %a0,%a2@(8)
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4b93a: 2084 movel %d4,%a0@
tail->previous = current;
}
4b93c: 4cd7 043c moveml %sp@,%d2-%d5/%a2
4b940: 4e5e unlk %fp
4b942: 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;
4b944: 204a moveal %a2,%a0 <== NOT EXECUTED
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4b946: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4b94a: 2084 movel %d4,%a0@ <== NOT EXECUTED
tail->previous = current;
}
4b94c: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
4b950: 4e5e unlk %fp <== NOT EXECUTED
000476d8 <_Chain_Prepend_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
476d8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Prepend_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
476de: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
476e2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
476e6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
476e8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
476ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
476ee: 40c1 movew %sr,%d1 <== NOT EXECUTED
476f0: 8081 orl %d1,%d0 <== NOT EXECUTED
476f2: 46c0 movew %d0,%sr <== NOT EXECUTED
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
return was_empty;
}
476f4: 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;
476f6: 224b moveal %a3,%a1 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
476f8: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
476fc: 22c8 movel %a0,%a1@+ <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
476fe: 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;
47702: 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 );
47704: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
47706: b3ca cmpal %a2,%a1 <== NOT EXECUTED
47708: 57c0 seq %d0 <== NOT EXECUTED
return was_empty;
}
4770a: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4770c: 4480 negl %d0 <== NOT EXECUTED
4770e: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47710: 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 0005 eff4 moveal 5eff4 <_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 00fc moveal %a2@(252),%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 0005 f028 movel %d2,5f028 <_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 91a4 jsr 491a4 <_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 0005 f028 movel 5f028 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45e8c: 42b9 0005 f028 clrl 5f028 <_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 8364 jmp 48364 <_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 ef18 pea 5ef18 <_Watchdog_Ticks_chain>
45f04: 4eb9 0004 97ac jsr 497ac <_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 91a4 jsr 491a4 <_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 0005 f028 movel 5f028 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45f2e: 42b9 0005 f028 clrl 5f028 <_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 00fc moveal %a2@(252),%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 0005 eff0 tstl 5eff0 <_Per_CPU_Information+0x8>
45fd6: 670a beqs 45fe2 <_Event_Surrender+0x3e> <== ALWAYS TAKEN
45fd8: b5f9 0005 eff4 cmpal 5eff4 <_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 850c jsr 4850c <_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 9900 jsr 49900 <_Watchdog_Remove>
46064: 2f3c 1003 fff8 movel #268697592,%sp@-
4606a: 2f0a movel %a2,%sp@-
4606c: 4eb9 0004 850c jsr 4850c <_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 0005 f028 moveal 5f028 <_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 0005 f028 moveal 5f028 <_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 0005 f028 movel %d0,5f028 <_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 88e8 jsr 488e8 <_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 0005 eff4 cmpl 5eff4 <_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 850c jsr 4850c <_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 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46124: 5380 subql #1,%d0 <== NOT EXECUTED
46126: 23c0 0005 ee38 movel %d0,5ee38 <_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 0005 f028 movel 5f028 <_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 0005 f028 movel %d1,5f028 <_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 850c jsr 4850c <_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 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4616c: 5380 subql #1,%d0 <== NOT EXECUTED
4616e: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
46174: 60b6 bras 4612c <_Event_Timeout+0x60> <== NOT EXECUTED
...
0004bafc <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4bafc: 4e56 ffcc linkw %fp,#-52
4bb00: 226e 000c moveal %fp@(12),%a1
4bb04: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4bb08: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4bb0c: 2e09 movel %a1,%d7
4bb0e: 5887 addql #4,%d7
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4bb10: 202a 0010 movel %a2@(16),%d0
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4bb14: 222e 0010 movel %fp@(16),%d1
4bb18: 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;
4bb1c: 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 ) {
4bb20: be89 cmpl %a1,%d7
4bb22: 6500 014e bcsw 4bc72 <_Heap_Allocate_aligned_with_boundary+0x176>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4bb26: 4a84 tstl %d4
4bb28: 6600 0144 bnew 4bc6e <_Heap_Allocate_aligned_with_boundary+0x172>
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4bb2c: 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 ) {
4bb30: b1ca cmpal %a2,%a0
4bb32: 6700 013e beqw 4bc72 <_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
4bb36: 242e fffc movel %fp@(-4),%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4bb3a: 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
4bb3c: 5e82 addql #7,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4bb3e: 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 ) {
4bb40: 7601 moveq #1,%d3
4bb42: 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
4bb44: 2d42 fff8 movel %d2,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4bb48: 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 ) {
4bb4c: 2028 0004 movel %a0@(4),%d0
4bb50: b08b cmpl %a3,%d0
4bb52: 630e blss 4bb62 <_Heap_Allocate_aligned_with_boundary+0x66>
if ( alignment == 0 ) {
4bb54: 4a81 tstl %d1
4bb56: 661c bnes 4bb74 <_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;
4bb58: 2408 movel %a0,%d2
4bb5a: 5082 addql #8,%d2
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4bb5c: 4a82 tstl %d2
4bb5e: 6600 00de bnew 4bc3e <_Heap_Allocate_aligned_with_boundary+0x142>
break;
}
block = block->next;
4bb62: 2003 movel %d3,%d0
4bb64: 5280 addql #1,%d0
4bb66: 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 ) {
4bb6a: b1ca cmpal %a2,%a0
4bb6c: 6700 0110 beqw 4bc7e <_Heap_Allocate_aligned_with_boundary+0x182>
4bb70: 2600 movel %d0,%d3 <== NOT EXECUTED
4bb72: 60d8 bras 4bb4c <_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;
4bb74: 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;
4bb76: 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;
4bb7a: c087 andl %d7,%d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4bb7c: 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;
4bb80: 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;
4bb82: 2a2e fff8 movel %fp@(-8),%d5
4bb86: 9a8c subl %a4,%d5
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4bb88: 242e fff4 movel %fp@(-12),%d2
4bb8c: d480 addl %d0,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4bb8e: 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
4bb90: d085 addl %d5,%d0
4bb92: 4c41 6005 remul %d1,%d5,%d6
4bb96: 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 ) {
4bb98: b480 cmpl %d0,%d2
4bb9a: 630a blss 4bba6 <_Heap_Allocate_aligned_with_boundary+0xaa><== ALWAYS TAKEN
4bb9c: 2a00 movel %d0,%d5 <== NOT EXECUTED
4bb9e: 4c41 5002 remul %d1,%d2,%d5 <== NOT EXECUTED
4bba2: 9082 subl %d2,%d0 <== NOT EXECUTED
4bba4: 2400 movel %d0,%d2 <== NOT EXECUTED
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4bba6: 4a84 tstl %d4
4bba8: 676a beqs 4bc14 <_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;
4bbaa: 2002 movel %d2,%d0 <== NOT EXECUTED
4bbac: d089 addl %a1,%d0 <== NOT EXECUTED
4bbae: 2c00 movel %d0,%d6 <== NOT EXECUTED
4bbb0: 4c44 6005 remul %d4,%d5,%d6 <== NOT EXECUTED
4bbb4: 2c00 movel %d0,%d6 <== NOT EXECUTED
4bbb6: 9c85 subl %d5,%d6 <== NOT EXECUTED
4bbb8: 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 ) {
4bbba: bc82 cmpl %d2,%d6 <== NOT EXECUTED
4bbbc: 6356 blss 4bc14 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
4bbbe: bc80 cmpl %d0,%d6 <== NOT EXECUTED
4bbc0: 6452 bccs 4bc14 <_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;
4bbc2: 2c0d movel %a5,%d6 <== NOT EXECUTED
4bbc4: 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 ) {
4bbc6: ba86 cmpl %d6,%d5 <== NOT EXECUTED
4bbc8: 6598 bcss 4bb62 <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4bbca: 2405 movel %d5,%d2 <== NOT EXECUTED
4bbcc: 9489 subl %a1,%d2 <== NOT EXECUTED
4bbce: 2a02 movel %d2,%d5 <== NOT EXECUTED
4bbd0: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED
4bbd4: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4bbd6: 2002 movel %d2,%d0 <== NOT EXECUTED
4bbd8: d089 addl %a1,%d0 <== NOT EXECUTED
4bbda: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bbdc: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED
4bbe0: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bbe2: 9e85 subl %d5,%d7 <== NOT EXECUTED
4bbe4: 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 ) {
4bbe6: be82 cmpl %d2,%d7 <== NOT EXECUTED
4bbe8: 632a blss 4bc14 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
4bbea: be80 cmpl %d0,%d7 <== NOT EXECUTED
4bbec: 6426 bccs 4bc14 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
if ( boundary_line < boundary_floor ) {
4bbee: ba86 cmpl %d6,%d5 <== NOT EXECUTED
4bbf0: 6500 ff70 bcsw 4bb62 <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4bbf4: 2405 movel %d5,%d2 <== NOT EXECUTED
4bbf6: 9489 subl %a1,%d2 <== NOT EXECUTED
4bbf8: 2a02 movel %d2,%d5 <== NOT EXECUTED
4bbfa: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED
4bbfe: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4bc00: 2002 movel %d2,%d0 <== NOT EXECUTED
4bc02: d089 addl %a1,%d0 <== NOT EXECUTED
4bc04: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bc06: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED
4bc0a: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bc0c: 9e85 subl %d5,%d7 <== NOT EXECUTED
4bc0e: 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 ) {
4bc10: be82 cmpl %d2,%d7 <== NOT EXECUTED
4bc12: 62d6 bhis 4bbea <_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 ) {
4bc14: b48d cmpl %a5,%d2
4bc16: 6500 ff4a bcsw 4bb62 <_Heap_Allocate_aligned_with_boundary+0x66>
4bc1a: 2e2e fffc movel %fp@(-4),%d7
4bc1e: 2c02 movel %d2,%d6
4bc20: 70f8 moveq #-8,%d0
4bc22: 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);
4bc24: d082 addl %d2,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4bc26: 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;
4bc2a: 9085 subl %d5,%d0
if ( free_size >= min_block_size || free_size == 0 ) {
4bc2c: b08c cmpl %a4,%d0
4bc2e: 6400 ff2c bccw 4bb5c <_Heap_Allocate_aligned_with_boundary+0x60>
4bc32: 4a80 tstl %d0 <== NOT EXECUTED
4bc34: 6600 ff2c bnew 4bb62 <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4bc38: 4a82 tstl %d2 <== NOT EXECUTED
4bc3a: 6700 ff26 beqw 4bb62 <_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 );
4bc3e: 2f09 movel %a1,%sp@-
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4bc40: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4bc44: d7aa 004c addl %d3,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4bc48: 2f02 movel %d2,%sp@-
4bc4a: 2f08 movel %a0,%sp@-
4bc4c: 2f0a movel %a2,%sp@-
4bc4e: 4eb9 0004 76a2 jsr 476a2 <_Heap_Block_allocate>
4bc54: 4fef 0010 lea %sp@(16),%sp
4bc58: 2002 movel %d2,%d0
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4bc5a: b6aa 0044 cmpl %a2@(68),%d3
4bc5e: 6304 blss 4bc64 <_Heap_Allocate_aligned_with_boundary+0x168>
stats->max_search = search_count;
4bc60: 2543 0044 movel %d3,%a2@(68)
}
return (void *) alloc_begin;
}
4bc64: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
4bc6a: 4e5e unlk %fp
4bc6c: 4e75 rts
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
4bc6e: b889 cmpl %a1,%d4 <== NOT EXECUTED
4bc70: 6410 bccs 4bc82 <_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 ) {
4bc72: 4280 clrl %d0 <== NOT EXECUTED
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4bc74: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4bc7a: 4e5e unlk %fp <== NOT EXECUTED
4bc7c: 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 ) {
4bc7e: 4280 clrl %d0
4bc80: 60d8 bras 4bc5a <_Heap_Allocate_aligned_with_boundary+0x15e>
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
return NULL;
}
if ( alignment == 0 ) {
4bc82: 4a81 tstl %d1 <== NOT EXECUTED
4bc84: 6600 fea6 bnew 4bb2c <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
alignment = page_size;
4bc88: 2200 movel %d0,%d1 <== NOT EXECUTED
4bc8a: 6000 fea0 braw 4bb2c <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
...
000476a2 <_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;
476a2: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
476a4: 4e56 ffe0 linkw %fp,#-32
476a8: 206e 000c moveal %fp@(12),%a0
476ac: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
476b0: 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;
476b4: 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;
476b6: c082 andl %d2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
476b8: 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);
476bc: 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;
476c0: 2641 moveal %d1,%a3
476c2: 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;
476c4: 2a0b movel %a3,%d5
476c6: 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;
476c8: c8ac 0004 andl %a4@(4),%d4
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
476cc: 246e 0008 moveal %fp@(8),%a2
476d0: 262e 0014 movel %fp@(20),%d3
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
476d4: 4a84 tstl %d4
476d6: 6600 0090 bnew 47768 <_Heap_Block_allocate+0xc6>
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
476da: 2828 0008 movel %a0@(8),%d4
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
next->prev = prev;
476de: 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;
476e0: 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;
476e4: 2344 0008 movel %d4,%a1@(8)
next->prev = prev;
476e8: 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 );
476ec: 91aa 0030 subl %d0,%a2@(48)
free_list_anchor = block->prev;
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
476f0: 53aa 0038 subql #1,%a2@(56)
++stats->used_blocks;
476f4: 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 ) {
476f8: 202a 0010 movel %a2@(16),%d0
476fc: b085 cmpl %d5,%d0
476fe: 6272 bhis 47772 <_Heap_Block_allocate+0xd0>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
47700: 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);
47704: 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;
47706: 200b movel %a3,%d0
47708: 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;
4770a: 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;
4770e: 99cb subal %a3,%a4
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
if ( _Heap_Is_prev_used( block ) ) {
47710: 0802 0000 btst #0,%d2
47714: 6774 beqs 4778a <_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;
47716: 2a69 0008 moveal %a1@(8),%a5
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4771a: 7401 moveq #1,%d2
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
4771c: 2208 movel %a0,%d1
new_block->next = next;
4771e: 214d 0008 movel %a5,%a0@(8)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47722: 8480 orl %d0,%d2
new_block->prev = block_before;
47724: 2149 000c movel %a1,%a0@(12)
block_before->next = new_block;
47728: 2348 0008 movel %a0,%a1@(8)
next->prev = new_block;
4772c: 2b48 000c movel %a0,%a5@(12)
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
47730: 52aa 0038 addql #1,%a2@(56)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47734: 2142 0004 movel %d2,%a0@(4)
new_block->prev_size = block_size;
47738: 2680 movel %d0,%a3@
new_block->size_and_flag = new_block_size;
4773a: 274c 0004 movel %a4,%a3@(4)
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
4773e: 2f03 movel %d3,%sp@-
47740: 2f01 movel %d1,%sp@-
47742: 2f0b movel %a3,%sp@-
47744: 2f0a movel %a2,%sp@-
47746: 4eba fcb0 jsr %pc@(473f8 <_Heap_Block_split>)
4774a: 4fef 0010 lea %sp@(16),%sp
alloc_size
);
}
/* Statistics */
if ( stats->min_free_size > stats->free_size ) {
4774e: 202a 0030 movel %a2@(48),%d0
47752: b0aa 0034 cmpl %a2@(52),%d0
47756: 6404 bccs 4775c <_Heap_Block_allocate+0xba> <== NEVER TAKEN
stats->min_free_size = stats->free_size;
47758: 2540 0034 movel %d0,%a2@(52)
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
4775c: 200b movel %a3,%d0
4775e: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
47764: 4e5e unlk %fp
47766: 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 ) {
47768: 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 );
4776c: 224a moveal %a2,%a1 <== NOT EXECUTED
}
if ( alloc_area_offset < heap->page_size ) {
4776e: b085 cmpl %d5,%d0 <== NOT EXECUTED
47770: 638e blss 47700 <_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 );
47772: 2645 moveal %d5,%a3
47774: 4873 3800 pea %a3@(00000000,%d3:l)
47778: 2648 moveal %a0,%a3
4777a: 2f09 movel %a1,%sp@-
4777c: 2f08 movel %a0,%sp@-
4777e: 2f0a movel %a2,%sp@-
47780: 4eba fc76 jsr %pc@(473f8 <_Heap_Block_split>)
47784: 4fef 0010 lea %sp@(16),%sp
47788: 60c4 bras 4774e <_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);
4778a: 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;
4778c: 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;
4778e: 2209 movel %a1,%d1 <== NOT EXECUTED
47790: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
47794: d082 addl %d2,%d0 <== NOT EXECUTED
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47796: 7401 moveq #1,%d2 <== NOT EXECUTED
47798: 8480 orl %d0,%d2 <== NOT EXECUTED
new_block->prev_size = block_size;
4779a: 2680 movel %d0,%a3@ <== NOT EXECUTED
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4779c: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
477a0: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
477a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477a6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
477a8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
477aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
477ac: 4eba fc4a jsr %pc@(473f8 <_Heap_Block_split>) <== NOT EXECUTED
477b0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
477b4: 6098 bras 4774e <_Heap_Block_allocate+0xac> <== NOT EXECUTED
...
000473f8 <_Heap_Block_split>:
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
473f8: 4e56 ffe4 linkw %fp,#-28
473fc: 226e 0008 moveal %fp@(8),%a1
47400: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
47404: 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;
47408: 76fe moveq #-2,%d3
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
4740a: 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;
4740e: 2669 0014 moveal %a1@(20),%a3
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
47412: 220b movel %a3,%d1
47414: 5181 subql #8,%d1
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
47416: 286e 0010 moveal %fp@(16),%a4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
4741a: 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;
4741e: 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;
47422: 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;
47424: b280 cmpl %d0,%d1
47426: 6302 blss 4742a <_Heap_Block_split+0x32>
47428: 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 =
4742a: 5080 addql #8,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4742c: 2a00 movel %d0,%d5
4742e: 4c42 5001 remul %d2,%d1,%d5
if ( remainder != 0 ) {
47432: 4a81 tstl %d1
47434: 6766 beqs 4749c <_Heap_Block_split+0xa4>
return value - remainder + alignment;
47436: d480 addl %d0,%d2
47438: 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;
4743a: 2203 movel %d3,%d1
4743c: 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);
4743e: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
47442: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
47444: 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 ) {
47446: b7c1 cmpal %d1,%a3
47448: 6264 bhis 474ae <_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;
4744a: 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);
4744c: 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;
47450: 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;
47452: 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;
47454: 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;
47456: 70fe moveq #-2,%d0
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
47458: 8484 orl %d4,%d2
4745a: 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;
4745e: 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;
47462: 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;
47466: c2b0 0804 andl %a0@(00000004,%d0:l),%d1
if ( _Heap_Is_used( next_block ) ) {
4746a: 6750 beqs 474bc <_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;
4746c: 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;
47470: 7001 moveq #1,%d0
new_block->next = next;
new_block->prev = block_before;
47472: 274c 000c movel %a4,%a3@(12)
47476: 8083 orl %d3,%d0
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
47478: 274a 0008 movel %a2,%a3@(8)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
4747c: 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;
47480: 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;
47484: 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;
47488: 2740 0004 movel %d0,%a3@(4)
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4748c: 70fe moveq #-2,%d0
4748e: 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;
47492: 2083 movel %d3,%a0@
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
}
}
47494: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4
47498: 4e5e unlk %fp
4749a: 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;
4749c: 2203 movel %d3,%d1
4749e: 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);
474a0: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
474a4: 2400 movel %d0,%d2
474a6: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
474a8: 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 ) {
474aa: b7c1 cmpal %d1,%a3
474ac: 639c blss 4744a <_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;
474ae: 7001 moveq #1,%d0
}
}
474b0: 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;
474b4: 81a8 0004 orl %d0,%a0@(4)
}
}
474b8: 4e5e unlk %fp
474ba: 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;
474bc: 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;
474be: 7001 moveq #1,%d0 <== NOT EXECUTED
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
474c0: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED
474c4: 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);
474c8: 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;
474cc: 8083 orl %d3,%d0 <== NOT EXECUTED
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
474ce: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED
new_block->prev = prev;
474d2: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED
474d6: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
474da: 70fe moveq #-2,%d0 <== NOT EXECUTED
next->prev = new_block;
prev->next = new_block;
474dc: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
474e0: 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;
474e4: 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;
474e8: 2083 movel %d3,%a0@ <== NOT EXECUTED
474ea: 60a8 bras 47494 <_Heap_Block_split+0x9c> <== NOT EXECUTED
0004bfb8 <_Heap_Extend>:
Heap_Control *heap,
void *extend_area_begin_ptr,
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
4bfb8: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
4bfbc: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
4bfc0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4bfc4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4bfc8: 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;
4bfcc: 2602 movel %d2,%d3 <== NOT EXECUTED
4bfce: 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;
4bfd0: 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;
4bfd4: 282a 0010 movel %a2@(16),%d4 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4bfd8: 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;
4bfdc: 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;
4bfe0: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
Heap_Block *extend_last_block = NULL;
4bfe4: 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 ) {
4bfe8: b682 cmpl %d2,%d3 <== NOT EXECUTED
4bfea: 640c bccs 4bff8 <_Heap_Extend+0x40> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4bfec: 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;
4bff2: 4200 clrb %d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4bff4: 4e5e unlk %fp <== NOT EXECUTED
4bff6: 4e75 rts <== NOT EXECUTED
if ( extend_area_end < extend_area_begin ) {
return false;
}
extend_area_ok = _Heap_Get_first_and_last_block(
4bff8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4bffc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c000: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4c002: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c004: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c006: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c008: 4eb9 0004 7838 jsr 47838 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&extend_first_block,
&extend_last_block
);
if (!extend_area_ok ) {
4c00e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4c012: 4a00 tstb %d0 <== NOT EXECUTED
4c014: 67d6 beqs 4bfec <_Heap_Extend+0x34> <== NOT EXECUTED
4c016: 2045 moveal %d5,%a0 <== NOT EXECUTED
4c018: 9bcd subal %a5,%a5 <== NOT EXECUTED
4c01a: 97cb subal %a3,%a3 <== NOT EXECUTED
4c01c: 99cc subal %a4,%a4 <== NOT EXECUTED
4c01e: 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;
4c022: ba88 cmpl %a0,%d5 <== NOT EXECUTED
4c024: 6700 014a beqw 4c170 <_Heap_Extend+0x1b8> <== NOT EXECUTED
4c028: 2208 movel %a0,%d1 <== NOT EXECUTED
uintptr_t const sub_area_end = start_block->prev_size;
4c02a: 2010 movel %a0@,%d0 <== NOT EXECUTED
Heap_Block *const end_block =
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
4c02c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c02e: 6304 blss 4c034 <_Heap_Extend+0x7c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
4c030: b681 cmpl %d1,%d3 <== NOT EXECUTED
4c032: 62b8 bhis 4bfec <_Heap_Extend+0x34> <== NOT EXECUTED
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4c034: b681 cmpl %d1,%d3 <== NOT EXECUTED
4c036: 6700 0132 beqw 4c16a <_Heap_Extend+0x1b2> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4c03a: b083 cmpl %d3,%d0 <== NOT EXECUTED
4c03c: 6304 blss 4c042 <_Heap_Extend+0x8a> <== NOT EXECUTED
4c03e: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
4c042: 2e00 movel %d0,%d7 <== NOT EXECUTED
4c044: 2240 moveal %d0,%a1 <== NOT EXECUTED
4c046: 5189 subql #8,%a1 <== NOT EXECUTED
4c048: 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);
4c04c: 93c1 subal %d1,%a1 <== NOT EXECUTED
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
4c04e: b480 cmpl %d0,%d2 <== NOT EXECUTED
4c050: 6700 0100 beqw 4c152 <_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 ) {
4c054: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c056: 6402 bccs 4c05a <_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 )
4c058: 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;
4c05a: 70fe moveq #-2,%d0 <== NOT EXECUTED
4c05c: 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);
4c060: 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 );
4c064: b1c5 cmpal %d5,%a0 <== NOT EXECUTED
4c066: 66ba bnes 4c022 <_Heap_Extend+0x6a> <== NOT EXECUTED
if ( extend_area_begin < heap->area_begin ) {
4c068: b4aa 0018 cmpl %a2@(24),%d2 <== NOT EXECUTED
4c06c: 6500 010a bcsw 4c178 <_Heap_Extend+0x1c0> <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
4c070: b6aa 001c cmpl %a2@(28),%d3 <== NOT EXECUTED
4c074: 6304 blss 4c07a <_Heap_Extend+0xc2> <== NOT EXECUTED
heap->area_end = extend_area_end;
4c076: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4c07a: 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 =
4c07e: 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;
4c080: 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;
4c082: 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 =
4c086: 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;
4c088: 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;
4c08a: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c08c: 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;
4c090: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4c092: 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 ) {
4c096: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
4c09a: 6400 0104 bccw 4c1a0 <_Heap_Extend+0x1e8> <== NOT EXECUTED
heap->first_block = extend_first_block;
4c09e: 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 ) {
4c0a2: 4a8c tstl %a4 <== NOT EXECUTED
4c0a4: 6700 0148 beqw 4c1ee <_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;
4c0a8: 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 );
4c0ac: 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;
4c0ae: 2802 movel %d2,%d4 <== NOT EXECUTED
4c0b0: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED
if ( remainder != 0 ) {
4c0b4: 4a81 tstl %d1 <== NOT EXECUTED
4c0b6: 6704 beqs 4c0bc <_Heap_Extend+0x104> <== NOT EXECUTED
return value - remainder + alignment;
4c0b8: d480 addl %d0,%d2 <== NOT EXECUTED
4c0ba: 9481 subl %d1,%d2 <== NOT EXECUTED
uintptr_t const new_first_block_begin =
4c0bc: 2042 moveal %d2,%a0 <== NOT EXECUTED
4c0be: 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 =
4c0c0: 200c movel %a4,%d0 <== NOT EXECUTED
4c0c2: 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;
4c0c4: 7201 moveq #1,%d1 <== NOT EXECUTED
4c0c6: 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;
4c0c8: 2094 movel %a4@,%a0@ <== NOT EXECUTED
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4c0ca: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Free_block( heap, new_first_block );
4c0ce: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c0d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c0d2: 4eba fec8 jsr %pc@(4bf9c <_Heap_Free_block>) <== NOT EXECUTED
4c0d6: 508f addql #8,%sp <== NOT EXECUTED
link_below_block,
extend_last_block
);
}
if ( merge_above_block != NULL ) {
4c0d8: 4a8b tstl %a3 <== NOT EXECUTED
4c0da: 6700 00d4 beqw 4c1b0 <_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,
4c0de: 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(
4c0e0: 968b subl %a3,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c0e2: 2203 movel %d3,%d1 <== NOT EXECUTED
4c0e4: 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;
4c0ea: 7201 moveq #1,%d1 <== NOT EXECUTED
4c0ec: 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)
4c0ee: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
4c0f2: 9083 subl %d3,%d0 <== NOT EXECUTED
| HEAP_PREV_BLOCK_USED;
4c0f4: 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;
4c0f6: 7001 moveq #1,%d0 <== NOT EXECUTED
4c0f8: 2781 3804 movel %d1,%a3@(00000004,%d3:l) <== NOT EXECUTED
4c0fc: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4c100: 8680 orl %d0,%d3 <== NOT EXECUTED
4c102: 2743 0004 movel %d3,%a3@(4) <== NOT EXECUTED
_Heap_Block_set_size( last_block, last_block_new_size );
_Heap_Free_block( heap, last_block );
4c106: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c108: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c10a: 4eba fe90 jsr %pc@(4bf9c <_Heap_Free_block>) <== NOT EXECUTED
4c10e: 508f addql #8,%sp <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4c110: 4a8c tstl %a4 <== NOT EXECUTED
4c112: 6700 00c4 beqw 4c1d8 <_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;
4c116: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
4c11a: 9086 subl %d6,%d0 <== NOT EXECUTED
4c11c: 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;
4c11e: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4c120: 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(
4c124: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
4c128: 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;
4c12a: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4c12e: 8280 orl %d0,%d1 <== NOT EXECUTED
4c130: 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;
4c134: ddaa 002c addl %d6,%a2@(44) <== NOT EXECUTED
if ( extended_size_ptr != NULL )
4c138: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
4c13c: 6700 00ca beqw 4c208 <_Heap_Extend+0x250> <== NOT EXECUTED
*extended_size_ptr = extended_size;
4c140: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4c144: 2086 movel %d6,%a0@ <== NOT EXECUTED
return true;
}
4c146: 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;
4c14c: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c14e: 4e5e unlk %fp <== NOT EXECUTED
4c150: 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;
4c152: 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 )
4c154: 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;
4c156: 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;
4c15a: 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);
4c15c: 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 );
4c160: b1c5 cmpal %d5,%a0 <== NOT EXECUTED
4c162: 6600 febe bnew 4c022 <_Heap_Extend+0x6a> <== NOT EXECUTED
4c166: 6000 ff00 braw 4c068 <_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 ) {
4c16a: 2848 moveal %a0,%a4 <== NOT EXECUTED
4c16c: 6000 fed4 braw 4c042 <_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;
4c170: 222a 0018 movel %a2@(24),%d1 <== NOT EXECUTED
4c174: 6000 feb4 braw 4c02a <_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;
4c178: 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 =
4c17c: 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;
4c17e: 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;
4c180: 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 =
4c184: 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;
4c186: 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;
4c18a: 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;
4c18c: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c18e: 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;
4c192: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4c194: 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 ) {
4c198: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
4c19c: 6500 ff00 bcsw 4c09e <_Heap_Extend+0xe6> <== NOT EXECUTED
heap->first_block = extend_first_block;
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
4c1a0: b3ea 0024 cmpal %a2@(36),%a1 <== NOT EXECUTED
4c1a4: 6300 fefc blsw 4c0a2 <_Heap_Extend+0xea> <== NOT EXECUTED
heap->last_block = extend_last_block;
4c1a8: 2549 0024 movel %a1,%a2@(36) <== NOT EXECUTED
4c1ac: 6000 fef4 braw 4c0a2 <_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 ) {
4c1b0: 4a8d tstl %a5 <== NOT EXECUTED
4c1b2: 6700 ff5c beqw 4c110 <_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;
4c1b6: 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 );
4c1b8: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4c1bc: 928d subl %a5,%d1 <== NOT EXECUTED
4c1be: 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(
4c1c2: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4c1c6: 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;
4c1c8: 7001 moveq #1,%d0 <== NOT EXECUTED
4c1ca: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED
4c1ce: 81a8 0004 orl %d0,%a0@(4) <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4c1d2: 4a8c tstl %a4 <== NOT EXECUTED
4c1d4: 6600 ff40 bnew 4c116 <_Heap_Extend+0x15e> <== NOT EXECUTED
4c1d8: 4a8b tstl %a3 <== NOT EXECUTED
4c1da: 6600 ff3a bnew 4c116 <_Heap_Extend+0x15e> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
4c1de: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4c1e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c1e4: 4eba fdb6 jsr %pc@(4bf9c <_Heap_Free_block>) <== NOT EXECUTED
4c1e8: 508f addql #8,%sp <== NOT EXECUTED
4c1ea: 6000 ff2a braw 4c116 <_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 ) {
4c1ee: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED
4c1f2: 6700 fee4 beqw 4c0d8 <_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;
4c1f6: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4c1fa: 7201 moveq #1,%d1 <== NOT EXECUTED
4c1fc: 9089 subl %a1,%d0 <== NOT EXECUTED
4c1fe: 8280 orl %d0,%d1 <== NOT EXECUTED
4c200: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
4c204: 6000 fed2 braw 4c0d8 <_Heap_Extend+0x120> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4c208: 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;
4c20e: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c210: 4e5e unlk %fp <== NOT EXECUTED
0004bc90 <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4bc90: 4e56 ffe8 linkw %fp,#-24
4bc94: 202e 000c movel %fp@(12),%d0
4bc98: 2040 moveal %d0,%a0
4bc9a: 5188 subql #8,%a0
4bc9c: 226e 0008 moveal %fp@(8),%a1
4bca0: 4c69 0001 0010 remul %a1@(16),%d1,%d0
4bca6: 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
4bcaa: 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);
4bcae: 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;
4bcb0: b088 cmpl %a0,%d0
4bcb2: 6200 0098 bhiw 4bd4c <_Heap_Free+0xbc>
4bcb6: 2229 0024 movel %a1@(36),%d1
4bcba: b288 cmpl %a0,%d1
4bcbc: 6500 008e bcsw 4bd4c <_Heap_Free+0xbc>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bcc0: 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;
4bcc4: 74fe moveq #-2,%d2
4bcc6: 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);
4bcc8: 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;
4bccc: b5c0 cmpal %d0,%a2
4bcce: 657c bcss 4bd4c <_Heap_Free+0xbc> <== NEVER TAKEN
4bcd0: b5c1 cmpal %d1,%a2
4bcd2: 6278 bhis 4bd4c <_Heap_Free+0xbc> <== NEVER TAKEN
4bcd4: 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 ) ) {
4bcd8: 0804 0000 btst #0,%d4
4bcdc: 676e beqs 4bd4c <_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;
4bcde: 7afe moveq #-2,%d5
4bce0: 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 ));
4bce2: b5c1 cmpal %d1,%a2
4bce4: 6700 00f6 beqw 4bddc <_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;
4bce8: 7a01 moveq #1,%d5
4bcea: cab2 4804 andl %a2@(00000004,%d4:l),%d5
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
4bcee: 57c5 seq %d5
4bcf0: 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 ) ) {
4bcf2: 0803 0000 btst #0,%d3
4bcf6: 665e bnes 4bd56 <_Heap_Free+0xc6>
uintptr_t const prev_size = block->prev_size;
4bcf8: 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);
4bcfa: 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;
4bcfc: b1c0 cmpal %d0,%a0
4bcfe: 654c bcss 4bd4c <_Heap_Free+0xbc> <== NEVER TAKEN
4bd00: b1c1 cmpal %d1,%a0
4bd02: 6248 bhis 4bd4c <_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;
4bd04: 7001 moveq #1,%d0
4bd06: 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) ) {
4bd0a: 6740 beqs 4bd4c <_Heap_Free+0xbc> <== NEVER TAKEN
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4bd0c: 4a05 tstb %d5
4bd0e: 6700 00d2 beqw 4bde2 <_Heap_Free+0x152>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd12: 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;
4bd16: d882 addl %d2,%d4 <== NOT EXECUTED
4bd18: 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;
4bd1a: 7001 moveq #1,%d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd1c: 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;
4bd20: 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;
4bd24: 8083 orl %d3,%d0 <== NOT EXECUTED
next->prev = prev;
4bd26: 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;
4bd2a: 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;
4bd2e: 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;
4bd32: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4bd36: 53a9 0040 subql #1,%a1@(64) <== NOT EXECUTED
++stats->frees;
4bd3a: 52a9 0050 addql #1,%a1@(80) <== NOT EXECUTED
stats->free_size += block_size;
4bd3e: d5a9 0030 addl %d2,%a1@(48) <== NOT EXECUTED
return( true );
4bd42: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4bd44: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
4bd48: 4e5e unlk %fp
4bd4a: 4e75 rts
4bd4c: 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 );
4bd50: 4200 clrb %d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd52: 4e5e unlk %fp <== NOT EXECUTED
4bd54: 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 */
4bd56: 4a05 tstb %d5
4bd58: 6736 beqs 4bd90 <_Heap_Free+0x100>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd5a: 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;
4bd5e: d882 addl %d2,%d4
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bd60: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd62: 246a 000c moveal %a2@(12),%a2
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4bd66: 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;
4bd6a: 8084 orl %d4,%d0
new_block->prev = prev;
4bd6c: 214a 000c movel %a2,%a0@(12)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4bd70: 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;
4bd74: 2140 0004 movel %d0,%a0@(4)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4bd78: 7001 moveq #1,%d0
next->prev = new_block;
prev->next = new_block;
4bd7a: 2548 0008 movel %a0,%a2@(8)
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4bd7e: 2748 000c movel %a0,%a3@(12)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4bd82: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4bd86: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4bd8a: d5a9 0030 addl %d2,%a1@(48)
4bd8e: 60b4 bras 4bd44 <_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;
4bd90: 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;
4bd94: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4bd96: 7afe moveq #-2,%d5
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4bd98: 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;
4bd9a: 2669 0008 moveal %a1@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4bd9e: 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;
4bda2: 8282 orl %d2,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4bda4: 214b 0008 movel %a3,%a0@(8)
4bda8: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4bdac: cbaa 0004 andl %d5,%a2@(4)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
4bdb0: 2748 000c movel %a0,%a3@(12)
next_block->prev_size = block_size;
4bdb4: 2482 movel %d2,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4bdb6: 2348 0008 movel %a0,%a1@(8)
/* Statistics */
++stats->free_blocks;
4bdba: 2340 0038 movel %d0,%a1@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4bdbe: b0a9 003c cmpl %a1@(60),%d0
4bdc2: 6300 ff72 blsw 4bd36 <_Heap_Free+0xa6>
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4bdc6: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4bdca: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4bdce: 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;
4bdd2: 2340 003c movel %d0,%a1@(60)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4bdd6: 7001 moveq #1,%d0
4bdd8: 6000 ff6a braw 4bd44 <_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 ));
4bddc: 4205 clrb %d5 <== NOT EXECUTED
4bdde: 6000 ff12 braw 4bcf2 <_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;
4bde2: d682 addl %d2,%d3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bde4: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4bde6: 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;
4bde8: 8283 orl %d3,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4bdea: 2483 movel %d3,%a2@
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4bdec: 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;
4bdee: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4bdf2: cbaa 0004 andl %d5,%a2@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4bdf6: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4bdfa: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4bdfe: d5a9 0030 addl %d2,%a1@(48)
4be02: 6000 ff40 braw 4bd44 <_Heap_Free+0xb4>
...
0004bf9c <_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 )
{
4bf9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4bfa0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Heap_Statistics *const stats = &heap->stats;
/* Statistics */
++stats->used_blocks;
4bfa4: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED
--stats->frees;
4bfa8: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4bfac: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED
}
4bfb0: 4e5e unlk %fp <== NOT EXECUTED
/* Statistics */
++stats->used_blocks;
--stats->frees;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4bfb2: 4ef9 0004 c214 jmp 4c214 <_Heap_Free> <== NOT EXECUTED
000474ec <_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
)
{
474ec: 4e56 fff0 linkw %fp,#-16
474f0: 202e 0008 movel %fp@(8),%d0
474f4: 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 );
474f8: 2400 movel %d0,%d2
474fa: 5082 addql #8,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
474fc: 2a02 movel %d2,%d5
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
474fe: 222e 0010 movel %fp@(16),%d1
47502: 262e 000c movel %fp@(12),%d3
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
47506: 2043 moveal %d3,%a0
47508: d1c0 addal %d0,%a0
4750a: 4c41 5004 remul %d1,%d4,%d5
if ( remainder != 0 ) {
4750e: 4a84 tstl %d4
47510: 6704 beqs 47516 <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN
return value - remainder + alignment;
47512: d481 addl %d1,%d2 <== NOT EXECUTED
47514: 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 (
47516: b1c0 cmpal %d0,%a0
47518: 6532 bcss 4754c <_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);
4751a: 2042 moveal %d2,%a0
4751c: 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 =
4751e: 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
47520: b483 cmpl %d3,%d2
47522: 6428 bccs 4754c <_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 );
47524: 9682 subl %d2,%d3
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
47526: 2403 movel %d3,%d2
47528: 4c41 2000 remul %d1,%d0,%d2
4752c: 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
4752e: b6ae 0014 cmpl %fp@(20),%d3
47532: 6518 bcss 4754c <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
) {
/* Invalid area or area too small */
return false;
}
*first_block_ptr = first_block;
47534: 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);
47538: d688 addl %a0,%d3
4753a: 2288 movel %a0,%a1@
4753c: 226e 001c moveal %fp@(28),%a1
47540: 2283 movel %d3,%a1@
*last_block_ptr = last_block;
return true;
}
47542: 4cd7 003c moveml %sp@,%d2-%d5
}
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
47546: 7001 moveq #1,%d0
}
47548: 4e5e unlk %fp
4754a: 4e75 rts
4754c: 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;
47550: 4200 clrb %d0
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
}
47552: 4e5e unlk %fp <== NOT EXECUTED
00050e04 <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
50e04: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
50e08: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
50e0c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
50e10: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
50e14: 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;
50e18: 4292 clrl %a2@ <== NOT EXECUTED
info->largest = 0;
50e1a: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
info->total = 0;
50e1e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
for(the_block = _Heap_Free_list_first(the_heap);
50e22: b1cb cmpal %a3,%a0 <== NOT EXECUTED
50e24: 6734 beqs 50e5a <_Heap_Get_free_information+0x56><== NOT EXECUTED
50e26: 7401 moveq #1,%d2 <== NOT EXECUTED
50e28: 4283 clrl %d3 <== NOT EXECUTED
50e2a: 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;
50e2c: 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;
50e2e: 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)
50e30: 2802 movel %d2,%d4 <== NOT EXECUTED
50e32: 5284 addql #1,%d4 <== NOT EXECUTED
50e34: 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;
50e38: d280 addl %d0,%d1 <== NOT EXECUTED
info->number = 0;
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
50e3a: 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 )
50e3c: b680 cmpl %d0,%d3 <== NOT EXECUTED
50e3e: 6404 bccs 50e44 <_Heap_Get_free_information+0x40><== NOT EXECUTED
info->largest = the_size;
50e40: 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)
50e44: 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);
50e48: b1cb cmpal %a3,%a0 <== NOT EXECUTED
50e4a: 6708 beqs 50e54 <_Heap_Get_free_information+0x50><== NOT EXECUTED
50e4c: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
50e50: 2404 movel %d4,%d2 <== NOT EXECUTED
50e52: 60d8 bras 50e2c <_Heap_Get_free_information+0x28><== NOT EXECUTED
50e54: 2482 movel %d2,%a2@ <== NOT EXECUTED
50e56: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
50e5a: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3 <== NOT EXECUTED
50e5e: 4e5e unlk %fp <== NOT EXECUTED
...
0004c900 <_Heap_Get_information>:
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
4c900: 4e56 fff0 linkw %fp,#-16
4c904: 48d7 041c moveml %d2-%d4/%a2,%sp@
4c908: 246e 0008 moveal %fp@(8),%a2
4c90c: 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));
4c910: 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;
4c912: 226a 0020 moveal %a2@(32),%a1
Heap_Block *const end = the_heap->last_block;
4c916: 242a 0024 movel %a2@(36),%d2
memset(the_info, 0, sizeof(*the_info));
4c91a: 4298 clrl %a0@+
4c91c: 4298 clrl %a0@+
4c91e: 4298 clrl %a0@+
4c920: 4298 clrl %a0@+
4c922: 4298 clrl %a0@+
4c924: 4290 clrl %a0@
while ( the_block != end ) {
4c926: b489 cmpl %a1,%d2
4c928: 6734 beqs 4c95e <_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;
4c92a: 2604 movel %d4,%d3
4c92c: 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 ) {
4c932: 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;
4c936: 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;
4c938: 2043 moveal %d3,%a0
4c93a: 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);
4c93c: d3c0 addal %d0,%a1
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4c93e: 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) )
4c942: 0801 0000 btst #0,%d1
4c946: 6602 bnes 4c94a <_Heap_Get_information+0x4a>
info = &the_info->Used;
else
info = &the_info->Free;
4c948: 2044 moveal %d4,%a0
info->number++;
4c94a: 5290 addql #1,%a0@
info->total += the_size;
4c94c: d1a8 0008 addl %d0,%a0@(8)
if ( info->largest < the_size )
4c950: b0a8 0004 cmpl %a0@(4),%d0
4c954: 6304 blss 4c95a <_Heap_Get_information+0x5a>
info->largest = the_size;
4c956: 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 ) {
4c95a: b3c2 cmpal %d2,%a1
4c95c: 66d8 bnes 4c936 <_Heap_Get_information+0x36>
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4c95e: 4cd7 041c moveml %sp@,%d2-%d4/%a2
4c962: 4e5e unlk %fp
...
00047556 <_Heap_Initialize>:
Heap_Control *heap,
void *heap_area_begin_ptr,
uintptr_t heap_area_size,
uintptr_t page_size
)
{
47556: 4e56 ffe0 linkw %fp,#-32
4755a: 48d7 047c moveml %d2-%d6/%a2,%sp@
4755e: 246e 0008 moveal %fp@(8),%a2
47562: 282e 000c movel %fp@(12),%d4
47566: 2a2e 0010 movel %fp@(16),%d5
4756a: 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;
4756e: 42ae fffc clrl %fp@(-4)
Heap_Block *last_block = NULL;
47572: 42ae fff8 clrl %fp@(-8)
if ( page_size == 0 ) {
47576: 4a82 tstl %d2
47578: 6750 beqs 475ca <_Heap_Initialize+0x74> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4757a: 7003 moveq #3,%d0
4757c: c082 andl %d2,%d0
if ( remainder != 0 ) {
4757e: 6704 beqs 47584 <_Heap_Initialize+0x2e> <== ALWAYS TAKEN
return value - remainder + alignment;
47580: 5882 addql #4,%d2 <== NOT EXECUTED
47582: 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 ) {
47584: 7003 moveq #3,%d0
47586: b082 cmpl %d2,%d0
47588: 6434 bccs 475be <_Heap_Initialize+0x68> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4758a: 7210 moveq #16,%d1
4758c: 4c42 1000 remul %d2,%d0,%d1
if ( remainder != 0 ) {
47590: 4a80 tstl %d0
47592: 6700 00e8 beqw 4767c <_Heap_Initialize+0x126>
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
47596: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
return value - remainder + alignment;
4759a: 2602 movel %d2,%d3 <== NOT EXECUTED
4759c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
475a0: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
475a6: 9680 subl %d0,%d3 <== NOT EXECUTED
475a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
475aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
475ac: 2f05 movel %d5,%sp@- <== NOT EXECUTED
475ae: 2f04 movel %d4,%sp@- <== NOT EXECUTED
475b0: 4eb9 0004 74ec jsr 474ec <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
475b6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
475ba: 4a00 tstb %d0 <== NOT EXECUTED
475bc: 662e bnes 475ec <_Heap_Initialize+0x96> <== NOT EXECUTED
return 0;
475be: 4280 clrl %d0
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
475c0: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2
475c6: 4e5e unlk %fp
475c8: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
475ca: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
} else {
return value;
475ce: 7610 moveq #16,%d3 <== NOT EXECUTED
475d0: 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;
475d4: 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(
475d6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
475d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
475da: 2f05 movel %d5,%sp@- <== NOT EXECUTED
475dc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
475de: 4eb9 0004 74ec jsr 474ec <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
475e4: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
475e8: 4a00 tstb %d0 <== NOT EXECUTED
475ea: 67d2 beqs 475be <_Heap_Initialize+0x68> <== NOT EXECUTED
return 0;
}
memset(heap, 0, sizeof(*heap));
475ec: 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;
475f0: da84 addl %d4,%d5
);
if ( !area_ok ) {
return 0;
}
memset(heap, 0, sizeof(*heap));
475f2: 42a7 clrl %sp@-
475f4: 2f0a movel %a2,%sp@-
475f6: 4eb9 0004 e178 jsr 4e178 <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++;
475fc: 2239 0005 e5f0 movel 5e5f0 <instance>,%d1
47602: 2c01 movel %d1,%d6
47604: 5286 addql #1,%d6
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
47606: 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;
4760a: 226e fff8 moveal %fp@(-8),%a1
first_block_size = last_block_begin - first_block_begin;
4760e: 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;
47610: 206e fffc moveal %fp@(-4),%a0
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
47614: 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++;
47616: 23c6 0005 e5f0 movel %d6,5e5f0 <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;
4761c: 7c01 moveq #1,%d6
4761e: 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;
47620: 2085 movel %d5,%a0@
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
47622: 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;
47626: 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 );
47628: 214a 0008 movel %a2,%a0@(8)
first_block->prev = _Heap_Free_list_head( heap );
4762c: 214a 000c movel %a2,%a0@(12)
_Heap_Protection_block_initialize( heap, first_block );
/* Heap control */
heap->page_size = page_size;
47630: 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(
47634: 2408 movel %a0,%d2
47636: 9489 subl %a1,%d2
heap->min_block_size = min_block_size;
47638: 2543 0014 movel %d3,%a2@(20)
heap->area_begin = heap_area_begin;
4763c: 2544 0018 movel %d4,%a2@(24)
heap->area_end = heap_area_end;
47640: 2545 001c movel %d5,%a2@(28)
heap->first_block = first_block;
47644: 2548 0020 movel %a0,%a2@(32)
heap->last_block = last_block;
47648: 2549 0024 movel %a1,%a2@(36)
4764c: 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;
47650: 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;
47652: 2548 0008 movel %a0,%a2@(8)
_Heap_Free_list_tail( heap )->prev = first_block;
47656: 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;
4765a: 2540 002c movel %d0,%a2@(44)
stats->free_size = first_block_size;
4765e: 2540 0030 movel %d0,%a2@(48)
stats->min_free_size = first_block_size;
47662: 2540 0034 movel %d0,%a2@(52)
stats->free_blocks = 1;
47666: 2546 0038 movel %d6,%a2@(56)
stats->max_free_blocks = 1;
4766a: 2546 003c movel %d6,%a2@(60)
stats->instance = instance++;
4766e: 2541 0028 movel %d1,%a2@(40)
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47672: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2
47678: 4e5e unlk %fp
4767a: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4767c: 486e fff8 pea %fp@(-8)
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
47680: 7610 moveq #16,%d3
47682: 486e fffc pea %fp@(-4)
47686: 2f03 movel %d3,%sp@-
47688: 2f02 movel %d2,%sp@-
4768a: 2f05 movel %d5,%sp@-
4768c: 2f04 movel %d4,%sp@-
4768e: 4eb9 0004 74ec jsr 474ec <_Heap_Get_first_and_last_block>
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
47694: 4fef 0018 lea %sp@(24),%sp
47698: 4a00 tstb %d0
4769a: 6700 ff22 beqw 475be <_Heap_Initialize+0x68>
4769e: 6000 ff4c braw 475ec <_Heap_Initialize+0x96>
0005ba98 <_Heap_Resize_block>:
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5ba98: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5ba9c: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
5baa0: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
5baa4: 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);
5baa8: 2202 movel %d2,%d1 <== NOT EXECUTED
5baaa: 2042 moveal %d2,%a0 <== NOT EXECUTED
5baac: 5188 subql #8,%a0 <== NOT EXECUTED
5baae: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5bab2: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED
5bab8: 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);
5babc: 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;
5babe: 4291 clrl %a1@ <== NOT EXECUTED
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5bac0: 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;
5bac4: 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;
5bac6: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
5baca: 6500 0098 bcsw 5bb64 <_Heap_Resize_block+0xcc> <== NOT EXECUTED
5bace: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED
5bad2: 6200 0090 bhiw 5bb64 <_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;
5bad6: 76fe moveq #-2,%d3 <== NOT EXECUTED
5bad8: 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;
5bada: 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;
5badc: 7204 moveq #4,%d1 <== NOT EXECUTED
5bade: 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;
5bae0: 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;
5bae4: 49f0 3800 lea %a0@(00000000,%d3:l),%a4 <== NOT EXECUTED
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5bae8: d28c addl %a4,%d1 <== NOT EXECUTED
5baea: 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;
5baee: 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;
5baf2: 2281 movel %d1,%a1@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_free(
const Heap_Block *block
)
{
return !_Heap_Is_used( block );
5baf4: 4a85 tstl %d5 <== NOT EXECUTED
5baf6: 57c5 seq %d5 <== NOT EXECUTED
5baf8: 4485 negl %d5 <== NOT EXECUTED
if ( next_block_is_free ) {
5bafa: 4a05 tstb %d5 <== NOT EXECUTED
5bafc: 6672 bnes 5bb70 <_Heap_Resize_block+0xd8> <== NOT EXECUTED
block_size += next_block_size;
alloc_size += next_block_size;
}
if ( new_alloc_size > alloc_size ) {
5bafe: b280 cmpl %d0,%d1 <== NOT EXECUTED
5bb00: 6576 bcss 5bb78 <_Heap_Resize_block+0xe0> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
}
if ( next_block_is_free ) {
5bb02: 4a05 tstb %d5 <== NOT EXECUTED
5bb04: 672a beqs 5bb30 <_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;
5bb06: 7201 moveq #1,%d1 <== NOT EXECUTED
5bb08: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5bb0c: 226c 0008 moveal %a4@(8),%a1 <== NOT EXECUTED
block->size_and_flag = size | flag;
5bb10: 8283 orl %d3,%d1 <== NOT EXECUTED
5bb12: 286c 000c moveal %a4@(12),%a4 <== NOT EXECUTED
5bb16: 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;
5bb1a: 7201 moveq #1,%d1 <== NOT EXECUTED
5bb1c: 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;
5bb20: 2949 0008 movel %a1,%a4@(8) <== NOT EXECUTED
next->prev = prev;
5bb24: 234c 000c movel %a4,%a1@(12) <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
5bb28: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED
stats->free_size -= next_block_size;
5bb2c: 99aa 0030 subl %d4,%a2@(48) <== NOT EXECUTED
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5bb30: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5bb32: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5bb34: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5bb36: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5bb38: 4eb9 0004 76a2 jsr 476a2 <_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;
5bb3e: 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;
5bb42: 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 );
5bb44: 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;
5bb46: 2240 moveal %d0,%a1 <== NOT EXECUTED
5bb48: 93c2 subal %d2,%a1 <== NOT EXECUTED
/* Statistics */
++stats->resizes;
return HEAP_RESIZE_SUCCESSFUL;
5bb4a: 4280 clrl %d0 <== NOT EXECUTED
5bb4c: 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;
5bb50: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED
5bb54: 2689 movel %a1,%a3@ <== NOT EXECUTED
/* Statistics */
++stats->resizes;
5bb56: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5bb5a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5bb60: 4e5e unlk %fp <== NOT EXECUTED
5bb62: 4e75 rts <== NOT EXECUTED
new_alloc_size,
old_size,
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
5bb64: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
5bb66: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5bb6c: 4e5e unlk %fp <== NOT EXECUTED
5bb6e: 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;
5bb70: d684 addl %d4,%d3 <== NOT EXECUTED
alloc_size += next_block_size;
5bb72: d284 addl %d4,%d1 <== NOT EXECUTED
}
if ( new_alloc_size > alloc_size ) {
5bb74: b280 cmpl %d0,%d1 <== NOT EXECUTED
5bb76: 648a bccs 5bb02 <_Heap_Resize_block+0x6a> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
5bb78: 7001 moveq #1,%d0 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5bb7a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5bb80: 4e5e unlk %fp <== NOT EXECUTED
0005bb84 <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5bb84: 4e56 0000 linkw %fp,#0
5bb88: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5bb8c: 2040 moveal %d0,%a0
5bb8e: 5188 subql #8,%a0
5bb90: 226e 0008 moveal %fp@(8),%a1
5bb94: 2f02 movel %d2,%sp@-
5bb96: 2400 movel %d0,%d2
5bb98: 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);
5bb9e: 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
5bba0: 2229 0020 movel %a1@(32),%d1
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5bba4: b288 cmpl %a0,%d1
5bba6: 6236 bhis 5bbde <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5bba8: 2269 0024 moveal %a1@(36),%a1
5bbac: b3c8 cmpal %a0,%a1
5bbae: 652e bcss 5bbde <_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;
5bbb0: 74fe moveq #-2,%d2
5bbb2: 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);
5bbb6: 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;
5bbb8: b1c1 cmpal %d1,%a0
5bbba: 6522 bcss 5bbde <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5bbbc: b1c9 cmpal %a1,%a0
5bbbe: 621e bhis 5bbde <_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;
5bbc0: 7201 moveq #1,%d1
5bbc2: 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 )
5bbc6: 6716 beqs 5bbde <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5bbc8: 7204 moveq #4,%d1
5bbca: 9280 subl %d0,%d1
5bbcc: 2001 movel %d1,%d0
5bbce: d088 addl %a0,%d0
5bbd0: 226e 0010 moveal %fp@(16),%a1
return true;
}
5bbd4: 241f movel %sp@+,%d2
5bbd6: 4e5e unlk %fp
|| !_Heap_Is_prev_used( next_block )
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5bbd8: 2280 movel %d0,%a1@
return true;
5bbda: 7001 moveq #1,%d0
}
5bbdc: 4e75 rts
5bbde: 241f movel %sp@+,%d2 <== NOT EXECUTED
5bbe0: 4e5e unlk %fp <== NOT EXECUTED
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
) {
return false;
5bbe2: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
...
000481d2 <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
481d2: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
481d6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
481da: 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;
481de: 4bfa ff94 lea %pc@(48174 <_Heap_Walk_print_nothing>),%a5<== NOT EXECUTED
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
481e2: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
uintptr_t const page_size = heap->page_size;
481e6: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
481ea: 2c2a 0014 movel %a2@(20),%d6 <== NOT EXECUTED
Heap_Block *const first_block = heap->first_block;
481ee: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
Heap_Block *const last_block = heap->last_block;
481f2: 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;
481f6: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED
481fa: 6704 beqs 48200 <_Heap_Walk+0x2e> <== NOT EXECUTED
481fc: 4bfa ff7e lea %pc@(4817c <_Heap_Walk_print>),%a5 <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
48200: 7003 moveq #3,%d0 <== NOT EXECUTED
48202: b0b9 0006 1478 cmpl 61478 <_System_state_Current>,%d0 <== NOT EXECUTED
48208: 670c beqs 48216 <_Heap_Walk+0x44> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4820a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
block = next_block;
} while ( block != first_block );
return true;
48210: 7001 moveq #1,%d0 <== NOT EXECUTED
}
48212: 4e5e unlk %fp <== NOT EXECUTED
48214: 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)(
48216: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4821a: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
4821e: 2f07 movel %d7,%sp@- <== NOT EXECUTED
48220: 2f04 movel %d4,%sp@- <== NOT EXECUTED
48222: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED
48226: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
4822a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4822c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4822e: 4879 0005 d95b pea 5d95b <_Status_Object_name_errors_to_status+0x5d><== NOT EXECUTED
48234: 42a7 clrl %sp@- <== NOT EXECUTED
48236: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48238: 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 ) {
4823a: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
4823e: 4a83 tstl %d3 <== NOT EXECUTED
48240: 6700 0082 beqw 482c4 <_Heap_Walk+0xf2> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
48244: 7003 moveq #3,%d0 <== NOT EXECUTED
48246: c083 andl %d3,%d0 <== NOT EXECUTED
(*printer)( source, true, "page size is zero\n" );
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
48248: 6600 0090 bnew 482da <_Heap_Walk+0x108> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4824c: 2206 movel %d6,%d1 <== NOT EXECUTED
4824e: 4c43 1000 remul %d3,%d0,%d1 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
48252: 4a80 tstl %d0 <== NOT EXECUTED
48254: 6600 00a4 bnew 482fa <_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;
48258: 2004 movel %d4,%d0 <== NOT EXECUTED
4825a: 5080 addql #8,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4825c: 4c43 0001 remul %d3,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if (
48260: 4a81 tstl %d1 <== NOT EXECUTED
48262: 6600 00ae bnew 48312 <_Heap_Walk+0x140> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48266: 2044 moveal %d4,%a0 <== NOT EXECUTED
48268: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
4826c: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
48270: 0801 0000 btst #0,%d1 <== NOT EXECUTED
48274: 6700 0188 beqw 483fe <_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;
48278: 2047 moveal %d7,%a0 <== NOT EXECUTED
4827a: 72fe moveq #-2,%d1 <== NOT EXECUTED
4827c: 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);
48280: 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;
48282: 7201 moveq #1,%d1 <== NOT EXECUTED
48284: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
48288: 6724 beqs 482ae <_Heap_Walk+0xdc> <== NOT EXECUTED
);
return false;
}
if (
4828a: b1c4 cmpal %d4,%a0 <== NOT EXECUTED
4828c: 6700 009c beqw 4832a <_Heap_Walk+0x158> <== NOT EXECUTED
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48290: 4879 0005 dab5 pea 5dab5 <_Status_Object_name_errors_to_status+0x1b7><== NOT EXECUTED
48296: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4829a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4829c: 4e95 jsr %a5@ <== NOT EXECUTED
4829e: 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;
482a2: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482a4: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
482aa: 4e5e unlk %fp <== NOT EXECUTED
482ac: 4e75 rts <== NOT EXECUTED
return false;
}
if ( _Heap_Is_free( last_block ) ) {
(*printer)(
482ae: 4879 0005 daa0 pea 5daa0 <_Status_Object_name_errors_to_status+0x1a2><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
482b4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
482b8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
482ba: 4e95 jsr %a5@ <== NOT EXECUTED
482bc: 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;
482c0: 4200 clrb %d0 <== NOT EXECUTED
482c2: 60e0 bras 482a4 <_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" );
482c4: 4879 0005 d9ec pea 5d9ec <_Status_Object_name_errors_to_status+0xee><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
482ca: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
482ce: 2f05 movel %d5,%sp@- <== NOT EXECUTED
482d0: 4e95 jsr %a5@ <== NOT EXECUTED
482d2: 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;
482d6: 4200 clrb %d0 <== NOT EXECUTED
482d8: 60ca bras 482a4 <_Heap_Walk+0xd2> <== NOT EXECUTED
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
(*printer)(
482da: 2f03 movel %d3,%sp@- <== NOT EXECUTED
482dc: 4879 0005 d9ff pea 5d9ff <_Status_Object_name_errors_to_status+0x101><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
482e2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
482e6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
482e8: 4e95 jsr %a5@ <== NOT EXECUTED
482ea: 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;
482ee: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482f0: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
482f6: 4e5e unlk %fp <== NOT EXECUTED
482f8: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
(*printer)(
482fa: 2f06 movel %d6,%sp@- <== NOT EXECUTED
482fc: 4879 0005 da1d pea 5da1d <_Status_Object_name_errors_to_status+0x11f><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48302: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48306: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48308: 4e95 jsr %a5@ <== NOT EXECUTED
4830a: 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;
4830e: 4200 clrb %d0 <== NOT EXECUTED
48310: 60de bras 482f0 <_Heap_Walk+0x11e> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
48312: 2f04 movel %d4,%sp@- <== NOT EXECUTED
48314: 4879 0005 da41 pea 5da41 <_Status_Object_name_errors_to_status+0x143><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4831a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4831e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48320: 4e95 jsr %a5@ <== NOT EXECUTED
48322: 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;
48326: 4200 clrb %d0 <== NOT EXECUTED
48328: 60c6 bras 482f0 <_Heap_Walk+0x11e> <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
4832a: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4832e: 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;
48332: 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 ) {
48336: b3ca cmpal %a2,%a1 <== NOT EXECUTED
48338: 6700 034e beqw 48688 <_Heap_Walk+0x4b6> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4833c: 242a 0020 movel %a2@(32),%d2 <== NOT EXECUTED
48340: 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;
48344: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
48346: 6500 009a bcsw 483e2 <_Heap_Walk+0x210> <== NOT EXECUTED
4834a: 286a 0024 moveal %a2@(36),%a4 <== NOT EXECUTED
4834e: b3cc cmpal %a4,%a1 <== NOT EXECUTED
48350: 6200 0090 bhiw 483e2 <_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;
48354: 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;
48358: 200b movel %a3,%d0 <== NOT EXECUTED
4835a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4835e: 4c41 0002 remul %d1,%d2,%d0 <== NOT EXECUTED
);
return false;
}
if (
48362: 4a82 tstl %d2 <== NOT EXECUTED
48364: 6600 00b0 bnew 48416 <_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;
48368: 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;
4836a: 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;
4836c: 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;
48370: c0b1 2804 andl %a1@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48374: 6600 0304 bnew 4867a <_Heap_Walk+0x4a8> <== NOT EXECUTED
48378: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4837c: 240a movel %a2,%d2 <== NOT EXECUTED
4837e: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
48382: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
48386: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
);
return false;
}
if ( free_block->prev != prev_block ) {
4838a: 2069 000c moveal %a1@(12),%a0 <== NOT EXECUTED
4838e: b488 cmpl %a0,%d2 <== NOT EXECUTED
48390: 6600 02cc bnew 4865e <_Heap_Walk+0x48c> <== NOT EXECUTED
return false;
}
prev_block = free_block;
free_block = free_block->next;
48394: 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 ) {
48398: b1ca cmpal %a2,%a0 <== NOT EXECUTED
4839a: 6700 0096 beqw 48432 <_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;
4839e: b1c1 cmpal %d1,%a0 <== NOT EXECUTED
483a0: 6542 bcss 483e4 <_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;
483a2: 2608 movel %a0,%d3 <== NOT EXECUTED
483a4: 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;
483a6: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
483a8: 653a bcss 483e4 <_Heap_Walk+0x212> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
483aa: 282e fffc movel %fp@(-4),%d4 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
483ae: 2409 movel %a1,%d2 <== NOT EXECUTED
483b0: 2248 moveal %a0,%a1 <== NOT EXECUTED
483b2: 4c44 3000 remul %d4,%d0,%d3 <== NOT EXECUTED
);
return false;
}
if (
483b6: 4a80 tstl %d0 <== NOT EXECUTED
483b8: 665e bnes 48418 <_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;
483ba: 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;
483bc: 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;
483be: 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;
483c2: c6b0 0804 andl %a0@(00000004,%d0:l),%d3 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
483c6: 67c2 beqs 4838a <_Heap_Walk+0x1b8> <== NOT EXECUTED
(*printer)(
483c8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
483ca: 4879 0005 db34 pea 5db34 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
483d0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
483d4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
483d6: 4e95 jsr %a5@ <== NOT EXECUTED
483d8: 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;
483dc: 4200 clrb %d0 <== NOT EXECUTED
483de: 6000 ff10 braw 482f0 <_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;
483e2: 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)(
483e4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
483e6: 4879 0005 dae4 pea 5dae4 <_Status_Object_name_errors_to_status+0x1e6><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
483ec: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
483f0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
483f2: 4e95 jsr %a5@ <== NOT EXECUTED
483f4: 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;
483f8: 4200 clrb %d0 <== NOT EXECUTED
483fa: 6000 fef4 braw 482f0 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
(*printer)(
483fe: 4879 0005 da72 pea 5da72 <_Status_Object_name_errors_to_status+0x174><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48404: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48408: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4840a: 4e95 jsr %a5@ <== NOT EXECUTED
4840c: 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;
48410: 4200 clrb %d0 <== NOT EXECUTED
48412: 6000 fe90 braw 482a4 <_Heap_Walk+0xd2> <== NOT EXECUTED
);
return false;
}
if (
48416: 2049 moveal %a1,%a0 <== NOT EXECUTED
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
48418: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4841a: 4879 0005 db04 pea 5db04 <_Status_Object_name_errors_to_status+0x206><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48420: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48424: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48426: 4e95 jsr %a5@ <== NOT EXECUTED
48428: 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;
4842c: 4200 clrb %d0 <== NOT EXECUTED
4842e: 6000 fec0 braw 482f0 <_Heap_Walk+0x11e> <== NOT EXECUTED
48432: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
48436: 282e fff0 movel %fp@(-16),%d4 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4843a: 2844 moveal %d4,%a4 <== NOT EXECUTED
4843c: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
48440: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
48444: 2d4b ffec movel %a3,%fp@(-20) <== NOT EXECUTED
48448: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
4844c: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED
48450: 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;
48454: 74fe moveq #-2,%d2 <== NOT EXECUTED
48456: 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);
48458: 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;
4845c: b7c1 cmpal %d1,%a3 <== NOT EXECUTED
4845e: 657e bcss 484de <_Heap_Walk+0x30c> <== NOT EXECUTED
48460: b7ea 0024 cmpal %a2@(36),%a3 <== NOT EXECUTED
48464: 6278 bhis 484de <_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;
48466: b9ee fff0 cmpal %fp@(-16),%a4 <== NOT EXECUTED
4846a: 56c7 sne %d7 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4846c: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
48470: 2002 movel %d2,%d0 <== NOT EXECUTED
48472: 3247 moveaw %d7,%a1 <== NOT EXECUTED
48474: 4c41 0007 remul %d1,%d7,%d0 <== NOT EXECUTED
48478: 2009 movel %a1,%d0 <== NOT EXECUTED
4847a: 4480 negl %d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
4847c: 4a87 tstl %d7 <== NOT EXECUTED
4847e: 6704 beqs 48484 <_Heap_Walk+0x2b2> <== NOT EXECUTED
48480: 4a00 tstb %d0 <== NOT EXECUTED
48482: 667c bnes 48500 <_Heap_Walk+0x32e> <== NOT EXECUTED
);
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
48484: b486 cmpl %d6,%d2 <== NOT EXECUTED
48486: 6406 bccs 4848e <_Heap_Walk+0x2bc> <== NOT EXECUTED
48488: 4a00 tstb %d0 <== NOT EXECUTED
4848a: 6600 008e bnew 4851a <_Heap_Walk+0x348> <== NOT EXECUTED
);
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
4848e: b7cc cmpal %a4,%a3 <== NOT EXECUTED
48490: 6206 bhis 48498 <_Heap_Walk+0x2c6> <== NOT EXECUTED
48492: 4a00 tstb %d0 <== NOT EXECUTED
48494: 6600 00a8 bnew 4853e <_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;
48498: 7001 moveq #1,%d0 <== NOT EXECUTED
4849a: 7201 moveq #1,%d1 <== NOT EXECUTED
4849c: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
484a0: c681 andl %d1,%d3 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
484a2: 4a80 tstl %d0 <== NOT EXECUTED
484a4: 6700 00cc beqw 48572 <_Heap_Walk+0x3a0> <== NOT EXECUTED
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
484a8: 4a83 tstl %d3 <== NOT EXECUTED
484aa: 6700 00ac beqw 48558 <_Heap_Walk+0x386> <== NOT EXECUTED
(*printer)(
484ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
484b0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
484b2: 4879 0005 dcd9 pea 5dcd9 <_Status_Object_name_errors_to_status+0x3db><== NOT EXECUTED
484b8: 42a7 clrl %sp@- <== NOT EXECUTED
484ba: 2f05 movel %d5,%sp@- <== NOT EXECUTED
484bc: 4e95 jsr %a5@ <== NOT EXECUTED
484be: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
484c2: b7c4 cmpal %d4,%a3 <== NOT EXECUTED
484c4: 6700 fd44 beqw 4820a <_Heap_Walk+0x38> <== NOT EXECUTED
484c8: 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;
484cc: 74fe moveq #-2,%d2 <== NOT EXECUTED
484ce: 284b moveal %a3,%a4 <== NOT EXECUTED
484d0: c483 andl %d3,%d2 <== NOT EXECUTED
484d2: 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);
484d6: 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;
484da: b7c1 cmpal %d1,%a3 <== NOT EXECUTED
484dc: 6482 bccs 48460 <_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)(
484de: 2f0b movel %a3,%sp@- <== NOT EXECUTED
484e0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
484e2: 4879 0005 db82 pea 5db82 <_Status_Object_name_errors_to_status+0x284><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
484e8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
484ec: 2f05 movel %d5,%sp@- <== NOT EXECUTED
484ee: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
484f0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
484f4: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
484f6: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
484fc: 4e5e unlk %fp <== NOT EXECUTED
484fe: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
48500: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48502: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48504: 4879 0005 dbaf pea 5dbaf <_Status_Object_name_errors_to_status+0x2b1><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
4850a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4850e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48510: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48512: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48516: 4200 clrb %d0 <== NOT EXECUTED
48518: 60dc bras 484f6 <_Heap_Walk+0x324> <== NOT EXECUTED
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
(*printer)(
4851a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4851c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4851e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48520: 4879 0005 dbdd pea 5dbdd <_Status_Object_name_errors_to_status+0x2df><== NOT EXECUTED
48526: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4852a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4852c: 4e95 jsr %a5@ <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
4852e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48532: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
48538: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4853a: 4e5e unlk %fp <== NOT EXECUTED
4853c: 4e75 rts <== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
4853e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48540: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48542: 4879 0005 dc08 pea 5dc08 <_Status_Object_name_errors_to_status+0x30a><== NOT EXECUTED
48548: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4854c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4854e: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48550: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48554: 4200 clrb %d0 <== NOT EXECUTED
48556: 609e bras 484f6 <_Heap_Walk+0x324> <== NOT EXECUTED
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
48558: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
4855a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4855c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4855e: 4879 0005 dcf0 pea 5dcf0 <_Status_Object_name_errors_to_status+0x3f2><== NOT EXECUTED
48564: 42a7 clrl %sp@- <== NOT EXECUTED
48566: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48568: 4e95 jsr %a5@ <== NOT EXECUTED
4856a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4856e: 6000 ff52 braw 484c2 <_Heap_Walk+0x2f0> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48572: 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)(
48576: 43f9 0005 d928 lea 5d928 <_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 ?
4857c: 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)(
48580: b2aa 000c cmpl %a2@(12),%d1 <== NOT EXECUTED
48584: 670a beqs 48590 <_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)" : "")
48586: 43f9 0005 d870 lea 5d870 <rtems_filesystem_default_pathconf+0xb4>,%a1<== NOT EXECUTED
4858c: b28a cmpl %a2,%d1 <== NOT EXECUTED
4858e: 6764 beqs 485f4 <_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 ?
48590: 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)(
48594: 41f9 0005 d941 lea 5d941 <_Status_Object_name_errors_to_status+0x43>,%a0<== NOT EXECUTED
4859a: b087 cmpl %d7,%d0 <== NOT EXECUTED
4859c: 670a beqs 485a8 <_Heap_Walk+0x3d6> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
4859e: 41f9 0005 d870 lea 5d870 <rtems_filesystem_default_pathconf+0xb4>,%a0<== NOT EXECUTED
485a4: b08a cmpl %a2,%d0 <== NOT EXECUTED
485a6: 6754 beqs 485fc <_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)(
485a8: 2f09 movel %a1,%sp@- <== NOT EXECUTED
485aa: 2f01 movel %d1,%sp@- <== NOT EXECUTED
485ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED
485ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
485b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
485b2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
485b4: 4879 0005 dc3c pea 5dc3c <_Status_Object_name_errors_to_status+0x33e><== NOT EXECUTED
485ba: 42a7 clrl %sp@- <== NOT EXECUTED
485bc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
485be: 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 ) {
485c0: 2213 movel %a3@,%d1 <== NOT EXECUTED
485c2: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
485c6: b282 cmpl %d2,%d1 <== NOT EXECUTED
485c8: 663a bnes 48604 <_Heap_Walk+0x432> <== NOT EXECUTED
);
return false;
}
if ( !prev_used ) {
485ca: 4a83 tstl %d3 <== NOT EXECUTED
485cc: 6776 beqs 48644 <_Heap_Walk+0x472> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485ce: 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 ) {
485d2: b1ca cmpal %a2,%a0 <== NOT EXECUTED
485d4: 6754 beqs 4862a <_Heap_Walk+0x458> <== NOT EXECUTED
if ( free_block == block ) {
485d6: b1cc cmpal %a4,%a0 <== NOT EXECUTED
485d8: 6700 fee8 beqw 484c2 <_Heap_Walk+0x2f0> <== NOT EXECUTED
485dc: 2e2e fff0 movel %fp@(-16),%d7 <== NOT EXECUTED
return true;
}
free_block = free_block->next;
485e0: 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 ) {
485e4: b1ca cmpal %a2,%a0 <== NOT EXECUTED
485e6: 6742 beqs 4862a <_Heap_Walk+0x458> <== NOT EXECUTED
if ( free_block == block ) {
485e8: b1cc cmpal %a4,%a0 <== NOT EXECUTED
485ea: 66f4 bnes 485e0 <_Heap_Walk+0x40e> <== NOT EXECUTED
485ec: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED
485f0: 6000 fed0 braw 484c2 <_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)" : "")
485f4: 43f9 0005 d937 lea 5d937 <_Status_Object_name_errors_to_status+0x39>,%a1<== NOT EXECUTED
485fa: 6094 bras 48590 <_Heap_Walk+0x3be> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
485fc: 41f9 0005 d951 lea 5d951 <_Status_Object_name_errors_to_status+0x53>,%a0<== NOT EXECUTED
48602: 60a4 bras 485a8 <_Heap_Walk+0x3d6> <== NOT EXECUTED
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
(*printer)(
48604: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48606: 2f01 movel %d1,%sp@- <== NOT EXECUTED
48608: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4860a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4860c: 4879 0005 dc71 pea 5dc71 <_Status_Object_name_errors_to_status+0x373><== NOT EXECUTED
48612: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48616: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48618: 4e95 jsr %a5@ <== NOT EXECUTED
4861a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4861e: 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;
48624: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48626: 4e5e unlk %fp <== NOT EXECUTED
48628: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4862a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4862c: 4879 0005 dd15 pea 5dd15 <_Status_Object_name_errors_to_status+0x417><== NOT EXECUTED
48632: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48636: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48638: 4e95 jsr %a5@ <== NOT EXECUTED
4863a: 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;
4863e: 4200 clrb %d0 <== NOT EXECUTED
48640: 6000 fcae braw 482f0 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !prev_used ) {
(*printer)(
48644: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48646: 4879 0005 dcaa pea 5dcaa <_Status_Object_name_errors_to_status+0x3ac><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4864c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48650: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48652: 4e95 jsr %a5@ <== NOT EXECUTED
48654: 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;
48658: 4200 clrb %d0 <== NOT EXECUTED
4865a: 6000 fc94 braw 482f0 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( free_block->prev != prev_block ) {
(*printer)(
4865e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48660: 2f09 movel %a1,%sp@- <== NOT EXECUTED
48662: 4879 0005 db50 pea 5db50 <_Status_Object_name_errors_to_status+0x252><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48668: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4866c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4866e: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48670: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48674: 4200 clrb %d0 <== NOT EXECUTED
48676: 6000 fe7e braw 484f6 <_Heap_Walk+0x324> <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4867a: 2049 moveal %a1,%a0 <== NOT EXECUTED
(*printer)(
4867c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4867e: 4879 0005 db34 pea 5db34 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
48684: 6000 fd4a braw 483d0 <_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 ) {
48688: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
4868c: 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 ) {
4868e: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48692: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
48696: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
4869a: 262e ffec movel %fp@(-20),%d3 <== NOT EXECUTED
4869e: 2d47 fff0 movel %d7,%fp@(-16) <== NOT EXECUTED
486a2: 6000 fdb0 braw 48454 <_Heap_Walk+0x282> <== NOT EXECUTED
...
0004817c <_Heap_Walk_print>:
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
4817c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48180: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
va_list ap;
if ( error ) {
48184: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED
48188: 6624 bnes 481ae <_Heap_Walk_print+0x32> <== NOT EXECUTED
printk( "FAIL[%d]: ", source );
} else {
printk( "PASS[%d]: ", source );
4818a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4818c: 4879 0005 d91d pea 5d91d <_Status_Object_name_errors_to_status+0x1f><== NOT EXECUTED
48192: 4eb9 0004 42a0 jsr 442a0 <printk> <== NOT EXECUTED
48198: 508f addql #8,%sp <== NOT EXECUTED
}
va_start( ap, fmt );
vprintk( fmt, ap );
4819a: 486e 0014 pea %fp@(20) <== NOT EXECUTED
4819e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
481a2: 4eb9 0004 60bc jsr 460bc <vprintk> <== NOT EXECUTED
va_end( ap );
481a8: 508f addql #8,%sp <== NOT EXECUTED
}
481aa: 4e5e unlk %fp <== NOT EXECUTED
481ac: 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 );
481ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
481b0: 4879 0005 d912 pea 5d912 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED
481b6: 4eb9 0004 42a0 jsr 442a0 <printk> <== NOT EXECUTED
481bc: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "PASS[%d]: ", source );
}
va_start( ap, fmt );
vprintk( fmt, ap );
481be: 486e 0014 pea %fp@(20) <== NOT EXECUTED
481c2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
481c6: 4eb9 0004 60bc jsr 460bc <vprintk> <== NOT EXECUTED
va_end( ap );
481cc: 508f addql #8,%sp <== NOT EXECUTED
}
481ce: 4e5e unlk %fp <== NOT EXECUTED
00048174 <_Heap_Walk_print_nothing>:
int source,
bool error,
const char *fmt,
...
)
{
48174: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */
}
48178: 4e5e unlk %fp <== NOT EXECUTED
00046c56 <_IO_Initialize_all_drivers>:
*
* Output Parameters: NONE
*/
void _IO_Initialize_all_drivers( void )
{
46c56: 4e56 0000 linkw %fp,#0
46c5a: 2f0a movel %a2,%sp@-
46c5c: 2f02 movel %d2,%sp@-
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c5e: 4ab9 0005 f064 tstl 5f064 <_IO_Number_of_drivers>
46c64: 671e beqs 46c84 <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN
46c66: 4282 clrl %d2
46c68: 45f9 0004 b898 lea 4b898 <rtems_io_initialize>,%a2
(void) rtems_io_initialize( major, 0, NULL );
46c6e: 42a7 clrl %sp@-
46c70: 42a7 clrl %sp@-
46c72: 2f02 movel %d2,%sp@-
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c74: 5282 addql #1,%d2
(void) rtems_io_initialize( major, 0, NULL );
46c76: 4e92 jsr %a2@
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c78: 4fef 000c lea %sp@(12),%sp
46c7c: b4b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d2
46c82: 65ea bcss 46c6e <_IO_Initialize_all_drivers+0x18>
(void) rtems_io_initialize( major, 0, NULL );
}
46c84: 242e fff8 movel %fp@(-8),%d2
46c88: 246e fffc moveal %fp@(-4),%a2
46c8c: 4e5e unlk %fp <== NOT EXECUTED
00046bbc <_IO_Manager_initialization>:
* workspace.
*
*/
void _IO_Manager_initialization(void)
{
46bbc: 4e56 fff0 linkw %fp,#-16
46bc0: 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;
46bc4: 2639 0005 d60a movel 5d60a <Configuration+0x36>,%d3
drivers_in_table = Configuration.number_of_device_drivers;
46bca: 2439 0005 d606 movel 5d606 <Configuration+0x32>,%d2
number_of_drivers = Configuration.maximum_drivers;
46bd0: 2839 0005 d602 movel 5d602 <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 )
46bd6: b882 cmpl %d2,%d4
46bd8: 6366 blss 46c40 <_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(
46bda: 2004 movel %d4,%d0
46bdc: 2a04 movel %d4,%d5
46bde: e788 lsll #3,%d0
46be0: eb8d lsll #5,%d5
46be2: 9a80 subl %d0,%d5
46be4: 2f05 movel %d5,%sp@-
46be6: 4eb9 0004 9ab6 jsr 49ab6 <_Workspace_Allocate_or_fatal_error>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
46bec: 2f05 movel %d5,%sp@-
46bee: 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 *)
46bf0: 23c0 0005 f068 movel %d0,5f068 <_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(
46bf6: 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;
46bf8: 23c4 0005 f064 movel %d4,5f064 <_IO_Number_of_drivers>
memset(
46bfe: 4eb9 0004 e178 jsr 4e178 <memset>
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c04: 4fef 0010 lea %sp@(16),%sp
46c08: 4a82 tstl %d2
46c0a: 672a beqs 46c36 <_IO_Manager_initialization+0x7a><== NEVER TAKEN
46c0c: 2839 0005 f068 movel 5f068 <_IO_Driver_address_table>,%d4
46c12: 4280 clrl %d0
46c14: 4281 clrl %d1
_IO_Driver_address_table[index] = driver_table[index];
46c16: 2243 moveal %d3,%a1
46c18: 2044 moveal %d4,%a0
46c1a: d3c0 addal %d0,%a1
46c1c: 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++ )
46c1e: 5281 addql #1,%d1
46c20: 0680 0000 0018 addil #24,%d0
_IO_Driver_address_table[index] = driver_table[index];
46c26: 20d9 movel %a1@+,%a0@+
46c28: 20d9 movel %a1@+,%a0@+
46c2a: 20d9 movel %a1@+,%a0@+
46c2c: 20d9 movel %a1@+,%a0@+
46c2e: 20d9 movel %a1@+,%a0@+
46c30: 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++ )
46c32: b282 cmpl %d2,%d1
46c34: 65e0 bcss 46c16 <_IO_Manager_initialization+0x5a>
_IO_Driver_address_table[index] = driver_table[index];
}
46c36: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c3c: 4e5e unlk %fp
46c3e: 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;
46c40: 23c3 0005 f068 movel %d3,5f068 <_IO_Driver_address_table>
_IO_Number_of_drivers = number_of_drivers;
46c46: 23c2 0005 f064 movel %d2,5f064 <_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];
}
46c4c: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c52: 4e5e unlk %fp <== NOT EXECUTED
000477b8 <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
477b8: 4e56 fffc linkw %fp,#-4
477bc: 206e 0010 moveal %fp@(16),%a0
477c0: 2f02 movel %d2,%sp@-
477c2: 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 );
477c6: 4282 clrl %d2
477c8: 1401 moveb %d1,%d2
477ca: 2242 moveal %d2,%a1
477cc: 2f08 movel %a0,%sp@-
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
477ce: 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 );
477d2: 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;
477d4: 13c1 0005 eef2 moveb %d1,5eef2 <_Internal_errors_What_happened+0x4>
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
477da: 2d48 fffc movel %a0,%fp@(-4)
bool is_internal,
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
477de: 23c0 0005 eeee movel %d0,5eeee <_Internal_errors_What_happened>
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
477e4: 23c8 0005 eef4 movel %a0,5eef4 <_Internal_errors_What_happened+0x6>
_User_extensions_Fatal( the_source, is_internal, the_error );
477ea: 2f00 movel %d0,%sp@-
477ec: 4eb9 0004 9636 jsr 49636 <_User_extensions_Fatal>
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
477f2: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
477f6: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED
477fa: 2409 movel %a1,%d2 <== NOT EXECUTED
477fc: 40c0 movew %sr,%d0 <== NOT EXECUTED
477fe: 8082 orl %d2,%d0 <== NOT EXECUTED
47800: 46c0 movew %d0,%sr <== NOT EXECUTED
47802: 2008 movel %a0,%d0 <== NOT EXECUTED
47804: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED
4780a: 4ac8 halt <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
4780c: 7005 moveq #5,%d0 <== NOT EXECUTED
4780e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47812: 23c0 0005 efa0 movel %d0,5efa0 <_System_state_Current> <== NOT EXECUTED
47818: 60fe bras 47818 <_Internal_error_Occurred+0x60> <== NOT EXECUTED
...
000549cc <_Message_queue_Allocate>:
* Output parameters:
* the_message_queue - set if successful, NULL otherwise
*/
Message_queue_Control *_Message_queue_Allocate(void)
{
549cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (Message_queue_Control *)
_Objects_Allocate(&_Message_queue_Information);
549d0: 4879 0006 8ec4 pea 68ec4 <_Message_queue_Information> <== NOT EXECUTED
549d6: 4eb9 0005 0cc0 jsr 50cc0 <_Objects_Allocate> <== NOT EXECUTED
}
549dc: 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 74dc lea 674dc <_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
...
0004be08 <_Objects_API_maximum_class>:
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4be08: 7202 moveq #2,%d1
4be0a: 4e56 0000 linkw %fp,#0
4be0e: 202e 0008 movel %fp@(8),%d0
4be12: 5380 subql #1,%d0
4be14: b280 cmpl %d0,%d1
4be16: 650e bcss 4be26 <_Objects_API_maximum_class+0x1e><== NEVER TAKEN
4be18: 41f9 0005 cbd4 lea 5cbd4 <CSWTCH.1>,%a0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4be1e: 4e5e unlk %fp
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4be20: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4be24: 4e75 rts
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4be26: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4be28: 4e5e unlk %fp <== NOT EXECUTED
00047874 <_Objects_Allocate>:
*/
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
47874: 4e56 fff0 linkw %fp,#-16
47878: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4787c: 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 )
47880: 4aaa 0014 tstl %a2@(20)
47884: 660c bnes 47892 <_Objects_Allocate+0x1e> <== ALWAYS TAKEN
return NULL;
47886: 4280 clrl %d0 <== NOT EXECUTED
);
}
#endif
return the_object;
}
47888: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4788e: 4e5e unlk %fp
47890: 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 );
47892: 240a movel %a2,%d2
47894: 0682 0000 001c addil #28,%d2
4789a: 47f9 0004 6ed8 lea 46ed8 <_Chain_Get>,%a3
478a0: 2f02 movel %d2,%sp@-
478a2: 4e93 jsr %a3@
if ( information->auto_extend ) {
478a4: 588f addql #4,%sp
478a6: 4a2a 0010 tstb %a2@(16)
478aa: 67dc beqs 47888 <_Objects_Allocate+0x14>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
478ac: 4a80 tstl %d0
478ae: 6738 beqs 478e8 <_Objects_Allocate+0x74> <== NEVER TAKEN
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
478b0: 2040 moveal %d0,%a0
478b2: 4281 clrl %d1
478b4: 4283 clrl %d3
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
478b6: 4282 clrl %d2
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
478b8: 362a 0008 movew %a2@(8),%d3
478bc: 3228 000a movew %a0@(10),%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
478c0: 342a 0012 movew %a2@(18),%d2
information->inactive_per_block[ block ]--;
478c4: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
478c8: 9283 subl %d3,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
478ca: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
information->inactive--;
478ce: 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 ]--;
478d2: e589 lsll #2,%d1
information->inactive--;
478d4: 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 ]--;
478d6: d1c1 addal %d1,%a0
478d8: 5390 subql #1,%a0@
information->inactive--;
478da: 3549 0028 movew %a1,%a2@(40)
);
}
#endif
return the_object;
}
478de: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
478e4: 4e5e unlk %fp
478e6: 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 );
478e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
478ea: 4eb9 0004 7930 jsr 47930 <_Objects_Extend_information> <== NOT EXECUTED
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
478f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
478f2: 4e93 jsr %a3@ <== NOT EXECUTED
}
if ( the_object ) {
478f4: 508f addql #8,%sp <== NOT EXECUTED
478f6: 4a80 tstl %d0 <== NOT EXECUTED
478f8: 66b6 bnes 478b0 <_Objects_Allocate+0x3c> <== NOT EXECUTED
);
}
#endif
return the_object;
}
478fa: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47900: 4e5e unlk %fp <== NOT EXECUTED
00047904 <_Objects_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
47904: 4280 clrl %d0
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
47906: 4e56 0000 linkw %fp,#0
4790a: 226e 000c moveal %fp@(12),%a1
4790e: 206e 0008 moveal %fp@(8),%a0
47912: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47914: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
47918: 3029 000a movew %a1@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4791c: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
47920: 245f moveal %sp@+,%a2
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
47922: 2d49 000c movel %a1,%fp@(12)
}
47926: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
47928: 4ef9 0004 7eb0 jmp 47eb0 <_Objects_Namespace_remove>
...
00047930 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
47930: 4e56 ffcc linkw %fp,#-52
47934: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
47938: 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 );
4793c: 4285 clrl %d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
4793e: 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 );
47942: 3a2a 0008 movew %a2@(8),%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47946: 4a88 tstl %a0
47948: 6700 0232 beqw 47b7c <_Objects_Extend_information+0x24c>
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
4794c: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED
47950: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED
47954: 3801 movew %d1,%d4 <== NOT EXECUTED
47956: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
4795c: 88c0 divuw %d0,%d4 <== NOT EXECUTED
4795e: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
for ( ; block < block_count; block++ ) {
47964: 6700 022c beqw 47b92 <_Objects_Extend_information+0x262><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
47968: 4a90 tstl %a0@ <== NOT EXECUTED
4796a: 6700 0236 beqw 47ba2 <_Objects_Extend_information+0x272><== NOT EXECUTED
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
4796e: 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 );
47970: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47972: 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 ) {
47974: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
break;
} else
index_base += information->allocation_size;
4797a: 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++ ) {
4797c: 5282 addql #1,%d2 <== NOT EXECUTED
4797e: b484 cmpl %d4,%d2 <== NOT EXECUTED
47980: 6400 01a6 bccw 47b28 <_Objects_Extend_information+0x1f8><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
47984: 4a98 tstl %a0@+ <== NOT EXECUTED
47986: 66f2 bnes 4797a <_Objects_Extend_information+0x4a><== NOT EXECUTED
do_extend = false;
47988: 4207 clrb %d7 <== NOT EXECUTED
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
4798a: 0281 0000 ffff andil #65535,%d1
47990: 2641 moveal %d1,%a3
47992: 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 ) {
47994: b7fc 0000 ffff cmpal #65535,%a3
4799a: 6200 0182 bhiw 47b1e <_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;
4799e: 41ea 0014 lea %a2@(20),%a0
479a2: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
479a6: 4a2a 0010 tstb %a2@(16)
479aa: 6700 0182 beqw 47b2e <_Objects_Extend_information+0x1fe>
new_object_block = _Workspace_Allocate( block_size );
479ae: 2f00 movel %d0,%sp@-
479b0: 4eb9 0004 9a82 jsr 49a82 <_Workspace_Allocate>
if ( !new_object_block )
479b6: 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 );
479b8: 2c00 movel %d0,%d6
if ( !new_object_block )
479ba: 6700 0162 beqw 47b1e <_Objects_Extend_information+0x1ee>
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
479be: 4a07 tstb %d7
479c0: 6700 00c4 beqw 47a86 <_Objects_Extend_information+0x156>
*/
/*
* Up the block count and maximum
*/
block_count++;
479c4: 2a44 moveal %d4,%a5
479c6: 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 *));
479c8: 200b movel %a3,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
479ca: 41f5 da00 lea %a5@(00000000,%a5:l:2),%a0
((maximum + minimum_index) * sizeof(Objects_Control *));
479ce: d088 addl %a0,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
479d0: d085 addl %d5,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
479d2: 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 );
479d4: 2f00 movel %d0,%sp@-
479d6: 4eb9 0004 9a82 jsr 49a82 <_Workspace_Allocate>
if ( !object_blocks ) {
479dc: 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 );
479de: 2840 moveal %d0,%a4
if ( !object_blocks ) {
479e0: 4a80 tstl %d0
479e2: 6700 01ce beqw 47bb2 <_Objects_Extend_information+0x282>
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
479e6: 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 ) {
479e8: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
479ea: 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 ) {
479ec: 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);
479f0: 4bf4 7800 lea %a4@(00000000,%d7:l),%a5
479f4: de8d addl %a5,%d7
479f6: b085 cmpl %d5,%d0
479f8: 6200 0144 bhiw 47b3e <_Objects_Extend_information+0x20e>
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
479fc: 4a85 tstl %d5
479fe: 670c beqs 47a0c <_Objects_Extend_information+0xdc><== NEVER TAKEN
47a00: 2047 moveal %d7,%a0
47a02: 4280 clrl %d0
local_table[ index ] = NULL;
47a04: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47a06: 5280 addql #1,%d0
47a08: b085 cmpl %d5,%d0
47a0a: 65f8 bcss 47a04 <_Objects_Extend_information+0xd4><== NEVER TAKEN
47a0c: 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 );
47a0e: 4281 clrl %d1
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
47a10: 42b4 4800 clrl %a4@(00000000,%d4:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a14: 322a 0012 movew %a2@(18),%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
47a18: 42b5 4800 clrl %a5@(00000000,%d4:l)
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a1c: 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 ;
47a1e: b283 cmpl %d3,%d1
47a20: 6310 blss 47a32 <_Objects_Extend_information+0x102><== NEVER TAKEN
47a22: 2247 moveal %d7,%a1
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47a24: 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 ;
47a26: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
47a2a: 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++ ) {
47a2c: 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 ;
47a2e: b280 cmpl %d0,%d1
47a30: 62f8 bhis 47a2a <_Objects_Extend_information+0xfa>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
47a32: 203c 0000 0700 movel #1792,%d0
47a38: 40c4 movew %sr,%d4
47a3a: 8084 orl %d4,%d0
47a3c: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47a3e: 2012 movel %a2@,%d0
47a40: 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(
47a42: 4281 clrl %d1
47a44: eba8 lsll %d5,%d0
47a46: 4285 clrl %d5
47a48: 3a0b movew %a3,%d5
47a4a: 322a 0004 movew %a2@(4),%d1
47a4e: 08c0 0010 bset #16,%d0
47a52: 2245 moveal %d5,%a1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47a54: 7a1b moveq #27,%d5
47a56: eba9 lsll %d5,%d1
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
47a58: 206a 002e moveal %a2@(46),%a0
47a5c: 8081 orl %d1,%d0
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47a5e: 2209 movel %a1,%d1
47a60: 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;
47a62: 354b 000e movew %a3,%a2@(14)
_ISR_Disable( level );
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
47a66: 254c 002e movel %a4,%a2@(46)
information->inactive_per_block = inactive_per_block;
47a6a: 254d 002a movel %a5,%a2@(42)
47a6e: 2541 000a movel %d1,%a2@(10)
information->local_table = local_table;
47a72: 2547 0018 movel %d7,%a2@(24)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
47a76: 46c4 movew %d4,%sr
if ( old_tables )
47a78: 4a88 tstl %a0
47a7a: 670a beqs 47a86 <_Objects_Extend_information+0x156><== ALWAYS TAKEN
_Workspace_Free( old_tables );
47a7c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47a7e: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
47a84: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47a86: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47a8a: 4280 clrl %d0
47a8c: 280e movel %fp,%d4
47a8e: 0684 ffff fff4 addil #-12,%d4
47a94: 47f9 0004 6ed8 lea 46ed8 <_Chain_Get>,%a3
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47a9a: 2a0a movel %a2,%d5
47a9c: 0685 0000 001c addil #28,%d5
47aa2: 49f9 0004 6e78 lea 46e78 <_Chain_Append>,%a4
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47aa8: e58a lsll #2,%d2
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47aaa: 302a 0012 movew %a2@(18),%d0
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47aae: 2186 2800 movel %d6,%a0@(00000000,%d2:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47ab2: 2f2a 0014 movel %a2@(20),%sp@-
47ab6: 2f00 movel %d0,%sp@-
47ab8: 2f06 movel %d6,%sp@-
47aba: 2f04 movel %d4,%sp@-
47abc: 4eb9 0004 b8e0 jsr 4b8e0 <_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 ) {
47ac2: 4fef 0010 lea %sp@(16),%sp
47ac6: 2f04 movel %d4,%sp@-
47ac8: 4e93 jsr %a3@
47aca: 588f addql #4,%sp
47acc: 4a80 tstl %d0
47ace: 6734 beqs 47b04 <_Objects_Extend_information+0x1d4><== NEVER TAKEN
47ad0: 2212 movel %a2@,%d1
47ad2: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
47ad4: 4286 clrl %d6
47ad6: 2040 moveal %d0,%a0
47ad8: 3c2a 0004 movew %a2@(4),%d6
47adc: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47ade: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47ae2: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47ae6: efae lsll %d7,%d6
47ae8: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47aea: 8283 orl %d3,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
47aec: 5283 addql #1,%d3
47aee: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47af2: 2f00 movel %d0,%sp@-
47af4: 2f05 movel %d5,%sp@-
47af6: 4e94 jsr %a4@
index++;
47af8: 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 ) {
47afa: 2f04 movel %d4,%sp@-
47afc: 4e93 jsr %a3@
47afe: 588f addql #4,%sp
47b00: 4a80 tstl %d0
47b02: 66cc bnes 47ad0 <_Objects_Extend_information+0x1a0>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b04: 4281 clrl %d1
47b06: 302a 0012 movew %a2@(18),%d0
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47b0a: 326a 0028 moveaw %a2@(40),%a1
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b0e: 206a 002a moveal %a2@(42),%a0
47b12: 3200 movew %d0,%d1
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47b14: d089 addl %a1,%d0
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b16: 2181 2800 movel %d1,%a0@(00000000,%d2:l)
information->inactive =
47b1a: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47b1e: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
47b24: 4e5e unlk %fp
47b26: 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;
47b28: 7e01 moveq #1,%d7 <== NOT EXECUTED
47b2a: 6000 fe5e braw 4798a <_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 );
47b2e: 2f00 movel %d0,%sp@-
47b30: 4eb9 0004 9ab6 jsr 49ab6 <_Workspace_Allocate_or_fatal_error>
47b36: 588f addql #4,%sp
47b38: 2c00 movel %d0,%d6
47b3a: 6000 fe82 braw 479be <_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,
47b3e: e58c lsll #2,%d4 <== NOT EXECUTED
47b40: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47b42: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED
47b46: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47b48: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
47b4e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47b50: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED
47b54: 2f0d movel %a5,%sp@- <== NOT EXECUTED
47b56: 4eb9 0004 e108 jsr 4e108 <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 *) );
47b5c: 4280 clrl %d0 <== NOT EXECUTED
47b5e: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
47b62: 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,
47b64: e58d lsll #2,%d5 <== NOT EXECUTED
47b66: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47b68: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
47b6c: 2f07 movel %d7,%sp@- <== NOT EXECUTED
47b6e: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
47b74: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
47b78: 6000 fe94 braw 47a0e <_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 )
47b7c: 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 );
47b7e: 2605 movel %d5,%d3
index_base = minimum_index;
block = 0;
47b80: 4282 clrl %d2
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
47b82: 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 )
47b84: 322a 000e movew %a2@(14),%d1
47b88: 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;
47b8c: 7e01 moveq #1,%d7
47b8e: 6000 fdfa braw 4798a <_Objects_Extend_information+0x5a>
minimum_index = _Objects_Get_index( information->minimum_id );
47b92: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47b94: 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++ ) {
47b96: 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;
47b9c: 7e01 moveq #1,%d7 <== NOT EXECUTED
47b9e: 6000 fdea braw 4798a <_Objects_Extend_information+0x5a><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
47ba2: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47ba4: 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 ) {
47ba6: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
47bac: 4207 clrb %d7 <== NOT EXECUTED
47bae: 6000 fdda braw 4798a <_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 );
47bb2: 2f06 movel %d6,%sp@- <== NOT EXECUTED
47bb4: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
return;
47bba: 588f addql #4,%sp <== NOT EXECUTED
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47bbc: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
47bc2: 4e5e unlk %fp <== NOT EXECUTED
...
00047bc8 <_Objects_Free>:
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
47bc8: 4e56 fff0 linkw %fp,#-16
47bcc: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
47bd0: 266e 000c moveal %fp@(12),%a3
47bd4: 246e 0008 moveal %fp@(8),%a2
uint32_t allocation_size = information->allocation_size;
_Chain_Append( &information->Inactive, &the_object->Node );
47bd8: 2f0b movel %a3,%sp@-
47bda: 486a 001c pea %a2@(28)
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47bde: 342a 0012 movew %a2@(18),%d2
_Chain_Append( &information->Inactive, &the_object->Node );
47be2: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append>
if ( information->auto_extend ) {
47be8: 508f addql #8,%sp
47bea: 4a2a 0010 tstb %a2@(16)
47bee: 6740 beqs 47c30 <_Objects_Free+0x68> <== ALWAYS TAKEN
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47bf0: 4280 clrl %d0 <== NOT EXECUTED
47bf2: 4283 clrl %d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47bf4: 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 ) -
47bf6: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED
47bfa: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47bfe: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
47c02: 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 ) -
47c06: 9083 subl %d3,%d0 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c08: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
information->inactive++;
47c0c: 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;
47c10: 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 ]++;
47c16: e588 lsll #2,%d0 <== NOT EXECUTED
information->inactive++;
47c18: 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 ) ) ) {
47c1a: 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 ]++;
47c1c: d1c0 addal %d0,%a0 <== NOT EXECUTED
47c1e: 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 ) ) ) {
47c20: 4280 clrl %d0 <== NOT EXECUTED
47c22: e28b lsrl #1,%d3 <== NOT EXECUTED
47c24: d483 addl %d3,%d2 <== NOT EXECUTED
47c26: 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++;
47c28: 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 ) ) ) {
47c2c: b480 cmpl %d0,%d2 <== NOT EXECUTED
47c2e: 650a bcss 47c3a <_Objects_Free+0x72> <== NOT EXECUTED
_Objects_Shrink_information( information );
}
}
}
47c30: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
47c36: 4e5e unlk %fp
47c38: 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 );
47c3a: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
}
47c3e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47c44: 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 );
47c46: 4ef9 0004 7f40 jmp 47f40 <_Objects_Shrink_information> <== NOT EXECUTED
00047d34 <_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;
47d34: 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 ) {
47d36: 4281 clrl %d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47d38: 4e56 fffc linkw %fp,#-4
47d3c: 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;
47d40: 90a8 0006 subl %a0@(6),%d0
47d44: d0ae 000c addl %fp@(12),%d0
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47d48: 2f0a movel %a2,%sp@-
47d4a: 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 ) {
47d4e: 3228 000e movew %a0@(14),%d1
47d52: b280 cmpl %d0,%d1
47d54: 6522 bcss 47d78 <_Objects_Get+0x44> <== NEVER TAKEN
47d56: 2239 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d1
47d5c: 5281 addql #1,%d1
47d5e: 23c1 0005 ee38 movel %d1,5ee38 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( (the_object = information->local_table[ index ]) != NULL ) {
47d64: 2068 0018 moveal %a0@(24),%a0
47d68: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47d6c: 6718 beqs 47d86 <_Objects_Get+0x52> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
47d6e: 4292 clrl %a2@
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d70: 246e fff8 moveal %fp@(-8),%a2
47d74: 4e5e unlk %fp
47d76: 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;
47d78: 7001 moveq #1,%d0 <== NOT EXECUTED
47d7a: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d7c: 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;
47d80: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
47d82: 4e5e unlk %fp <== NOT EXECUTED
47d84: 4e75 rts <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
47d86: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
47d8a: 4eb9 0004 88c2 jsr 488c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
*location = OBJECTS_ERROR;
return NULL;
47d90: 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;
47d94: 7201 moveq #1,%d1 <== NOT EXECUTED
47d96: 2481 movel %d1,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47d9c: 4e5e unlk %fp <== NOT EXECUTED
00047c78 <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
47c78: 4e56 0000 linkw %fp,#0
47c7c: 2f02 movel %d2,%sp@-
47c7e: 342e 000e movew %fp@(14),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
47c82: 660a bnes 47c8e <_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;
47c84: 4280 clrl %d0 <== NOT EXECUTED
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
47c86: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47c8a: 4e5e unlk %fp <== NOT EXECUTED
47c8c: 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 );
47c8e: 2f2e 0008 movel %fp@(8),%sp@-
47c92: 4eb9 0004 be08 jsr 4be08 <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
47c98: 588f addql #4,%sp
47c9a: 4a80 tstl %d0
47c9c: 67e6 beqs 47c84 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
47c9e: 0282 0000 ffff andil #65535,%d2
47ca4: b480 cmpl %d0,%d2
47ca6: 62dc bhis 47c84 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( !_Objects_Information_table[ the_api ] )
47ca8: 202e 0008 movel %fp@(8),%d0
47cac: 41f9 0005 edf4 lea 5edf4 <_Objects_Information_table>,%a0
47cb2: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0
47cb6: 4a88 tstl %a0
47cb8: 67ca beqs 47c84 <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
47cba: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
if ( !info )
47cbe: 67c6 beqs 47c86 <_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;
47cc0: 2040 moveal %d0,%a0
47cc2: 4a68 000e tstw %a0@(14)
47cc6: 56c1 sne %d1
#endif
return info;
}
47cc8: 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;
47ccc: 49c1 extbl %d1
#endif
return info;
}
47cce: 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;
47cd0: c081 andl %d1,%d0 <== NOT EXECUTED
#endif
return info;
}
00047cd4 <_Objects_Get_isr_disable>:
{
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47cd4: 7001 moveq #1,%d0
_ISR_Disable( level );
47cd6: 223c 0000 0700 movel #1792,%d1
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47cdc: 4e56 0000 linkw %fp,#0
47ce0: 206e 0008 moveal %fp@(8),%a0
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47ce4: 90a8 0006 subl %a0@(6),%d0
47ce8: d0ae 000c addl %fp@(12),%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47cec: 2f02 movel %d2,%sp@-
47cee: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
_ISR_Disable( level );
47cf2: 40c2 movew %sr,%d2
47cf4: 8282 orl %d2,%d1
47cf6: 46c1 movew %d1,%sr
if ( information->maximum >= index ) {
47cf8: 4281 clrl %d1
47cfa: 3228 000e movew %a0@(14),%d1
47cfe: b280 cmpl %d0,%d1
47d00: 6518 bcss 47d1a <_Objects_Get_isr_disable+0x46> <== NEVER TAKEN
if ( (the_object = information->local_table[ index ]) != NULL ) {
47d02: 2068 0018 moveal %a0@(24),%a0
47d06: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47d0a: 671c beqs 47d28 <_Objects_Get_isr_disable+0x54> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
*level_p = level;
47d0c: 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;
47d10: 4291 clrl %a1@
*level_p = level;
47d12: 2082 movel %d2,%a0@
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d14: 241f movel %sp@+,%d2
47d16: 4e5e unlk %fp
47d18: 4e75 rts
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
47d1a: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47d1c: 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;
47d1e: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
47d20: 241f movel %sp@+,%d2 <== NOT EXECUTED
47d22: 4e5e unlk %fp <== NOT EXECUTED
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
47d24: 2281 movel %d1,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d26: 4e75 rts <== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
*level_p = level;
return the_object;
}
_ISR_Enable( level );
47d28: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47d2a: 7401 moveq #1,%d2 <== NOT EXECUTED
47d2c: 2282 movel %d2,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d2e: 241f movel %sp@+,%d2 <== NOT EXECUTED
47d30: 4e5e unlk %fp <== NOT EXECUTED
00049740 <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
49740: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
49744: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
49748: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
4974c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
49750: 4a83 tstl %d3 <== NOT EXECUTED
49752: 660e bnes 49762 <_Objects_Get_name_as_string+0x22><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
49754: 4282 clrl %d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
49756: 2002 movel %d2,%d0 <== NOT EXECUTED
49758: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
4975e: 4e5e unlk %fp <== NOT EXECUTED
49760: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( length == 0 )
return NULL;
if ( name == NULL )
49762: 4a82 tstl %d2 <== NOT EXECUTED
49764: 67f0 beqs 49756 <_Objects_Get_name_as_string+0x16><== NOT EXECUTED
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
49766: 4aae 0008 tstl %fp@(8) <== NOT EXECUTED
4976a: 6600 00b0 bnew 4981c <_Objects_Get_name_as_string+0xdc><== NOT EXECUTED
4976e: 2079 0006 95cc moveal 695cc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
49774: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
49778: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4977a: 4eb9 0004 9658 jsr 49658 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
49780: 588f addql #4,%sp <== NOT EXECUTED
49782: 4a80 tstl %d0 <== NOT EXECUTED
49784: 67ce beqs 49754 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
49786: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4978a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4978c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4978e: 4eb9 0004 9830 jsr 49830 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
49794: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49798: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4979c: 66b6 bnes 49754 <_Objects_Get_name_as_string+0x14><== 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;
4979e: 2040 moveal %d0,%a0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
497a0: 7818 moveq #24,%d4 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
497a2: 2a03 movel %d3,%d5 <== NOT EXECUTED
497a4: 5385 subql #1,%d5 <== 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;
497a6: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
497aa: 2001 movel %d1,%d0 <== NOT EXECUTED
497ac: e8a8 lsrl %d4,%d0 <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
497ae: 2801 movel %d1,%d4 <== 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;
497b0: 2601 movel %d1,%d3 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
497b2: e08c lsrl #8,%d4 <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
497b4: 1d41 fffa moveb %d1,%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;
497b8: 4243 clrw %d3 <== NOT EXECUTED
497ba: 4843 swap %d3 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
497bc: 4201 clrb %d1 <== NOT EXECUTED
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
497be: 1d40 fff7 moveb %d0,%fp@(-9) <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
497c2: 1d43 fff8 moveb %d3,%fp@(-8) <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
497c6: 1d44 fff9 moveb %d4,%fp@(-7) <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
497ca: 1d41 fffb moveb %d1,%fp@(-5) <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
497ce: 4a85 tstl %d5 <== NOT EXECUTED
497d0: 6752 beqs 49824 <_Objects_Get_name_as_string+0xe4><== NOT EXECUTED
497d2: 4a00 tstb %d0 <== NOT EXECUTED
497d4: 674e beqs 49824 <_Objects_Get_name_as_string+0xe4><== NOT EXECUTED
497d6: 45ee fff8 lea %fp@(-8),%a2 <== NOT EXECUTED
497da: 2042 moveal %d2,%a0 <== NOT EXECUTED
497dc: 4281 clrl %d1 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
497de: 4283 clrl %d3 <== NOT EXECUTED
497e0: 1600 moveb %d0,%d3 <== NOT EXECUTED
497e2: 2279 0005 ffc0 moveal 5ffc0 <__ctype_ptr__>,%a1 <== NOT EXECUTED
497e8: 1800 moveb %d0,%d4 <== NOT EXECUTED
497ea: 1031 3801 moveb %a1@(00000001,%d3:l),%d0 <== NOT EXECUTED
497ee: 49c0 extbl %d0 <== NOT EXECUTED
497f0: 0280 0000 0097 andil #151,%d0 <== NOT EXECUTED
497f6: 6602 bnes 497fa <_Objects_Get_name_as_string+0xba><== NOT EXECUTED
497f8: 782a moveq #42,%d4 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
497fa: 5281 addql #1,%d1 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
497fc: 10c4 moveb %d4,%a0@+ <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
497fe: 2248 moveal %a0,%a1 <== NOT EXECUTED
49800: ba81 cmpl %d1,%d5 <== NOT EXECUTED
49802: 6304 blss 49808 <_Objects_Get_name_as_string+0xc8><== NOT EXECUTED
49804: 101a moveb %a2@+,%d0 <== NOT EXECUTED
49806: 66d6 bnes 497de <_Objects_Get_name_as_string+0x9e><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
49808: 4211 clrb %a1@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4980a: 4eb9 0004 a33e jsr 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
return name;
}
return NULL; /* unreachable path */
}
49810: 2002 movel %d2,%d0 <== NOT EXECUTED
49812: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
49818: 4e5e unlk %fp <== NOT EXECUTED
4981a: 4e75 rts <== NOT EXECUTED
return NULL;
if ( name == NULL )
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4981c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
49820: 6000 ff56 braw 49778 <_Objects_Get_name_as_string+0x38><== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49824: 2242 moveal %d2,%a1 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
49826: 4211 clrb %a1@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49828: 4eb9 0004 a33e jsr 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
4982e: 60e0 bras 49810 <_Objects_Get_name_as_string+0xd0><== NOT EXECUTED
00047f3c <_Objects_Get_next>:
Objects_Information *information,
Objects_Id id,
Objects_Locations *location_p,
Objects_Id *next_id_p
)
{
47f3c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47f40: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
47f44: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
47f48: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
Objects_Control *object;
Objects_Id next_id;
if ( !information )
47f4c: 4a8a tstl %a2 <== NOT EXECUTED
47f4e: 660c bnes 47f5c <_Objects_Get_next+0x20> <== NOT EXECUTED
if ( !location_p )
return NULL;
if ( !next_id_p )
return NULL;
47f50: 4280 clrl %d0 <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47f52: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47f58: 4e5e unlk %fp <== NOT EXECUTED
47f5a: 4e75 rts <== NOT EXECUTED
Objects_Id next_id;
if ( !information )
return NULL;
if ( !location_p )
47f5c: 4a8b tstl %a3 <== NOT EXECUTED
47f5e: 67f0 beqs 47f50 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if ( !next_id_p )
47f60: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
47f64: 67ea beqs 47f50 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
47f66: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
47f6a: 663a bnes 47fa6 <_Objects_Get_next+0x6a> <== NOT EXECUTED
next_id = information->minimum_id;
47f6c: 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);
47f70: 49f9 0004 7fcc lea 47fcc <_Objects_Get>,%a4 <== NOT EXECUTED
else
next_id = id;
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
47f76: 4281 clrl %d1 <== NOT EXECUTED
47f78: 4280 clrl %d0 <== NOT EXECUTED
47f7a: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED
47f7e: 3002 movew %d2,%d0 <== NOT EXECUTED
47f80: b081 cmpl %d1,%d0 <== NOT EXECUTED
47f82: 622e bhis 47fb2 <_Objects_Get_next+0x76> <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47f84: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47f86: 2f02 movel %d2,%sp@- <== NOT EXECUTED
next_id++;
47f88: 5282 addql #1,%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47f8a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47f8c: 4e94 jsr %a4@ <== NOT EXECUTED
next_id++;
} while (*location_p != OBJECTS_LOCAL);
47f8e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47f92: 4a93 tstl %a3@ <== NOT EXECUTED
47f94: 66e0 bnes 47f76 <_Objects_Get_next+0x3a> <== NOT EXECUTED
*next_id_p = next_id;
47f96: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
47f9a: 2082 movel %d2,%a0@ <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47f9c: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47fa2: 4e5e unlk %fp <== NOT EXECUTED
47fa4: 4e75 rts <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
next_id = information->minimum_id;
else
next_id = id;
47fa6: 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);
47faa: 49f9 0004 7fcc lea 47fcc <_Objects_Get>,%a4 <== NOT EXECUTED
47fb0: 60c4 bras 47f76 <_Objects_Get_next+0x3a> <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
47fb2: 7401 moveq #1,%d2 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
47fb4: 72ff moveq #-1,%d1 <== NOT EXECUTED
return 0;
47fb6: 4280 clrl %d0 <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
47fb8: 2682 movel %d2,%a3@ <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
47fba: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
return 0;
}
47fbe: 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;
47fc4: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
47fc6: 4e5e unlk %fp <== NOT EXECUTED
...
0005b780 <_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;
5b780: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b782: 4281 clrl %d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b784: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b788: 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;
5b78c: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED
5b790: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b794: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b798: 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 ) {
5b79c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b79e: 6510 bcss 5b7b0 <_Objects_Get_no_protection+0x30><== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
5b7a0: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
5b7a4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
5b7a8: 6706 beqs 5b7b0 <_Objects_Get_no_protection+0x30><== NOT EXECUTED
*location = OBJECTS_LOCAL;
5b7aa: 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;
}
5b7ac: 4e5e unlk %fp <== NOT EXECUTED
5b7ae: 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;
5b7b0: 7001 moveq #1,%d0 <== NOT EXECUTED
return NULL;
}
5b7b2: 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;
5b7b4: 2280 movel %d0,%a1@ <== NOT EXECUTED
return NULL;
5b7b6: 4280 clrl %d0 <== NOT EXECUTED
}
...
00049490 <_Objects_Id_to_name>:
*/
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
49490: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
49494: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
49498: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4949a: 4a81 tstl %d1 <== NOT EXECUTED
4949c: 660a bnes 494a8 <_Objects_Id_to_name+0x18> <== NOT EXECUTED
4949e: 2079 0006 0ccc moveal 60ccc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
494a4: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
494a8: 7418 moveq #24,%d2 <== NOT EXECUTED
494aa: 2001 movel %d1,%d0 <== NOT EXECUTED
494ac: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
494ae: 143c 0007 moveb #7,%d2 <== NOT EXECUTED
494b2: 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 )
494b4: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
494b8: 2040 moveal %d0,%a0 <== NOT EXECUTED
494ba: 5388 subql #1,%a0 <== NOT EXECUTED
494bc: b488 cmpl %a0,%d2 <== NOT EXECUTED
494be: 654a bcss 4950a <_Objects_Id_to_name+0x7a> <== 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 ] )
494c0: 41f9 0006 0acc lea 60acc <_Objects_Information_table>,%a0 <== NOT EXECUTED
494c6: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
494ca: 4a88 tstl %a0 <== NOT EXECUTED
494cc: 673c beqs 4950a <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
494ce: 2001 movel %d1,%d0 <== NOT EXECUTED
494d0: 741b moveq #27,%d2 <== NOT EXECUTED
494d2: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
494d4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
if ( !information )
494d8: 6730 beqs 4950a <_Objects_Id_to_name+0x7a> <== 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 );
494da: 486e fffc pea %fp@(-4) <== NOT EXECUTED
494de: 2f01 movel %d1,%sp@- <== NOT EXECUTED
494e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
494e2: 4eb9 0004 9424 jsr 49424 <_Objects_Get> <== NOT EXECUTED
if ( !the_object )
494e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
494ec: 4a80 tstl %d0 <== NOT EXECUTED
494ee: 671a beqs 4950a <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
494f0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
494f4: 2240 moveal %d0,%a1 <== NOT EXECUTED
494f6: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
494fa: 4eb9 0004 a036 jsr 4a036 <_Thread_Enable_dispatch> <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49500: 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;
49504: 4280 clrl %d0 <== NOT EXECUTED
}
49506: 4e5e unlk %fp <== NOT EXECUTED
49508: 4e75 rts <== NOT EXECUTED
4950a: 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;
4950e: 7003 moveq #3,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49510: 4e5e unlk %fp <== NOT EXECUTED
00047da0 <_Objects_Initialize_information>:
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47da0: 4e56 ffec linkw %fp,#-20
47da4: 202e 000c movel %fp@(12),%d0
47da8: 48d7 043c moveml %d2-%d5/%a2,%sp@
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47dac: 45f9 0005 edf4 lea 5edf4 <_Objects_Information_table>,%a2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47db2: 4282 clrl %d2
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47db4: 4283 clrl %d3
47db6: 2472 0c00 moveal %a2@(00000000,%d0:l:4),%a2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47dba: 206e 0008 moveal %fp@(8),%a0
47dbe: 342e 001a movew %fp@(26),%d2
47dc2: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
#endif
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
47dc6: 2142 0014 movel %d2,%a0@(20)
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47dca: 222e 0014 movel %fp@(20),%d1
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
information->inactive = 0;
47dce: 4242 clrw %d2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47dd0: 282e 0020 movel %fp@(32),%d4
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
information->inactive = 0;
47dd4: 3142 0028 movew %d2,%a0@(40)
/*
* Set the maximum value to 0. It will be updated when objects are
* added to the inactive set from _Objects_Extend_information()
*/
information->maximum = 0;
47dd8: 3142 000e movew %d2,%a0@(14)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
(maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
47ddc: 2401 movel %d1,%d2
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47dde: 3609 movew %a1,%d3
uint32_t maximum_per_allocation;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t index;
#endif
information->the_api = the_api;
47de0: 2080 movel %d0,%a0@
information->the_class = the_class;
47de2: 3149 0004 movew %a1,%a0@(4)
information->size = size;
information->local_table = 0;
47de6: 42a8 0018 clrl %a0@(24)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
(maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
47dea: d482 addl %d2,%d2
47dec: 9582 subxl %d2,%d2
47dee: 4482 negl %d2
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
47df0: 42a8 002a clrl %a0@(42)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
(maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;
47df4: 0881 001f bclr #31,%d1
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
47df8: 42a8 002e clrl %a0@(46)
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47dfc: 2588 3c00 movel %a0,%a2@(00000000,%d3:l:4)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
47e00: 1142 0010 moveb %d2,%a0@(16)
maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;
/*
* Unlimited and maximum of zero is illogical.
*/
if ( information->auto_extend && maximum_per_allocation == 0) {
47e04: 4a82 tstl %d2
47e06: 6706 beqs 47e0e <_Objects_Initialize_information+0x6e>
47e08: 4a81 tstl %d1
47e0a: 6700 0092 beqw 47e9e <_Objects_Initialize_information+0xfe>
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e0e: 7a18 moveq #24,%d5
information->local_table = &null_local_table;
/*
* Calculate minimum and maximum Id's
*/
minimum_index = (maximum_per_allocation == 0) ? 0 : 1;
47e10: 4a81 tstl %d1
47e12: 56c2 sne %d2
47e14: eba8 lsll %d5,%d0
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e16: 1a3c 001b moveb #27,%d5
47e1a: 49c2 extbl %d2
47e1c: 4482 negl %d2
information->allocation_size = maximum_per_allocation;
/*
* Provide a null local table entry for the case of any empty table.
*/
information->local_table = &null_local_table;
47e1e: 43f9 0005 e5f4 lea 5e5f4 <null_local_table.3206>,%a1
47e24: ebab lsll %d5,%d3
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e26: 08c0 0010 bset #16,%d0
/*
* Calculate the maximum name length
*/
name_length = maximum_name_length;
if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )
47e2a: 1a3c 0003 moveb #3,%d5
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e2e: 8083 orl %d3,%d0
47e30: ca84 andl %d4,%d5
}
/*
* The allocation unit is the maximum value
*/
information->allocation_size = maximum_per_allocation;
47e32: 3141 0012 movew %d1,%a0@(18)
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e36: 8082 orl %d2,%d0
/*
* Provide a null local table entry for the case of any empty table.
*/
information->local_table = &null_local_table;
47e38: 2149 0018 movel %a1,%a0@(24)
47e3c: 2140 0006 movel %d0,%a0@(6)
/*
* Calculate the maximum name length
*/
name_length = maximum_name_length;
if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )
47e40: 4a85 tstl %d5
47e42: 6626 bnes 47e6a <_Objects_Initialize_information+0xca><== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
47e44: 43e8 0020 lea %a0@(32),%a1
47e48: 2149 001c movel %a1,%a0@(28)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47e4c: 43e8 001c lea %a0@(28),%a1
name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &
~(OBJECTS_NAME_ALIGNMENT-1);
information->name_length = name_length;
47e50: 3144 0032 movew %d4,%a0@(50)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
47e54: 42a8 0020 clrl %a0@(32)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47e58: 2149 0024 movel %a1,%a0@(36)
_Chain_Initialize_empty( &information->Inactive );
/*
* Initialize objects .. if there are any
*/
if ( maximum_per_allocation ) {
47e5c: 4a81 tstl %d1
47e5e: 662c bnes 47e8c <_Objects_Initialize_information+0xec>
_Chain_Initialize_empty( &information->global_table[ index ] );
}
else
information->global_table = NULL;
#endif
}
47e60: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
47e66: 4e5e unlk %fp
47e68: 4e75 rts
* Calculate the maximum name length
*/
name_length = maximum_name_length;
if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )
name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &
47e6a: 5884 addql #4,%d4 <== NOT EXECUTED
47e6c: 70fc moveq #-4,%d0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
47e6e: 43e8 0020 lea %a0@(32),%a1 <== NOT EXECUTED
47e72: c880 andl %d0,%d4 <== NOT EXECUTED
47e74: 2149 001c movel %a1,%a0@(28) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47e78: 43e8 001c lea %a0@(28),%a1 <== NOT EXECUTED
~(OBJECTS_NAME_ALIGNMENT-1);
information->name_length = name_length;
47e7c: 3144 0032 movew %d4,%a0@(50) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
47e80: 42a8 0020 clrl %a0@(32) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47e84: 2149 0024 movel %a1,%a0@(36) <== NOT EXECUTED
_Chain_Initialize_empty( &information->Inactive );
/*
* Initialize objects .. if there are any
*/
if ( maximum_per_allocation ) {
47e88: 4a81 tstl %d1 <== NOT EXECUTED
47e8a: 67d4 beqs 47e60 <_Objects_Initialize_information+0xc0><== NOT EXECUTED
/*
* Always have the maximum size available so the current performance
* figures are create are met. If the user moves past the maximum
* number then a performance hit is taken.
*/
_Objects_Extend_information( information );
47e8c: 2d48 0008 movel %a0,%fp@(8)
_Chain_Initialize_empty( &information->global_table[ index ] );
}
else
information->global_table = NULL;
#endif
}
47e90: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
47e96: 4e5e unlk %fp
/*
* Always have the maximum size available so the current performance
* figures are create are met. If the user moves past the maximum
* number then a performance hit is taken.
*/
_Objects_Extend_information( information );
47e98: 4ef9 0004 7930 jmp 47930 <_Objects_Extend_information>
/*
* Unlimited and maximum of zero is illogical.
*/
if ( information->auto_extend && maximum_per_allocation == 0) {
_Internal_error_Occurred(
47e9e: 4878 0013 pea 13 <INVALID_OPERATION+0x3>
47ea2: 4878 0001 pea 1 <ADD>
47ea6: 42a7 clrl %sp@-
47ea8: 4eb9 0004 77b8 jsr 477b8 <_Internal_error_Occurred>
...
00047ec0 <_Objects_Name_to_id_u32>:
Objects_Information *information,
uint32_t name,
uint32_t node,
Objects_Id *id
)
{
47ec0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
47ec4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47ec8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
47ecc: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
47ed0: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
47ed4: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == false */
if ( !id )
47ed8: 4a8a tstl %a2 <== NOT EXECUTED
47eda: 6758 beqs 47f34 <_Objects_Name_to_id_u32+0x74> <== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( name == 0 )
47edc: 4a81 tstl %d1 <== NOT EXECUTED
47ede: 6718 beqs 47ef8 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
search_local_node = false;
if ( information->maximum != 0 &&
47ee0: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED
47ee4: 6712 beqs 47ef8 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
47ee6: 4a80 tstl %d0 <== NOT EXECUTED
47ee8: 6718 beqs 47f02 <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
(node == OBJECTS_SEARCH_ALL_NODES ||
47eea: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED
47ef0: 6710 beqs 47f02 <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
node == OBJECTS_SEARCH_LOCAL_NODE ||
47ef2: 7601 moveq #1,%d3 <== NOT EXECUTED
47ef4: b680 cmpl %d0,%d3 <== NOT EXECUTED
47ef6: 670a beqs 47f02 <_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;
47ef8: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
47efa: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47efe: 4e5e unlk %fp <== NOT EXECUTED
47f00: 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(
47f02: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
47f06: 7001 moveq #1,%d0 <== NOT EXECUTED
47f08: 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++ ) {
47f0a: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
47f10: 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++ ) {
47f12: 5280 addql #1,%d0 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
47f14: 4a88 tstl %a0 <== NOT EXECUTED
47f16: 6706 beqs 47f1e <_Objects_Name_to_id_u32+0x5e> <== NOT EXECUTED
continue;
if ( name == the_object->name.name_u32 ) {
47f18: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED
47f1c: 6708 beqs 47f26 <_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++ ) {
47f1e: b082 cmpl %d2,%d0 <== NOT EXECUTED
47f20: 63ee blss 47f10 <_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;
47f22: 7001 moveq #1,%d0 <== NOT EXECUTED
47f24: 60d4 bras 47efa <_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;
47f26: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
47f2a: 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
}
47f2c: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47f30: 4e5e unlk %fp <== NOT EXECUTED
47f32: 4e75 rts <== NOT EXECUTED
#endif
/* ASSERT: information->is_string == false */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
47f34: 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
}
47f36: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47f3a: 4e5e unlk %fp <== NOT EXECUTED
...
00049fe4 <_Objects_Set_name>:
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
49fe4: 4280 clrl %d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
49fe6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49fea: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
49fee: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49ff0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
49ff4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
49ff6: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
49ffa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49ffc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49ffe: 4eb9 0005 0dcc jsr 50dcc <strnlen> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a004: 508f addql #8,%sp <== NOT EXECUTED
4a006: 7218 moveq #24,%d1 <== NOT EXECUTED
4a008: 1412 moveb %a2@,%d2 <== NOT EXECUTED
4a00a: 49c2 extbl %d2 <== NOT EXECUTED
4a00c: e3aa lsll %d1,%d2 <== NOT EXECUTED
4a00e: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
4a012: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a014: 6440 bccs 4a056 <_Objects_Set_name+0x72> <== NOT EXECUTED
4a016: 122a 0001 moveb %a2@(1),%d1 <== NOT EXECUTED
4a01a: 49c1 extbl %d1 <== NOT EXECUTED
4a01c: 4841 swap %d1 <== NOT EXECUTED
4a01e: 4241 clrw %d1 <== NOT EXECUTED
4a020: 8282 orl %d2,%d1 <== NOT EXECUTED
4a022: 7402 moveq #2,%d2 <== NOT EXECUTED
4a024: b480 cmpl %d0,%d2 <== NOT EXECUTED
4a026: 6734 beqs 4a05c <_Objects_Set_name+0x78> <== NOT EXECUTED
4a028: 142a 0002 moveb %a2@(2),%d2 <== NOT EXECUTED
4a02c: 49c2 extbl %d2 <== NOT EXECUTED
4a02e: e18a lsll #8,%d2 <== NOT EXECUTED
4a030: 8282 orl %d2,%d1 <== NOT EXECUTED
4a032: 7403 moveq #3,%d2 <== NOT EXECUTED
4a034: b480 cmpl %d0,%d2 <== NOT EXECUTED
4a036: 6742 beqs 4a07a <_Objects_Set_name+0x96> <== NOT EXECUTED
4a038: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4a03c: 102a 0003 moveb %a2@(3),%d0 <== NOT EXECUTED
4a040: 49c0 extbl %d0 <== NOT EXECUTED
4a042: 8280 orl %d0,%d1 <== NOT EXECUTED
);
}
return true;
}
4a044: 7001 moveq #1,%d0 <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a046: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
);
}
return true;
}
4a04a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a04e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a052: 4e5e unlk %fp <== NOT EXECUTED
4a054: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a056: 2202 movel %d2,%d1 <== NOT EXECUTED
4a058: 08c1 0015 bset #21,%d1 <== NOT EXECUTED
4a05c: 7020 moveq #32,%d0 <== NOT EXECUTED
4a05e: 08c1 000d bset #13,%d1 <== NOT EXECUTED
4a062: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4a066: 8280 orl %d0,%d1 <== NOT EXECUTED
);
}
return true;
}
4a068: 7001 moveq #1,%d0 <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a06a: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
);
}
return true;
}
4a06e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a072: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a076: 4e5e unlk %fp <== NOT EXECUTED
4a078: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a07a: 7020 moveq #32,%d0 <== NOT EXECUTED
4a07c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4a080: 8280 orl %d0,%d1 <== NOT EXECUTED
);
}
return true;
}
4a082: 7001 moveq #1,%d0 <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a084: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
);
}
return true;
}
4a088: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a08c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a090: 4e5e unlk %fp <== NOT EXECUTED
00047f40 <_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) /
47f40: 4281 clrl %d1 <== NOT EXECUTED
*/
void _Objects_Shrink_information(
Objects_Information *information
)
{
47f42: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47f46: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
47f4a: 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 );
47f4e: 4283 clrl %d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
47f50: 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 );
47f52: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
47f56: 382a 000e movew %a2@(14),%d4 <== NOT EXECUTED
47f5a: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
47f5e: 9883 subl %d3,%d4 <== NOT EXECUTED
47f60: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
47f64: 6774 beqs 47fda <_Objects_Shrink_information+0x9a><== NOT EXECUTED
if ( information->inactive_per_block[ block ] ==
47f66: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
47f6a: b290 cmpl %a0@,%d1 <== NOT EXECUTED
47f6c: 677e beqs 47fec <_Objects_Shrink_information+0xac><== NOT EXECUTED
* the_block - the block to remove
*
* Output parameters: NONE
*/
void _Objects_Shrink_information(
47f6e: 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++ ) {
47f70: 4280 clrl %d0 <== NOT EXECUTED
47f72: 5280 addql #1,%d0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
47f74: 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++ ) {
47f76: b084 cmpl %d4,%d0 <== NOT EXECUTED
47f78: 6460 bccs 47fda <_Objects_Shrink_information+0x9a><== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
47f7a: 2400 movel %d0,%d2 <== NOT EXECUTED
47f7c: 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 ] ==
47f7e: b298 cmpl %a0@+,%d1 <== NOT EXECUTED
47f80: 66f0 bnes 47f72 <_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 );
47f82: 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 );
47f86: 47f9 0004 6eb0 lea 46eb0 <_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 );
47f8c: 4280 clrl %d0 <== NOT EXECUTED
47f8e: 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;
47f92: 2810 movel %a0@,%d4 <== NOT EXECUTED
if ((index >= index_base) &&
47f94: b680 cmpl %d0,%d3 <== NOT EXECUTED
47f96: 620c bhis 47fa4 <_Objects_Shrink_information+0x64><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
47f98: 4281 clrl %d1 <== NOT EXECUTED
47f9a: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
47f9e: 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) &&
47fa0: b280 cmpl %d0,%d1 <== NOT EXECUTED
47fa2: 6240 bhis 47fe4 <_Objects_Shrink_information+0xa4><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
47fa4: 4a84 tstl %d4 <== NOT EXECUTED
47fa6: 6704 beqs 47fac <_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;
47fa8: 2044 moveal %d4,%a0 <== NOT EXECUTED
47faa: 60e0 bras 47f8c <_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 ] );
47fac: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
47fb0: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED
47fb4: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
information->object_blocks[ block ] = NULL;
47fba: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
47fbe: 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;
47fc0: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
47fc4: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
47fc8: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED
47fcc: 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;
47fd0: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive -= information->allocation_size;
47fd4: 9081 subl %d1,%d0 <== NOT EXECUTED
47fd6: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED
return;
}
index_base += information->allocation_size;
}
}
47fda: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
47fe0: 4e5e unlk %fp <== NOT EXECUTED
47fe2: 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 );
47fe4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47fe6: 4e93 jsr %a3@ <== NOT EXECUTED
47fe8: 588f addql #4,%sp <== NOT EXECUTED
47fea: 60b8 bras 47fa4 <_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 );
47fec: 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 ] ==
47ff0: 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 );
47ff2: 47f9 0004 6eb0 lea 46eb0 <_Chain_Extract>,%a3 <== NOT EXECUTED
47ff8: 6092 bras 47f8c <_Objects_Shrink_information+0x4c><== NOT EXECUTED
...
00048308 <_Protected_heap_Extend>:
bool _Protected_heap_Extend(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
48308: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
bool extend_ok;
uintptr_t amount_extended;
_RTEMS_Lock_allocator();
4830c: 2f39 0005 f5d4 movel 5f5d4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
48312: 4eb9 0004 7130 jsr 47130 <_API_Mutex_Lock> <== NOT EXECUTED
extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended);
48318: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4831c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
48320: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
48324: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48328: 4eb9 0004 bfb8 jsr 4bfb8 <_Heap_Extend> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4832e: 2f39 0005 f5d4 movel 5f5d4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
48334: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
48338: 4eb9 0004 7190 jsr 47190 <_API_Mutex_Unlock> <== NOT EXECUTED
return extend_ok;
}
4833e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
48342: 4e5e unlk %fp <== NOT EXECUTED
...
0004cf1c <_Protected_heap_Get_free_information>:
bool _Protected_heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4cf1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* TBD: _Heap_Get_free_information does not error check or return status.
*/
_RTEMS_Lock_allocator();
4cf20: 2f39 0006 5324 movel 65324 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4cf26: 4eb9 0004 b24c jsr 4b24c <_API_Mutex_Lock> <== NOT EXECUTED
_Heap_Get_free_information( the_heap, info );
4cf2c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4cf30: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cf34: 4eb9 0005 0e04 jsr 50e04 <_Heap_Get_free_information> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4cf3a: 2f39 0006 5324 movel 65324 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4cf40: 4eb9 0004 b2ac jsr 4b2ac <_API_Mutex_Unlock> <== NOT EXECUTED
return true;
}
4cf46: 7001 moveq #1,%d0 <== NOT EXECUTED
4cf48: 4e5e unlk %fp <== NOT EXECUTED
000487f0 <_Protected_heap_Get_information>:
bool _Protected_heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
487f0: 4e56 0000 linkw %fp,#0
487f4: 2f03 movel %d3,%sp@-
487f6: 262e 000c movel %fp@(12),%d3
487fa: 2f02 movel %d2,%sp@-
487fc: 242e 0008 movel %fp@(8),%d2
if ( !the_heap )
48800: 6738 beqs 4883a <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
if ( !the_info )
48802: 4a83 tstl %d3
48804: 6734 beqs 4883a <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
_RTEMS_Lock_allocator();
48806: 2f39 0005 f988 movel 5f988 <_RTEMS_Allocator_Mutex>,%sp@-
4880c: 4eb9 0004 75e0 jsr 475e0 <_API_Mutex_Lock>
_Heap_Get_information( the_heap, the_info );
48812: 2f03 movel %d3,%sp@-
48814: 2f02 movel %d2,%sp@-
48816: 4eb9 0004 c900 jsr 4c900 <_Heap_Get_information>
_RTEMS_Unlock_allocator();
4881c: 2f39 0005 f988 movel 5f988 <_RTEMS_Allocator_Mutex>,%sp@-
48822: 4eb9 0004 7640 jsr 47640 <_API_Mutex_Unlock>
return true;
}
48828: 242e fff8 movel %fp@(-8),%d2
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
4882c: 4fef 0010 lea %sp@(16),%sp
}
48830: 262e fffc movel %fp@(-4),%d3
48834: 4e5e unlk %fp
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
48836: 7001 moveq #1,%d0
}
48838: 4e75 rts
4883a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4883e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
48842: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !the_heap )
return false;
if ( !the_info )
return false;
48844: 4200 clrb %d0 <== NOT EXECUTED
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
}
0005ba4c <_Protected_heap_Resize_block>:
bool _Protected_heap_Resize_block(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
5ba4c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
5ba50: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
5ba52: 2f39 0005 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5ba58: 4eb9 0004 6de4 jsr 46de4 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Resize_block(
5ba5e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
5ba62: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5ba66: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5ba6a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5ba6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5ba72: 4eb9 0005 ba98 jsr 5ba98 <_Heap_Resize_block> <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5ba78: 2f39 0005 eef8 movel 5eef8 <_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(
5ba7e: 2400 movel %d0,%d2 <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5ba80: 4eb9 0004 6e44 jsr 46e44 <_API_Mutex_Unlock> <== NOT EXECUTED
return (status == HEAP_RESIZE_SUCCESSFUL);
5ba86: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5ba8a: 4a82 tstl %d2 <== NOT EXECUTED
5ba8c: 57c0 seq %d0 <== NOT EXECUTED
}
5ba8e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5ba92: 4480 negl %d0 <== NOT EXECUTED
5ba94: 4e5e unlk %fp <== NOT EXECUTED
0004d000 <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d000: 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 ) {
4d004: 2039 0006 5264 movel 65264 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d00a: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4d00e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d012: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4d016: 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 ) {
4d01a: 4a80 tstl %d0 <== NOT EXECUTED
4d01c: 6720 beqs 4d03e <_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 );
4d01e: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED
4d022: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
4d028: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
4d02c: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
}
return status;
}
4d030: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4d036: 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 );
4d038: 4ef9 0004 c10e jmp 4c10e <_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();
4d03e: 2f39 0006 5324 movel 65324 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d044: 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();
4d04a: 4eb9 0004 b24c jsr 4b24c <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d050: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d052: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d054: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d056: 4eb9 0004 c10e jsr 4c10e <_Heap_Walk> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4d05c: 2f39 0006 5324 movel 65324 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4d062: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d066: 4eb9 0004 b2ac jsr 4b2ac <_API_Mutex_Unlock> <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d06c: 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();
4d070: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d074: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4d07a: 4e5e unlk %fp <== NOT EXECUTED
...
0004b808 <_RTEMS_Tasks_Invoke_task_variable_dtor>:
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4b808: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
4b80c: 2039 0005 eff4 movel 5eff4 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4b812: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b814: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
4b818: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
if (_Thread_Is_executing(the_thread)) {
4b81c: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
4b820: 671e beqs 4b840 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x38><== NOT EXECUTED
value = *tvp->ptr;
*tvp->ptr = tvp->gval;
} else {
value = tvp->tval;
4b822: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
}
if ( dtor )
4b826: 4a88 tstl %a0 <== NOT EXECUTED
4b828: 6706 beqs 4b830 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x28><== NOT EXECUTED
(*dtor)(value);
4b82a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b82c: 4e90 jsr %a0@ <== NOT EXECUTED
4b82e: 588f addql #4,%sp <== NOT EXECUTED
_Workspace_Free(tvp);
4b830: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4b834: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b838: 4e5e unlk %fp <== NOT EXECUTED
}
if ( dtor )
(*dtor)(value);
_Workspace_Free(tvp);
4b83a: 4ef9 0004 9a9e jmp 49a9e <_Workspace_Free> <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
value = *tvp->ptr;
4b840: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
4b844: 2011 movel %a1@,%d0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4b846: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED
4b84a: 60da bras 4b826 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x1e><== NOT EXECUTED
0004b736 <_RTEMS_tasks_Create_extension>:
bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4b736: 4e56 0000 linkw %fp,#0
4b73a: 2f0a movel %a2,%sp@-
4b73c: 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() )
4b740: 4a39 0005 d5a4 tstb 5d5a4 <Configuration_RTEMS_API+0x4>
4b746: 6758 beqs 4b7a0 <_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 );
4b748: 705e moveq #94,%d0
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4b74a: 2f00 movel %d0,%sp@-
4b74c: 4eb9 0004 9a82 jsr 49a82 <_Workspace_Allocate>
if ( !api )
4b752: 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 );
4b754: 2040 moveal %d0,%a0
if ( !api )
4b756: 4a80 tstl %d0
4b758: 6758 beqs 4b7b2 <_RTEMS_tasks_Create_extension+0x7c><== NEVER TAKEN
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4b75a: 2540 00fc movel %d0,%a2@(252)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4b75e: 4200 clrb %d0
api->pending_events = EVENT_SETS_NONE_PENDING;
4b760: 4290 clrl %a0@
4b762: 1140 0008 moveb %d0,%a0@(8)
api->event_condition = 0;
4b766: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4b76a: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4b76e: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4b772: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4b776: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4b77a: 42a8 001a clrl %a0@(26)
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
4b77e: 42aa 0108 clrl %a2@(264)
if ( rtems_configuration_get_notepads_enabled() ) {
4b782: 4a39 0005 d5a4 tstb 5d5a4 <Configuration_RTEMS_API+0x4>
4b788: 670c beqs 4b796 <_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(
4b78a: 41e8 001e lea %a0@(30),%a0
4b78e: 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;
4b790: 4298 clrl %a0@+
4b792: 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++)
4b794: 66fa bnes 4b790 <_RTEMS_tasks_Create_extension+0x5a>
api->Notepads[i] = 0;
}
return true;
}
4b796: 246e fffc moveal %fp@(-4),%a2
4b79a: 4e5e unlk %fp
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4b79c: 7001 moveq #1,%d0
}
4b79e: 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));
4b7a0: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4b7a2: 2f00 movel %d0,%sp@-
4b7a4: 4eb9 0004 9a82 jsr 49a82 <_Workspace_Allocate>
if ( !api )
4b7aa: 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 );
4b7ac: 2040 moveal %d0,%a0
if ( !api )
4b7ae: 4a80 tstl %d0
4b7b0: 66a8 bnes 4b75a <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
4b7b2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b7b6: 4e5e unlk %fp <== NOT EXECUTED
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4b7b8: 4200 clrb %d0 <== NOT EXECUTED
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
0004b6e0 <_RTEMS_tasks_Delete_extension>:
void _RTEMS_tasks_Delete_extension(
Thread_Control *executing,
Thread_Control *deleted
)
{
4b6e0: 4e56 fff4 linkw %fp,#-12
4b6e4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4b6e8: 246e 000c moveal %fp@(12),%a2
4b6ec: 47f9 0004 b808 lea 4b808 <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3
/*
* Free per task variable memory
*/
tvp = deleted->task_variables;
4b6f2: 206a 0108 moveal %a2@(264),%a0
deleted->task_variables = NULL;
4b6f6: 42aa 0108 clrl %a2@(264)
while (tvp) {
4b6fa: 4a88 tstl %a0
4b6fc: 671e beqs 4b71c <_RTEMS_tasks_Delete_extension+0x3c><== ALWAYS TAKEN
next = (rtems_task_variable_t *)tvp->next;
4b6fe: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4b700: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b702: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b704: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4b706: 508f addql #8,%sp <== NOT EXECUTED
4b708: 4a82 tstl %d2 <== NOT EXECUTED
4b70a: 6710 beqs 4b71c <_RTEMS_tasks_Delete_extension+0x3c><== NOT EXECUTED
next = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
tvp = next;
4b70c: 2042 moveal %d2,%a0 <== NOT EXECUTED
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
next = (rtems_task_variable_t *)tvp->next;
4b70e: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4b710: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b712: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b714: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4b716: 508f addql #8,%sp <== NOT EXECUTED
4b718: 4a82 tstl %d2 <== NOT EXECUTED
4b71a: 66f0 bnes 4b70c <_RTEMS_tasks_Delete_extension+0x2c><== NOT EXECUTED
/*
* Free API specific memory
*/
(void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] );
4b71c: 2f2a 00fc movel %a2@(252),%sp@-
4b720: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free>
deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL;
4b726: 588f addql #4,%sp
4b728: 42aa 00fc clrl %a2@(252)
}
4b72c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4b732: 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 d5ca moveal 5d5ca <Configuration_RTEMS_API+0x2a>,%a2
maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
4688a: 2639 0005 d5c6 movel 5d5c6 <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 77b8 jsr 477b8 <_Internal_error_Occurred>
...
0004b664 <_RTEMS_tasks_Post_switch_extension>:
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4b664: 4e56 ffec linkw %fp,#-20
4b668: 206e 0008 moveal %fp@(8),%a0
4b66c: 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 ];
4b670: 2468 00fc moveal %a0@(252),%a2
if ( !api )
4b674: 4a8a tstl %a2
4b676: 671a beqs 4b692 <_RTEMS_tasks_Post_switch_extension+0x2e><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
4b678: 203c 0000 0700 movel #1792,%d0
4b67e: 40c1 movew %sr,%d1
4b680: 8081 orl %d1,%d0
4b682: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
4b684: 242a 0012 movel %a2@(18),%d2
asr->signals_posted = 0;
4b688: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
4b68c: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
4b68e: 4a82 tstl %d2
4b690: 660a bnes 4b69c <_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 );
}
4b692: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4b698: 4e5e unlk %fp
4b69a: 4e75 rts
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
return;
asr->nest_level += 1;
4b69c: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
4b6a0: 260e movel %fp,%d3 <== NOT EXECUTED
4b6a2: 5983 subql #4,%d3 <== NOT EXECUTED
4b6a4: 47f9 0004 d3ac lea 4d3ac <rtems_task_mode>,%a3 <== NOT EXECUTED
4b6aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b6ac: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4b6b2: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED
4b6b6: 4e93 jsr %a3@ <== NOT EXECUTED
(*asr->handler)( signal_set );
4b6b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b6ba: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
4b6be: 4e90 jsr %a0@ <== NOT EXECUTED
asr->nest_level -= 1;
4b6c0: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4b6c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b6c6: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4b6cc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4b6d0: 4e93 jsr %a3@ <== NOT EXECUTED
4b6d2: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4b6d6: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b6dc: 4e5e unlk %fp <== NOT EXECUTED
0004b60a <_RTEMS_tasks_Switch_extension>:
void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4b60a: 4e56 0000 linkw %fp,#0
4b60e: 206e 0008 moveal %fp@(8),%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4b612: 2068 0108 moveal %a0@(264),%a0
while (tvp) {
4b616: 4a88 tstl %a0
4b618: 6712 beqs 4b62c <_RTEMS_tasks_Switch_extension+0x22><== ALWAYS TAKEN
tvp->tval = *tvp->ptr;
4b61a: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4b61e: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4b622: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4b626: 2050 moveal %a0@,%a0 <== NOT EXECUTED
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4b628: 4a88 tstl %a0 <== NOT EXECUTED
4b62a: 66ee bnes 4b61a <_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;
4b62c: 206e 000c moveal %fp@(12),%a0
4b630: 2068 0108 moveal %a0@(264),%a0
while (tvp) {
4b634: 4a88 tstl %a0
4b636: 6712 beqs 4b64a <_RTEMS_tasks_Switch_extension+0x40><== ALWAYS TAKEN
tvp->gval = *tvp->ptr;
4b638: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4b63c: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED
*tvp->ptr = tvp->tval;
4b640: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4b644: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4b646: 4a88 tstl %a0 <== NOT EXECUTED
4b648: 66ee bnes 4b638 <_RTEMS_tasks_Switch_extension+0x2e><== NOT EXECUTED
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4b64a: 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 b0c4 lea 4b0c4 <_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 8d28 jsr 48d28 <_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 115c cmpal 6115c <_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 106c pea 6106c <_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 af84 jsr 4af84 <_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 b090 jsr 4b090 <_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 8d28 jsr 48d28 <_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 115c cmpal 6115c <_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 106c pea 6106c <_Thread_Time_of_last_context_switch><== NOT EXECUTED
473b6: 4eb9 0004 b0c4 jsr 4b0c4 <_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 af84 jsr 4af84 <_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 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
47988: 4eb9 0004 985c jsr 4985c <_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 0fa0 movel 60fa0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
479c8: 5380 subql #1,%d0 <== NOT EXECUTED
479ca: 23c0 0006 0fa0 movel %d0,60fa0 <_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 1080 pea 61080 <_Watchdog_Ticks_chain> <== NOT EXECUTED
479f8: 4eb9 0004 b3cc jsr 4b3cc <_Watchdog_Insert> <== NOT EXECUTED
479fe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47a02: 2039 0006 0fa0 movel 60fa0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47a08: 5380 subql #1,%d0 <== NOT EXECUTED
47a0a: 23c0 0006 0fa0 movel %d0,60fa0 <_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 a034 jsr 4a034 <_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 1080 pea 61080 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47a38: 4eb9 0004 b3cc jsr 4b3cc <_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 0fa0 movel 60fa0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47a48: 5380 subql #1,%d0 <== NOT EXECUTED
47a4a: 23c0 0006 0fa0 movel %d0,60fa0 <_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 af84 lea 4af84 <_Timespec_Add_to>,%a5 <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
47426: 49f9 0004 b090 lea 4b090 <_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 b05c lea 4b05c <_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
0005f2cc <_Region_Process_queue>:
*/
void _Region_Process_queue(
Region_Control *the_region
)
{
5f2cc: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5f2d0: 2039 0007 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5f2d6: 5280 addql #1,%d0 <== NOT EXECUTED
5f2d8: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5f2dc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
5f2e0: 23c0 0007 db34 movel %d0,7db34 <_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();
5f2e6: 2f39 0007 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5f2ec: 240b movel %a3,%d2 <== NOT EXECUTED
5f2ee: 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 );
5f2f4: 260b movel %a3,%d3 <== NOT EXECUTED
5f2f6: 49f9 0005 fb80 lea 5fb80 <_Thread_queue_First>,%a4 <== NOT EXECUTED
5f2fc: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED
5f302: 4bf9 0005 a6a8 lea 5a6a8 <_Heap_Allocate_aligned_with_boundary>,%a5<== NOT EXECUTED
5f308: 4eb9 0005 9ba0 jsr 59ba0 <_API_Mutex_Unlock> <== NOT EXECUTED
5f30e: 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 );
5f310: 283c 0005 fa58 movel #391768,%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 );
5f316: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f318: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5f31a: 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 );
5f31c: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5f31e: 4a80 tstl %d0 <== NOT EXECUTED
5f320: 6738 beqs 5f35a <_Region_Process_queue+0x8e> <== NOT EXECUTED
5f322: 42a7 clrl %sp@- <== NOT EXECUTED
5f324: 42a7 clrl %sp@- <== NOT EXECUTED
5f326: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
5f32a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5f32c: 4e95 jsr %a5@ <== NOT EXECUTED
the_segment = (void **) _Region_Allocate_segment(
the_region,
the_thread->Wait.count
);
if ( the_segment == NULL )
5f32e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5f332: 4a80 tstl %d0 <== NOT EXECUTED
5f334: 6724 beqs 5f35a <_Region_Process_queue+0x8e> <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
5f336: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
5f33a: 2080 movel %d0,%a0@ <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
5f33c: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
5f340: 2044 moveal %d4,%a0 <== NOT EXECUTED
5f342: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f344: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f346: 4e90 jsr %a0@ <== NOT EXECUTED
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
5f348: 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;
5f34a: 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 );
5f34e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f350: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5f352: 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 );
5f354: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5f356: 4a80 tstl %d0 <== NOT EXECUTED
5f358: 66c8 bnes 5f322 <_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();
}
5f35a: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
5f360: 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();
5f362: 4ef9 0005 c34a jmp 5c34a <_Thread_Enable_dispatch> <== NOT EXECUTED
0004be2c <_Scheduler_priority_Block>:
void _Scheduler_priority_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
4be2c: 4e56 0000 linkw %fp,#0
4be30: 206e 000c moveal %fp@(12),%a0
4be34: 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;
4be36: 2268 008a moveal %a0@(138),%a1
4be3a: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
4be3c: 2029 0008 movel %a1@(8),%d0
4be40: b091 cmpl %a1@,%d0
4be42: 677e beqs 4bec2 <_Scheduler_priority_Block+0x96>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4be44: 2450 moveal %a0@,%a2
previous = the_node->previous;
4be46: 2268 0004 moveal %a0@(4),%a1
next->previous = previous;
4be4a: 2549 0004 movel %a1,%a2@(4)
previous->next = next;
4be4e: 228a movel %a2,%a1@
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4be50: b1f9 0005 eff8 cmpal 5eff8 <_Per_CPU_Information+0x10>,%a0
4be56: 671c beqs 4be74 <_Scheduler_priority_Block+0x48>
_Scheduler_priority_Schedule_body(the_scheduler);
if ( _Thread_Is_executing( the_thread ) )
4be58: b1f9 0005 eff4 cmpal 5eff4 <_Per_CPU_Information+0xc>,%a0
4be5e: 6706 beqs 4be66 <_Scheduler_priority_Block+0x3a>
_Scheduler_priority_Block_body(the_scheduler, the_thread);
}
4be60: 245f moveal %sp@+,%a2
4be62: 4e5e unlk %fp
4be64: 4e75 rts
4be66: 245f moveal %sp@+,%a2
4be68: 4e5e unlk %fp
_Thread_Dispatch_necessary = true;
4be6a: 7001 moveq #1,%d0
4be6c: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18>
4be72: 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 );
4be74: 3039 0005 f004 movew 5f004 <_Priority_Major_bit_map>,%d0
4be7a: 4840 swap %d0
4be7c: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4be7e: 43f9 0005 f008 lea 5f008 <_Priority_Bit_map>,%a1
4be84: 0280 0000 ffff andil #65535,%d0
4be8a: 3231 0a00 movew %a1@(00000000,%d0:l:2),%d1
4be8e: 4841 swap %d1
4be90: 04c1 ff1 %d1
4be92: 226e 0008 moveal %fp@(8),%a1
return (_Priority_Bits_index( major ) << 4) +
4be96: 0281 0000 ffff andil #65535,%d1
4be9c: e988 lsll #4,%d0
4be9e: 2251 moveal %a1@,%a1
4bea0: 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 ] ) )
4bea2: 2200 movel %d0,%d1
4bea4: e988 lsll #4,%d0
4bea6: e589 lsll #2,%d1
4bea8: 9081 subl %d1,%d0
4beaa: d3c0 addal %d0,%a1
4beac: 2019 movel %a1@+,%d0
4beae: b3c0 cmpal %d0,%a1
4beb0: 6754 beqs 4bf06 <_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(
4beb2: 23c0 0005 eff8 movel %d0,5eff8 <_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 ) )
4beb8: b1f9 0005 eff4 cmpal 5eff4 <_Per_CPU_Information+0xc>,%a0
4bebe: 66a0 bnes 4be60 <_Scheduler_priority_Block+0x34> <== NEVER TAKEN
4bec0: 60a4 bras 4be66 <_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 );
4bec2: 2009 movel %a1,%d0
4bec4: 5880 addql #4,%d0
head->next = tail;
head->previous = NULL;
4bec6: 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 );
4beca: 2280 movel %d0,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4becc: 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 );
4bed0: 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;
4bed4: 2469 0004 moveal %a1@(4),%a2
4bed8: 3029 000e movew %a1@(14),%d0
4bedc: 3212 movew %a2@,%d1
4bede: c081 andl %d1,%d0
4bee0: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
4bee2: 6600 ff6c bnew 4be50 <_Scheduler_priority_Block+0x24>
_Priority_Major_bit_map &= the_priority_map->block_major;
4bee6: 3239 0005 f004 movew 5f004 <_Priority_Major_bit_map>,%d1
4beec: 3029 000c movew %a1@(12),%d0
4bef0: c081 andl %d1,%d0
4bef2: 33c0 0005 f004 movew %d0,5f004 <_Priority_Major_bit_map>
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4bef8: b1f9 0005 eff8 cmpal 5eff8 <_Per_CPU_Information+0x10>,%a0
4befe: 6600 ff58 bnew 4be58 <_Scheduler_priority_Block+0x2c>
4bf02: 6000 ff70 braw 4be74 <_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;
4bf06: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4bf08: 23c0 0005 eff8 movel %d0,5eff8 <_Per_CPU_Information+0x10> <== NOT EXECUTED
4bf0e: 60a8 bras 4beb8 <_Scheduler_priority_Block+0x8c> <== NOT EXECUTED
0004815c <_Scheduler_priority_Schedule>:
*/
void _Scheduler_priority_Schedule(
Scheduler_Control *the_scheduler
)
{
4815c: 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 );
48160: 3039 0005 f004 movew 5f004 <_Priority_Major_bit_map>,%d0
48166: 4840 swap %d0
48168: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4816a: 41f9 0005 f008 lea 5f008 <_Priority_Bit_map>,%a0
48170: 0280 0000 ffff andil #65535,%d0
48176: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1
4817a: 4841 swap %d1
4817c: 04c1 ff1 %d1
_Scheduler_priority_Schedule_body( the_scheduler );
}
4817e: 206e 0008 moveal %fp@(8),%a0
return (_Priority_Bits_index( major ) << 4) +
48182: 0281 0000 ffff andil #65535,%d1
48188: e988 lsll #4,%d0
4818a: 2050 moveal %a0@,%a0
4818c: 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 ] ) )
4818e: 2200 movel %d0,%d1
48190: e988 lsll #4,%d0
48192: e589 lsll #2,%d1
48194: 9081 subl %d1,%d0
48196: d1c0 addal %d0,%a0
48198: 2018 movel %a0@+,%d0
4819a: b1c0 cmpal %d0,%a0
4819c: 670a beqs 481a8 <_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(
4819e: 23c0 0005 eff8 movel %d0,5eff8 <_Per_CPU_Information+0x10>
481a4: 4e5e unlk %fp
481a6: 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;
481a8: 4280 clrl %d0 <== NOT EXECUTED
481aa: 4e5e unlk %fp <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
481ac: 23c0 0005 eff8 movel %d0,5eff8 <_Per_CPU_Information+0x10> <== NOT EXECUTED
000481d0 <_Scheduler_priority_Thread_scheduler_free>:
void _Scheduler_priority_Thread_scheduler_free (
Scheduler_Control *the_scheduler __attribute__((unused)),
Thread_Control *the_thread
)
{
481d0: 4e56 0000 linkw %fp,#0
481d4: 206e 000c moveal %fp@(12),%a0
_Workspace_Free( the_thread->scheduler.priority );
481d8: 2d68 008a 0008 movel %a0@(138),%fp@(8)
}
481de: 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 );
481e0: 4ef9 0004 9a9e jmp 49a9e <_Workspace_Free>
...
00048254 <_Scheduler_priority_Unblock>:
void _Scheduler_priority_Unblock (
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
48254: 4e56 0000 linkw %fp,#0
48258: 206e 000c moveal %fp@(12),%a0
4825c: 2f0b movel %a3,%sp@-
4825e: 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 );
48260: 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;
48264: 2669 0004 moveal %a1@(4),%a3
48268: 3029 000a movew %a1@(10),%d0
4826c: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
4826e: 2451 moveal %a1@,%a2
48270: 8081 orl %d1,%d0
48272: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
48274: 3029 0008 movew %a1@(8),%d0
48278: 3239 0005 f004 movew 5f004 <_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;
4827e: 226a 0008 moveal %a2@(8),%a1
48282: 8280 orl %d0,%d1
the_node->next = tail;
tail->previous = the_node;
48284: 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 );
48288: 588a addql #4,%a2
4828a: 33c1 0005 f004 movew %d1,5f004 <_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 ) {
48290: 2028 0014 movel %a0@(20),%d0
48294: 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;
48296: 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;
4829a: 2288 movel %a0,%a1@
4829c: 2279 0005 eff8 moveal 5eff8 <_Per_CPU_Information+0x10>,%a1
482a2: b0a9 0014 cmpl %a1@(20),%d0
482a6: 641a bccs 482c2 <_Scheduler_priority_Unblock+0x6e>
_Thread_Heir = the_thread;
482a8: 23c8 0005 eff8 movel %a0,5eff8 <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
482ae: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0
482b4: 4a28 0074 tstb %a0@(116)
482b8: 6710 beqs 482ca <_Scheduler_priority_Unblock+0x76>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
482ba: 7001 moveq #1,%d0
482bc: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18>
_Scheduler_priority_Unblock_body(the_scheduler, the_thread);
}
482c2: 245f moveal %sp@+,%a2
482c4: 265f moveal %sp@+,%a3
482c6: 4e5e unlk %fp
482c8: 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 ||
482ca: 4a80 tstl %d0
482cc: 66f4 bnes 482c2 <_Scheduler_priority_Unblock+0x6e><== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
482ce: 7001 moveq #1,%d0 <== NOT EXECUTED
482d0: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18> <== NOT EXECUTED
482d6: 60ea bras 482c2 <_Scheduler_priority_Unblock+0x6e><== NOT EXECUTED
000482d8 <_Scheduler_priority_Yield>:
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
482d8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
482dc: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
482e2: 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 );
482e6: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
482ec: 2002 movel %d2,%d0 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
482ee: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED
482f2: 2251 moveal %a1@,%a1 <== NOT EXECUTED
_ISR_Disable( level );
482f4: 40c1 movew %sr,%d1 <== NOT EXECUTED
482f6: 8081 orl %d1,%d0 <== NOT EXECUTED
482f8: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( !_Chain_Has_only_one_node( ready ) ) {
482fa: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED
482fe: b091 cmpl %a1@,%d0 <== NOT EXECUTED
48300: 6750 beqs 48352 <_Scheduler_priority_Yield+0x7a> <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
48302: 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 );
48304: 2009 movel %a1,%d0 <== NOT EXECUTED
48306: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
48308: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
4830c: 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;
48310: 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;
48314: 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;
48316: 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 );
4831a: 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;
4831c: 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;
48320: 2488 movel %a0,%a2@ <== NOT EXECUTED
_Chain_Extract_unprotected( &executing->Object.Node );
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
48322: 46c1 movew %d1,%sr <== NOT EXECUTED
48324: 8481 orl %d1,%d2 <== NOT EXECUTED
48326: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
48328: b1f9 0005 eff8 cmpal 5eff8 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
4832e: 6712 beqs 48342 <_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;
48330: 7001 moveq #1,%d0 <== NOT EXECUTED
48332: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18> <== NOT EXECUTED
_ISR_Enable( level );
48338: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4833a: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED
4833e: 4e5e unlk %fp <== NOT EXECUTED
48340: 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 );
48342: 23d1 0005 eff8 movel %a1@,5eff8 <_Per_CPU_Information+0x10><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
48348: 7001 moveq #1,%d0 <== NOT EXECUTED
4834a: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18> <== NOT EXECUTED
48350: 60e6 bras 48338 <_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 ) )
48352: b1f9 0005 eff8 cmpal 5eff8 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
48358: 67de beqs 48338 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4835a: 7001 moveq #1,%d0 <== NOT EXECUTED
4835c: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18> <== NOT EXECUTED
48362: 60d4 bras 48338 <_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 c87e lea 5c87e <_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
00047740 <_TOD_Get_uptime_as_timespec>:
*/
void _TOD_Get_uptime_as_timespec(
struct timespec *uptime
)
{
47740: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
47744: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
47748: 4eb9 0004 bf58 jsr 4bf58 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_To_timespec( &uptime_ts, uptime );
4774e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47752: 588f addql #4,%sp <== NOT EXECUTED
47754: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47758: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
}
4775c: 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 );
4775e: 2080 movel %d0,%a0@ <== NOT EXECUTED
47760: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
}
...
00048c9c <_TOD_Set>:
*/
void _TOD_Set(
const struct timespec *time
)
{
48c9c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48ca0: 2039 0006 93d8 movel 693d8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
48ca6: 5280 addql #1,%d0 <== NOT EXECUTED
48ca8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48caa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
48cae: 23c0 0006 93d8 movel %d0,693d8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
long seconds;
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds = _TOD_Seconds_since_epoch();
48cb4: 2039 0006 9482 movel 69482 <_TOD_Now>,%d0 <== NOT EXECUTED
if ( time->tv_sec < seconds )
48cba: 2212 movel %a2@,%d1 <== NOT EXECUTED
48cbc: b280 cmpl %d0,%d1 <== NOT EXECUTED
48cbe: 6d38 blts 48cf8 <_TOD_Set+0x5c> <== NOT EXECUTED
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
48cc0: 9280 subl %d0,%d1 <== NOT EXECUTED
48cc2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
48cc4: 42a7 clrl %sp@- <== NOT EXECUTED
48cc6: 4879 0006 94ac pea 694ac <_Watchdog_Seconds_chain> <== NOT EXECUTED
48ccc: 4eb9 0004 b3a0 jsr 4b3a0 <_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 );
48cd2: 23d2 0006 9482 movel %a2@,69482 <_TOD_Now> <== NOT EXECUTED
48cd8: 588a addql #4,%a2 <== NOT EXECUTED
48cda: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48cde: 23d2 0006 9486 movel %a2@,69486 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48ce4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48ce8: 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;
48cea: 7001 moveq #1,%d0 <== NOT EXECUTED
48cec: 13c0 0006 93e8 moveb %d0,693e8 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48cf2: 4ef9 0004 a33e jmp 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
48cf8: 9081 subl %d1,%d0 <== NOT EXECUTED
48cfa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48cfc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48d00: 4879 0006 94ac pea 694ac <_Watchdog_Seconds_chain> <== NOT EXECUTED
48d06: 4eb9 0004 b3a0 jsr 4b3a0 <_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 );
48d0c: 23d2 0006 9482 movel %a2@,69482 <_TOD_Now> <== NOT EXECUTED
48d12: 588a addql #4,%a2 <== NOT EXECUTED
48d14: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48d18: 23d2 0006 9486 movel %a2@,69486 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48d1e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d22: 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;
48d24: 7001 moveq #1,%d0 <== NOT EXECUTED
48d26: 13c0 0006 93e8 moveb %d0,693e8 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48d2c: 4ef9 0004 a33e jmp 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
...
00047384 <_TOD_Tickle_ticks>:
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
47384: 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() );
47388: 2239 0005 d5e0 movel 5d5e0 <Configuration+0xc>,%d1
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
4738e: 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 );
47392: 240e movel %fp,%d2
47394: 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() );
47396: 263c 0000 03e8 movel #1000,%d3
4739c: 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 );
473a0: 45f9 0004 945c lea 4945c <_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;
473a6: 2039 0005 ef60 movel 5ef60 <_Watchdog_Ticks_since_boot>,%d0
473ac: 5280 addql #1,%d0
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
473ae: 2f02 movel %d2,%sp@-
473b0: 4879 0005 eeb2 pea 5eeb2 <_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() );
473b6: 2d41 fffc movel %d1,%fp@(-4)
473ba: 42ae fff8 clrl %fp@(-8)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
473be: 23c0 0005 ef60 movel %d0,5ef60 <_Watchdog_Ticks_since_boot>
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
473c4: 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 );
473c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
473c8: 4879 0005 eee2 pea 5eee2 <_TOD_Now> <== NOT EXECUTED
473ce: 4e92 jsr %a2@ <== NOT EXECUTED
while ( seconds ) {
473d0: 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 );
473d4: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( seconds ) {
473d6: 6716 beqs 473ee <_TOD_Tickle_ticks+0x6a> <== NOT EXECUTED
473d8: 45f9 0004 99a0 lea 499a0 <_Watchdog_Tickle>,%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
473de: 4879 0005 ef0c pea 5ef0c <_Watchdog_Seconds_chain> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
473e4: 5382 subql #1,%d2 <== NOT EXECUTED
473e6: 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 ) {
473e8: 588f addql #4,%sp <== NOT EXECUTED
473ea: 4a82 tstl %d2 <== NOT EXECUTED
473ec: 66f0 bnes 473de <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
}
}
473ee: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
473f4: 4e5e unlk %fp <== NOT EXECUTED
00047270 <_TOD_To_seconds>:
*/
uint32_t _TOD_To_seconds(
const rtems_time_of_day *the_tod
)
{
47270: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47274: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47278: 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;
4727c: 2610 movel %a0@,%d3 <== NOT EXECUTED
4727e: 7403 moveq #3,%d2 <== NOT EXECUTED
)
{
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
47280: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
47284: 5380 subql #1,%d0 <== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
47286: c483 andl %d3,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
47288: 6774 beqs 472fe <_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 ];
4728a: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
4728e: 43f9 0005 ef2a lea 5ef2a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47294: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
4729a: 45f9 0005 ef5e lea 5ef5e <_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 ];
472a0: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED
472a4: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
472aa: 2241 moveal %d1,%a1 <== NOT EXECUTED
472ac: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472ae: 2003 movel %d3,%d0 <== NOT EXECUTED
472b0: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED
472b6: e488 lsrl #2,%d0 <== NOT EXECUTED
472b8: 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)
472bc: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
472c0: 2601 movel %d1,%d3 <== NOT EXECUTED
472c2: ed89 lsll #6,%d1 <== NOT EXECUTED
472c4: e58b lsll #2,%d3 <== NOT EXECUTED
472c6: 9283 subl %d3,%d1 <== NOT EXECUTED
472c8: 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 ];
472cc: 4283 clrl %d3 <== NOT EXECUTED
472ce: 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;
472d2: 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 ) *
472d4: 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;
472d6: 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 ];
472dc: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
472de: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
472e2: e58a lsll #2,%d2 <== NOT EXECUTED
472e4: 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)
472e6: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
472ea: 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)
472ec: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
472f2: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
472f4: d081 addl %d1,%d0 <== NOT EXECUTED
472f6: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED
472fa: 4e5e unlk %fp <== NOT EXECUTED
472fc: 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 ];
472fe: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
47302: 43f9 0005 ef2a lea 5ef2a <_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 ];
47308: 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 ) *
4730e: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
47314: 45f9 0005 ef5e lea 5ef5e <_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 ];
4731a: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED
4731e: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
47324: 2241 moveal %d1,%a1 <== NOT EXECUTED
47326: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47328: 2003 movel %d3,%d0 <== NOT EXECUTED
4732a: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED
47330: e488 lsrl #2,%d0 <== NOT EXECUTED
47332: 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)
47336: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
4733a: 2601 movel %d1,%d3 <== NOT EXECUTED
4733c: ed89 lsll #6,%d1 <== NOT EXECUTED
4733e: e58b lsll #2,%d3 <== NOT EXECUTED
47340: 9283 subl %d3,%d1 <== NOT EXECUTED
47342: 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 ];
47346: 4283 clrl %d3 <== NOT EXECUTED
47348: 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;
4734c: 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 ) *
4734e: 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;
47350: 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 ];
47356: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
47358: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
4735c: e58a lsll #2,%d2 <== NOT EXECUTED
4735e: 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)
47360: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
47364: 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)
47366: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
4736c: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
4736e: d081 addl %d1,%d0 <== NOT EXECUTED
47370: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED
47374: 4e5e unlk %fp <== NOT EXECUTED
00047378 <_TOD_Validate>:
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
47378: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4737c: 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();
47380: 2039 0005 fdc0 movel 5fdc0 <Configuration+0xc>,%d0 <== NOT EXECUTED
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
47386: 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) ||
47388: 4a88 tstl %a0 <== NOT EXECUTED
4738a: 6762 beqs 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
)
{
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
4738c: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
47392: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
47396: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED
4739a: 6352 blss 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->ticks >= ticks_per_second) ||
4739c: 703b moveq #59,%d0 <== NOT EXECUTED
4739e: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
473a2: 654a bcss 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
473a4: b0a8 0010 cmpl %a0@(16),%d0 <== NOT EXECUTED
473a8: 6544 bcss 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
473aa: 7217 moveq #23,%d1 <== NOT EXECUTED
473ac: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED
473b0: 653c bcss 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
473b2: 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) ||
473b6: 6736 beqs 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month == 0) ||
473b8: 740c moveq #12,%d2 <== NOT EXECUTED
473ba: b480 cmpl %d0,%d2 <== NOT EXECUTED
473bc: 6530 bcss 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
473be: 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) ||
473c0: 0c81 0000 07c3 cmpil #1987,%d1 <== NOT EXECUTED
473c6: 6326 blss 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
473c8: 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) ||
473cc: 4a88 tstl %a0 <== NOT EXECUTED
473ce: 671e beqs 473ee <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
473d0: 143c 0003 moveb #3,%d2 <== NOT EXECUTED
473d4: c282 andl %d2,%d1 <== NOT EXECUTED
473d6: 661e bnes 473f6 <_TOD_Validate+0x7e> <== NOT EXECUTED
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
473d8: 43f9 0005 ef66 lea 5ef66 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED
473de: 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(
473e2: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
473e4: 53c0 sls %d0 <== NOT EXECUTED
473e6: 4480 negl %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473e8: 241f movel %sp@+,%d2 <== NOT EXECUTED
473ea: 4e5e unlk %fp <== NOT EXECUTED
473ec: 4e75 rts <== NOT EXECUTED
473ee: 241f movel %sp@+,%d2 <== NOT EXECUTED
473f0: 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;
473f2: 4200 clrb %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473f4: 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 ];
473f6: 43f9 0005 ef66 lea 5ef66 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED
473fc: 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(
47400: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
47402: 53c0 sls %d0 <== NOT EXECUTED
47404: 4480 negl %d0 <== NOT EXECUTED
47406: 60e0 bras 473e8 <_TOD_Validate+0x70> <== NOT EXECUTED
000483cc <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
483cc: 4e56 ffec linkw %fp,#-20
483d0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
483d4: 246e 0008 moveal %fp@(8),%a2
*/
/*
* Save original state
*/
original_state = the_thread->current_state;
483d8: 262a 0010 movel %a2@(16),%d3
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
483dc: 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 );
483e0: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
483e2: 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 );
483e6: 4eb9 0004 91f4 jsr 491f4 <_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 )
483ec: 588f addql #4,%sp
483ee: b4aa 0014 cmpl %a2@(20),%d2
483f2: 670c beqs 48400 <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
483f4: 2f02 movel %d2,%sp@-
483f6: 2f0a movel %a2,%sp@-
483f8: 4eb9 0004 917c jsr 4917c <_Thread_Set_priority>
483fe: 508f addql #8,%sp
_ISR_Disable( level );
48400: 203c 0000 0700 movel #1792,%d0
48406: 40c2 movew %sr,%d2
48408: 8082 orl %d2,%d0
4840a: 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;
4840c: 202a 0010 movel %a2@(16),%d0
if ( state != STATES_TRANSIENT ) {
48410: 7204 moveq #4,%d1
48412: b280 cmpl %d0,%d1
48414: 6738 beqs 4844e <_Thread_Change_priority+0x82>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
48416: 44c3 movew %d3,%ccr
48418: 6708 beqs 48422 <_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);
4841a: 72fb moveq #-5,%d1
4841c: c280 andl %d0,%d1
4841e: 2541 0010 movel %d1,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
48422: 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);
48424: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
4842a: 660a bnes 48436 <_Thread_Change_priority+0x6a>
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
4842c: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
48432: 4e5e unlk %fp
48434: 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 );
48436: 2d4a 000c movel %a2,%fp@(12)
4843a: 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 );
}
48440: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
48446: 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 );
48448: 4ef9 0004 90d0 jmp 490d0 <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
4844e: 44c3 movew %d3,%ccr
48450: 673c beqs 4848e <_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 );
48452: 42aa 0010 clrl %a2@(16)
if ( prepend_it )
48456: 4a04 tstb %d4
48458: 6778 beqs 484d2 <_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 );
4845a: 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;
4845e: 2668 0004 moveal %a0@(4),%a3
48462: 3028 000a movew %a0@(10),%d0
48466: 3213 movew %a3@,%d1
_Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain,
48468: 2250 moveal %a0@,%a1
4846a: 8081 orl %d1,%d0
4846c: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
4846e: 3028 0008 movew %a0@(8),%d0
48472: 3239 0005 f004 movew 5f004 <_Priority_Major_bit_map>,%d1
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
48478: 2051 moveal %a1@,%a0
4847a: 8081 orl %d1,%d0
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4847c: 2549 0004 movel %a1,%a2@(4)
48480: 33c0 0005 f004 movew %d0,5f004 <_Priority_Major_bit_map>
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
before_node->previous = the_node;
48486: 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;
4848a: 228a movel %a2,%a1@
the_node->next = before_node;
4848c: 2488 movel %a0,%a2@
_Scheduler_priority_Ready_queue_enqueue_first( the_thread );
else
_Scheduler_priority_Ready_queue_enqueue( the_thread );
}
_ISR_Flash( level );
4848e: 203c 0000 0700 movel #1792,%d0
48494: 46c2 movew %d2,%sr
48496: 8082 orl %d2,%d0
48498: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule(
Scheduler_Control *the_scheduler
)
{
the_scheduler->Operations.schedule( the_scheduler );
4849a: 4879 0005 eebe pea 5eebe <_Scheduler>
484a0: 2079 0005 eec2 moveal 5eec2 <_Scheduler+0x4>,%a0
484a6: 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 );
484a8: 2079 0005 eff4 moveal 5eff4 <_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() &&
484ae: 588f addql #4,%sp
484b0: b1f9 0005 eff8 cmpal 5eff8 <_Per_CPU_Information+0x10>,%a0
484b6: 670e beqs 484c6 <_Thread_Change_priority+0xfa>
484b8: 4a28 0074 tstb %a0@(116)
484bc: 6708 beqs 484c6 <_Thread_Change_priority+0xfa> <== NEVER TAKEN
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
484be: 7001 moveq #1,%d0
484c0: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
484c6: 46c2 movew %d2,%sr
}
484c8: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
484ce: 4e5e unlk %fp
484d0: 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 );
484d2: 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;
484d6: 2668 0004 moveal %a0@(4),%a3
484da: 3028 000a movew %a0@(10),%d0
484de: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
484e0: 2250 moveal %a0@,%a1
484e2: 8081 orl %d1,%d0
484e4: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
484e6: 3028 0008 movew %a0@(8),%d0
484ea: 3239 0005 f004 movew 5f004 <_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;
484f0: 2069 0008 moveal %a1@(8),%a0
484f4: 8081 orl %d1,%d0
the_node->next = tail;
tail->previous = the_node;
484f6: 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 );
484fa: 5889 addql #4,%a1
484fc: 33c0 0005 f004 movew %d0,5f004 <_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;
48502: 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 );
48506: 2489 movel %a1,%a2@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
48508: 208a movel %a2,%a0@
4850a: 6082 bras 4848e <_Thread_Change_priority+0xc2>
0004850c <_Thread_Clear_state>:
)
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4850c: 203c 0000 0700 movel #1792,%d0
void _Thread_Clear_state(
Thread_Control *the_thread,
States_Control state
)
{
48512: 4e56 0000 linkw %fp,#0
48516: 206e 0008 moveal %fp@(8),%a0
4851a: 2f03 movel %d3,%sp@-
4851c: 2f02 movel %d2,%sp@-
4851e: 242e 000c movel %fp@(12),%d2
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
48522: 40c3 movew %sr,%d3
48524: 8083 orl %d3,%d0
48526: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
48528: 2228 0010 movel %a0@(16),%d1
if ( current_state & state ) {
4852c: 2002 movel %d2,%d0
4852e: c081 andl %d1,%d0
48530: 670c beqs 4853e <_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);
48532: 2002 movel %d2,%d0
48534: 4680 notl %d0
48536: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear( state, current_state );
48538: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4853c: 670e beqs 4854c <_Thread_Clear_state+0x40> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
4853e: 46c3 movew %d3,%sr <== NOT EXECUTED
}
48540: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48544: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
48548: 4e5e unlk %fp <== NOT EXECUTED
4854a: 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 );
4854c: 2f08 movel %a0,%sp@-
4854e: 4879 0005 eebe pea 5eebe <_Scheduler>
48554: 2079 0005 eece moveal 5eece <_Scheduler+0x10>,%a0
4855a: 4e90 jsr %a0@
4855c: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
4855e: 46c3 movew %d3,%sr
}
48560: 242e fff8 movel %fp@(-8),%d2
48564: 262e fffc movel %fp@(-4),%d3
48568: 4e5e unlk %fp <== NOT EXECUTED
0004856c <_Thread_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
4856c: 4280 clrl %d0
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
4856e: 4e56 0000 linkw %fp,#0
48572: 2f0b movel %a3,%sp@-
48574: 266e 0008 moveal %fp@(8),%a3
48578: 2f0a movel %a2,%sp@-
4857a: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4857e: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
48582: 302a 000a movew %a2@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48586: 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;
4858a: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
48590: 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 );
48592: 2f0a movel %a2,%sp@-
48594: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level>
4859a: 4eb9 0004 96e0 jsr 496e0 <_User_extensions_Thread_delete>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
485a0: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
485a6: 5280 addql #1,%d0
485a8: 23c0 0005 ee38 movel %d0,5ee38 <_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 );
485ae: 2f0a movel %a2,%sp@-
485b0: 2f0b movel %a3,%sp@-
485b2: 4eb9 0004 7904 jsr 47904 <_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 );
485b8: 4878 0001 pea 1 <ADD>
485bc: 2f0a movel %a2,%sp@-
485be: 4eb9 0004 91a4 jsr 491a4 <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
485c4: 2f0a movel %a2,%sp@-
485c6: 4eb9 0004 8fcc jsr 48fcc <_Thread_queue_Extract_with_proxy>
485cc: 4fef 0018 lea %sp@(24),%sp
485d0: 4a00 tstb %d0
485d2: 6608 bnes 485dc <_Thread_Close+0x70> <== NEVER TAKEN
if ( _Watchdog_Is_active( &the_thread->Timer ) )
485d4: 7002 moveq #2,%d0
485d6: b0aa 0050 cmpl %a2@(80),%d0
485da: 6768 beqs 48644 <_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 );
485dc: 2f0a movel %a2,%sp@-
485de: 4879 0005 eebe pea 5eebe <_Scheduler>
485e4: 2079 0005 eed6 moveal 5eed6 <_Scheduler+0x18>,%a0
485ea: 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 ) )
485ec: 508f addql #8,%sp
485ee: b5f9 0005 eeba cmpal 5eeba <_Thread_Allocated_fp>,%a2
485f4: 6746 beqs 4863c <_Thread_Close+0xd0> <== NEVER TAKEN
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
if ( the_thread->Start.fp_context )
485f6: 202a 00b8 movel %a2@(184),%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;
485fa: 42aa 00f4 clrl %a2@(244)
if ( the_thread->Start.fp_context )
485fe: 4a80 tstl %d0
48600: 670a beqs 4860c <_Thread_Close+0xa0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->Start.fp_context );
48602: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48604: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
4860a: 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 );
4860c: 2f0a movel %a2,%sp@-
4860e: 4eb9 0004 92dc jsr 492dc <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
if ( the_thread->extensions )
48614: 202a 0104 movel %a2@(260),%d0
48618: 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;
4861a: 42aa 00bc clrl %a2@(188)
if ( the_thread->extensions )
4861e: 4a80 tstl %d0
48620: 670a beqs 4862c <_Thread_Close+0xc0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->extensions );
48622: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48624: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
4862a: 588f addql #4,%sp <== NOT EXECUTED
the_thread->extensions = NULL;
4862c: 42aa 0104 clrl %a2@(260)
}
48630: 246e fff8 moveal %fp@(-8),%a2
48634: 266e fffc moveal %fp@(-4),%a3
48638: 4e5e unlk %fp
4863a: 4e75 rts
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
4863c: 42b9 0005 eeba clrl 5eeba <_Thread_Allocated_fp> <== NOT EXECUTED
48642: 60b2 bras 485f6 <_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 );
48644: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48648: 4eb9 0004 9900 jsr 49900 <_Watchdog_Remove> <== NOT EXECUTED
4864e: 588f addql #4,%sp <== NOT EXECUTED
48650: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48652: 4879 0005 eebe pea 5eebe <_Scheduler> <== NOT EXECUTED
48658: 2079 0005 eed6 moveal 5eed6 <_Scheduler+0x18>,%a0 <== NOT EXECUTED
4865e: 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 ) )
48660: 508f addql #8,%sp <== NOT EXECUTED
48662: b5f9 0005 eeba cmpal 5eeba <_Thread_Allocated_fp>,%a2 <== NOT EXECUTED
48668: 668c bnes 485f6 <_Thread_Close+0x8a> <== NOT EXECUTED
4866a: 60d0 bras 4863c <_Thread_Close+0xd0> <== NOT EXECUTED
0004871c <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
4871c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
48720: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48724: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48728: 4eb9 0004 88e8 jsr 488e8 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4872e: 508f addql #8,%sp <== NOT EXECUTED
48730: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48734: 661e bnes 48754 <_Thread_Delay_ended+0x38> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
48736: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED
4873c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4873e: 4eb9 0004 850c jsr 4850c <_Thread_Clear_state> <== NOT EXECUTED
48744: 508f addql #8,%sp <== NOT EXECUTED
48746: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4874c: 5380 subql #1,%d0 <== NOT EXECUTED
4874e: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
48754: 4e5e unlk %fp <== NOT EXECUTED
00048758 <_Thread_Dispatch>:
* dispatch thread
* no dispatch thread
*/
void _Thread_Dispatch( void )
{
48758: 4e56 ffc8 linkw %fp,#-56
4875c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
48760: 283c 0000 0700 movel #1792,%d4
48766: 2004 movel %d4,%d0
{
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
48768: 2479 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
4876e: 40c1 movew %sr,%d1
48770: 8081 orl %d1,%d0
48772: 46c0 movew %d0,%sr
while ( _Thread_Dispatch_necessary == true ) {
48774: 1039 0005 f000 moveb 5f000 <_Per_CPU_Information+0x18>,%d0
4877a: 6700 0120 beqw 4889c <_Thread_Dispatch+0x144>
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
4877e: 7001 moveq #1,%d0
48780: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level>
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
48786: 2679 0005 eff8 moveal 5eff8 <_Per_CPU_Information+0x10>,%a3
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
4878c: 4200 clrb %d0
_Thread_Executing = heir;
4878e: 23cb 0005 eff4 movel %a3,5eff4 <_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;
48794: 13c0 0005 f000 moveb %d0,5f000 <_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 )
4879a: b7ca cmpal %a2,%a3
4879c: 6700 00fe beqw 4889c <_Thread_Dispatch+0x144>
487a0: 260e movel %fp,%d3
487a2: 240e movel %fp,%d2
487a4: 5183 subql #8,%d3
487a6: 2e3c 0004 ba98 movel #309912,%d7
487ac: 0682 ffff fff0 addil #-16,%d2
487b2: 2c3c 0004 94a4 movel #300196,%d6
487b8: 2a3c 0004 945c movel #300124,%d5
487be: 4bf9 0004 976c lea 4976c <_User_extensions_Thread_switch>,%a5
487c4: 49f9 0004 9aec lea 49aec <_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 )
487ca: 7001 moveq #1,%d0
487cc: b0ab 007a cmpl %a3@(122),%d0
487d0: 6700 00e2 beqw 488b4 <_Thread_Dispatch+0x15c>
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
487d4: 46c1 movew %d1,%sr
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
487d6: 2f03 movel %d3,%sp@-
487d8: 2047 moveal %d7,%a0
487da: 4e90 jsr %a0@
_Timestamp_Subtract(
487dc: 2046 moveal %d6,%a0
487de: 2f02 movel %d2,%sp@-
487e0: 2f03 movel %d3,%sp@-
487e2: 4879 0005 ef04 pea 5ef04 <_Thread_Time_of_last_context_switch>
487e8: 4e90 jsr %a0@
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
487ea: 2045 moveal %d5,%a0
487ec: 2f02 movel %d2,%sp@-
487ee: 486a 0082 pea %a2@(130)
487f2: 4e90 jsr %a0@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
487f4: 2079 0005 eede moveal 5eede <_Thread_libc_reent>,%a0
487fa: 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;
487fe: 202e fff8 movel %fp@(-8),%d0
48802: 222e fffc movel %fp@(-4),%d1
48806: 23c0 0005 ef04 movel %d0,5ef04 <_Thread_Time_of_last_context_switch>
4880c: 23c1 0005 ef08 movel %d1,5ef08 <_Thread_Time_of_last_context_switch+0x4>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
48812: 4a88 tstl %a0
48814: 6708 beqs 4881e <_Thread_Dispatch+0xc6> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
48816: 2550 00f8 movel %a0@,%a2@(248)
*_Thread_libc_reent = heir->libc_reent;
4881a: 20ab 00f8 movel %a3@(248),%a0@
}
_User_extensions_Thread_switch( executing, heir );
4881e: 2f0b movel %a3,%sp@-
48820: 2f0a movel %a2,%sp@-
48822: 4e95 jsr %a5@
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
48824: 486b 00c0 pea %a3@(192)
48828: 486a 00c0 pea %a2@(192)
4882c: 4e94 jsr %a4@
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4882e: 4fef 0010 lea %sp@(16),%sp
48832: 4aaa 00f4 tstl %a2@(244)
48836: 672c beqs 48864 <_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 );
48838: 2079 0005 eeba moveal 5eeba <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED
4883e: b1ca cmpal %a2,%a0 <== NOT EXECUTED
48840: 6722 beqs 48864 <_Thread_Dispatch+0x10c> <== NOT EXECUTED
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
48842: 4a88 tstl %a0 <== NOT EXECUTED
48844: 670c beqs 48852 <_Thread_Dispatch+0xfa> <== NOT EXECUTED
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
48846: 4868 00f4 pea %a0@(244) <== NOT EXECUTED
4884a: 4eb9 0004 9c12 jsr 49c12 <_CPU_Context_save_fp> <== NOT EXECUTED
48850: 588f addql #4,%sp <== NOT EXECUTED
_Context_Restore_fp( &executing->fp_context );
48852: 486a 00f4 pea %a2@(244) <== NOT EXECUTED
48856: 4eb9 0004 9c4a jsr 49c4a <_CPU_Context_restore_fp> <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4885c: 588f addql #4,%sp <== NOT EXECUTED
4885e: 23ca 0005 eeba movel %a2,5eeba <_Thread_Allocated_fp> <== NOT EXECUTED
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
48864: 2479 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
4886a: 2004 movel %d4,%d0
4886c: 40c1 movew %sr,%d1
4886e: 8081 orl %d1,%d0
48870: 46c0 movew %d0,%sr
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
48872: 1039 0005 f000 moveb 5f000 <_Per_CPU_Information+0x18>,%d0
48878: 6722 beqs 4889c <_Thread_Dispatch+0x144> <== ALWAYS TAKEN
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
4887a: 7001 moveq #1,%d0 <== NOT EXECUTED
4887c: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
48882: 2679 0005 eff8 moveal 5eff8 <_Per_CPU_Information+0x10>,%a3<== NOT EXECUTED
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
48888: 4200 clrb %d0 <== NOT EXECUTED
_Thread_Executing = heir;
4888a: 23cb 0005 eff4 movel %a3,5eff4 <_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;
48890: 13c0 0005 f000 moveb %d0,5f000 <_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 )
48896: b5cb cmpal %a3,%a2 <== NOT EXECUTED
48898: 6600 ff30 bnew 487ca <_Thread_Dispatch+0x72> <== NOT EXECUTED
_ISR_Disable( level );
}
post_switch:
_Thread_Dispatch_disable_level = 0;
4889c: 42b9 0005 ee38 clrl 5ee38 <_Thread_Dispatch_disable_level>
_ISR_Enable( level );
488a2: 46c1 movew %d1,%sr
_API_extensions_Run_postswitch();
488a4: 4eb9 0004 6d4a jsr 46d4a <_API_extensions_Run_postswitch>
}
488aa: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
488b0: 4e5e unlk %fp
488b2: 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;
488b4: 41f9 0005 edf0 lea 5edf0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
488ba: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED
488be: 6000 ff14 braw 487d4 <_Thread_Dispatch+0x7c> <== NOT EXECUTED
000488e8 <_Thread_Get>:
*/
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
488e8: 4e56 0000 linkw %fp,#0
488ec: 202e 0008 movel %fp@(8),%d0
488f0: 2f03 movel %d3,%sp@-
488f2: 206e 000c moveal %fp@(12),%a0
488f6: 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 ) ) {
488f8: 4a80 tstl %d0
488fa: 6766 beqs 48962 <_Thread_Get+0x7a>
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
488fc: 7418 moveq #24,%d2
488fe: 2200 movel %d0,%d1
48900: e4a9 lsrl %d2,%d1
48902: 7607 moveq #7,%d3
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
48904: 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);
48908: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
4890a: 2241 moveal %d1,%a1
4890c: 5389 subql #1,%a1
4890e: b489 cmpl %a1,%d2
48910: 653e bcss 48950 <_Thread_Get+0x68> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
48912: 761b moveq #27,%d3
48914: 2400 movel %d0,%d2
48916: e6aa lsrl %d3,%d2
*location = OBJECTS_ERROR;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class != 1 ) { /* threads are always first class :) */
48918: 163c 0001 moveb #1,%d3
4891c: b682 cmpl %d2,%d3
4891e: 6630 bnes 48950 <_Thread_Get+0x68> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
api_information = _Objects_Information_table[ the_api ];
48920: 43f9 0005 edf4 lea 5edf4 <_Objects_Information_table>,%a1
48926: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1
/*
* There is no way for this to happen if POSIX is enabled.
*/
#if !defined(RTEMS_POSIX_API)
if ( !api_information ) {
4892a: 4a89 tstl %a1
4892c: 6722 beqs 48950 <_Thread_Get+0x68> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
#endif
information = api_information[ the_class ];
4892e: 2229 0004 movel %a1@(4),%d1
if ( !information ) {
48932: 671c beqs 48950 <_Thread_Get+0x68> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
48934: 2f08 movel %a0,%sp@-
48936: 2f00 movel %d0,%sp@-
48938: 2f01 movel %d1,%sp@-
4893a: 4eb9 0004 7d34 jsr 47d34 <_Objects_Get>
done:
return tp;
}
48940: 242e fff8 movel %fp@(-8),%d2
if ( !information ) {
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
48944: 4fef 000c lea %sp@(12),%sp
done:
return tp;
}
48948: 262e fffc movel %fp@(-4),%d3
4894c: 4e5e unlk %fp
4894e: 4e75 rts
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
48950: 7001 moveq #1,%d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
48952: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48956: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4895a: 4e5e unlk %fp <== NOT EXECUTED
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
4895c: 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;
4895e: 4280 clrl %d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
48960: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48962: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
48968: 5280 addql #1,%d0
4896a: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level>
48970: 242e fff8 movel %fp@(-8),%d2
48974: 262e fffc movel %fp@(-4),%d3
48978: 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;
4897a: 2039 0005 eff4 movel 5eff4 <_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;
48980: 4290 clrl %a0@ <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
0004d694 <_Thread_Handler>:
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4d694: 4e56 0000 linkw %fp,#0
4d698: 2f0a movel %a2,%sp@-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
4d69a: 2479 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a2
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4d6a0: 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;
4d6a2: 222a 00a8 movel %a2@(168),%d1
_ISR_Set_level(level);
4d6a6: 40c0 movew %sr,%d0
4d6a8: e189 lsll #8,%d1
4d6aa: 0280 0000 f8ff andil #63743,%d0
4d6b0: 8081 orl %d1,%d0
4d6b2: 46c0 movew %d0,%sr
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
doneConstructors = 1;
4d6b4: 7001 moveq #1,%d0
level = executing->Start.isr_level;
_ISR_Set_level(level);
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
4d6b6: 1439 0005 e5fc moveb 5e5fc <doneConstructors.3357>,%d2
doneConstructors = 1;
4d6bc: 13c0 0005 e5fc moveb %d0,5e5fc <doneConstructors.3357>
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4d6c2: 4aaa 00f4 tstl %a2@(244)
4d6c6: 6720 beqs 4d6e8 <_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 );
4d6c8: 2079 0005 eeba moveal 5eeba <_Thread_Allocated_fp>,%a0
4d6ce: b1ca cmpal %a2,%a0
4d6d0: 6716 beqs 4d6e8 <_Thread_Handler+0x54> <== NEVER TAKEN
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4d6d2: 4a88 tstl %a0
4d6d4: 670c beqs 4d6e2 <_Thread_Handler+0x4e> <== ALWAYS TAKEN
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4d6d6: 4868 00f4 pea %a0@(244) <== NOT EXECUTED
4d6da: 4eb9 0004 9c12 jsr 49c12 <_CPU_Context_save_fp> <== NOT EXECUTED
4d6e0: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4d6e2: 23ca 0005 eeba movel %a2,5eeba <_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 );
4d6e8: 2f0a movel %a2,%sp@-
4d6ea: 4eb9 0004 95b8 jsr 495b8 <_User_extensions_Thread_begin>
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4d6f0: 4eb9 0004 88c2 jsr 488c2 <_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) */ {
4d6f6: 588f addql #4,%sp
4d6f8: 4a02 tstb %d2
4d6fa: 6746 beqs 4d742 <_Thread_Handler+0xae>
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4d6fc: 4aaa 0092 tstl %a2@(146)
4d700: 6718 beqs 4d71a <_Thread_Handler+0x86> <== 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 );
4d702: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d704: 4eb9 0004 95f6 jsr 495f6 <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4d70a: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4d70e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d712: 42a7 clrl %sp@- <== NOT EXECUTED
4d714: 4eb9 0004 77b8 jsr 477b8 <_Internal_error_Occurred> <== NOT EXECUTED
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4d71a: 2f2a 009a movel %a2@(154),%sp@-
4d71e: 206a 008e moveal %a2@(142),%a0
4d722: 4e90 jsr %a0@
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
4d724: 588f addql #4,%sp
4d726: 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 );
4d72a: 2f0a movel %a2,%sp@-
4d72c: 4eb9 0004 95f6 jsr 495f6 <_User_extensions_Thread_exitted>
_Internal_error_Occurred(
4d732: 4878 0005 pea 5 <COMPARE>
4d736: 4878 0001 pea 1 <ADD>
4d73a: 42a7 clrl %sp@-
4d73c: 4eb9 0004 77b8 jsr 477b8 <_Internal_error_Occurred>
* _init could be a weak symbol and we SHOULD test it but it isn't
* in any configuration I know of and it generates a warning on every
* RTEMS target configuration. --joel (12 May 2007)
*/
if (!doneCons) /* && (volatile void *)_init) */ {
INIT_NAME ();
4d742: 4eb9 0005 bc7c jsr 5bc7c <_init>
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4d748: 4aaa 0092 tstl %a2@(146)
4d74c: 66b4 bnes 4d702 <_Thread_Handler+0x6e> <== NEVER TAKEN
4d74e: 60ca bras 4d71a <_Thread_Handler+0x86>
00048b7c <_Thread_Handler_initialization>:
*
* Output parameters: NONE
*/
void _Thread_Handler_initialization(void)
{
48b7c: 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) ) )
48b80: 4ab9 0005 d5fc tstl 5d5fc <Configuration+0x28>
48b86: 57c1 seq %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48b88: 4ab9 0005 d5f8 tstl 5d5f8 <Configuration+0x24>
48b8e: 57c0 seq %d0
== (!Configuration.stack_free_hook) ) )
48b90: 4481 negl %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48b92: 4480 negl %d0
48b94: b380 eorl %d1,%d0
uint32_t maximum_extensions;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t maximum_proxies;
#endif
ticks_per_timeslice = Configuration.ticks_per_timeslice;
48b96: 2239 0005 d5e4 movel 5d5e4 <Configuration+0x10>,%d1
maximum_extensions = Configuration.maximum_extensions;
48b9c: 2079 0005 d5dc moveal 5d5dc <Configuration+0x8>,%a0
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48ba2: 4a00 tstb %d0
48ba4: 6650 bnes 48bf6 <_Thread_Handler_initialization+0x7a>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48ba6: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48baa: 4200 clrb %d0
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48bac: 42a7 clrl %sp@-
48bae: 4878 010c pea 10c <DBL_MANT_DIG+0xd7>
48bb2: 4878 0001 pea 1 <ADD>
48bb6: 4878 0001 pea 1 <ADD>
48bba: 4878 0001 pea 1 <ADD>
48bbe: 4879 0005 ef68 pea 5ef68 <_Thread_Internal_information>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48bc4: 13c0 0005 f000 moveb %d0,5f000 <_Per_CPU_Information+0x18>
_Thread_Executing = NULL;
48bca: 42b9 0005 eff4 clrl 5eff4 <_Per_CPU_Information+0xc>
_Thread_Heir = NULL;
48bd0: 42b9 0005 eff8 clrl 5eff8 <_Per_CPU_Information+0x10>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
_Thread_Allocated_fp = NULL;
48bd6: 42b9 0005 eeba clrl 5eeba <_Thread_Allocated_fp>
#endif
_Thread_Maximum_extensions = maximum_extensions;
48bdc: 23c8 0005 eeea movel %a0,5eeea <_Thread_Maximum_extensions>
_Thread_Ticks_per_timeslice = ticks_per_timeslice;
48be2: 23c1 0005 edf0 movel %d1,5edf0 <_Thread_Ticks_per_timeslice>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48be8: 4eb9 0004 7da0 jsr 47da0 <_Objects_Initialize_information>
48bee: 4fef 001c lea %sp@(28),%sp
false, /* true if this is a global object class */
NULL /* Proxy extraction support callout */
#endif
);
}
48bf2: 4e5e unlk %fp
48bf4: 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(
48bf6: 4878 000e pea e <OPER1+0x2>
48bfa: 4878 0001 pea 1 <ADD>
48bfe: 42a7 clrl %sp@-
48c00: 4eb9 0004 77b8 jsr 477b8 <_Internal_error_Occurred>
...
00048984 <_Thread_Initialize>:
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
48984: 4e56 ffe8 linkw %fp,#-24
48988: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4898c: 266e 0014 moveal %fp@(20),%a3
48990: 246e 000c moveal %fp@(12),%a2
/*
* Allocate and Initialize the stack for this thread.
*/
#if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
48994: 2f0b movel %a3,%sp@-
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
48996: 242e 001c movel %fp@(28),%d2
/*
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
4899a: 42aa 00fc clrl %a2@(252)
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
4899e: 162e 001b moveb %fp@(27),%d3
/*
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
489a2: 42aa 0100 clrl %a2@(256)
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
489a6: 182e 0023 moveb %fp@(35),%d4
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
the_thread->libc_reent = NULL;
489aa: 42aa 00f8 clrl %a2@(248)
/*
* Allocate and Initialize the stack for this thread.
*/
#if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
489ae: 2f0a movel %a2,%sp@-
489b0: 4eb9 0004 9278 jsr 49278 <_Thread_Stack_Allocate>
if ( !actual_stack_size || actual_stack_size < stack_size )
489b6: 508f addql #8,%sp
489b8: 4a80 tstl %d0
489ba: 6700 0132 beqw 48aee <_Thread_Initialize+0x16a>
489be: b08b cmpl %a3,%d0
489c0: 6500 012c bcsw 48aee <_Thread_Initialize+0x16a>
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
the_stack->size = size;
489c4: 2540 00b0 movel %d0,%a2@(176)
Stack_Control *the_stack,
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
489c8: 256a 00bc 00b4 movel %a2@(188),%a2@(180)
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
489ce: 4a03 tstb %d3
489d0: 6600 0134 bnew 48b06 <_Thread_Initialize+0x182>
489d4: 4280 clrl %d0
extensions_area = NULL;
the_thread->libc_reent = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
fp_area = NULL;
489d6: 4285 clrl %d5
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
489d8: 2239 0005 eeea movel 5eeea <_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;
489de: 2540 00f4 movel %d0,%a2@(244)
the_thread->Start.fp_context = fp_area;
489e2: 2540 00b8 movel %d0,%a2@(184)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
489e6: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
489ea: 42aa 0064 clrl %a2@(100)
the_watchdog->id = id;
489ee: 42aa 0068 clrl %a2@(104)
the_watchdog->user_data = user_data;
489f2: 42aa 006c clrl %a2@(108)
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
489f6: 4a81 tstl %d1
489f8: 6600 0130 bnew 48b2a <_Thread_Initialize+0x1a6>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
489fc: 42aa 0104 clrl %a2@(260)
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48a00: 97cb subal %a3,%a3
RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return
48a02: 2f0a movel %a2,%sp@-
48a04: 4879 0005 eebe pea 5eebe <_Scheduler>
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48a0a: 7001 moveq #1,%d0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
the_thread->Start.budget_algorithm = budget_algorithm;
48a0c: 256e 0024 00a0 movel %fp@(36),%a2@(160)
the_thread->Start.budget_callout = budget_callout;
48a12: 256e 0028 00a4 movel %fp@(40),%a2@(164)
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
48a18: 256e 002c 00a8 movel %fp@(44),%a2@(168)
48a1e: 2079 0005 eed2 moveal 5eed2 <_Scheduler+0x14>,%a0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
48a24: 1544 009e moveb %d4,%a2@(158)
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48a28: 2540 0010 movel %d0,%a2@(16)
the_thread->Wait.queue = NULL;
48a2c: 42aa 0044 clrl %a2@(68)
the_thread->resource_count = 0;
48a30: 42aa 001c clrl %a2@(28)
the_thread->real_priority = priority;
48a34: 2542 0018 movel %d2,%a2@(24)
the_thread->Start.initial_priority = priority;
48a38: 2542 00ac movel %d2,%a2@(172)
48a3c: 4e90 jsr %a0@
sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread );
if ( !sched )
48a3e: 508f addql #8,%sp
48a40: 2600 movel %d0,%d3
48a42: 673a beqs 48a7e <_Thread_Initialize+0xfa> <== NEVER TAKEN
goto failed;
_Thread_Set_priority( the_thread, priority );
48a44: 2f02 movel %d2,%sp@-
48a46: 2f0a movel %a2,%sp@-
48a48: 4eb9 0004 917c jsr 4917c <_Thread_Set_priority>
_Thread_Stack_Free( the_thread );
return false;
}
48a4e: 206e 0008 moveal %fp@(8),%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
48a52: 4280 clrl %d0
48a54: 2068 0018 moveal %a0@(24),%a0
48a58: 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 );
48a5c: 42aa 0082 clrl %a2@(130)
48a60: 42aa 0086 clrl %a2@(134)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48a64: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48a68: 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 );
48a6e: 2f0a movel %a2,%sp@-
48a70: 4eb9 0004 9688 jsr 49688 <_User_extensions_Thread_create>
if ( extension_status )
48a76: 4fef 000c lea %sp@(12),%sp
48a7a: 4a00 tstb %d0
48a7c: 667c bnes 48afa <_Thread_Initialize+0x176> <== ALWAYS TAKEN
return true;
failed:
if ( the_thread->libc_reent )
48a7e: 202a 00f8 movel %a2@(248),%d0 <== NOT EXECUTED
48a82: 670a beqs 48a8e <_Thread_Initialize+0x10a> <== NOT EXECUTED
_Workspace_Free( the_thread->libc_reent );
48a84: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48a86: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
48a8c: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
48a8e: 202a 00fc movel %a2@(252),%d0 <== NOT EXECUTED
48a92: 670a beqs 48a9e <_Thread_Initialize+0x11a> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48a94: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48a96: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
48a9c: 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] )
48a9e: 202a 0100 movel %a2@(256),%d0 <== NOT EXECUTED
48aa2: 670a beqs 48aae <_Thread_Initialize+0x12a> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48aa4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48aa6: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
48aac: 588f addql #4,%sp <== NOT EXECUTED
if ( extensions_area )
48aae: 4a8b tstl %a3 <== NOT EXECUTED
48ab0: 670a beqs 48abc <_Thread_Initialize+0x138> <== NOT EXECUTED
(void) _Workspace_Free( extensions_area );
48ab2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48ab4: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
48aba: 588f addql #4,%sp <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( fp_area )
48abc: 4a85 tstl %d5 <== NOT EXECUTED
48abe: 670a beqs 48aca <_Thread_Initialize+0x146> <== NOT EXECUTED
(void) _Workspace_Free( fp_area );
48ac0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48ac2: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
48ac8: 588f addql #4,%sp <== NOT EXECUTED
#endif
if ( sched )
48aca: 4a83 tstl %d3 <== NOT EXECUTED
48acc: 670a beqs 48ad8 <_Thread_Initialize+0x154> <== NOT EXECUTED
(void) _Workspace_Free( sched );
48ace: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48ad0: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free> <== NOT EXECUTED
48ad6: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
48ad8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48ada: 4eb9 0004 92dc jsr 492dc <_Thread_Stack_Free> <== NOT EXECUTED
return false;
48ae0: 588f addql #4,%sp <== NOT EXECUTED
}
48ae2: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
if ( sched )
(void) _Workspace_Free( sched );
_Thread_Stack_Free( the_thread );
return false;
48ae8: 4200 clrb %d0 <== NOT EXECUTED
}
48aea: 4e5e unlk %fp <== NOT EXECUTED
48aec: 4e75 rts <== NOT EXECUTED
48aee: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
* Allocate and Initialize the stack for this thread.
*/
#if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
48af4: 4200 clrb %d0
_Thread_Stack_Free( the_thread );
return false;
}
48af6: 4e5e unlk %fp
48af8: 4e75 rts
48afa: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%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;
48b00: 7001 moveq #1,%d0
_Thread_Stack_Free( the_thread );
return false;
}
48b02: 4e5e unlk %fp
48b04: 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 );
48b06: 4878 001c pea 1c <OPER2+0x8>
48b0a: 4eb9 0004 9a82 jsr 49a82 <_Workspace_Allocate>
if ( !fp_area )
48b10: 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 );
48b12: 2a00 movel %d0,%d5
if ( !fp_area )
48b14: 6600 fec2 bnew 489d8 <_Thread_Initialize+0x54>
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48b18: 202a 00f8 movel %a2@(248),%d0 <== NOT EXECUTED
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48b1c: 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;
48b1e: 4283 clrl %d3 <== NOT EXECUTED
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48b20: 4a80 tstl %d0 <== NOT EXECUTED
48b22: 6600 ff60 bnew 48a84 <_Thread_Initialize+0x100> <== NOT EXECUTED
48b26: 6000 ff66 braw 48a8e <_Thread_Initialize+0x10a> <== NOT EXECUTED
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48b2a: e589 lsll #2,%d1
48b2c: 2041 moveal %d1,%a0
48b2e: 4868 0004 pea %a0@(4)
48b32: 4eb9 0004 9a82 jsr 49a82 <_Workspace_Allocate>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48b38: 588f addql #4,%sp
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48b3a: 2640 moveal %d0,%a3
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48b3c: 4a80 tstl %d0
48b3e: 672c beqs 48b6c <_Thread_Initialize+0x1e8> <== NEVER TAKEN
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48b40: 2079 0005 eeea moveal 5eeea <_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++ )
48b46: 4281 clrl %d1
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48b48: 4280 clrl %d0
48b4a: 254b 0104 movel %a3,%a2@(260)
* 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;
48b4e: 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++ )
48b52: 5280 addql #1,%d0
48b54: 2200 movel %d0,%d1
48b56: b088 cmpl %a0,%d0
48b58: 6200 fea8 bhiw 48a02 <_Thread_Initialize+0x7e>
the_thread->extensions[i] = NULL;
48b5c: 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++ )
48b60: 5280 addql #1,%d0
48b62: 2200 movel %d0,%d1
48b64: b088 cmpl %a0,%d0
48b66: 63e6 blss 48b4e <_Thread_Initialize+0x1ca>
48b68: 6000 fe98 braw 48a02 <_Thread_Initialize+0x7e>
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48b6c: 202a 00f8 movel %a2@(248),%d0 <== 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;
48b70: 4283 clrl %d3 <== NOT EXECUTED
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48b72: 4a80 tstl %d0 <== NOT EXECUTED
48b74: 6600 ff0e bnew 48a84 <_Thread_Initialize+0x100> <== NOT EXECUTED
48b78: 6000 ff14 braw 48a8e <_Thread_Initialize+0x10a> <== NOT EXECUTED
0004cf14 <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4cf14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cf18: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cf1a: 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;
4cf1e: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = the_thread->Start.budget_callout;
4cf24: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED
the_thread->Start.pointer_argument = pointer_argument;
4cf2a: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
4cf30: 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;
4cf36: 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;
4cf3c: 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 ) ) {
4cf40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cf42: 4eb9 0004 9be0 jsr 49be0 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
4cf48: 588f addql #4,%sp <== NOT EXECUTED
4cf4a: 4a00 tstb %d0 <== NOT EXECUTED
4cf4c: 6608 bnes 4cf56 <_Thread_Reset+0x42> <== NOT EXECUTED
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4cf4e: 7002 moveq #2,%d0 <== NOT EXECUTED
4cf50: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4cf54: 672a beqs 4cf80 <_Thread_Reset+0x6c> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4cf56: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED
4cf5a: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4cf5e: 6718 beqs 4cf78 <_Thread_Reset+0x64> <== NOT EXECUTED
the_thread->real_priority = the_thread->Start.initial_priority;
4cf60: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4cf64: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4cf68: 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 );
4cf6c: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
4cf70: 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 );
4cf72: 4ef9 0004 9e20 jmp 49e20 <_Thread_Set_priority> <== NOT EXECUTED
}
}
4cf78: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4cf7c: 4e5e unlk %fp <== NOT EXECUTED
4cf7e: 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 );
4cf80: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4cf84: 4eb9 0004 a5e8 jsr 4a5e8 <_Watchdog_Remove> <== NOT EXECUTED
4cf8a: 588f addql #4,%sp <== NOT EXECUTED
4cf8c: 60c8 bras 4cf56 <_Thread_Reset+0x42> <== NOT EXECUTED
...
00049d90 <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49d90: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
49d92: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49d96: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49d98: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
49d9c: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
if ( !_States_Is_dormant( the_thread->current_state ) ) {
49da0: 670a beqs 49dac <_Thread_Restart+0x1c> <== NOT EXECUTED
return true;
}
return false;
}
49da2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49da6: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Restart_self();
return true;
}
return false;
49da8: 4200 clrb %d0 <== NOT EXECUTED
}
49daa: 4e75 rts <== NOT EXECUTED
Thread_Entry_numeric_type numeric_argument
)
{
if ( !_States_Is_dormant( the_thread->current_state ) ) {
_Thread_Set_transient( the_thread );
49dac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49dae: 4eb9 0004 9e98 jsr 49e98 <_Thread_Set_transient> <== NOT EXECUTED
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
49db4: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49db8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49dbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49dbe: 4eb9 0004 cf14 jsr 4cf14 <_Thread_Reset> <== NOT EXECUTED
_Thread_Load_environment( the_thread );
49dc4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49dc6: 4eb9 0004 cbf8 jsr 4cbf8 <_Thread_Load_environment> <== NOT EXECUTED
_Thread_Ready( the_thread );
49dcc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49dce: 4eb9 0004 cedc jsr 4cedc <_Thread_Ready> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
49dd4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49dd6: 4eb9 0004 a3cc jsr 4a3cc <_User_extensions_Thread_restart> <== NOT EXECUTED
if ( _Thread_Is_executing ( the_thread ) )
49ddc: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
49de0: b5f9 0005 ff8c cmpal 5ff8c <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
49de6: 670a beqs 49df2 <_Thread_Restart+0x62> <== NOT EXECUTED
return true;
}
return false;
}
49de8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49dec: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49dee: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
49df0: 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 )
49df2: 4aaa 00f4 tstl %a2@(244) <== NOT EXECUTED
49df6: 6712 beqs 49e0a <_Thread_Restart+0x7a> <== NOT EXECUTED
_Context_Restore_fp( &_Thread_Executing->fp_context );
49df8: 486a 00f4 pea %a2@(244) <== NOT EXECUTED
49dfc: 4eb9 0004 a932 jsr 4a932 <_CPU_Context_restore_fp> <== NOT EXECUTED
49e02: 2479 0005 ff8c moveal 5ff8c <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
49e08: 588f addql #4,%sp <== NOT EXECUTED
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
49e0a: 486a 00c0 pea %a2@(192) <== NOT EXECUTED
49e0e: 4eb9 0004 a7ea jsr 4a7ea <_CPU_Context_Restart_self> <== NOT EXECUTED
49e14: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49e18: 588f addql #4,%sp <== NOT EXECUTED
49e1a: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49e1c: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
0004c828 <_Thread_Resume>:
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c828: 203c 0000 0700 movel #1792,%d0
void _Thread_Resume(
Thread_Control *the_thread,
bool force
)
{
4c82e: 4e56 0000 linkw %fp,#0
4c832: 206e 0008 moveal %fp@(8),%a0
4c836: 2f02 movel %d2,%sp@-
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c838: 40c2 movew %sr,%d2
4c83a: 8082 orl %d2,%d0
4c83c: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4c83e: 2028 0010 movel %a0@(16),%d0
if ( current_state & STATES_SUSPENDED ) {
4c842: 0800 0001 btst #1,%d0
4c846: 670a beqs 4c852 <_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);
4c848: 72fd moveq #-3,%d1
4c84a: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
4c84c: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4c850: 670a beqs 4c85c <_Thread_Resume+0x34> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c852: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4c854: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4c858: 4e5e unlk %fp <== NOT EXECUTED
4c85a: 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 );
4c85c: 2f08 movel %a0,%sp@-
4c85e: 4879 0006 2c16 pea 62c16 <_Scheduler>
4c864: 2079 0006 2c26 moveal 62c26 <_Scheduler+0x10>,%a0
4c86a: 4e90 jsr %a0@
4c86c: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c86e: 46c2 movew %d2,%sr
}
4c870: 242e fffc movel %fp@(-4),%d2
4c874: 4e5e unlk %fp <== NOT EXECUTED
0004917c <_Thread_Set_priority>:
void _Thread_Set_priority(
Thread_Control *the_thread,
Priority_Control new_priority
)
{
4917c: 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 );
49180: 203c 0005 eebe movel #388798,%d0
49186: 206e 0008 moveal %fp@(8),%a0
the_thread->current_priority = new_priority;
4918a: 216e 000c 0014 movel %fp@(12),%a0@(20)
49190: 2279 0005 eeda moveal 5eeda <_Scheduler+0x1c>,%a1
49196: 2d40 0008 movel %d0,%fp@(8)
4919a: 2d48 000c movel %a0,%fp@(12)
_Scheduler_Thread_scheduler_update(&_Scheduler, the_thread);
}
4919e: 4e5e unlk %fp
491a0: 4ed1 jmp %a1@
...
000491a4 <_Thread_Set_state>:
States_Control state
)
{
ISR_Level level;
_ISR_Disable( level );
491a4: 203c 0000 0700 movel #1792,%d0
void _Thread_Set_state(
Thread_Control *the_thread,
States_Control state
)
{
491aa: 4e56 0000 linkw %fp,#0
491ae: 206e 0008 moveal %fp@(8),%a0
491b2: 2f02 movel %d2,%sp@-
491b4: 222e 000c movel %fp@(12),%d1
ISR_Level level;
_ISR_Disable( level );
491b8: 40c2 movew %sr,%d2
491ba: 8082 orl %d2,%d0
491bc: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
491be: 2028 0010 movel %a0@(16),%d0
491c2: 6710 beqs 491d4 <_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);
491c4: 8280 orl %d0,%d1 <== NOT EXECUTED
491c6: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
491ca: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = state;
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
}
491cc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
491d0: 4e5e unlk %fp <== NOT EXECUTED
491d2: 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 );
491d4: 2f08 movel %a0,%sp@-
491d6: 4879 0005 eebe pea 5eebe <_Scheduler>
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = state;
491dc: 2141 0010 movel %d1,%a0@(16)
491e0: 2079 0005 eeca moveal 5eeca <_Scheduler+0xc>,%a0
491e6: 4e90 jsr %a0@
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
491e8: 46c2 movew %d2,%sr
491ea: 508f addql #8,%sp
}
491ec: 242e fffc movel %fp@(-4),%d2
491f0: 4e5e unlk %fp <== NOT EXECUTED
000491f4 <_Thread_Set_transient>:
)
{
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
491f4: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
491fa: 4e56 0000 linkw %fp,#0
491fe: 206e 0008 moveal %fp@(8),%a0
49202: 2f02 movel %d2,%sp@-
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
49204: 40c1 movew %sr,%d1
49206: 8081 orl %d1,%d0
49208: 46c0 movew %d0,%sr
old_state = the_thread->current_state;
4920a: 2028 0010 movel %a0@(16),%d0
4920e: 7404 moveq #4,%d2
49210: 8480 orl %d0,%d2
49212: 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 ) ) {
49216: 4a80 tstl %d0
49218: 661a bnes 49234 <_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;
4921a: 2268 008a moveal %a0@(138),%a1
4921e: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
49220: 2029 0008 movel %a1@(8),%d0
49224: b091 cmpl %a1@,%d0
49226: 6714 beqs 4923c <_Thread_Set_transient+0x48> <== ALWAYS TAKEN
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
49228: 2250 moveal %a0@,%a1 <== NOT EXECUTED
previous = the_node->previous;
4922a: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4922e: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
49232: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
49234: 46c1 movew %d1,%sr
}
49236: 241f movel %sp@+,%d2
49238: 4e5e unlk %fp
4923a: 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 );
4923c: 2409 movel %a1,%d2
4923e: 5882 addql #4,%d2
head->next = tail;
head->previous = NULL;
49240: 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 );
49244: 2282 movel %d2,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
49246: 2349 0008 movel %a1,%a1@(8)
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
4924a: 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;
4924e: 2268 0004 moveal %a0@(4),%a1
49252: 3028 000e movew %a0@(14),%d0
49256: 3411 movew %a1@,%d2
49258: c082 andl %d2,%d0
4925a: 3280 movew %d0,%a1@
if ( *the_priority_map->minor == 0 )
4925c: 66d6 bnes 49234 <_Thread_Set_transient+0x40>
_Priority_Major_bit_map &= the_priority_map->block_major;
4925e: 3439 0005 f004 movew 5f004 <_Priority_Major_bit_map>,%d2
49264: 3028 000c movew %a0@(12),%d0
49268: c082 andl %d2,%d0
4926a: 33c0 0005 f004 movew %d0,5f004 <_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 );
49270: 46c1 movew %d1,%sr
}
49272: 241f movel %sp@+,%d2
49274: 4e5e unlk %fp <== NOT EXECUTED
000492dc <_Thread_Stack_Free>:
*/
void _Thread_Stack_Free(
Thread_Control *the_thread
)
{
492dc: 4e56 0000 linkw %fp,#0
492e0: 206e 0008 moveal %fp@(8),%a0
* 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 )
492e4: 2279 0005 d5fc moveal 5d5fc <Configuration+0x28>,%a1
492ea: 4a89 tstl %a1
492ec: 670a beqs 492f8 <_Thread_Stack_Free+0x1c> <== ALWAYS TAKEN
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
492ee: 2d68 00b4 0008 movel %a0@(180),%fp@(8) <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
492f4: 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 );
492f6: 4ed1 jmp %a1@ <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
492f8: 2d68 00b4 0008 movel %a0@(180),%fp@(8)
}
492fe: 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 );
49300: 4ef9 0004 9a9e jmp 49a9e <_Workspace_Free>
...
00049358 <_Thread_Start>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49358: 7001 moveq #1,%d0
Thread_Start_types the_prototype,
void *entry_point,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4935a: 4e56 0000 linkw %fp,#0
4935e: 2f0a movel %a2,%sp@-
49360: 246e 0008 moveal %fp@(8),%a2
49364: c0aa 0010 andl %a2@(16),%d0
if ( _States_Is_dormant( the_thread->current_state ) ) {
49368: 660a bnes 49374 <_Thread_Start+0x1c> <== ALWAYS TAKEN
return true;
}
return false;
}
4936a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4936e: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_start( the_thread );
return true;
}
return false;
49370: 4200 clrb %d0 <== NOT EXECUTED
}
49372: 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 );
49374: 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;
49376: 256e 0010 008e movel %fp@(16),%a2@(142)
the_thread->Start.prototype = the_prototype;
4937c: 256e 000c 0092 movel %fp@(12),%a2@(146)
the_thread->Start.pointer_argument = pointer_argument;
49382: 256e 0014 0096 movel %fp@(20),%a2@(150)
the_thread->Start.numeric_argument = numeric_argument;
49388: 256e 0018 009a movel %fp@(24),%a2@(154)
_Thread_Load_environment( the_thread );
4938e: 4eb9 0004 bf10 jsr 4bf10 <_Thread_Load_environment>
_Thread_Ready( the_thread );
49394: 2f0a movel %a2,%sp@-
49396: 4eb9 0004 c1f4 jsr 4c1f4 <_Thread_Ready>
_User_extensions_Thread_start( the_thread );
4939c: 2f0a movel %a2,%sp@-
4939e: 4eb9 0004 9728 jsr 49728 <_User_extensions_Thread_start>
return true;
}
return false;
}
493a4: 246e fffc moveal %fp@(-4),%a2
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
493a8: 4fef 000c lea %sp@(12),%sp
}
return false;
}
493ac: 4e5e unlk %fp
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
493ae: 7001 moveq #1,%d0
}
return false;
}
...
000493b4 <_Thread_Suspend>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
493b4: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Suspend(
Thread_Control *the_thread
)
{
493ba: 4e56 0000 linkw %fp,#0
493be: 206e 0008 moveal %fp@(8),%a0
493c2: 2f02 movel %d2,%sp@-
ISR_Level level;
_ISR_Disable( level );
493c4: 40c2 movew %sr,%d2
493c6: 8082 orl %d2,%d0
493c8: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
493ca: 2028 0010 movel %a0@(16),%d0
493ce: 6712 beqs 493e2 <_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);
493d0: 7202 moveq #2,%d1 <== NOT EXECUTED
493d2: 8280 orl %d0,%d1 <== NOT EXECUTED
493d4: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
493d8: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = STATES_SUSPENDED;
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
}
493da: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
493de: 4e5e unlk %fp <== NOT EXECUTED
493e0: 4e75 rts <== NOT EXECUTED
493e2: 2f08 movel %a0,%sp@-
493e4: 4879 0005 eebe pea 5eebe <_Scheduler>
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = STATES_SUSPENDED;
493ea: 7002 moveq #2,%d0
493ec: 2140 0010 movel %d0,%a0@(16)
493f0: 2079 0005 eeca moveal 5eeca <_Scheduler+0xc>,%a0
493f6: 4e90 jsr %a0@
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
493f8: 46c2 movew %d2,%sr
493fa: 508f addql #8,%sp
}
493fc: 242e fffc movel %fp@(-4),%d2
49400: 4e5e unlk %fp <== NOT EXECUTED
00049404 <_Thread_Tickle_timeslice>:
*
* Output parameters: NONE
*/
void _Thread_Tickle_timeslice( void )
{
49404: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49408: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Thread_Control *executing;
executing = _Thread_Executing;
4940a: 2479 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
/*
* If the thread is not preemptible or is not ready, then
* just return.
*/
if ( !executing->is_preemptible )
49410: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED
49414: 670e beqs 49424 <_Thread_Tickle_timeslice+0x20> <== NOT EXECUTED
return;
if ( !_States_Is_ready( executing->current_state ) )
49416: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4941a: 6608 bnes 49424 <_Thread_Tickle_timeslice+0x20> <== NOT EXECUTED
/*
* The cpu budget algorithm determines what happens next.
*/
switch ( executing->budget_algorithm ) {
4941c: 7001 moveq #1,%d0 <== NOT EXECUTED
4941e: b0aa 007a cmpl %a2@(122),%d0 <== NOT EXECUTED
49422: 6708 beqs 4942c <_Thread_Tickle_timeslice+0x28> <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
49424: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49428: 4e5e unlk %fp <== NOT EXECUTED
4942a: 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 ) {
4942c: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED
49430: 5380 subql #1,%d0 <== NOT EXECUTED
49432: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
49436: 6eec bgts 49424 <_Thread_Tickle_timeslice+0x20> <== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
49438: 4879 0005 eebe pea 5eebe <_Scheduler> <== NOT EXECUTED
4943e: 2079 0005 eec6 moveal 5eec6 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
49444: 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;
49446: 588f addql #4,%sp <== NOT EXECUTED
49448: 41f9 0005 edf0 lea 5edf0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
4944e: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
49452: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49456: 4e5e unlk %fp <== NOT EXECUTED
...
00048364 <_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 ) ) {
48364: 7202 moveq #2,%d1 <== NOT EXECUTED
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
48366: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4836a: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
4836e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48370: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
48374: 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 ) ) {
48378: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
4837c: 671c beqs 4839a <_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 );
4837e: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48380: 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
}
48384: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48388: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4838e: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
48392: 4e5e unlk %fp <== NOT EXECUTED
48394: 4ef9 0004 850c jmp 4850c <_Thread_Clear_state> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4839a: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
4839e: 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 );
483a2: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
483a4: 486a 0048 pea %a2@(72) <== NOT EXECUTED
483a8: 4eb9 0004 9900 jsr 49900 <_Watchdog_Remove> <== NOT EXECUTED
483ae: 588f addql #4,%sp <== NOT EXECUTED
483b0: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
483b6: 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
}
483ba: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
483be: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
483c2: 4e5e unlk %fp <== NOT EXECUTED
483c4: 4ef9 0004 850c jmp 4850c <_Thread_Clear_state> <== NOT EXECUTED
...
00048c08 <_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;
48c08: 41f9 0004 bf8c lea 4bf8c <_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 )
48c0e: 7001 moveq #1,%d0
*/
Thread_Control *_Thread_queue_Dequeue(
Thread_queue_Control *the_thread_queue
)
{
48c10: 4e56 fff4 linkw %fp,#-12
48c14: 48d7 040c moveml %d2-%d3/%a2,%sp@
48c18: 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 )
48c1c: b0aa 0034 cmpl %a2@(52),%d0
48c20: 6722 beqs 48c44 <_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 );
48c22: 2f0a movel %a2,%sp@-
48c24: 4e90 jsr %a0@
_ISR_Disable( level );
48c26: 223c 0000 0700 movel #1792,%d1
48c2c: 40c2 movew %sr,%d2
48c2e: 8282 orl %d2,%d1
48c30: 46c1 movew %d1,%sr
if ( !the_thread ) {
48c32: 588f addql #4,%sp
48c34: 4a80 tstl %d0
48c36: 6728 beqs 48c60 <_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 );
48c38: 46c2 movew %d2,%sr
return the_thread;
}
48c3a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
48c40: 4e5e unlk %fp
48c42: 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 );
48c44: 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;
48c46: 41f9 0004 8c84 lea 48c84 <_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 );
48c4c: 4e90 jsr %a0@
_ISR_Disable( level );
48c4e: 223c 0000 0700 movel #1792,%d1
48c54: 40c2 movew %sr,%d2
48c56: 8282 orl %d2,%d1
48c58: 46c1 movew %d1,%sr
if ( !the_thread ) {
48c5a: 588f addql #4,%sp
48c5c: 4a80 tstl %d0
48c5e: 66d8 bnes 48c38 <_Thread_queue_Dequeue+0x30>
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
48c60: 222a 0030 movel %a2@(48),%d1
48c64: 7601 moveq #1,%d3
48c66: 5381 subql #1,%d1
48c68: b681 cmpl %d1,%d3
48c6a: 65cc bcss 48c38 <_Thread_queue_Dequeue+0x30> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48c6c: 7203 moveq #3,%d1 <== NOT EXECUTED
the_thread = _Thread_Executing;
48c6e: 2039 0005 eff4 movel 5eff4 <_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;
48c74: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48c78: 46c2 movew %d2,%sr <== NOT EXECUTED
return the_thread;
}
48c7a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48c80: 4e5e unlk %fp <== NOT EXECUTED
0004bf8c <_Thread_queue_Dequeue_fifo>:
)
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4bf8c: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_fifo(
Thread_queue_Control *the_thread_queue
)
{
4bf92: 4e56 0000 linkw %fp,#0
4bf96: 226e 0008 moveal %fp@(8),%a1
4bf9a: 2f0b movel %a3,%sp@-
4bf9c: 2f0a movel %a2,%sp@-
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4bf9e: 40c1 movew %sr,%d1
4bfa0: 8081 orl %d1,%d0
4bfa2: 46c0 movew %d0,%sr
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4bfa4: 2049 moveal %a1,%a0
4bfa6: 2458 moveal %a0@+,%a2
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
4bfa8: b1ca cmpal %a2,%a0
4bfaa: 6768 beqs 4c014 <_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;
4bfac: 2052 moveal %a2@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)
4bfae: 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 ) ) {
4bfb0: 7002 moveq #2,%d0 <== NOT EXECUTED
head->next = new_first;
4bfb2: 2288 movel %a0,%a1@ <== NOT EXECUTED
new_first->previous = head;
4bfb4: 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;
4bfb8: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4bfbc: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4bfc0: 6720 beqs 4bfe2 <_Thread_queue_Dequeue_fifo+0x56><== NOT EXECUTED
_ISR_Enable( level );
4bfc2: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4bfc4: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4bfca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bfcc: 4eb9 0004 850c jsr 4850c <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4bfd2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4bfd6: 200b movel %a3,%d0 <== NOT EXECUTED
4bfd8: 508f addql #8,%sp <== NOT EXECUTED
4bfda: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4bfde: 4e5e unlk %fp <== NOT EXECUTED
4bfe0: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4bfe2: 7003 moveq #3,%d0 <== NOT EXECUTED
4bfe4: 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 );
4bfe8: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4bfea: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4bfee: 4eb9 0004 9900 jsr 49900 <_Watchdog_Remove> <== NOT EXECUTED
4bff4: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4bffa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bffc: 4eb9 0004 850c jsr 4850c <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4c002: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4c006: 200b movel %a3,%d0 <== NOT EXECUTED
4c008: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c00c: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4c010: 4e5e unlk %fp <== NOT EXECUTED
4c012: 4e75 rts <== NOT EXECUTED
#endif
return the_thread;
}
_ISR_Enable( level );
4c014: 46c1 movew %d1,%sr
return NULL;
4c016: 97cb subal %a3,%a3
}
4c018: 200b movel %a3,%d0
4c01a: 246e fff8 moveal %fp@(-8),%a2
4c01e: 266e fffc moveal %fp@(-4),%a3
4c022: 4e5e unlk %fp
...
00048c84 <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48c84: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
48c8a: 4e56 ffe8 linkw %fp,#-24
48c8e: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
48c92: 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 );
48c96: 40c3 movew %sr,%d3
48c98: 8083 orl %d3,%d0
48c9a: 46c0 movew %d0,%sr
for( index=0 ;
48c9c: 4280 clrl %d0
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48c9e: 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 );
48ca0: 2400 movel %d0,%d2
48ca2: 2200 movel %d0,%d1
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48ca4: 5280 addql #1,%d0
48ca6: e58a lsll #2,%d2
48ca8: 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 );
}
48caa: 2450 moveal %a0@,%a2
48cac: 9282 subl %d2,%d1
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48cae: 41e8 000c lea %a0@(12),%a0
48cb2: 43f3 1804 lea %a3@(00000004,%d1:l),%a1
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
48cb6: b3ca cmpal %a2,%a1
48cb8: 6616 bnes 48cd0 <_Thread_queue_Dequeue_priority+0x4c>
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
48cba: 7204 moveq #4,%d1
48cbc: b280 cmpl %d0,%d1
48cbe: 66e0 bnes 48ca0 <_Thread_queue_Dequeue_priority+0x1c>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
48cc0: 46c3 movew %d3,%sr
return NULL;
48cc2: 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 );
}
48cc4: 2002 movel %d2,%d0
48cc6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
48ccc: 4e5e unlk %fp
48cce: 4e75 rts
48cd0: 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(
48cd2: 240a movel %a2,%d2
48cd4: 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 );
}
48cda: 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;
48cde: 2252 moveal %a2@,%a1
previous_node = the_thread->Object.Node.previous;
48ce0: 266a 0004 moveal %a2@(4),%a3
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
48ce4: 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 ) ) {
48ce8: b088 cmpl %a0,%d0
48cea: 6700 008a beqw 48d76 <_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 );
}
48cee: 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;
48cf2: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
48cf4: 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;
48cf8: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
48cfa: 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;
48cfe: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
48d00: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED
48d04: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED
48d08: 6716 beqs 48d20 <_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;
48d0a: 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 );
48d0e: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED
48d12: 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 );
48d14: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
48d18: 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;
48d1c: 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 ) ) {
48d20: 7002 moveq #2,%d0
48d22: b0aa 0050 cmpl %a2@(80),%d0
48d26: 671e beqs 48d46 <_Thread_queue_Dequeue_priority+0xc2><== NEVER TAKEN
_ISR_Enable( level );
48d28: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48d2a: 2f3c 1003 fff8 movel #268697592,%sp@-
48d30: 2f0a movel %a2,%sp@-
48d32: 4eb9 0004 850c jsr 4850c <_Thread_Clear_state>
48d38: 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 );
}
48d3a: 2002 movel %d2,%d0
48d3c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
48d42: 4e5e unlk %fp
48d44: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48d46: 7203 moveq #3,%d1 <== NOT EXECUTED
48d48: 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 );
48d4c: 46c3 movew %d3,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48d4e: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48d52: 4eb9 0004 9900 jsr 49900 <_Watchdog_Remove> <== NOT EXECUTED
48d58: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
48d5e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48d60: 4eb9 0004 850c jsr 4850c <_Thread_Clear_state> <== NOT EXECUTED
48d66: 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 );
}
48d6a: 2002 movel %d2,%d0 <== NOT EXECUTED
48d6c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
48d72: 4e5e unlk %fp <== NOT EXECUTED
48d74: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
48d76: 2689 movel %a1,%a3@
next_node->previous = previous_node;
48d78: 234b 0004 movel %a3,%a1@(4)
48d7c: 60a2 bras 48d20 <_Thread_queue_Dequeue_priority+0x9c>
...
0004c028 <_Thread_queue_Enqueue_fifo>:
)
{
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4c028: 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
)
{
4c02e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c032: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4c036: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c038: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4c03c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4c03e: 40c1 movew %sr,%d1 <== NOT EXECUTED
4c040: 8081 orl %d1,%d0 <== NOT EXECUTED
4c042: 46c0 movew %d0,%sr <== NOT EXECUTED
sync_state = the_thread_queue->sync_state;
4c044: 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) {
4c048: 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;
4c04a: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4c04e: b480 cmpl %d0,%d2 <== NOT EXECUTED
4c050: 670e beqs 4c060 <_Thread_queue_Enqueue_fifo+0x38><== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return sync_state;
}
4c052: 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;
4c054: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
return sync_state;
}
4c058: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4c05a: 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;
4c05c: 2081 movel %d1,%a0@ <== NOT EXECUTED
return sync_state;
}
4c05e: 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 );
4c060: 2408 movel %a0,%d2 <== NOT EXECUTED
4c062: 5882 addql #4,%d2 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
4c064: 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 );
4c068: 2282 movel %d2,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4c06a: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
old_last->next = the_node;
4c06e: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
4c070: 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;
4c074: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
_ISR_Enable( level );
4c078: 46c1 movew %d1,%sr <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return sync_state;
}
4c07a: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c07c: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4c07e: 4e5e unlk %fp <== NOT EXECUTED
...
00048e28 <_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
)
{
48e28: 4e56 ffe0 linkw %fp,#-32
48e2c: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
48e30: 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 );
48e34: 41ea 003c lea %a2@(60),%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48e38: 49ea 0038 lea %a2@(56),%a4
48e3c: 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;
48e40: 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);
48e44: 2a01 movel %d1,%d5
48e46: 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;
48e48: 242b 0038 movel %a3@(56),%d2
Chain_Node *tail = _Chain_Tail( the_chain );
48e4c: 2548 0038 movel %a0,%a2@(56)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48e50: 254c 0040 movel %a4,%a2@(64)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48e54: 42aa 003c clrl %a2@(60)
if ( _Thread_queue_Is_reverse_search( priority ) )
48e58: 0801 0005 btst #5,%d1
48e5c: 665e bnes 48ebc <_Thread_queue_Enqueue_priority+0x94>
48e5e: 700c moveq #12,%d0
48e60: 4c00 5800 mulsl %d0,%d5
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48e64: 2c3c 0000 0700 movel #1792,%d6
48e6a: 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));
48e6c: 49f3 5804 lea %a3@(00000004,%d5:l),%a4
48e70: 40c3 movew %sr,%d3
48e72: 8083 orl %d3,%d0
48e74: 46c0 movew %d0,%sr
48e76: 2803 movel %d3,%d4
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48e78: 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 ) ) {
48e7c: b9c8 cmpal %a0,%a4
48e7e: 6700 013a beqw 48fba <_Thread_queue_Enqueue_priority+0x192>
search_priority = search_thread->current_priority;
48e82: 2268 0014 moveal %a0@(20),%a1
if ( priority <= search_priority )
48e86: b3c1 cmpal %d1,%a1
48e88: 6418 bccs 48ea2 <_Thread_queue_Enqueue_priority+0x7a>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
48e8a: 2006 movel %d6,%d0
48e8c: 46c3 movew %d3,%sr
48e8e: 8083 orl %d3,%d0
48e90: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
48e92: 2002 movel %d2,%d0
48e94: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48e98: 6700 00be beqw 48f58 <_Thread_queue_Enqueue_priority+0x130>
_ISR_Enable( level );
goto restart_forward_search;
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
48e9c: 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 ) ) {
48e9e: b9c8 cmpal %a0,%a4
48ea0: 66e0 bnes 48e82 <_Thread_queue_Enqueue_priority+0x5a>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48ea2: 202b 0030 movel %a3@(48),%d0
48ea6: 7401 moveq #1,%d2
48ea8: b480 cmpl %d0,%d2
48eaa: 6700 00c4 beqw 48f70 <_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;
48eae: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
48eb2: 2084 movel %d4,%a0@ <== NOT EXECUTED
return the_thread_queue->sync_state;
}
48eb4: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED
48eb8: 4e5e unlk %fp <== NOT EXECUTED
48eba: 4e75 rts <== NOT EXECUTED
48ebc: 700c moveq #12,%d0
48ebe: 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;
48ec2: 4283 clrl %d3
48ec4: 1639 0005 d5d2 moveb 5d5d2 <rtems_maximum_priority>,%d3
_ISR_Disable( level );
48eca: 2c3c 0000 0700 movel #1792,%d6
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48ed0: da8b addl %a3,%d5
48ed2: 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;
48ed4: 2243 moveal %d3,%a1
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48ed6: 508c addql #8,%a4
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
48ed8: 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;
48eda: 5289 addql #1,%a1
_ISR_Disable( level );
48edc: 40c3 movew %sr,%d3
48ede: 8083 orl %d3,%d0
48ee0: 46c0 movew %d0,%sr
48ee2: 2803 movel %d3,%d4
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48ee4: 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 ) ) {
48ee6: ba88 cmpl %a0,%d5
48ee8: 6720 beqs 48f0a <_Thread_queue_Enqueue_priority+0xe2>
search_priority = search_thread->current_priority;
48eea: 2268 0014 moveal %a0@(20),%a1
if ( priority >= search_priority )
48eee: b3c1 cmpal %d1,%a1
48ef0: 6318 blss 48f0a <_Thread_queue_Enqueue_priority+0xe2><== ALWAYS TAKEN
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
48ef2: 2006 movel %d6,%d0 <== NOT EXECUTED
48ef4: 46c3 movew %d3,%sr <== NOT EXECUTED
48ef6: 8083 orl %d3,%d0 <== NOT EXECUTED
48ef8: 46c0 movew %d0,%sr <== NOT EXECUTED
48efa: 2002 movel %d2,%d0 <== NOT EXECUTED
48efc: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48f00: 6736 beqs 48f38 <_Thread_queue_Enqueue_priority+0x110><== NOT EXECUTED
_ISR_Enable( level );
goto restart_reverse_search;
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
48f02: 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 ) ) {
48f06: ba88 cmpl %a0,%d5 <== NOT EXECUTED
48f08: 66e0 bnes 48eea <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
48f0a: 202b 0030 movel %a3@(48),%d0
48f0e: 7401 moveq #1,%d2
48f10: b480 cmpl %d0,%d2
48f12: 669a bnes 48eae <_Thread_queue_Enqueue_priority+0x86><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48f14: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48f18: b3c1 cmpal %d1,%a1
48f1a: 677a beqs 48f96 <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
48f1c: 2250 moveal %a0@,%a1
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
48f1e: 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;
48f22: 2489 movel %a1,%a2@
the_node->previous = search_node;
search_node->next = the_node;
next_node->previous = the_node;
48f24: 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;
48f28: 208a movel %a2,%a0@
next_node->previous = the_node;
the_thread->Wait.queue = the_thread_queue;
48f2a: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48f2e: 46c3 movew %d3,%sr
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f30: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
48f34: 4e5e unlk %fp
48f36: 4e75 rts
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
48f38: 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;
48f3a: 4283 clrl %d3 <== NOT EXECUTED
48f3c: 1639 0005 d5d2 moveb 5d5d2 <rtems_maximum_priority>,%d3 <== NOT EXECUTED
_ISR_Disable( level );
48f42: 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;
48f44: 2243 moveal %d3,%a1 <== NOT EXECUTED
48f46: 5289 addql #1,%a1 <== NOT EXECUTED
_ISR_Disable( level );
48f48: 40c3 movew %sr,%d3 <== NOT EXECUTED
48f4a: 8083 orl %d3,%d0 <== NOT EXECUTED
48f4c: 46c0 movew %d0,%sr <== NOT EXECUTED
48f4e: 2803 movel %d3,%d4 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f50: 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 ) ) {
48f52: ba88 cmpl %a0,%d5 <== NOT EXECUTED
48f54: 6694 bnes 48eea <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
48f56: 60b2 bras 48f0a <_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 );
48f58: 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 );
48f5a: 2006 movel %d6,%d0 <== NOT EXECUTED
48f5c: 40c3 movew %sr,%d3 <== NOT EXECUTED
48f5e: 8083 orl %d3,%d0 <== NOT EXECUTED
48f60: 46c0 movew %d0,%sr <== NOT EXECUTED
48f62: 2803 movel %d3,%d4 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f64: 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 ) ) {
48f68: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
48f6a: 6600 ff16 bnew 48e82 <_Thread_queue_Enqueue_priority+0x5a><== NOT EXECUTED
48f6e: 604a bras 48fba <_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;
48f70: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48f74: b3c1 cmpal %d1,%a1
48f76: 671e beqs 48f96 <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
48f78: 2268 0004 moveal %a0@(4),%a1
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
48f7c: 2488 movel %a0,%a2@
the_node->previous = previous_node;
48f7e: 2549 0004 movel %a1,%a2@(4)
previous_node->next = the_node;
48f82: 228a movel %a2,%a1@
search_node->previous = the_node;
48f84: 214a 0004 movel %a2,%a0@(4)
the_thread->Wait.queue = the_thread_queue;
48f88: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48f8c: 46c3 movew %d3,%sr
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f8e: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
48f92: 4e5e unlk %fp
48f94: 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 );
48f96: 49e8 003c lea %a0@(60),%a4 <== NOT EXECUTED
previous_node = search_node->previous;
48f9a: 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 );
48f9e: 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;
48fa0: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous_node->next = the_node;
48fa4: 228a movel %a2,%a1@ <== NOT EXECUTED
search_node->previous = the_node;
48fa6: 214a 0040 movel %a2,%a0@(64) <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
48faa: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
48fae: 46c4 movew %d4,%sr <== NOT EXECUTED
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
48fb0: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48fb2: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED
48fb6: 4e5e unlk %fp <== NOT EXECUTED
48fb8: 4e75 rts <== NOT EXECUTED
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48fba: 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;
48fbe: 327c ffff moveaw #-1,%a1
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48fc2: 7401 moveq #1,%d2
48fc4: b480 cmpl %d0,%d2
48fc6: 6600 fee6 bnew 48eae <_Thread_queue_Enqueue_priority+0x86>
48fca: 60a4 bras 48f70 <_Thread_queue_Enqueue_priority+0x148>
00048d80 <_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
)
{
48d80: 4e56 fff0 linkw %fp,#-16
48d84: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
48d88: 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 );
48d8c: 2f2b 0038 movel %a3@(56),%sp@-
Thread_queue_Control *,
Thread_Control *,
ISR_Level *
);
the_thread = _Thread_Executing;
48d90: 2479 0005 eff4 moveal 5eff4 <_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
)
{
48d96: 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 );
48d9a: 2f0a movel %a2,%sp@-
48d9c: 4eb9 0004 91a4 jsr 491a4 <_Thread_Set_state>
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
48da2: 508f addql #8,%sp
48da4: 4a82 tstl %d2
48da6: 663e bnes 48de6 <_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;
48da8: 41f9 0004 c028 lea 4c028 <_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 )
48dae: 7001 moveq #1,%d0
48db0: b0ab 0034 cmpl %a3@(52),%d0
48db4: 676a beqs 48e20 <_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 );
48db6: 486e fffc pea %fp@(-4)
48dba: 2f0a movel %a2,%sp@-
48dbc: 2f0b movel %a3,%sp@-
48dbe: 4e90 jsr %a0@
if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
48dc0: 4fef 000c lea %sp@(12),%sp
48dc4: 7201 moveq #1,%d1
48dc6: b280 cmpl %d0,%d1
48dc8: 6712 beqs 48ddc <_Thread_queue_Enqueue_with_handler+0x5c><== ALWAYS TAKEN
_Thread_blocking_operation_Cancel( sync_state, the_thread, level );
48dca: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
48dce: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48dd0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48dd2: 4eb9 0004 8364 jsr 48364 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
48dd8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
48ddc: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
48de2: 4e5e unlk %fp
48de4: 4e75 rts
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
_Watchdog_Initialize(
48de6: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
48dea: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED
the_watchdog->id = id;
48df0: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48df4: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
48df8: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48dfc: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
48e00: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48e04: 4879 0005 ef18 pea 5ef18 <_Watchdog_Ticks_chain> <== NOT EXECUTED
48e0a: 4eb9 0004 97ac jsr 497ac <_Watchdog_Insert> <== NOT EXECUTED
48e10: 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;
48e12: 41f9 0004 c028 lea 4c028 <_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 )
48e18: 7001 moveq #1,%d0 <== NOT EXECUTED
48e1a: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED
48e1e: 6696 bnes 48db6 <_Thread_queue_Enqueue_with_handler+0x36><== NOT EXECUTED
enqueue_p = _Thread_queue_Enqueue_priority;
48e20: 41f9 0004 8e28 lea 48e28 <_Thread_queue_Enqueue_priority>,%a0
48e26: 608e bras 48db6 <_Thread_queue_Enqueue_with_handler+0x36>
0004c084 <_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 )
4c084: 7201 moveq #1,%d1 <== NOT EXECUTED
void _Thread_queue_Extract(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4c086: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c08a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4c08e: 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 )
4c092: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED
4c096: 6710 beqs 4c0a8 <_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 );
4c098: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4c09c: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4c0a0: 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 );
4c0a2: 4ef9 0004 d750 jmp 4d750 <_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 );
4c0a8: 42a7 clrl %sp@- <== NOT EXECUTED
4c0aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c0ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c0ae: 4eb9 0004 c0bc jsr 4c0bc <_Thread_queue_Extract_priority_helper><== NOT EXECUTED
4c0b4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
}
4c0b8: 4e5e unlk %fp <== NOT EXECUTED
0004d750 <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4d750: 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
)
{
4d756: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d75a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d75c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4d760: 40c1 movew %sr,%d1 <== NOT EXECUTED
4d762: 8081 orl %d1,%d0 <== NOT EXECUTED
4d764: 46c0 movew %d0,%sr <== NOT EXECUTED
4d766: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4d76a: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4d770: 6734 beqs 4d7a6 <_Thread_queue_Extract_fifo+0x56><== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4d772: 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 ) ) {
4d774: 7002 moveq #2,%d0 <== NOT EXECUTED
previous = the_node->previous;
4d776: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4d77a: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4d77e: 2089 movel %a1,%a0@ <== NOT EXECUTED
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4d780: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4d784: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4d788: 6726 beqs 4d7b0 <_Thread_queue_Extract_fifo+0x60><== NOT EXECUTED
_ISR_Enable( level );
4d78a: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4d78c: 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
}
4d790: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d794: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4d79a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4d79e: 4e5e unlk %fp <== NOT EXECUTED
4d7a0: 4ef9 0004 850c jmp 4850c <_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 );
4d7a6: 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
}
4d7a8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d7ac: 4e5e unlk %fp <== NOT EXECUTED
4d7ae: 4e75 rts <== NOT EXECUTED
4d7b0: 7003 moveq #3,%d0 <== NOT EXECUTED
4d7b2: 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 );
4d7b6: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4d7b8: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4d7bc: 4eb9 0004 9900 jsr 49900 <_Watchdog_Remove> <== NOT EXECUTED
4d7c2: 588f addql #4,%sp <== NOT EXECUTED
4d7c4: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4d7ca: 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
}
4d7ce: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d7d2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4d7d6: 4e5e unlk %fp <== NOT EXECUTED
4d7d8: 4ef9 0004 850c jmp 4850c <_Thread_Clear_state> <== NOT EXECUTED
...
0004c0bc <_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 );
4c0bc: 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
)
{
4c0c2: 4e56 ffec linkw %fp,#-20
4c0c6: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4c0ca: 246e 000c moveal %fp@(12),%a2
4c0ce: 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 );
4c0d2: 40c1 movew %sr,%d1
4c0d4: 8081 orl %d1,%d0
4c0d6: 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);
4c0d8: 202a 0010 movel %a2@(16),%d0
4c0dc: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4c0e2: 677e beqs 4c162 <_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 );
4c0e4: 200a movel %a2,%d0
4c0e6: 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;
4c0ec: 2252 moveal %a2@,%a1
previous_node = the_node->previous;
4c0ee: 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
}
4c0f2: 206a 0038 moveal %a2@(56),%a0
*/
next_node = the_node->next;
previous_node = the_node->previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4c0f6: b088 cmpl %a0,%d0
4c0f8: 6774 beqs 4c16e <_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
}
4c0fa: 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;
4c0fe: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4c100: 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;
4c104: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4c106: 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;
4c10a: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4c10c: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED
4c110: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
4c114: 6716 beqs 4c12c <_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;
4c116: 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 );
4c11a: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED
4c11e: 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 );
4c120: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
4c124: 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;
4c128: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4c12c: 4a02 tstb %d2 <== NOT EXECUTED
4c12e: 6626 bnes 4c156 <_Thread_queue_Extract_priority_helper+0x9a><== NOT EXECUTED
_ISR_Enable( level );
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4c130: 7002 moveq #2,%d0 <== NOT EXECUTED
4c132: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4c136: 6742 beqs 4c17a <_Thread_queue_Extract_priority_helper+0xbe><== NOT EXECUTED
_ISR_Enable( level );
4c138: 46c1 movew %d1,%sr <== NOT EXECUTED
4c13a: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
4c13e: 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
}
4c144: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4c14a: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4c14e: 4e5e unlk %fp <== NOT EXECUTED
4c150: 4ef9 0004 850c jmp 4850c <_Thread_Clear_state> <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
_ISR_Enable( level );
4c156: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4c158: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4c15e: 4e5e unlk %fp
4c160: 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 );
4c162: 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
}
4c164: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4c16a: 4e5e unlk %fp <== NOT EXECUTED
4c16c: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4c16e: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4c170: 234b 0004 movel %a3,%a1@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4c174: 4a02 tstb %d2
4c176: 67b8 beqs 4c130 <_Thread_queue_Extract_priority_helper+0x74><== NEVER TAKEN
4c178: 60dc bras 4c156 <_Thread_queue_Extract_priority_helper+0x9a>
4c17a: 7003 moveq #3,%d0 <== NOT EXECUTED
4c17c: 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 );
4c180: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4c182: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4c186: 4eb9 0004 9900 jsr 49900 <_Watchdog_Remove> <== NOT EXECUTED
4c18c: 588f addql #4,%sp <== NOT EXECUTED
4c18e: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED
4c194: 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
}
4c198: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4c19e: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4c1a2: 4e5e unlk %fp <== NOT EXECUTED
4c1a4: 4ef9 0004 850c jmp 4850c <_Thread_Clear_state> <== NOT EXECUTED
...
00048fcc <_Thread_queue_Extract_with_proxy>:
*/
bool _Thread_queue_Extract_with_proxy(
Thread_Control *the_thread
)
{
48fcc: 4e56 0000 linkw %fp,#0
48fd0: 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);
48fd4: 2028 0010 movel %a0@(16),%d0
48fd8: 0280 0003 bee0 andil #245472,%d0
States_Control state;
state = the_thread->current_state;
if ( _States_Is_waiting_on_thread_queue( state ) ) {
48fde: 6606 bnes 48fe6 <_Thread_queue_Extract_with_proxy+0x1a><== NEVER TAKEN
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
}
48fe0: 4e5e unlk %fp
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
48fe2: 4200 clrb %d0
}
48fe4: 4e75 rts
if ( proxy_extract_callout )
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
48fe6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48fe8: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED
48fec: 4eb9 0004 c084 jsr 4c084 <_Thread_queue_Extract> <== NOT EXECUTED
return true;
48ff2: 508f addql #8,%sp <== NOT EXECUTED
}
return false;
}
48ff4: 4e5e unlk %fp <== NOT EXECUTED
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
48ff6: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
...
0005fb80 <_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;
5fb80: 43f9 0006 0fb0 lea 60fb0 <_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 )
5fb86: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First(
Thread_queue_Control *the_thread_queue
)
{
5fb88: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5fb8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
5fb90: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
5fb94: 6708 beqs 5fb9e <_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 );
5fb96: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5fb9a: 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 );
5fb9c: 4ed1 jmp %a1@ <== NOT EXECUTED
5fb9e: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5fba2: 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;
5fba4: 43f9 0005 fbac lea 5fbac <_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 );
5fbaa: 4ed1 jmp %a1@ <== NOT EXECUTED
00060fb0 <_Thread_queue_First_fifo>:
*/
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
60fb0: 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;
}
60fb4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
60fb8: 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 ) )
60fba: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
60fbc: 6704 beqs 60fc2 <_Thread_queue_First_fifo+0x12> <== NOT EXECUTED
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
}
60fbe: 4e5e unlk %fp <== NOT EXECUTED
60fc0: 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;
60fc2: 4280 clrl %d0 <== NOT EXECUTED
}
60fc4: 4e5e unlk %fp <== NOT EXECUTED
0005fbac <_Thread_queue_First_priority>:
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
5fbac: 4281 clrl %d1 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
5fbae: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5fbb2: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5fbb6: 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;
5fbba: 204a moveal %a2,%a0 <== NOT EXECUTED
5fbbc: 2601 movel %d1,%d3 <== NOT EXECUTED
5fbbe: 2401 movel %d1,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
5fbc0: 5281 addql #1,%d1 <== NOT EXECUTED
5fbc2: e58b lsll #2,%d3 <== NOT EXECUTED
5fbc4: e98a lsll #4,%d2 <== NOT EXECUTED
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
}
5fbc6: 2010 movel %a0@,%d0 <== NOT EXECUTED
5fbc8: 9483 subl %d3,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
5fbca: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
5fbce: 43f2 2804 lea %a2@(00000004,%d2:l),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
5fbd2: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
5fbd4: 6608 bnes 5fbde <_Thread_queue_First_priority+0x32><== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
5fbd6: 7004 moveq #4,%d0 <== NOT EXECUTED
5fbd8: b081 cmpl %d1,%d0 <== NOT EXECUTED
5fbda: 66e0 bnes 5fbbc <_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;
5fbdc: 4200 clrb %d0 <== NOT EXECUTED
}
5fbde: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
5fbe2: 4e5e unlk %fp <== NOT EXECUTED
...
00049038 <_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 ) {
49038: 7201 moveq #1,%d1
Thread_queue_Control *the_thread_queue,
Thread_queue_Disciplines the_discipline,
States_Control state,
uint32_t timeout_status
)
{
4903a: 4e56 0000 linkw %fp,#0
4903e: 206e 0008 moveal %fp@(8),%a0
49042: 2f0a movel %a2,%sp@-
49044: 202e 000c movel %fp@(12),%d0
49048: 2f02 movel %d2,%sp@-
the_thread_queue->state = state;
4904a: 216e 0010 0038 movel %fp@(16),%a0@(56)
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
49050: 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;
49056: 2140 0034 movel %d0,%a0@(52)
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
4905a: 42a8 0030 clrl %a0@(48)
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4905e: b280 cmpl %d0,%d1
49060: 6716 beqs 49078 <_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 );
49062: 2448 moveal %a0,%a2
49064: 588a addql #4,%a2
head->next = tail;
head->previous = NULL;
49066: 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 );
4906a: 208a movel %a2,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4906c: 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 );
}
}
49070: 241f movel %sp@+,%d2
49072: 245f moveal %sp@+,%a2
49074: 4e5e unlk %fp
49076: 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 ) {
49078: 2248 moveal %a0,%a1
4907a: 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 );
4907c: 2400 movel %d0,%d2
4907e: 2200 movel %d0,%d1
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49080: 5280 addql #1,%d0
49082: e58a lsll #2,%d2
49084: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
49086: 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 );
4908a: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4908c: 45f0 1800 lea %a0@(00000000,%d1:l),%a2
49090: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
49094: 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 ;
49098: 7204 moveq #4,%d1
4909a: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
4909c: 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 ;
490a0: b280 cmpl %d0,%d1
490a2: 67cc beqs 49070 <_Thread_queue_Initialize+0x38> <== NEVER TAKEN
490a4: 2400 movel %d0,%d2
490a6: 2200 movel %d0,%d1
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
490a8: 5280 addql #1,%d0
490aa: e58a lsll #2,%d2
490ac: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
490ae: 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 );
490b2: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
490b4: 45f0 1800 lea %a0@(00000000,%d1:l),%a2
490b8: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
490bc: 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 ;
490c0: 7204 moveq #4,%d1
490c2: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
490c4: 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 ;
490c8: b280 cmpl %d0,%d1
490ca: 66b0 bnes 4907c <_Thread_queue_Initialize+0x44>
490cc: 60a2 bras 49070 <_Thread_queue_Initialize+0x38>
...
0004c1ac <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4c1ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c1b0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4c1b4: 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 &&
4c1b8: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED
4c1bc: 6708 beqs 4c1c6 <_Thread_queue_Process_timeout+0x1a><== NOT EXECUTED
4c1be: b1f9 0005 eff4 cmpal 5eff4 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c1c4: 6716 beqs 4c1dc <_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;
4c1c6: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4c1cc: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c1ce: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4c1d0: 4eb9 0004 c084 jsr 4c084 <_Thread_queue_Extract> <== NOT EXECUTED
4c1d6: 508f addql #8,%sp <== NOT EXECUTED
}
}
4c1d8: 4e5e unlk %fp <== NOT EXECUTED
4c1da: 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 ) {
4c1dc: 7203 moveq #3,%d1 <== NOT EXECUTED
4c1de: b280 cmpl %d0,%d1 <== NOT EXECUTED
4c1e0: 67f6 beqs 4c1d8 <_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;
4c1e2: 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 );
}
}
4c1e4: 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;
4c1e6: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4c1ec: 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 );
}
}
...
000490d0 <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
490d0: 4e56 fff0 linkw %fp,#-16
490d4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
490d8: 246e 0008 moveal %fp@(8),%a2
490dc: 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 )
490e0: 4a8a tstl %a2
490e2: 6708 beqs 490ec <_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 ) {
490e4: 7001 moveq #1,%d0
490e6: b0aa 0034 cmpl %a2@(52),%d0
490ea: 670a beqs 490f6 <_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 );
}
}
490ec: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
490f2: 4e5e unlk %fp <== NOT EXECUTED
490f4: 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 );
490f6: 303c 0700 movew #1792,%d0
490fa: 40c2 movew %sr,%d2
490fc: 8082 orl %d2,%d0
490fe: 46c0 movew %d0,%sr
49100: 202b 0010 movel %a3@(16),%d0
49104: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4910a: 660c bnes 49118 <_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 );
4910c: 46c2 movew %d2,%sr <== NOT EXECUTED
}
}
4910e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
49114: 4e5e unlk %fp
49116: 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 );
49118: 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;
4911c: 7001 moveq #1,%d0
4911e: 2f0b movel %a3,%sp@-
49120: 2540 0030 movel %d0,%a2@(48)
49124: 2f0a movel %a2,%sp@-
49126: 4eb9 0004 c0bc jsr 4c0bc <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
4912c: 486e fffc pea %fp@(-4)
49130: 2f0b movel %a3,%sp@-
49132: 2f0a movel %a2,%sp@-
49134: 4eb9 0004 8e28 jsr 48e28 <_Thread_queue_Enqueue_priority>
4913a: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
4913e: 46c2 movew %d2,%sr
49140: 60cc bras 4910e <_Thread_queue_Requeue+0x3e>
...
00049144 <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
49144: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49148: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4914c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49150: 4eb9 0004 88e8 jsr 488e8 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
49156: 508f addql #8,%sp <== NOT EXECUTED
49158: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4915c: 6618 bnes 49176 <_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 );
4915e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49160: 4eb9 0004 c1ac jsr 4c1ac <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
49166: 588f addql #4,%sp <== NOT EXECUTED
49168: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4916e: 5380 subql #1,%d0 <== NOT EXECUTED
49170: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
49176: 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 d454 lea 5d454 <_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 9c34 lea 59c34 <_Chain_Get>,%a3 <== NOT EXECUTED
590b0: 49f9 0005 d4dc lea 5d4dc <_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 dc5c movel 7dc5c <_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 dbde movel 7dbde <_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 d3c0 jsr 5d3c0 <_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 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5921c: 5280 addql #1,%d0 <== NOT EXECUTED
5921e: 23c0 0007 db34 movel %d0,7db34 <_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 cd0c jsr 5cd0c <_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 c34a jsr 5c34a <_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 d630 jsr 5d630 <_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 d630 jsr 5d630 <_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 d454 jsr 5d454 <_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 d630 jsr 5d630 <_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 dc14 pea 7dc14 <_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 d4dc jsr 5d4dc <_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 d630 jsr 5d630 <_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 dc08 pea 7dc08 <_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 d4dc jsr 5d4dc <_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 9bd4 jmp 59bd4 <_Chain_Append> <== NOT EXECUTED
592ca: 2039 0007 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
592d0: 5280 addql #1,%d0 <== NOT EXECUTED
592d2: 23c0 0007 db34 movel %d0,7db34 <_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 c34a jmp 5c34a <_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 dbde movel 7dbde <_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 d4dc jsr 5d4dc <_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 c34a jmp 5c34a <_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 dc5c movel 7dc5c <_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 d4dc jsr 5d4dc <_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 c34a jmp 5c34a <_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
0004945c <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
4945c: 4e56 0000 linkw %fp,#0
49460: 226e 0008 moveal %fp@(8),%a1
49464: 2f0a movel %a2,%sp@-
49466: 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;
4946a: 206a 0004 moveal %a2@(4),%a0
4946e: d1e9 0004 addal %a1@(4),%a0
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
49472: 2208 movel %a0,%d1
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
uint32_t seconds = add->tv_sec;
49474: 2012 movel %a2@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
49476: d191 addl %d0,%a1@
time->tv_nsec += add->tv_nsec;
49478: 2348 0004 movel %a0,%a1@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
4947c: b1fc 3b9a c9ff cmpal #999999999,%a0
49482: 631a blss 4949e <_Timespec_Add_to+0x42> <== ALWAYS TAKEN
49484: 2051 moveal %a1@,%a0 <== NOT EXECUTED
*
* This routines adds two timespecs. The second argument is added
* to the first.
*/
uint32_t _Timespec_Add_to(
49486: 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;
49488: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED
time->tv_sec++;
seconds++;
4948e: 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 ) {
49490: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED
49496: 62ee bhis 49486 <_Timespec_Add_to+0x2a> <== NOT EXECUTED
49498: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
4949c: 2288 movel %a0,%a1@ <== NOT EXECUTED
time->tv_sec++;
seconds++;
}
return seconds;
}
4949e: 245f moveal %sp@+,%a2
494a0: 4e5e unlk %fp <== NOT EXECUTED
0004af70 <_Timespec_Divide>:
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4af70: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
4af74: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4af78: 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;
4af7c: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4af82: 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;
4af86: 45f9 0005 c09c lea 5c09c <__muldi3>,%a2 <== NOT EXECUTED
4af8c: 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;
4af8e: 2a10 movel %a0@,%d5 <== NOT EXECUTED
left += lhs->tv_nsec;
4af90: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4af94: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4af96: 5bc0 smi %d0 <== NOT EXECUTED
4af98: 49c0 extbl %d0 <== NOT EXECUTED
4af9a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4af9c: 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;
4afa0: 4e92 jsr %a2@ <== NOT EXECUTED
4afa2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4afa6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4afa8: 2241 moveal %d1,%a1 <== NOT EXECUTED
right += rhs->tv_nsec;
4afaa: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED
4afae: 5bc2 smi %d2 <== NOT EXECUTED
4afb0: 49c2 extbl %d2 <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4afb2: 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;
4afb6: 2208 movel %a0,%d1 <== NOT EXECUTED
4afb8: d689 addl %a1,%d3 <== NOT EXECUTED
4afba: d581 addxl %d1,%d2 <== NOT EXECUTED
if ( right == 0 ) {
4afbc: 6700 0086 beqw 4b044 <_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;
4afc0: 4bf9 0005 c8e8 lea 5c8e8 <__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;
4afc6: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
4afcc: 42a7 clrl %sp@- <== NOT EXECUTED
4afce: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4afd0: 5bc1 smi %d1 <== NOT EXECUTED
4afd2: 49c1 extbl %d1 <== NOT EXECUTED
4afd4: 2f01 movel %d1,%sp@- <== NOT EXECUTED
left += lhs->tv_nsec;
4afd6: 2a04 movel %d4,%d5 <== NOT EXECUTED
4afd8: 5bc4 smi %d4 <== NOT EXECUTED
4afda: 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;
4afdc: 4e92 jsr %a2@ <== NOT EXECUTED
4afde: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4afe2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4afe4: 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;
4afe6: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED
4afec: 2008 movel %a0,%d0 <== NOT EXECUTED
4afee: 2209 movel %a1,%d1 <== NOT EXECUTED
4aff0: 42a7 clrl %sp@- <== NOT EXECUTED
4aff2: d285 addl %d5,%d1 <== NOT EXECUTED
4aff4: d184 addxl %d4,%d0 <== NOT EXECUTED
4aff6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4aff8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4affa: 4e92 jsr %a2@ <== NOT EXECUTED
4affc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b000: 2e83 movel %d3,%sp@ <== NOT EXECUTED
4b002: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b004: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b006: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b008: 4e95 jsr %a5@ <== NOT EXECUTED
4b00a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b00e: 2400 movel %d0,%d2 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b010: 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;
4b014: 2601 movel %d1,%d3 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b016: 42a7 clrl %sp@- <== NOT EXECUTED
4b018: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b01a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b01c: 4e95 jsr %a5@ <== NOT EXECUTED
4b01e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b022: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED
4b026: 42a7 clrl %sp@- <== NOT EXECUTED
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
4b028: 2881 movel %d1,%a4@ <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b02a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b02c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b02e: 4eb9 0005 cc74 jsr 5cc74 <__umoddi3> <== NOT EXECUTED
4b034: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b038: 2681 movel %d1,%a3@ <== NOT EXECUTED
}
4b03a: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b040: 4e5e unlk %fp <== NOT EXECUTED
4b042: 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;
4b044: 4294 clrl %a4@ <== NOT EXECUTED
*fval_percentage = 0;
4b046: 4293 clrl %a3@ <== NOT EXECUTED
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
*fval_percentage = answer % 1000;
}
4b048: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b04e: 4e5e unlk %fp <== NOT EXECUTED
...
0004afcc <_Timespec_Divide_by_integer>:
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4afcc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4afd0: 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;
4afd4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4afda: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4afde: 47f9 0005 c3e8 lea 5c3e8 <__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;
4afe4: 42a7 clrl %sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4afe6: 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;
4afea: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
4afec: 5bc0 smi %d0 <== NOT EXECUTED
4afee: 49c0 extbl %d0 <== NOT EXECUTED
4aff0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4aff2: 4eb9 0005 bb9c jsr 5bb9c <__muldi3> <== NOT EXECUTED
4aff8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4affc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4affe: 2241 moveal %d1,%a1 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b000: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b004: 2408 movel %a0,%d2 <== NOT EXECUTED
4b006: 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;
4b008: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
4b00c: 5bc0 smi %d0 <== NOT EXECUTED
4b00e: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b010: 42a7 clrl %sp@- <== NOT EXECUTED
4b012: d681 addl %d1,%d3 <== NOT EXECUTED
4b014: d580 addxl %d0,%d2 <== NOT EXECUTED
4b016: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b018: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b01a: 4e93 jsr %a3@ <== NOT EXECUTED
4b01c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b020: 2400 movel %d0,%d2 <== NOT EXECUTED
4b022: 2601 movel %d1,%d3 <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b024: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
4b02a: 42a7 clrl %sp@- <== NOT EXECUTED
4b02c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b02e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b030: 4e93 jsr %a3@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b032: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b036: 2ebc 3b9a ca00 movel #1000000000,%sp@ <== NOT EXECUTED
4b03c: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b03e: 2481 movel %d1,%a2@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b040: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b042: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b044: 4eb9 0005 c774 jsr 5c774 <__umoddi3> <== NOT EXECUTED
4b04a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b04e: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
4b052: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4b058: 4e5e unlk %fp <== NOT EXECUTED
0004a1bc <_Timespec_From_ticks>:
struct timespec *time
)
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
4a1bc: 43f9 0005 f720 lea 5f720 <Configuration+0xc>,%a1 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
4a1c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
4a1c6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4a1ca: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
4a1ce: 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;
4a1d0: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
4a1d6: 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;
4a1da: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED
4a1de: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
TOD_NANOSECONDS_PER_MICROSECOND;
}
4a1e2: 241f movel %sp@+,%d2 <== NOT EXECUTED
4a1e4: 4e5e unlk %fp <== NOT EXECUTED
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
4a1e6: 2080 movel %d0,%a0@ <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
4a1e8: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
4a1ee: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
4a1f2: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
TOD_NANOSECONDS_PER_MICROSECOND;
}
0004b05c <_Timespec_Greater_than>:
bool _Timespec_Greater_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4b05c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b060: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4b064: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
4b068: 2211 movel %a1@,%d1 <== NOT EXECUTED
4b06a: 2010 movel %a0@,%d0 <== NOT EXECUTED
4b06c: b081 cmpl %d1,%d0 <== NOT EXECUTED
4b06e: 6d18 blts 4b088 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec < rhs->tv_sec )
4b070: 6e10 bgts 4b082 <_Timespec_Greater_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
4b072: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4b076: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
4b07a: 5dc0 slt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
4b07c: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
4b07e: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
4b080: 4e75 rts <== NOT EXECUTED
4b082: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
if ( lhs->tv_sec < rhs->tv_sec )
return false;
4b084: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
4b086: 4e75 rts <== NOT EXECUTED
4b088: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
4b08a: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
...
0004a1f8 <_Timespec_Is_valid>:
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
const struct timespec *time
)
{
4a1f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a1fc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !time )
4a200: 4a88 tstl %a0 <== NOT EXECUTED
4a202: 6718 beqs 4a21c <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_sec < 0 )
4a204: 4a90 tstl %a0@ <== NOT EXECUTED
4a206: 6d14 blts 4a21c <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_nsec < 0 )
4a208: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
4a20c: 6d0e blts 4a21c <_Timespec_Is_valid+0x24> <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
4a20e: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
4a210: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
4a216: 53c0 sls %d0 <== NOT EXECUTED
4a218: 4480 negl %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
4a21a: 4e75 rts <== NOT EXECUTED
4a21c: 4e5e unlk %fp <== NOT EXECUTED
if ( time->tv_sec < 0 )
return false;
if ( time->tv_nsec < 0 )
return false;
4a21e: 4200 clrb %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
...
0004b090 <_Timespec_Less_than>:
bool _Timespec_Less_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4b090: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b094: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4b098: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
4b09c: 2211 movel %a1@,%d1 <== NOT EXECUTED
4b09e: 2010 movel %a0@,%d0 <== NOT EXECUTED
4b0a0: b081 cmpl %d1,%d0 <== NOT EXECUTED
4b0a2: 6e18 bgts 4b0bc <_Timespec_Less_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec > rhs->tv_sec )
4b0a4: 6d10 blts 4b0b6 <_Timespec_Less_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4b0a6: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4b0aa: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
4b0ae: 5ec0 sgt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4b0b0: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4b0b2: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4b0b4: 4e75 rts <== NOT EXECUTED
4b0b6: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
if ( lhs->tv_sec > rhs->tv_sec )
return false;
4b0b8: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4b0ba: 4e75 rts <== NOT EXECUTED
4b0bc: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
4b0be: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
...
000494a4 <_Timespec_Subtract>:
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
494a4: 4e56 0000 linkw %fp,#0
494a8: 226e 0008 moveal %fp@(8),%a1
494ac: 2f0a movel %a2,%sp@-
494ae: 246e 000c moveal %fp@(12),%a2
494b2: 206e 0010 moveal %fp@(16),%a0
if (end->tv_nsec < start->tv_nsec) {
494b6: 222a 0004 movel %a2@(4),%d1
494ba: 2029 0004 movel %a1@(4),%d0
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
494be: 2f02 movel %d2,%sp@-
if (end->tv_nsec < start->tv_nsec) {
494c0: b081 cmpl %d1,%d0
494c2: 6e14 bgts 494d8 <_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;
494c4: 2412 movel %a2@,%d2
494c6: 9491 subl %a1@,%d2
result->tv_nsec = end->tv_nsec - start->tv_nsec;
494c8: 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;
494ca: 2082 movel %d2,%a0@
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
494cc: 241f movel %sp@+,%d2
494ce: 245f moveal %sp@+,%a2
494d0: 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;
494d2: 2141 0004 movel %d1,%a0@(4)
}
}
494d6: 4e75 rts
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
494d8: 2452 moveal %a2@,%a2 <== NOT EXECUTED
494da: 538a subql #1,%a2 <== NOT EXECUTED
494dc: 95d1 subal %a1@,%a2 <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
494de: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED
494e4: 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;
}
}
494e6: 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;
494e8: 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;
}
}
494ea: 245f moveal %sp@+,%a2 <== NOT EXECUTED
494ec: 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;
494ee: 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;
}
}
0004a274 <_Timespec_To_ticks>:
*/
uint32_t _Timespec_To_ticks(
const struct timespec *time
)
{
4a274: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4a278: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4a27c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
4a280: 2412 movel %a2@,%d2 <== NOT EXECUTED
4a282: 6606 bnes 4a28a <_Timespec_To_ticks+0x16> <== NOT EXECUTED
4a284: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
4a288: 673e beqs 4a2c8 <_Timespec_To_ticks+0x54> <== NOT EXECUTED
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4a28a: 4eb9 0004 c970 jsr 4c970 <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4a290: 2239 0005 f720 movel 5f720 <Configuration+0xc>,%d1 <== NOT EXECUTED
4a296: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
4a29c: 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;
4a2a0: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4a2a4: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
4a2a8: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED
4a2ac: d083 addl %d3,%d0 <== NOT EXECUTED
if (ticks)
4a2ae: 670a beqs 4a2ba <_Timespec_To_ticks+0x46> <== NOT EXECUTED
return ticks;
return 1;
}
4a2b0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4a2b6: 4e5e unlk %fp <== NOT EXECUTED
4a2b8: 4e75 rts <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
if (ticks)
return ticks;
return 1;
4a2ba: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
}
4a2be: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4a2c4: 4e5e unlk %fp <== NOT EXECUTED
4a2c6: 4e75 rts <== NOT EXECUTED
)
{
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
4a2c8: 4280 clrl %d0 <== NOT EXECUTED
if (ticks)
return ticks;
return 1;
}
4a2ca: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4a2d0: 4e5e unlk %fp <== NOT EXECUTED
00049636 <_User_extensions_Fatal>:
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
49636: 4e56 fff0 linkw %fp,#-16
4963a: 48d7 041c moveml %d2-%d4/%a2,%sp@
4963e: 242e 0008 movel %fp@(8),%d2
49642: 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 );
}
}
49646: 2479 0005 efac moveal 5efac <_User_extensions_List+0x8>,%a2
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4964c: 182e 000f moveb %fp@(15),%d4
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49650: b5fc 0005 efa4 cmpal #389028,%a2
49656: 6726 beqs 4967e <_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 );
49658: 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 )
4965e: 206a 0030 moveal %a2@(48),%a0
49662: 4a88 tstl %a0
49664: 670c beqs 49672 <_User_extensions_Fatal+0x3c>
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
49666: 2f03 movel %d3,%sp@-
49668: 2f04 movel %d4,%sp@-
4966a: 2f02 movel %d2,%sp@-
4966c: 4e90 jsr %a0@
4966e: 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 ) {
49672: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49676: b5fc 0005 efa4 cmpal #389028,%a2
4967c: 66e0 bnes 4965e <_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 );
}
}
4967e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
49684: 4e5e unlk %fp <== NOT EXECUTED
000494f4 <_User_extensions_Handler_initialization>:
#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _User_extensions_Handler_initialization(void)
{
494f4: 4e56 ffec linkw %fp,#-20
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
494f8: 203c 0005 efa8 movel #389032,%d0
494fe: 23c0 0005 efa4 movel %d0,5efa4 <_User_extensions_List>
head->previous = NULL;
tail->previous = head;
49504: 203c 0005 efa4 movel #389028,%d0
4950a: 23c0 0005 efac movel %d0,5efac <_User_extensions_List+0x8>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
49510: 203c 0005 ee40 movel #388672,%d0
49516: 23c0 0005 ee3c movel %d0,5ee3c <_User_extensions_Switches_list>
head->previous = NULL;
tail->previous = head;
4951c: 203c 0005 ee3c movel #388668,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
49522: 42b9 0005 efa8 clrl 5efa8 <_User_extensions_List+0x4>
49528: 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;
4952c: 2439 0005 d60e movel 5d60e <Configuration+0x3a>,%d2
initial_extensions = Configuration.User_extension_table;
49532: 2639 0005 d612 movel 5d612 <Configuration+0x3e>,%d3
49538: 42b9 0005 ee40 clrl 5ee40 <_User_extensions_Switches_list+0x4>
tail->previous = head;
4953e: 23c0 0005 ee44 movel %d0,5ee44 <_User_extensions_Switches_list+0x8>
_Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list );
if ( initial_extensions ) {
49544: 4a83 tstl %d3
49546: 6764 beqs 495ac <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
49548: 7834 moveq #52,%d4
4954a: 4c02 4800 mulsl %d2,%d4
4954e: 2f04 movel %d4,%sp@-
49550: 4eb9 0004 9ab6 jsr 49ab6 <_Workspace_Allocate_or_fatal_error>
49556: 2440 moveal %d0,%a2
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
49558: 2f04 movel %d4,%sp@-
4955a: 42a7 clrl %sp@-
4955c: 2f00 movel %d0,%sp@-
4955e: 4eb9 0004 e178 jsr 4e178 <memset>
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
49564: 4fef 0010 lea %sp@(16),%sp
49568: 4a82 tstl %d2
4956a: 6740 beqs 495ac <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
4956c: 4284 clrl %d4
4956e: 47f9 0004 c22c lea 4c22c <_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;
49574: 2043 moveal %d3,%a0
49576: 5284 addql #1,%d4
49578: 0683 0000 0020 addil #32,%d3
4957e: 2558 0014 movel %a0@+,%a2@(20)
49582: 2558 0018 movel %a0@+,%a2@(24)
49586: 2558 001c movel %a0@+,%a2@(28)
4958a: 2558 0020 movel %a0@+,%a2@(32)
4958e: 2558 0024 movel %a0@+,%a2@(36)
49592: 2558 0028 movel %a0@+,%a2@(40)
49596: 2558 002c movel %a0@+,%a2@(44)
4959a: 2550 0030 movel %a0@,%a2@(48)
_User_extensions_Add_set( extension );
4959e: 2f0a movel %a2,%sp@-
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
495a0: 45ea 0034 lea %a2@(52),%a2
495a4: 4e93 jsr %a3@
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
495a6: 588f addql #4,%sp
495a8: b882 cmpl %d2,%d4
495aa: 65c8 bcss 49574 <_User_extensions_Handler_initialization+0x80>
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
}
}
}
495ac: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
495b2: 4e5e unlk %fp
...
0004ad54 <_User_extensions_Remove_set>:
#include <rtems/score/userext.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
4ad54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ad58: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ad5a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
_Chain_Extract( &the_extension->Node );
4ad5e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ad60: 4eb9 0004 85a0 jsr 485a0 <_Chain_Extract> <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
4ad66: 588f addql #4,%sp <== NOT EXECUTED
4ad68: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED
4ad6c: 6712 beqs 4ad80 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED
_Chain_Extract( &the_extension->Switch.Node );
4ad6e: 508a addql #8,%a2 <== NOT EXECUTED
4ad70: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4ad74: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ad78: 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 );
4ad7a: 4ef9 0004 85a0 jmp 485a0 <_Chain_Extract> <== NOT EXECUTED
}
4ad80: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ad84: 4e5e unlk %fp <== NOT EXECUTED
000495b8 <_User_extensions_Thread_begin>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
495b8: 4e56 0000 linkw %fp,#0
495bc: 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 );
}
}
495be: 2479 0005 efa4 moveal 5efa4 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
495c4: 2f02 movel %d2,%sp@-
495c6: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
495ca: b5fc 0005 efa8 cmpal #389032,%a2
495d0: 6718 beqs 495ea <_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 )
495d2: 206a 0028 moveal %a2@(40),%a0
495d6: 4a88 tstl %a0
495d8: 6706 beqs 495e0 <_User_extensions_Thread_begin+0x28>
(*the_extension->Callouts.thread_begin)( executing );
495da: 2f02 movel %d2,%sp@-
495dc: 4e90 jsr %a0@
495de: 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 ) {
495e0: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
495e2: b5fc 0005 efa8 cmpal #389032,%a2
495e8: 66e8 bnes 495d2 <_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 );
}
}
495ea: 242e fff8 movel %fp@(-8),%d2
495ee: 246e fffc moveal %fp@(-4),%a2
495f2: 4e5e unlk %fp <== NOT EXECUTED
00049688 <_User_extensions_Thread_create>:
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
49688: 4e56 0000 linkw %fp,#0
4968c: 2f0a movel %a2,%sp@-
return false;
}
}
return true;
}
4968e: 2479 0005 efa4 moveal 5efa4 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
49694: 2f02 movel %d2,%sp@-
49696: 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 );
4969a: b5fc 0005 efa8 cmpal #389032,%a2
496a0: 6722 beqs 496c4 <_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 ) {
496a2: 206a 0014 moveal %a2@(20),%a0
496a6: 4a88 tstl %a0
496a8: 6710 beqs 496ba <_User_extensions_Thread_create+0x32>
status = (*the_extension->Callouts.thread_create)(
496aa: 2f02 movel %d2,%sp@-
496ac: 2f39 0005 eff4 movel 5eff4 <_Per_CPU_Information+0xc>,%sp@-
496b2: 4e90 jsr %a0@
_Thread_Executing,
the_thread
);
if ( !status )
496b4: 508f addql #8,%sp
496b6: 4a00 tstb %d0
496b8: 6718 beqs 496d2 <_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 ) {
496ba: 2452 moveal %a2@,%a2
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
496bc: b5fc 0005 efa8 cmpal #389032,%a2
496c2: 66de bnes 496a2 <_User_extensions_Thread_create+0x1a>
return false;
}
}
return true;
}
496c4: 242e fff8 movel %fp@(-8),%d2
496c8: 246e fffc moveal %fp@(-4),%a2
496cc: 4e5e unlk %fp
if ( !status )
return false;
}
}
return true;
496ce: 7001 moveq #1,%d0
}
496d0: 4e75 rts
496d2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
496d6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
496da: 4e5e unlk %fp <== NOT EXECUTED
status = (*the_extension->Callouts.thread_create)(
_Thread_Executing,
the_thread
);
if ( !status )
return false;
496dc: 4200 clrb %d0 <== NOT EXECUTED
}
}
return true;
}
000496e0 <_User_extensions_Thread_delete>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
496e0: 4e56 0000 linkw %fp,#0
496e4: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
496e6: 2479 0005 efac moveal 5efac <_User_extensions_List+0x8>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
496ec: 2f02 movel %d2,%sp@-
496ee: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
496f2: b5fc 0005 efa4 cmpal #389028,%a2
496f8: 6720 beqs 4971a <_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 )
496fa: 206a 0020 moveal %a2@(32),%a0
496fe: 4a88 tstl %a0
49700: 670c beqs 4970e <_User_extensions_Thread_delete+0x2e><== NEVER TAKEN
(*the_extension->Callouts.thread_delete)(
49702: 2f02 movel %d2,%sp@-
49704: 2f39 0005 eff4 movel 5eff4 <_Per_CPU_Information+0xc>,%sp@-
4970a: 4e90 jsr %a0@
4970c: 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 ) {
4970e: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49712: b5fc 0005 efa4 cmpal #389028,%a2
49718: 66e0 bnes 496fa <_User_extensions_Thread_delete+0x1a>
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
4971a: 242e fff8 movel %fp@(-8),%d2
4971e: 246e fffc moveal %fp@(-4),%a2
49722: 4e5e unlk %fp
...
000495f6 <_User_extensions_Thread_exitted>:
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
495f6: 4e56 0000 linkw %fp,#0
495fa: 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 );
}
}
495fc: 2479 0005 efac moveal 5efac <_User_extensions_List+0x8>,%a2
}
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
49602: 2f02 movel %d2,%sp@-
49604: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49608: b5fc 0005 efa4 cmpal #389028,%a2
4960e: 671a beqs 4962a <_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 )
49610: 206a 002c moveal %a2@(44),%a0
49614: 4a88 tstl %a0
49616: 6706 beqs 4961e <_User_extensions_Thread_exitted+0x28><== ALWAYS TAKEN
(*the_extension->Callouts.thread_exitted)( executing );
49618: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4961a: 4e90 jsr %a0@ <== NOT EXECUTED
4961c: 588f addql #4,%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 ) {
4961e: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49622: b5fc 0005 efa4 cmpal #389028,%a2
49628: 66e6 bnes 49610 <_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 );
}
}
4962a: 242e fff8 movel %fp@(-8),%d2
4962e: 246e fffc moveal %fp@(-4),%a2
49632: 4e5e unlk %fp <== NOT EXECUTED
0004a3cc <_User_extensions_Thread_restart>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a3cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a3d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a3d2: 2479 0005 ff3c moveal 5ff3c <_User_extensions_List>,%a2 <== NOT EXECUTED
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a3d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a3da: 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 );
4a3de: b5fc 0005 ff40 cmpal #393024,%a2 <== NOT EXECUTED
4a3e4: 671e beqs 4a404 <_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 )
4a3e6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
4a3ea: 4a88 tstl %a0 <== NOT EXECUTED
4a3ec: 670c beqs 4a3fa <_User_extensions_Thread_restart+0x2e><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
4a3ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a3f0: 2f39 0005 ff8c movel 5ff8c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4a3f6: 4e90 jsr %a0@ <== NOT EXECUTED
4a3f8: 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 ) {
4a3fa: 2452 moveal %a2@,%a2 <== NOT EXECUTED
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4a3fc: b5fc 0005 ff40 cmpal #393024,%a2 <== NOT EXECUTED
4a402: 66e2 bnes 4a3e6 <_User_extensions_Thread_restart+0x1a><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a404: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a408: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a40c: 4e5e unlk %fp <== NOT EXECUTED
00049728 <_User_extensions_Thread_start>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49728: 4e56 0000 linkw %fp,#0
4972c: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
4972e: 2479 0005 efa4 moveal 5efa4 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49734: 2f02 movel %d2,%sp@-
49736: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4973a: b5fc 0005 efa8 cmpal #389032,%a2
49740: 671e beqs 49760 <_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 )
49742: 206a 0018 moveal %a2@(24),%a0
49746: 4a88 tstl %a0
49748: 670c beqs 49756 <_User_extensions_Thread_start+0x2e>
(*the_extension->Callouts.thread_start)(
4974a: 2f02 movel %d2,%sp@-
4974c: 2f39 0005 eff4 movel 5eff4 <_Per_CPU_Information+0xc>,%sp@-
49752: 4e90 jsr %a0@
49754: 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 ) {
49756: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
49758: b5fc 0005 efa8 cmpal #389032,%a2
4975e: 66e2 bnes 49742 <_User_extensions_Thread_start+0x1a>
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
49760: 242e fff8 movel %fp@(-8),%d2
49764: 246e fffc moveal %fp@(-4),%a2
49768: 4e5e unlk %fp <== NOT EXECUTED
0004976c <_User_extensions_Thread_switch>:
void _User_extensions_Thread_switch (
Thread_Control *executing,
Thread_Control *heir
)
{
4976c: 4e56 fff4 linkw %fp,#-12
49770: 48d7 040c moveml %d2-%d3/%a2,%sp@
49774: 262e 0008 movel %fp@(8),%d3
49778: 242e 000c movel %fp@(12),%d2
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
4977c: 2479 0005 ee3c moveal 5ee3c <_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 );
49782: b5fc 0005 ee40 cmpal #388672,%a2
49788: 6716 beqs 497a0 <_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 );
4978a: 2f02 movel %d2,%sp@-
4978c: 2f03 movel %d3,%sp@-
4978e: 206a 0008 moveal %a2@(8),%a0
49792: 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 ) {
49794: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
49796: 508f addql #8,%sp
49798: b5fc 0005 ee40 cmpal #388672,%a2
4979e: 66ea bnes 4978a <_User_extensions_Thread_switch+0x1e><== NEVER TAKEN
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
497a0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
497a6: 4e5e unlk %fp
...
0004b3a0 <_Watchdog_Adjust>:
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b3a0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4b3a4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4b3a8: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b3ac: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED
4b3b2: 2004 movel %d4,%d0 <== NOT EXECUTED
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b3b4: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
4b3b8: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b3bc: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b3be: 8081 orl %d1,%d0 <== NOT EXECUTED
4b3c0: 46c0 movew %d0,%sr <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b3c2: 244b moveal %a3,%a2 <== NOT EXECUTED
4b3c4: 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 ) ) {
4b3c6: b5c8 cmpal %a0,%a2 <== NOT EXECUTED
4b3c8: 6748 beqs 4b412 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
4b3ca: 4a89 tstl %a1 <== NOT EXECUTED
4b3cc: 6650 bnes 4b41e <_Watchdog_Adjust+0x7e> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b3ce: 4a82 tstl %d2 <== NOT EXECUTED
4b3d0: 6740 beqs 4b412 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b3d2: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
4b3d6: 49f9 0004 b628 lea 4b628 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED
4b3dc: b682 cmpl %d2,%d3 <== NOT EXECUTED
4b3de: 622c bhis 4b40c <_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;
4b3e0: 7001 moveq #1,%d0 <== NOT EXECUTED
4b3e2: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
_ISR_Enable( level );
4b3e6: 46c1 movew %d1,%sr <== NOT EXECUTED
_Watchdog_Tickle( header );
4b3e8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b3ea: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
4b3ec: 2004 movel %d4,%d0 <== NOT EXECUTED
4b3ee: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b3f0: 8081 orl %d1,%d0 <== NOT EXECUTED
4b3f2: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
4b3f4: 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;
4b3f6: 9483 subl %d3,%d2 <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b3f8: 2013 movel %a3@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
4b3fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
_Watchdog_Tickle( header );
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
4b3fc: b08a cmpl %a2,%d0 <== NOT EXECUTED
4b3fe: 6712 beqs 4b412 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b400: 4a82 tstl %d2 <== NOT EXECUTED
4b402: 670e beqs 4b412 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b404: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
4b408: b483 cmpl %d3,%d2 <== NOT EXECUTED
4b40a: 64d4 bccs 4b3e0 <_Watchdog_Adjust+0x40> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
4b40c: 9682 subl %d2,%d3 <== NOT EXECUTED
4b40e: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b412: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b414: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4b41a: 4e5e unlk %fp <== NOT EXECUTED
4b41c: 4e75 rts <== NOT EXECUTED
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
switch ( direction ) {
4b41e: 7001 moveq #1,%d0 <== NOT EXECUTED
4b420: b089 cmpl %a1,%d0 <== NOT EXECUTED
4b422: 66ee bnes 4b412 <_Watchdog_Adjust+0x72> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
4b424: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b428: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b42a: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4b430: 4e5e unlk %fp <== NOT EXECUTED
0005d454 <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5d454: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5d458: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
5d45c: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5d460: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
5d464: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
if ( units <= 0 ) {
5d468: 6760 beqs 5d4ca <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
return;
}
_ISR_Disable( level );
5d46a: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
5d470: 2003 movel %d3,%d0 <== NOT EXECUTED
5d472: 40c2 movew %sr,%d2 <== NOT EXECUTED
5d474: 8082 orl %d2,%d0 <== NOT EXECUTED
5d476: 46c0 movew %d0,%sr <== NOT EXECUTED
5d478: 2a41 moveal %d1,%a5 <== NOT EXECUTED
5d47a: 205d moveal %a5@+,%a0 <== NOT EXECUTED
while ( 1 ) {
if ( units <= 0 ) {
break;
}
if ( _Chain_Is_empty( header ) ) {
5d47c: bbc8 cmpal %a0,%a5 <== NOT EXECUTED
5d47e: 6748 beqs 5d4c8 <_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 ) {
5d480: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
5d484: b880 cmpl %d0,%d4 <== NOT EXECUTED
5d486: 654a bcss 5d4d2 <_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;
5d488: 9880 subl %d0,%d4 <== NOT EXECUTED
first->delta_interval = 0;
5d48a: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
5d48e: 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 );
5d490: 2009 movel %a1,%d0 <== NOT EXECUTED
5d492: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
5d494: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
5d498: 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;
5d49c: 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;
5d4a0: 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;
5d4a2: 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 );
5d4a6: 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;
5d4a8: 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;
5d4ac: 2488 movel %a0,%a2@ <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
5d4ae: 2003 movel %d3,%d0 <== NOT EXECUTED
5d4b0: 46c2 movew %d2,%sr <== NOT EXECUTED
5d4b2: 8082 orl %d2,%d0 <== NOT EXECUTED
5d4b4: 46c0 movew %d0,%sr <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
}
5d4b6: 2441 moveal %d1,%a2 <== NOT EXECUTED
5d4b8: 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 ) )
5d4ba: b1cd cmpal %a5,%a0 <== NOT EXECUTED
5d4bc: 6706 beqs 5d4c4 <_Watchdog_Adjust_to_chain+0x70> <== NOT EXECUTED
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
5d4be: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED
5d4c2: 67ca beqs 5d48e <_Watchdog_Adjust_to_chain+0x3a> <== NOT EXECUTED
}
_ISR_Disable( level );
while ( 1 ) {
if ( units <= 0 ) {
5d4c4: 4a84 tstl %d4 <== NOT EXECUTED
5d4c6: 66b4 bnes 5d47c <_Watchdog_Adjust_to_chain+0x28> <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d4c8: 46c2 movew %d2,%sr <== NOT EXECUTED
}
5d4ca: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5 <== NOT EXECUTED
5d4ce: 4e5e unlk %fp <== NOT EXECUTED
5d4d0: 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;
5d4d2: 9084 subl %d4,%d0 <== NOT EXECUTED
5d4d4: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d4d8: 46c2 movew %d2,%sr <== NOT EXECUTED
5d4da: 60ee bras 5d4ca <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
000497ac <_Watchdog_Insert>:
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
497ac: 4e56 ffec linkw %fp,#-20
497b0: 226e 000c moveal %fp@(12),%a1
497b4: 48d7 043c moveml %d2-%d5/%a2,%sp@
497b8: 246e 0008 moveal %fp@(8),%a2
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
497bc: 2a3c 0000 0700 movel #1792,%d5
497c2: 2005 movel %d5,%d0
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
497c4: 2839 0005 eff0 movel 5eff0 <_Per_CPU_Information+0x8>,%d4
_ISR_Disable( level );
497ca: 40c3 movew %sr,%d3
497cc: 8083 orl %d3,%d0
497ce: 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 ) {
497d0: 4aa9 0008 tstl %a1@(8)
497d4: 6600 00c6 bnew 4989c <_Watchdog_Insert+0xf0>
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
_Watchdog_Sync_count++;
497d8: 2039 0005 ef5c movel 5ef5c <_Watchdog_Sync_count>,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
497de: 7201 moveq #1,%d1
_Watchdog_Sync_count++;
497e0: 5280 addql #1,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
497e2: 2341 0008 movel %d1,%a1@(8)
_Watchdog_Sync_count++;
497e6: 23c0 0005 ef5c movel %d0,5ef5c <_Watchdog_Sync_count>
restart:
delta_interval = the_watchdog->initial;
497ec: 2029 000c movel %a1@(12),%d0
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
497f0: 2052 moveal %a2@,%a0
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
497f2: 6764 beqs 49858 <_Watchdog_Insert+0xac> <== NEVER TAKEN
497f4: 4a90 tstl %a0@
497f6: 6760 beqs 49858 <_Watchdog_Insert+0xac> <== ALWAYS TAKEN
break;
if ( delta_interval < after->delta_interval ) {
497f8: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
497fc: b280 cmpl %d0,%d1 <== NOT EXECUTED
497fe: 6252 bhis 49852 <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
49800: 2405 movel %d5,%d2 <== NOT EXECUTED
49802: 46c3 movew %d3,%sr <== NOT EXECUTED
49804: 8483 orl %d3,%d2 <== NOT EXECUTED
49806: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49808: 7401 moveq #1,%d2 <== NOT EXECUTED
4980a: b4a9 0008 cmpl %a1@(8),%d2 <== NOT EXECUTED
4980e: 666e bnes 4987e <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49810: 2439 0005 eefc movel 5eefc <_Watchdog_Sync_level>,%d2 <== NOT EXECUTED
49816: b484 cmpl %d4,%d2 <== NOT EXECUTED
49818: 6230 bhis 4984a <_Watchdog_Insert+0x9e> <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
4981a: 9081 subl %d1,%d0 <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
4981c: 2050 moveal %a0@,%a0 <== NOT EXECUTED
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4981e: 4a80 tstl %d0 <== NOT EXECUTED
49820: 6736 beqs 49858 <_Watchdog_Insert+0xac> <== NOT EXECUTED
49822: 4a90 tstl %a0@ <== NOT EXECUTED
49824: 6732 beqs 49858 <_Watchdog_Insert+0xac> <== NOT EXECUTED
break;
if ( delta_interval < after->delta_interval ) {
49826: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
4982a: b081 cmpl %d1,%d0 <== NOT EXECUTED
4982c: 6524 bcss 49852 <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
4982e: 2405 movel %d5,%d2 <== NOT EXECUTED
49830: 46c3 movew %d3,%sr <== NOT EXECUTED
49832: 8483 orl %d3,%d2 <== NOT EXECUTED
49834: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
49836: 9081 subl %d1,%d0 <== NOT EXECUTED
_ISR_Flash( level );
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49838: 7201 moveq #1,%d1 <== NOT EXECUTED
4983a: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED
4983e: 663e bnes 4987e <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49840: 2239 0005 eefc movel 5eefc <_Watchdog_Sync_level>,%d1 <== NOT EXECUTED
49846: b284 cmpl %d4,%d1 <== NOT EXECUTED
49848: 63d2 blss 4981c <_Watchdog_Insert+0x70> <== NOT EXECUTED
_Watchdog_Sync_level = insert_isr_nest_level;
4984a: 23c4 0005 eefc movel %d4,5eefc <_Watchdog_Sync_level> <== NOT EXECUTED
goto restart;
49850: 609a bras 497ec <_Watchdog_Insert+0x40> <== NOT EXECUTED
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
break;
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
49852: 9280 subl %d0,%d1 <== NOT EXECUTED
49854: 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 );
49858: 2068 0004 moveal %a0@(4),%a0
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
4985c: 7402 moveq #2,%d2
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
4985e: 2450 moveal %a0@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
49860: 2340 0010 movel %d0,%a1@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
49864: 2039 0005 ef60 movel 5ef60 <_Watchdog_Ticks_since_boot>,%d0
4986a: 2342 0008 movel %d2,%a1@(8)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
4986e: 2348 0004 movel %a0,%a1@(4)
before_node = after_node->next;
after_node->next = the_node;
49872: 2089 movel %a1,%a0@
the_node->next = before_node;
before_node->previous = the_node;
49874: 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;
49878: 228a movel %a2,%a1@
4987a: 2340 0014 movel %d0,%a1@(20)
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
4987e: 23c4 0005 eefc movel %d4,5eefc <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
49884: 2039 0005 ef5c movel 5ef5c <_Watchdog_Sync_count>,%d0
4988a: 5380 subql #1,%d0
4988c: 23c0 0005 ef5c movel %d0,5ef5c <_Watchdog_Sync_count>
_ISR_Enable( level );
49892: 46c3 movew %d3,%sr
}
49894: 4cd7 043c moveml %sp@,%d2-%d5/%a2
49898: 4e5e unlk %fp
4989a: 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 );
4989c: 46c3 movew %d3,%sr <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
4989e: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
498a2: 4e5e unlk %fp <== NOT EXECUTED
...
00049900 <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
49900: 203c 0000 0700 movel #1792,%d0
*/
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
49906: 4e56 0000 linkw %fp,#0
4990a: 206e 0008 moveal %fp@(8),%a0
4990e: 2f0a movel %a2,%sp@-
49910: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
49912: 40c1 movew %sr,%d1
49914: 8081 orl %d1,%d0
49916: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
49918: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
4991c: 7401 moveq #1,%d2
4991e: b480 cmpl %d0,%d2
49920: 6764 beqs 49986 <_Watchdog_Remove+0x86> <== NEVER TAKEN
49922: 6314 blss 49938 <_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;
49924: 2279 0005 ef60 moveal 5ef60 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED
4992a: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
4992e: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state );
}
49930: 241f movel %sp@+,%d2 <== NOT EXECUTED
49932: 245f moveal %sp@+,%a2 <== NOT EXECUTED
49934: 4e5e unlk %fp <== NOT EXECUTED
49936: 4e75 rts <== NOT EXECUTED
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
previous_state = the_watchdog->state;
switch ( previous_state ) {
49938: 143c 0003 moveb #3,%d2
4993c: b480 cmpl %d0,%d2
4993e: 65e4 bcss 49924 <_Watchdog_Remove+0x24> <== NEVER TAKEN
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
49940: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
49942: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
49946: 4a91 tstl %a1@
49948: 6708 beqs 49952 <_Watchdog_Remove+0x52> <== ALWAYS TAKEN
next_watchdog->delta_interval += the_watchdog->delta_interval;
4994a: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED
4994e: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED
if ( _Watchdog_Sync_count )
49952: 2479 0005 ef5c moveal 5ef5c <_Watchdog_Sync_count>,%a2
49958: 4a8a tstl %a2
4995a: 670c beqs 49968 <_Watchdog_Remove+0x68> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
4995c: 45f9 0005 eff0 lea 5eff0 <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED
49962: 23d2 0005 eefc movel %a2@,5eefc <_Watchdog_Sync_level> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
49968: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
4996c: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
49970: 2489 movel %a1,%a2@
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49972: 2279 0005 ef60 moveal 5ef60 <_Watchdog_Ticks_since_boot>,%a1
49978: 2149 0018 movel %a1,%a0@(24)
_ISR_Enable( level );
4997c: 46c1 movew %d1,%sr
return( previous_state );
}
4997e: 241f movel %sp@+,%d2
49980: 245f moveal %sp@+,%a2
49982: 4e5e unlk %fp
49984: 4e75 rts
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49986: 2279 0005 ef60 moveal 5ef60 <_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;
4998c: 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;
49990: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
49994: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state );
}
49996: 241f movel %sp@+,%d2 <== NOT EXECUTED
49998: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4999a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ae18 <_Watchdog_Report>:
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4ae18: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
printk(
4ae1c: 223c 0005 e7bd movel #387005,%d1 <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4ae22: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4ae26: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
4ae2a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
printk(
4ae2e: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED
4ae32: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED
4ae36: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED
4ae3a: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
4ae3e: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
4ae42: 4a80 tstl %d0 <== NOT EXECUTED
4ae44: 672a beqs 4ae70 <_Watchdog_Report+0x58> <== NOT EXECUTED
4ae46: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4ae48: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4ae4a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ae4c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4ae4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ae50: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4ae52: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4ae54: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ae56: 4879 0005 e93e pea 5e93e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED
4ae5c: 4eb9 0004 4878 jsr 44878 <printk> <== NOT EXECUTED
4ae62: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4ae66: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
4ae6c: 4e5e unlk %fp <== NOT EXECUTED
4ae6e: 4e75 rts <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
printk(
4ae70: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4ae72: 223c 0005 e7c2 movel #387010,%d1 <== NOT EXECUTED
4ae78: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4ae7a: 2001 movel %d1,%d0 <== NOT EXECUTED
4ae7c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ae7e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4ae80: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ae82: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4ae84: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4ae86: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ae88: 4879 0005 e93e pea 5e93e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED
4ae8e: 4eb9 0004 4878 jsr 44878 <printk> <== NOT EXECUTED
4ae94: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4ae98: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
4ae9e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ad9c <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4ad9c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4ada2: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4ada6: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
4adaa: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4adae: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4adb2: 40c3 movew %sr,%d3 <== NOT EXECUTED
4adb4: 8083 orl %d3,%d0 <== NOT EXECUTED
4adb6: 46c0 movew %d0,%sr <== NOT EXECUTED
printk( "Watchdog Chain: %s %p\n", name, header );
4adb8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4adba: 4bf9 0004 4878 lea 44878 <printk>,%a5 <== NOT EXECUTED
4adc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4adc2: 4879 0005 e908 pea 5e908 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED
4adc8: 4e95 jsr %a5@ <== NOT EXECUTED
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
}
4adca: 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 ) ) {
4adcc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4add0: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4add2: 672c beqs 4ae00 <_Watchdog_Report_chain+0x64> <== NOT EXECUTED
4add4: 49f9 0004 ae18 lea 4ae18 <_Watchdog_Report>,%a4 <== NOT EXECUTED
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4adda: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4addc: 42a7 clrl %sp@- <== NOT EXECUTED
4adde: 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 )
4ade0: 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 ) ;
4ade2: 508f addql #8,%sp <== NOT EXECUTED
4ade4: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4ade6: 66f2 bnes 4adda <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
4ade8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4adea: 4879 0005 e91f pea 5e91f <_Status_Object_name_errors_to_status+0x2b><== NOT EXECUTED
4adf0: 4e95 jsr %a5@ <== NOT EXECUTED
4adf2: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
4adf4: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4adf6: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4adfc: 4e5e unlk %fp <== NOT EXECUTED
4adfe: 4e75 rts <== NOT EXECUTED
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
4ae00: 4879 0005 e92e pea 5e92e <_Status_Object_name_errors_to_status+0x3a><== NOT EXECUTED
4ae06: 4e95 jsr %a5@ <== NOT EXECUTED
4ae08: 588f addql #4,%sp <== NOT EXECUTED
}
_ISR_Enable( level );
4ae0a: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4ae0c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4ae12: 4e5e unlk %fp <== NOT EXECUTED
...
000499a0 <_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 );
499a0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _Watchdog_Tickle(
Chain_Control *header
)
{
499a6: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
499aa: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
499ae: 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 );
499b2: 40c2 movew %sr,%d2 <== NOT EXECUTED
499b4: 8082 orl %d2,%d0 <== NOT EXECUTED
499b6: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
499b8: 264c moveal %a4,%a3 <== NOT EXECUTED
499ba: 245b moveal %a3@+,%a2 <== NOT EXECUTED
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
499bc: b7ca cmpal %a2,%a3 <== NOT EXECUTED
499be: 673e beqs 499fe <_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) {
499c0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
499c4: 4bf9 0004 9900 lea 49900 <_Watchdog_Remove>,%a5 <== NOT EXECUTED
499ca: 6708 beqs 499d4 <_Watchdog_Tickle+0x34> <== NOT EXECUTED
the_watchdog->delta_interval--;
499cc: 5380 subql #1,%d0 <== NOT EXECUTED
499ce: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
499d2: 662a bnes 499fe <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
499d4: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
499da: 2f0a movel %a2,%sp@- <== NOT EXECUTED
499dc: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
499de: 46c2 movew %d2,%sr <== NOT EXECUTED
switch( watchdog_state ) {
499e0: 7202 moveq #2,%d1 <== NOT EXECUTED
499e2: 588f addql #4,%sp <== NOT EXECUTED
499e4: b280 cmpl %d0,%d1 <== NOT EXECUTED
499e6: 6722 beqs 49a0a <_Watchdog_Tickle+0x6a> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
499e8: 2003 movel %d3,%d0 <== NOT EXECUTED
499ea: 40c2 movew %sr,%d2 <== NOT EXECUTED
499ec: 8082 orl %d2,%d0 <== NOT EXECUTED
499ee: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
499f0: 2014 movel %a4@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
499f2: 2440 moveal %d0,%a2 <== NOT EXECUTED
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
499f4: b7c0 cmpal %d0,%a3 <== NOT EXECUTED
499f6: 6706 beqs 499fe <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
499f8: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
499fc: 67dc beqs 499da <_Watchdog_Tickle+0x3a> <== NOT EXECUTED
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
499fe: 46c2 movew %d2,%sr <== NOT EXECUTED
}
49a00: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
49a06: 4e5e unlk %fp <== NOT EXECUTED
49a08: 4e75 rts <== NOT EXECUTED
_ISR_Enable( level );
switch( watchdog_state ) {
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
49a0a: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
49a0e: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
49a12: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
49a16: 4e90 jsr %a0@ <== NOT EXECUTED
the_watchdog->id,
the_watchdog->user_data
);
break;
49a18: 508f addql #8,%sp <== NOT EXECUTED
49a1a: 60cc bras 499e8 <_Watchdog_Tickle+0x48> <== NOT EXECUTED
00049ab6 <_Workspace_Allocate_or_fatal_error>:
* _Workspace_Allocate_or_fatal_error
*/
void *_Workspace_Allocate_or_fatal_error(
size_t size
)
{
49ab6: 4e56 0000 linkw %fp,#0
49aba: 42a7 clrl %sp@-
49abc: 42a7 clrl %sp@-
49abe: 2f2e 0008 movel %fp@(8),%sp@-
49ac2: 4879 0005 ee56 pea 5ee56 <_Workspace_Area>
49ac8: 4eb9 0004 bafc jsr 4bafc <_Heap_Allocate_aligned_with_boundary>
__builtin_return_address( 1 ),
memory
);
#endif
if ( memory == NULL )
49ace: 4fef 0010 lea %sp@(16),%sp
49ad2: 4a80 tstl %d0
49ad4: 6704 beqs 49ada <_Workspace_Allocate_or_fatal_error+0x24>
true,
INTERNAL_ERROR_WORKSPACE_ALLOCATION
);
return memory;
}
49ad6: 4e5e unlk %fp
49ad8: 4e75 rts
memory
);
#endif
if ( memory == NULL )
_Internal_error_Occurred(
49ada: 4878 0003 pea 3 <DIVIDE>
49ade: 4878 0001 pea 1 <ADD>
49ae2: 42a7 clrl %sp@-
49ae4: 4eb9 0004 77b8 jsr 477b8 <_Internal_error_Occurred>
...
0005720c <__env_lock>:
5720c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
57210: 4e5e unlk %fp <== NOT EXECUTED
00057214 <__env_unlock>:
57214: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
57218: 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
0005b580 <__kill>:
#endif
int __kill( pid_t pid, int sig )
{
return 0;
}
5b580: 4280 clrl %d0 <== NOT EXECUTED
return 0;
}
#endif
int __kill( pid_t pid, int sig )
{
5b582: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
5b586: 4e5e unlk %fp <== NOT EXECUTED
...
0005b45c <_calloc_r>:
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
5b45c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b460: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return calloc( elements, size );
5b464: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
5b46a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5b46e: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
return calloc( elements, size );
5b470: 4ef9 0004 28f0 jmp 428f0 <calloc> <== NOT EXECUTED
...
000445a0 <_chown_helper>:
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
445a0: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
445a4: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
445a8: 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 ) )
445ac: 260e movel %fp,%d3 <== NOT EXECUTED
445ae: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
445b4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
445b6: 4eb9 0005 1694 jsr 51694 <strlen> <== NOT EXECUTED
445bc: 2eae 0014 movel %fp@(20),%sp@ <== NOT EXECUTED
445c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
445c2: 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 ) )
445c6: 42a7 clrl %sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
445c8: 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 ) )
445cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
445ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
445d0: 4eb9 0004 490c jsr 4490c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
445d6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
445da: 4a80 tstl %d0 <== NOT EXECUTED
445dc: 670c beqs 445ea <_chown_helper+0x4a> <== NOT EXECUTED
return -1;
445de: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->chown_h)( &loc, owner, group );
rtems_filesystem_freenode( &loc );
return result;
}
445e0: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED
445e6: 4e5e unlk %fp <== NOT EXECUTED
445e8: 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 );
445ea: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
445ee: 3f05 movew %d5,%sp@- <== NOT EXECUTED
445f0: 4267 clrw %sp@- <== NOT EXECUTED
445f2: 3f04 movew %d4,%sp@- <== NOT EXECUTED
445f4: 4267 clrw %sp@- <== NOT EXECUTED
445f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
445f8: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
445fc: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
445fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44600: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
44604: 4eb9 0004 49f0 jsr 449f0 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
4460a: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
4460e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
44612: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED
44618: 4e5e unlk %fp <== 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
0005b478 <_free_r>:
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
5b478: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free( ptr );
5b47c: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
5b482: 4e5e unlk %fp <== NOT EXECUTED
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
free( ptr );
5b484: 4ef9 0004 2cfc jmp 42cfc <free> <== NOT EXECUTED
...
0005b528 <_fstat_r>:
int _fstat_r(
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
5b528: 4e56 0000 linkw %fp,#0
5b52c: 202e 000c movel %fp@(12),%d0
return fstat( fd, buf );
5b530: 2d6e 0010 000c movel %fp@(16),%fp@(12)
5b536: 2d40 0008 movel %d0,%fp@(8)
}
5b53a: 4e5e unlk %fp
struct _reent *ptr __attribute__((unused)),
int fd,
struct stat *buf
)
{
return fstat( fd, buf );
5b53c: 4ef9 0005 b48c jmp 5b48c <fstat>
...
0005b54e <_getpid_r>:
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
return getpid();
}
5b54e: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
5b550: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid();
}
5b554: 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
0005b558 <_isatty_r>:
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
5b558: 4e56 0000 linkw %fp,#0
return isatty( fd );
5b55c: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5b562: 4e5e unlk %fp
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return isatty( fd );
5b564: 4ef9 0005 bbe8 jmp 5bbe8 <isatty>
...
0005b576 <_kill_r>:
#include <reent.h>
int _kill_r( struct _reent *ptr, pid_t pid, int sig )
{
return 0;
}
5b576: 4280 clrl %d0 <== NOT EXECUTED
#if defined(RTEMS_NEWLIB)
#include <reent.h>
int _kill_r( struct _reent *ptr, pid_t pid, int sig )
{
5b578: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
5b57c: 4e5e unlk %fp <== 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
0005b6e8 <_lseek_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
off_t offset,
int whence
)
{
5b6e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b6ec: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
5b6f0: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
5b6f4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
return lseek( fd, offset, whence );
5b6f8: 2d6e 0018 0014 movel %fp@(24),%fp@(20) <== NOT EXECUTED
5b6fe: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
5b702: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
5b706: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5b70a: 4e5e unlk %fp <== NOT EXECUTED
int fd,
off_t offset,
int whence
)
{
return lseek( fd, offset, whence );
5b70c: 4ef9 0005 b58c jmp 5b58c <lseek> <== NOT EXECUTED
...
00045050 <_lstat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
45050: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45054: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
45058: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
4505e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45062: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
45064: 4ef9 0004 4fb8 jmp 44fb8 <lstat> <== NOT EXECUTED
...
0005b714 <_malloc_r>:
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
5b714: 4e56 0000 linkw %fp,#0
return malloc( size );
5b718: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
5b71e: 4e5e unlk %fp
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
return malloc( size );
5b720: 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
0005b7de <_read_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
void *buf,
size_t nbytes
)
{
5b7de: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b7e2: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
5b7e6: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return read( fd, buf, nbytes );
5b7ea: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED
5b7f0: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
5b7f4: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5b7f8: 4e5e unlk %fp <== NOT EXECUTED
int fd,
void *buf,
size_t nbytes
)
{
return read( fd, buf, nbytes );
5b7fa: 4ef9 0005 b728 jmp 5b728 <read> <== NOT EXECUTED
0005b800 <_realloc_r>:
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
5b800: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b804: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return realloc( ptr, size );
5b808: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
5b80e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
5b812: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
return realloc( ptr, size );
5b814: 4ef9 0005 b840 jmp 5b840 <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 483c lea 5483c <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 1810 jsr 51810 <__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 1810 jsr 51810 <__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 da00 movel 5da00 <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 0005 f414 moveal 5f414 <_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 9730 jsr 49730 <_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 dbcc jsr 4dbcc <__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
...
0005b81c <_write_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
5b81c: 4e56 0000 linkw %fp,#0
5b820: 222e 0010 movel %fp@(16),%d1
5b824: 202e 000c movel %fp@(12),%d0
return write( fd, buf, nbytes );
5b828: 2d6e 0014 0010 movel %fp@(20),%fp@(16)
5b82e: 2d41 000c movel %d1,%fp@(12)
5b832: 2d40 0008 movel %d0,%fp@(8)
}
5b836: 4e5e unlk %fp
int fd,
const void *buf,
size_t nbytes
)
{
return write( fd, buf, nbytes );
5b838: 4ef9 0005 b95c jmp 5b95c <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
}
...
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 ed14 addql #1,5ed14 <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 e178 jsr 4e178 <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 ed04 subql #1,5ed04 <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 0004 f3c4 jsr 4f3c4 <__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 0004 f3c4 jsr 4f3c4 <__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;
}
...
0004b90c <chdir>:
#include <rtems/seterr.h>
int chdir(
const char *pathname
)
{
4b90c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b910: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b912: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b914: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
4b918: 6700 0086 beqw 4b9a0 <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(
4b91c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b91e: 45ee ffec lea %fp@(-20),%a2 <== NOT EXECUTED
4b922: 4eb9 0004 f574 jsr 4f574 <strlen> <== NOT EXECUTED
4b928: 7201 moveq #1,%d1 <== NOT EXECUTED
4b92a: 2e81 movel %d1,%sp@ <== NOT EXECUTED
4b92c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b92e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b932: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b934: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b936: 4eb9 0004 3150 jsr 43150 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
pathname, strlen( pathname ), RTEMS_LIBIO_PERMS_SEARCH, &loc, true );
if ( result != 0 )
4b93c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4b940: 4a80 tstl %d0 <== NOT EXECUTED
4b942: 670e beqs 4b952 <chdir+0x46> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4b944: 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;
4b948: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4b94a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4b94e: 4e5e unlk %fp <== NOT EXECUTED
4b950: 4e75 rts <== NOT EXECUTED
return -1;
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
4b952: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
4b956: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b958: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4b95c: 4e90 jsr %a0@ <== NOT EXECUTED
4b95e: 588f addql #4,%sp <== NOT EXECUTED
4b960: 7201 moveq #1,%d1 <== NOT EXECUTED
4b962: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b964: 6654 bnes 4b9ba <chdir+0xae> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
4b966: 2039 0005 e108 movel 5e108 <rtems_current_user_env>,%d0 <== NOT EXECUTED
4b96c: 5880 addql #4,%d0 <== NOT EXECUTED
4b96e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b970: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_current = loc;
4b976: 2079 0005 e108 moveal 5e108 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4b97c: 5888 addql #4,%a0 <== NOT EXECUTED
return 0;
4b97e: 588f addql #4,%sp <== NOT EXECUTED
4b980: 4280 clrl %d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
}
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
4b982: 20d2 movel %a2@,%a0@+ <== NOT EXECUTED
4b984: 20ee fff0 movel %fp@(-16),%a0@+ <== NOT EXECUTED
4b988: 20ee fff4 movel %fp@(-12),%a0@+ <== NOT EXECUTED
4b98c: 20ee fff8 movel %fp@(-8),%a0@+ <== NOT EXECUTED
return 0;
}
4b990: 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;
4b994: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
return 0;
}
4b998: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4b99c: 4e5e unlk %fp <== NOT EXECUTED
4b99e: 4e75 rts <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
rtems_set_errno_and_return_minus_one( EFAULT );
4b9a0: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
4b9a6: 740e moveq #14,%d2 <== NOT EXECUTED
4b9a8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b9aa: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b9ac: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4b9ae: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
4b9b2: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4b9b6: 4e5e unlk %fp <== NOT EXECUTED
4b9b8: 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 );
4b9ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b9bc: 4eb9 0004 3234 jsr 43234 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4b9c2: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4b9c8: 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 );
4b9cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b9ce: 7214 moveq #20,%d1 <== NOT EXECUTED
4b9d0: 588f addql #4,%sp <== NOT EXECUTED
4b9d2: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4b9d4: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4b9d8: 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 );
4b9da: 2081 movel %d1,%a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
...
0004452c <chmod>:
int chmod(
const char *path,
mode_t mode
)
{
4452c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
44530: 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 );
44532: 260e movel %fp,%d3 <== NOT EXECUTED
44534: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
int chmod(
const char *path,
mode_t mode
)
{
4453a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4453c: 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 );
44540: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44542: 4eb9 0005 1694 jsr 51694 <strlen> <== NOT EXECUTED
44548: 7201 moveq #1,%d1 <== NOT EXECUTED
4454a: 2e81 movel %d1,%sp@ <== NOT EXECUTED
4454c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4454e: 42a7 clrl %sp@- <== NOT EXECUTED
44550: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44552: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44554: 4eb9 0004 490c jsr 4490c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
if ( status != 0 )
4455a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4455e: 4a80 tstl %d0 <== NOT EXECUTED
44560: 670e beqs 44570 <chmod+0x44> <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
44562: 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;
44566: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
44568: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED
4456c: 4e5e unlk %fp <== NOT EXECUTED
4456e: 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 );
44570: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44574: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
44578: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4457a: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
4457e: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
44580: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44582: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
44586: 4eb9 0004 49f0 jsr 449f0 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
4458c: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
44590: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
44594: 242e ffe0 movel %fp@(-32),%d2 <== NOT EXECUTED
44598: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED
4459c: 4e5e unlk %fp <== NOT EXECUTED
0004461c <chown>:
const char *path,
uid_t owner,
gid_t group
)
{
return _chown_helper( path, owner, group, true );
4461c: 4281 clrl %d1 <== NOT EXECUTED
4461e: 4280 clrl %d0 <== NOT EXECUTED
int chown(
const char *path,
uid_t owner,
gid_t group
)
{
44620: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _chown_helper( path, owner, group, true );
44624: 322e 0012 movew %fp@(18),%d1 <== NOT EXECUTED
44628: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4462c: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
44630: 2f01 movel %d1,%sp@- <== NOT EXECUTED
44632: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44634: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
44638: 4eb9 0004 45a0 jsr 445a0 <_chown_helper> <== NOT EXECUTED
}
4463e: 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 0005 f708 movel #390920,%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 e108 cmpl 5e108 <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 b90c jsr 4b90c <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 d4ce pea 5d4ce <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 e108 moveal 5e108 <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 e108 moveal 5e108 <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 0005 f708 lea 5f708 <rtems_global_user_env>,%a0 <== NOT EXECUTED
42dba: b1f9 0005 e108 cmpal 5e108 <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 e1d0 jsr 4e1d0 <__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 e1d0 lea 4e1d0 <__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
...
0004ad20 <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
4ad20: 4e56 fffc linkw %fp,#-4
4ad24: 202e 0008 movel %fp@(8),%d0
4ad28: 2f0a movel %a2,%sp@-
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
4ad2a: b0b9 0005 d524 cmpl 5d524 <rtems_libio_number_iops>,%d0
4ad30: 644e bccs 4ad80 <close+0x60> <== NEVER TAKEN
iop = rtems_libio_iop(fd);
4ad32: 2200 movel %d0,%d1
4ad34: ed88 lsll #6,%d0
4ad36: e789 lsll #3,%d1
4ad38: 2479 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a2
4ad3e: 9081 subl %d1,%d0
4ad40: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
4ad42: 202a 0014 movel %a2@(20),%d0
4ad46: 0280 0000 0100 andil #256,%d0
4ad4c: 6732 beqs 4ad80 <close+0x60> <== NEVER TAKEN
rc = RTEMS_SUCCESSFUL;
rc = (*iop->pathinfo.handlers->close_h)( iop );
4ad4e: 206a 0020 moveal %a2@(32),%a0
4ad52: 2f0a movel %a2,%sp@-
4ad54: 2068 0004 moveal %a0@(4),%a0
4ad58: 4e90 jsr %a0@
rtems_filesystem_freenode( &iop->pathinfo );
4ad5a: 486a 0018 pea %a2@(24)
4ad5e: 2d40 fffc movel %d0,%fp@(-4)
4ad62: 4eb9 0004 2ce8 jsr 42ce8 <rtems_filesystem_freenode>
rtems_libio_free( iop );
4ad68: 2f0a movel %a2,%sp@-
4ad6a: 4eb9 0004 afc6 jsr 4afc6 <rtems_libio_free>
return rc;
4ad70: 202e fffc movel %fp@(-4),%d0
4ad74: 4fef 000c lea %sp@(12),%sp
}
4ad78: 246e fff8 moveal %fp@(-8),%a2
4ad7c: 4e5e unlk %fp
4ad7e: 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);
4ad80: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4ad86: 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);
4ad8a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ad8c: 7209 moveq #9,%d1 <== NOT EXECUTED
4ad8e: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &iop->pathinfo );
rtems_libio_free( iop );
return rc;
}
4ad90: 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);
4ad92: 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 9fec movel #368620,%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 ace0 moveal 5ace0 <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 aa48 tstl 5aa48 <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 9946 pea 59946 <IntUartPollCallbacks.6323+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 aa48 cmpl 5aa48 <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 b7ac jsr 4b7ac <__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
...
0004994c <devFS_close>:
#include "devfs.h"
int devFS_close(
rtems_libio_t *iop
)
{
4994c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
49950: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
49954: 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;
49958: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
4995c: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED
49960: 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;
49964: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
args.flags = 0;
49968: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
args.mode = 0;
4996c: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_close(
49970: 4eb9 0004 a95c jsr 4a95c <rtems_io_close> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
return rtems_deviceio_errno(status);
49976: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49978: 4eb9 0004 9a74 jsr 49a74 <rtems_deviceio_errno> <== NOT EXECUTED
}
4997e: 4e5e unlk %fp <== NOT EXECUTED
...
00049984 <devFS_evaluate_path>:
{
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
49984: 70f8 moveq #-8,%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
49986: 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 ) )
4998a: c0ae 0010 andl %fp@(16),%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
4998e: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
49992: 2c2e 0008 movel %fp@(8),%d6
49996: 262e 000c movel %fp@(12),%d3
4999a: 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 ) )
4999e: 4a80 tstl %d0
499a0: 6600 0090 bnew 49a32 <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;
499a4: 2814 movel %a4@,%d4
if (!device_name_table)
499a6: 6700 00a2 beqw 49a4a <devFS_evaluate_path+0xc6>
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++) {
499aa: 2a39 0005 aa48 movel 5aa48 <rtems_device_table_size>,%d5
499b0: 673c beqs 499ee <devFS_evaluate_path+0x6a> <== NEVER TAKEN
499b2: 4280 clrl %d0
499b4: 4282 clrl %d2
if (!device_name_table[i].device_name)
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
499b6: 4bf9 0004 caec lea 4caec <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)
499bc: 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++) {
499be: 5282 addql #1,%d2
if (!device_name_table[i].device_name)
499c0: e989 lsll #4,%d1
499c2: 2041 moveal %d1,%a0
499c4: 47f0 0c00 lea %a0@(00000000,%d0:l:4),%a3
499c8: 47f3 4800 lea %a3@(00000000,%d4:l),%a3
499cc: 2453 moveal %a3@,%a2
499ce: 4a8a tstl %a2
499d0: 6716 beqs 499e8 <devFS_evaluate_path+0x64>
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
499d2: 2f03 movel %d3,%sp@-
499d4: 2f0a movel %a2,%sp@-
499d6: 2f06 movel %d6,%sp@-
499d8: 4e95 jsr %a5@
499da: 4fef 000c lea %sp@(12),%sp
499de: 4a80 tstl %d0
499e0: 6606 bnes 499e8 <devFS_evaluate_path+0x64>
continue;
if (device_name_table[i].device_name[pathnamelen] != '\0')
499e2: 4a32 3800 tstb %a2@(00000000,%d3:l)
499e6: 671e beqs 49a06 <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++) {
499e8: 2002 movel %d2,%d0
499ea: b485 cmpl %d5,%d2
499ec: 65ce bcss 499bc <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 );
499ee: 4eb9 0004 b7ac jsr 4b7ac <__errno>
499f4: 7202 moveq #2,%d1
499f6: 2040 moveal %d0,%a0
499f8: 70ff moveq #-1,%d0
}
499fa: 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 );
49a00: 2081 movel %d1,%a0@
}
49a02: 4e5e unlk %fp
49a04: 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;
49a06: 2079 0005 ace0 moveal 5ace0 <rtems_current_user_env>,%a0
49a0c: 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;
49a12: 223c 0005 ab8c movel #371596,%d1
pathloc->ops = &devFS_ops;
49a18: 41f9 0005 ab44 lea 5ab44 <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;
49a1e: 2941 0008 movel %d1,%a4@(8)
pathloc->ops = &devFS_ops;
49a22: 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];
49a26: 288b movel %a3,%a4@
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49a28: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
49a2e: 4e5e unlk %fp
49a30: 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 );
49a32: 4eb9 0004 b7ac jsr 4b7ac <__errno> <== NOT EXECUTED
49a38: 7601 moveq #1,%d3 <== NOT EXECUTED
49a3a: 2040 moveal %d0,%a0 <== NOT EXECUTED
49a3c: 70ff moveq #-1,%d0 <== NOT EXECUTED
49a3e: 2083 movel %d3,%a0@ <== NOT EXECUTED
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49a40: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
49a46: 4e5e unlk %fp <== NOT EXECUTED
49a48: 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 );
49a4a: 4eb9 0004 b7ac jsr 4b7ac <__errno> <== NOT EXECUTED
49a50: 740e moveq #14,%d2 <== NOT EXECUTED
49a52: 2040 moveal %d0,%a0 <== NOT EXECUTED
49a54: 70ff moveq #-1,%d0 <== NOT EXECUTED
49a56: 2082 movel %d2,%a0@ <== NOT EXECUTED
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
}
49a58: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5 <== NOT EXECUTED
49a5e: 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 aa48 movel 5aa48 <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 958a jsr 4958a <_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 aa48 movel 5aa48 <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 c0c8 jsr 4c0c8 <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 ab8c movel #371596,%d0
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
42230: 41f9 0005 ab44 lea 5ab44 <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 b7ac jsr 4b7ac <__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 6764 jsr 46764 <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 9a74 jsr 49a74 <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 aa48 movel 5aa48 <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 c5f8 lea 4c5f8 <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 cad4 jsr 4cad4 <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 b7ac jsr 4b7ac <__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 b7ac jsr 4b7ac <__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 b7ac jsr 4b7ac <__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 b7ac jsr 4b7ac <__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 68c8 jsr 468c8 <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 9a74 jsr 49a74 <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 6910 jsr 46910 <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 9a74 jsr 49a74 <rtems_deviceio_errno> <== NOT EXECUTED
425e0: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
425e2: 4e5e unlk %fp <== NOT EXECUTED
...
0004d026 <device_ftruncate>:
rtems_libio_t *iop,
rtems_off64_t length
)
{
return 0;
}
4d026: 4280 clrl %d0 <== NOT EXECUTED
int device_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4d028: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4d02c: 4e5e unlk %fp <== NOT EXECUTED
0004cfca <device_ioctl>:
int device_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4cfca: 4e56 fff0 linkw %fp,#-16
4cfce: 206e 0008 moveal %fp@(8),%a0
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4cfd2: 486e fff0 pea %fp@(-16)
args.iop = iop;
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
4cfd6: 2268 0018 moveal %a0@(24),%a1
status = rtems_io_control(
4cfda: 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;
4cfde: 2d6e 000c fff4 movel %fp@(12),%fp@(-12)
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4cfe4: 2f29 004c movel %a1@(76),%sp@-
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
args.buffer = buffer;
4cfe8: 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;
4cfee: 2d48 fff0 movel %a0,%fp@(-16)
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4cff2: 4eb9 0004 d574 jsr 4d574 <rtems_io_control>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4cff8: 4fef 000c lea %sp@(12),%sp
4cffc: 4a80 tstl %d0
4cffe: 6608 bnes 4d008 <device_ioctl+0x3e> <== NEVER TAKEN
return rtems_deviceio_errno(status);
return args.ioctl_return;
4d000: 202e fffc movel %fp@(-4),%d0
}
4d004: 4e5e unlk %fp
4d006: 4e75 rts
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4d008: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d00a: 4eb9 0004 d7e0 jsr 4d7e0 <rtems_deviceio_errno> <== NOT EXECUTED
4d010: 588f addql #4,%sp <== NOT EXECUTED
return args.ioctl_return;
}
4d012: 4e5e unlk %fp <== NOT EXECUTED
0004d016 <device_lseek>:
rtems_off64_t device_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4d016: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return offset;
}
4d01a: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4d01e: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
4d022: 4e5e unlk %fp <== NOT EXECUTED
0004cefe <device_read>:
ssize_t device_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4cefe: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4cf02: 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(
4cf06: 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;
4cf0a: 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(
4cf0e: 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;
4cf12: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== NOT EXECUTED
args.bytes_moved = 0;
status = rtems_io_read(
4cf18: 2f29 004c movel %a1@(76),%sp@- <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4cf1c: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
4cf22: 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;
4cf28: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
4cf2c: 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;
4cf30: 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;
4cf34: 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;
4cf38: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
4cf3c: 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(
4cf40: 4eb9 0004 d604 jsr 4d604 <rtems_io_read> <== NOT EXECUTED
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4cf46: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cf4a: 4a80 tstl %d0 <== NOT EXECUTED
4cf4c: 6608 bnes 4cf56 <device_read+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4cf4e: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4cf52: 4e5e unlk %fp <== NOT EXECUTED
4cf54: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4cf56: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cf58: 4eb9 0004 d7e0 jsr 4d7e0 <rtems_deviceio_errno> <== NOT EXECUTED
4cf5e: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4cf60: 4e5e unlk %fp <== NOT EXECUTED
0004cf64 <device_write>:
ssize_t device_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4cf64: 4e56 ffe4 linkw %fp,#-28
4cf68: 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(
4cf6c: 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;
4cf70: 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(
4cf74: 2f29 0050 movel %a1@(80),%sp@-
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
4cf78: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
args.bytes_moved = 0;
status = rtems_io_write(
4cf7e: 2f29 004c movel %a1@(76),%sp@-
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4cf82: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
4cf88: 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;
4cf8e: 2028 000c movel %a0@(12),%d0
4cf92: 2228 0010 movel %a0@(16),%d1
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4cf96: 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;
4cf9a: 42ae fffc clrl %fp@(-4)
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
4cf9e: 2d40 ffe8 movel %d0,%fp@(-24)
4cfa2: 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(
4cfa6: 4eb9 0004 d64c jsr 4d64c <rtems_io_write>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4cfac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cfb0: 4a80 tstl %d0 <== NOT EXECUTED
4cfb2: 6608 bnes 4cfbc <device_write+0x58> <== NOT EXECUTED
return rtems_deviceio_errno(status);
return (ssize_t) args.bytes_moved;
4cfb4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4cfb8: 4e5e unlk %fp <== NOT EXECUTED
4cfba: 4e75 rts <== NOT EXECUTED
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
return rtems_deviceio_errno(status);
4cfbc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cfbe: 4eb9 0004 d7e0 jsr 4d7e0 <rtems_deviceio_errno> <== NOT EXECUTED
4cfc4: 588f addql #4,%sp <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
}
4cfc6: 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 6ba8 jsr 46ba8 <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 d7c0 moveal 5d7c0 <__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 0005 ffd4 movel 5ffd4 <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 e8c2 jsr 4e8c2 <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 00ae movel 600ae <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 e8c2 jsr 4e8c2 <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 d7c0 moveal 5d7c0 <__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 c84d pea 5c84d <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 d7c0 moveal 5d7c0 <__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 c84d pea 5c84d <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 d7c0 moveal 5d7c0 <__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 c84f pea 5c84f <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 c84f pea 5c84f <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 eaa4 cmpl 5eaa4 <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 0268 moveal 60268 <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 ecc0 moveal 5ecc0 <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 e06e pea 5e06e <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 ecc0 moveal 5ecc0 <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 e888 jsr 4e888 <__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 ecc0 moveal 5ecc0 <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 e888 jsr 4e888 <__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 e888 jsr 4e888 <__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 eaa4 cmpl 5eaa4 <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 0268 moveal 60268 <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 e888 jsr 4e888 <__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 e888 jsr 4e888 <__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 eaa4 cmpl 5eaa4 <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 0268 moveal 60268 <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 e888 jsr 4e888 <__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 e888 jsr 4e888 <__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 0005 f274 movel 5f274 <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 0a38 moveal 60a38 <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 eb40 jsr 4eb40 <__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 eb40 jsr 4eb40 <__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 eb40 jsr 4eb40 <__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 eb40 jsr 4eb40 <__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 0a38 moveal 60a38 <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 0005 f274 cmpl 5f274 <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 0a38 moveal 60a38 <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 eb40 jsr 4eb40 <__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 eb40 jsr 4eb40 <__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
...
0004cde8 <fifo_open>:
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cde8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
static rtems_status_code pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
4cdec: 2039 0006 0f3c movel 60f3c <pipe_semaphore>,%d0 <== NOT EXECUTED
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cdf2: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
4cdf6: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
4cdfa: 47f9 0004 8730 lea 48730 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
4ce00: 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) {
4ce04: 4a80 tstl %d0 <== NOT EXECUTED
4ce06: 677e beqs 4ce86 <fifo_open+0x9e> <== NOT EXECUTED
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4ce08: 42a7 clrl %sp@- <== NOT EXECUTED
4ce0a: 42a7 clrl %sp@- <== NOT EXECUTED
4ce0c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ce0e: 4e93 jsr %a3@ <== NOT EXECUTED
}
if (sc == RTEMS_SUCCESSFUL) {
4ce10: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ce14: 4a80 tstl %d0 <== NOT EXECUTED
4ce16: 6600 0328 bnew 4d140 <fifo_open+0x358> <== NOT EXECUTED
err = pipe_lock();
if (err)
return err;
pipe = *pipep;
4ce1a: 2a54 moveal %a4@,%a5 <== NOT EXECUTED
if (pipe == NULL) {
4ce1c: 4a8d tstl %a5 <== NOT EXECUTED
4ce1e: 6700 0118 beqw 4cf38 <fifo_open+0x150> <== NOT EXECUTED
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4ce22: 42a7 clrl %sp@- <== NOT EXECUTED
4ce24: 42a7 clrl %sp@- <== NOT EXECUTED
4ce26: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED
4ce2a: 4e93 jsr %a3@ <== NOT EXECUTED
4ce2c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ce30: 4a80 tstl %d0 <== NOT EXECUTED
4ce32: 6600 0084 bnew 4ceb8 <fifo_open+0xd0> <== NOT EXECUTED
4ce36: 95ca subal %a2,%a2 <== NOT EXECUTED
err = -EINTR;
if (*pipep == NULL) {
4ce38: 4a94 tstl %a4@ <== NOT EXECUTED
4ce3a: 6700 02c0 beqw 4d0fc <fifo_open+0x314> <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4ce3e: 4eba fec4 jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
pipe_control_t *pipe;
unsigned int prevCounter;
int err;
err = pipe_new(pipep);
if (err)
4ce42: 4a8a tstl %a2 <== NOT EXECUTED
4ce44: 6634 bnes 4ce7a <fifo_open+0x92> <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
4ce46: 7006 moveq #6,%d0 <== NOT EXECUTED
4ce48: 2042 moveal %d2,%a0 <== NOT EXECUTED
4ce4a: 7204 moveq #4,%d1 <== NOT EXECUTED
4ce4c: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4ce50: 2454 moveal %a4@,%a2 <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
4ce52: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ce54: 6700 022a beqw 4d080 <fifo_open+0x298> <== NOT EXECUTED
4ce58: 123c 0006 moveb #6,%d1 <== NOT EXECUTED
4ce5c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ce5e: 6700 01d0 beqw 4d030 <fifo_open+0x248> <== NOT EXECUTED
4ce62: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
4ce66: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ce68: 6756 beqs 4cec0 <fifo_open+0xd8> <== NOT EXECUTED
4ce6a: 4bf9 0004 8870 lea 48870 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4ce70: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4ce74: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4ce76: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4ce78: 588f addql #4,%sp <== NOT EXECUTED
out_error:
pipe_release(pipep, iop);
return err;
}
4ce7a: 200a movel %a2,%d0 <== NOT EXECUTED
4ce7c: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4ce82: 4e5e unlk %fp <== NOT EXECUTED
4ce84: 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 );
4ce86: 42a7 clrl %sp@- <== NOT EXECUTED
4ce88: 42a7 clrl %sp@- <== NOT EXECUTED
4ce8a: 2f39 0006 1634 movel 61634 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4ce90: 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) {
4ce92: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ce96: 4ab9 0006 0f3c tstl 60f3c <pipe_semaphore> <== NOT EXECUTED
4ce9c: 6700 026e beqw 4d10c <fifo_open+0x324> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4cea0: 2f39 0006 1634 movel 61634 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4cea6: 4eb9 0004 8870 jsr 48870 <rtems_semaphore_release> <== NOT EXECUTED
4ceac: 2039 0006 0f3c movel 60f3c <pipe_semaphore>,%d0 <== NOT EXECUTED
4ceb2: 588f addql #4,%sp <== NOT EXECUTED
4ceb4: 6000 ff52 braw 4ce08 <fifo_open+0x20> <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4ceb8: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
4cebc: 6000 ff7a braw 4ce38 <fifo_open+0x50> <== NOT EXECUTED
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4cec0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4cec4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4cec6: 5288 addql #1,%a0 <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
4cec8: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4cecc: 2548 0010 movel %a0,%a2@(16) <== NOT EXECUTED
4ced0: 4a80 tstl %d0 <== NOT EXECUTED
4ced2: 6700 02a4 beqw 4d178 <fifo_open+0x390> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
if (pipe->Writers == 0) {
4ced6: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4ceda: 668e bnes 4ce6a <fifo_open+0x82> <== NOT EXECUTED
/* Not an error */
if (LIBIO_NODELAY(iop))
4cedc: 7001 moveq #1,%d0 <== NOT EXECUTED
4cede: 2042 moveal %d2,%a0 <== NOT EXECUTED
4cee0: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4cee4: 6684 bnes 4ce6a <fifo_open+0x82> <== NOT EXECUTED
break;
prevCounter = pipe->writerCounter;
4cee6: 282a 0024 movel %a2@(36),%d4 <== NOT EXECUTED
4ceea: 4bf9 0004 8870 lea 48870 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
4cef0: 263c 0004 e3e4 movel #320484,%d3 <== NOT EXECUTED
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4cef6: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4cefa: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4cefc: 2043 moveal %d3,%a0 <== NOT EXECUTED
4cefe: 42a7 clrl %sp@- <== NOT EXECUTED
4cf00: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4cf04: 4e90 jsr %a0@ <== NOT EXECUTED
4cf06: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cf0a: 4a80 tstl %d0 <== NOT EXECUTED
4cf0c: 6600 027e bnew 4d18c <fifo_open+0x3a4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4cf10: 42a7 clrl %sp@- <== NOT EXECUTED
4cf12: 42a7 clrl %sp@- <== NOT EXECUTED
4cf14: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4cf18: 4e93 jsr %a3@ <== NOT EXECUTED
4cf1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cf1e: 4a80 tstl %d0 <== NOT EXECUTED
4cf20: 6600 026a bnew 4d18c <fifo_open+0x3a4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->writerCounter);
4cf24: b8aa 0024 cmpl %a2@(36),%d4 <== NOT EXECUTED
4cf28: 67cc beqs 4cef6 <fifo_open+0x10e> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4cf2a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4cf2e: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4cf30: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4cf32: 588f addql #4,%sp <== NOT EXECUTED
4cf34: 6000 ff44 braw 4ce7a <fifo_open+0x92> <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4cf38: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
4cf3c: 45f9 0004 51f4 lea 451f4 <malloc>,%a2 <== NOT EXECUTED
4cf42: 4e92 jsr %a2@ <== NOT EXECUTED
if (pipe == NULL)
4cf44: 588f addql #4,%sp <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4cf46: 2a40 moveal %d0,%a5 <== NOT EXECUTED
4cf48: 2600 movel %d0,%d3 <== NOT EXECUTED
if (pipe == NULL)
4cf4a: 6700 02e0 beqw 4d22c <fifo_open+0x444> <== NOT EXECUTED
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4cf4e: 2040 moveal %d0,%a0 <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4cf50: 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));
4cf56: 4298 clrl %a0@+ <== NOT EXECUTED
4cf58: 5888 addql #4,%a0 <== NOT EXECUTED
4cf5a: 4298 clrl %a0@+ <== NOT EXECUTED
4cf5c: 4298 clrl %a0@+ <== NOT EXECUTED
4cf5e: 4298 clrl %a0@+ <== NOT EXECUTED
4cf60: 4298 clrl %a0@+ <== NOT EXECUTED
4cf62: 4298 clrl %a0@+ <== NOT EXECUTED
4cf64: 4298 clrl %a0@+ <== NOT EXECUTED
4cf66: 4298 clrl %a0@+ <== NOT EXECUTED
4cf68: 4298 clrl %a0@+ <== NOT EXECUTED
4cf6a: 4298 clrl %a0@+ <== NOT EXECUTED
4cf6c: 4298 clrl %a0@+ <== NOT EXECUTED
4cf6e: 4290 clrl %a0@ <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4cf70: 2b40 0004 movel %d0,%a5@(4) <== NOT EXECUTED
pipe->Buffer = malloc(pipe->Size);
4cf74: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED
4cf78: 4e92 jsr %a2@ <== NOT EXECUTED
if (! pipe->Buffer)
4cf7a: 588f addql #4,%sp <== NOT EXECUTED
4cf7c: 45f9 0004 4a04 lea 44a04 <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);
4cf82: 2a80 movel %d0,%a5@ <== NOT EXECUTED
if (! pipe->Buffer)
4cf84: 6700 02a0 beqw 4d226 <fifo_open+0x43e> <== NOT EXECUTED
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4cf88: 486d 002c pea %a5@(44) <== NOT EXECUTED
4cf8c: 45f9 0004 e1d4 lea 4e1d4 <rtems_barrier_create>,%a2 <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4cf92: 1039 0006 0078 moveb 60078 <c.5627>,%d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4cf98: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4cf9a: 49c0 extbl %d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4cf9c: 42a7 clrl %sp@- <== NOT EXECUTED
4cf9e: 0080 5049 7200 oril #1346990592,%d0 <== NOT EXECUTED
4cfa4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cfa6: 4e92 jsr %a2@ <== NOT EXECUTED
4cfa8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4cfac: 4a80 tstl %d0 <== NOT EXECUTED
4cfae: 6600 0268 bnew 4d218 <fifo_open+0x430> <== 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(
4cfb2: 486d 0030 pea %a5@(48) <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4cfb6: 1039 0006 0078 moveb 60078 <c.5627>,%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(
4cfbc: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4cfbe: 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(
4cfc0: 42a7 clrl %sp@- <== NOT EXECUTED
4cfc2: 0080 5049 7700 oril #1346991872,%d0 <== NOT EXECUTED
4cfc8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cfca: 4e92 jsr %a2@ <== NOT EXECUTED
4cfcc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4cfd0: 45f9 0004 e2cc lea 4e2cc <rtems_barrier_delete>,%a2 <== NOT EXECUTED
4cfd6: 4a80 tstl %d0 <== NOT EXECUTED
4cfd8: 6600 0234 bnew 4d20e <fifo_open+0x426> <== 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(
4cfdc: 486d 0028 pea %a5@(40) <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4cfe0: 1039 0006 0078 moveb 60078 <c.5627>,%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(
4cfe6: 42a7 clrl %sp@- <== NOT EXECUTED
4cfe8: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4cfec: 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(
4cfee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4cff2: 0080 5049 7300 oril #1346990848,%d0 <== NOT EXECUTED
4cff8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cffa: 4eb9 0004 8494 jsr 48494 <rtems_semaphore_create> <== NOT EXECUTED
4d000: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4d004: 4a80 tstl %d0 <== NOT EXECUTED
4d006: 6600 01f8 bnew 4d200 <fifo_open+0x418> <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4d00a: 1039 0006 0078 moveb 60078 <c.5627>,%d0 <== NOT EXECUTED
4d010: 49c0 extbl %d0 <== NOT EXECUTED
4d012: 2200 movel %d0,%d1 <== NOT EXECUTED
4d014: 5281 addql #1,%d1 <== NOT EXECUTED
4d016: 13c1 0006 0078 moveb %d1,60078 <c.5627> <== NOT EXECUTED
4d01c: 727a moveq #122,%d1 <== NOT EXECUTED
4d01e: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d020: 6600 fe00 bnew 4ce22 <fifo_open+0x3a> <== NOT EXECUTED
c = 'a';
4d024: 7061 moveq #97,%d0 <== NOT EXECUTED
4d026: 13c0 0006 0078 moveb %d0,60078 <c.5627> <== NOT EXECUTED
4d02c: 6000 fdf4 braw 4ce22 <fifo_open+0x3a> <== NOT EXECUTED
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4d030: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4d034: 2200 movel %d0,%d1 <== NOT EXECUTED
4d036: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->readerCounter);
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
4d038: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4d03c: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
4d040: 4a80 tstl %d0 <== NOT EXECUTED
4d042: 6700 0120 beqw 4d164 <fifo_open+0x37c> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d046: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4d04a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d04c: 5288 addql #1,%a0 <== NOT EXECUTED
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
4d04e: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
4d052: 4bf9 0004 8870 lea 48870 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d058: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED
4d05c: 4a80 tstl %d0 <== NOT EXECUTED
4d05e: 6600 fe10 bnew 4ce70 <fifo_open+0x88> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4d062: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d066: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d06a: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4d070: 508f addql #8,%sp <== NOT EXECUTED
break;
}
PIPE_UNLOCK(pipe);
4d072: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d076: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d078: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d07a: 588f addql #4,%sp <== NOT EXECUTED
4d07c: 6000 fdfc braw 4ce7a <fifo_open+0x92> <== NOT EXECUTED
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4d080: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4d084: 2200 movel %d0,%d1 <== NOT EXECUTED
4d086: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->writerCounter);
}
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
4d088: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4d08c: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
4d090: 4a80 tstl %d0 <== NOT EXECUTED
4d092: 6700 00bc beqw 4d150 <fifo_open+0x368> <== NOT EXECUTED
4d096: 4bf9 0004 8870 lea 48870 <rtems_semaphore_release>,%a5 <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
4d09c: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d0a0: 6600 fdce bnew 4ce70 <fifo_open+0x88> <== NOT EXECUTED
4d0a4: 7001 moveq #1,%d0 <== NOT EXECUTED
4d0a6: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d0a8: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4d0ac: 6600 0138 bnew 4d1e6 <fifo_open+0x3fe> <== NOT EXECUTED
err = -ENXIO;
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
4d0b0: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
4d0b4: 263c 0004 e3e4 movel #320484,%d3 <== NOT EXECUTED
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4d0ba: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d0be: 4e95 jsr %a5@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d0c0: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d0c2: 42a7 clrl %sp@- <== NOT EXECUTED
4d0c4: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d0c8: 4e90 jsr %a0@ <== NOT EXECUTED
4d0ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d0ce: 4a80 tstl %d0 <== NOT EXECUTED
4d0d0: 6600 00ba bnew 4d18c <fifo_open+0x3a4> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4d0d4: 42a7 clrl %sp@- <== NOT EXECUTED
4d0d6: 42a7 clrl %sp@- <== NOT EXECUTED
4d0d8: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d0dc: 4e93 jsr %a3@ <== NOT EXECUTED
4d0de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d0e2: 4a80 tstl %d0 <== NOT EXECUTED
4d0e4: 6600 00a6 bnew 4d18c <fifo_open+0x3a4> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->readerCounter);
4d0e8: b8aa 0020 cmpl %a2@(32),%d4 <== NOT EXECUTED
4d0ec: 67cc beqs 4d0ba <fifo_open+0x2d2> <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d0ee: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return 0;
4d0f2: 95ca subal %a2,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
break;
}
PIPE_UNLOCK(pipe);
4d0f4: 4e95 jsr %a5@ <== NOT EXECUTED
return 0;
4d0f6: 588f addql #4,%sp <== NOT EXECUTED
4d0f8: 6000 fd80 braw 4ce7a <fifo_open+0x92> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
err = -EINTR;
if (*pipep == NULL) {
if (err)
4d0fc: 4a8a tstl %a2 <== NOT EXECUTED
4d0fe: 6600 00a8 bnew 4d1a8 <fifo_open+0x3c0> <== NOT EXECUTED
pipe_free(pipe);
else
*pipep = pipe;
4d102: 288d movel %a5,%a4@ <== NOT EXECUTED
}
out:
pipe_unlock();
4d104: 4eba fbfe jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
4d108: 6000 fd3c braw 4ce46 <fifo_open+0x5e> <== NOT EXECUTED
if (pipe_semaphore == RTEMS_ID_NONE) {
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
sc = rtems_semaphore_create(
4d10c: 4879 0006 0f3c pea 60f3c <pipe_semaphore> <== NOT EXECUTED
4d112: 42a7 clrl %sp@- <== NOT EXECUTED
4d114: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> <== NOT EXECUTED
4d118: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d11c: 2f3c 5049 5045 movel #1346981957,%sp@- <== NOT EXECUTED
4d122: 4eb9 0004 8494 jsr 48494 <rtems_semaphore_create> <== NOT EXECUTED
4d128: 2f39 0006 1634 movel 61634 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4d12e: 2600 movel %d0,%d3 <== NOT EXECUTED
4d130: 4eb9 0004 8870 jsr 48870 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d136: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4d13a: 4a83 tstl %d3 <== NOT EXECUTED
4d13c: 6700 00f8 beqw 4d236 <fifo_open+0x44e> <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d140: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d144: 200a movel %a2,%d0 <== NOT EXECUTED
4d146: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d14c: 4e5e unlk %fp <== NOT EXECUTED
4d14e: 4e75 rts <== NOT EXECUTED
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
4d150: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d154: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d158: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4d15e: 508f addql #8,%sp <== NOT EXECUTED
4d160: 6000 ff34 braw 4d096 <fifo_open+0x2ae> <== NOT EXECUTED
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d164: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d168: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d16c: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4d172: 508f addql #8,%sp <== NOT EXECUTED
4d174: 6000 fed0 braw 4d046 <fifo_open+0x25e> <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
4d178: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d17c: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d180: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4d186: 508f addql #8,%sp <== NOT EXECUTED
4d188: 6000 fd4c braw 4ced6 <fifo_open+0xee> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d18c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
4d18e: 347c fffc moveaw #-4,%a2 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d192: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d194: 4eb9 0004 cd1a jsr 4cd1a <pipe_release> <== NOT EXECUTED
return err;
4d19a: 508f addql #8,%sp <== NOT EXECUTED
}
4d19c: 200a movel %a2,%d0 <== NOT EXECUTED
4d19e: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d1a4: 4e5e unlk %fp <== NOT EXECUTED
4d1a6: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d1a8: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED
4d1ac: 49f9 0004 e2cc lea 4e2cc <rtems_barrier_delete>,%a4 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
4d1b2: 47f9 0004 4a04 lea 44a04 <free>,%a3 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4d1b8: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4d1ba: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED
4d1be: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4d1c0: 2f2d 0028 movel %a5@(40),%sp@- <== NOT EXECUTED
4d1c4: 4eb9 0004 8658 jsr 48658 <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4d1ca: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
4d1cc: 4e93 jsr %a3@ <== NOT EXECUTED
free(pipe);
4d1ce: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4d1d0: 4e93 jsr %a3@ <== NOT EXECUTED
4d1d2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d1d6: 4eba fb2c jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
return 0;
out_error:
pipe_release(pipep, iop);
return err;
}
4d1da: 200a movel %a2,%d0 <== NOT EXECUTED
4d1dc: 4cee 3c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a5 <== NOT EXECUTED
4d1e2: 4e5e unlk %fp <== NOT EXECUTED
4d1e4: 4e75 rts <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d1e6: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
err = -ENXIO;
4d1ea: 347c fffa moveaw #-6,%a2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4d1ee: 4e95 jsr %a5@ <== NOT EXECUTED
err = -ENXIO;
goto out_error;
4d1f0: 588f addql #4,%sp <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4d1f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d1f4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d1f6: 4eb9 0004 cd1a jsr 4cd1a <pipe_release> <== NOT EXECUTED
return err;
4d1fc: 508f addql #8,%sp <== NOT EXECUTED
4d1fe: 609c bras 4d19c <fifo_open+0x3b4> <== NOT EXECUTED
if (c ++ == 'z')
c = 'a';
return 0;
err_sem:
rtems_barrier_delete(pipe->writeBarrier);
4d200: 2f2d 0030 movel %a5@(48),%sp@- <== NOT EXECUTED
4d204: 45f9 0004 e2cc lea 4e2cc <rtems_barrier_delete>,%a2 <== NOT EXECUTED
4d20a: 4e92 jsr %a2@ <== NOT EXECUTED
4d20c: 588f addql #4,%sp <== NOT EXECUTED
err_wbar:
rtems_barrier_delete(pipe->readBarrier);
4d20e: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d210: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
4d214: 4e92 jsr %a2@ <== NOT EXECUTED
4d216: 588f addql #4,%sp <== NOT EXECUTED
err_rbar:
free(pipe->Buffer);
4d218: 2043 moveal %d3,%a0 <== NOT EXECUTED
4d21a: 45f9 0004 4a04 lea 44a04 <free>,%a2 <== NOT EXECUTED
4d220: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4d222: 4e92 jsr %a2@ <== NOT EXECUTED
4d224: 588f addql #4,%sp <== NOT EXECUTED
err_buf:
free(pipe);
4d226: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d228: 4e92 jsr %a2@ <== NOT EXECUTED
4d22a: 588f addql #4,%sp <== NOT EXECUTED
)
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
4d22c: 347c fff4 moveaw #-12,%a2 <== NOT EXECUTED
else
*pipep = pipe;
}
out:
pipe_unlock();
4d230: 4eba fad2 jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
4d234: 60a4 bras 4d1da <fifo_open+0x3f2> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4d236: 2039 0006 0f3c movel 60f3c <pipe_semaphore>,%d0 <== NOT EXECUTED
4d23c: 6000 fbca braw 4ce08 <fifo_open+0x20> <== NOT EXECUTED
0004b150 <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)
{
4b150: 4e56 0000 linkw %fp,#0
4b154: 2f0b movel %a3,%sp@-
4b156: 266e 0008 moveal %fp@(8),%a3
4b15a: 2f0a movel %a2,%sp@-
4b15c: 246e 000c moveal %fp@(12),%a2
find_arg *fa = arg;
if ( strcmp( entry->type, fa->type ) != 0 ) {
4b160: 2f12 movel %a2@,%sp@-
4b162: 2f13 movel %a3@,%sp@-
4b164: 4eb9 0004 e75c jsr 4e75c <strcmp>
4b16a: 508f addql #8,%sp
4b16c: 4a80 tstl %d0
4b16e: 6614 bnes 4b184 <find_handler+0x34> <== NEVER TAKEN
return false;
} else {
fa->mount_h = entry->mount_h;
4b170: 256b 0004 0004 movel %a3@(4),%a2@(4)
return true;
}
}
4b176: 246e fff8 moveal %fp@(-8),%a2
4b17a: 266e fffc moveal %fp@(-4),%a3
4b17e: 4e5e unlk %fp
if ( strcmp( entry->type, fa->type ) != 0 ) {
return false;
} else {
fa->mount_h = entry->mount_h;
return true;
4b180: 7001 moveq #1,%d0
}
}
4b182: 4e75 rts
4b184: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4b188: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4b18c: 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;
4b18e: 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
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 0005 f274 cmpl 5f274 <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 0a38 moveal 60a38 <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 eb40 jsr 4eb40 <__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 eb40 jsr 4eb40 <__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 ed0c addql #1,5ed0c <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 efa0 cmpl 5efa0 <_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 dcb6 moveal 5dcb6 <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 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@-
42d34: 4eb9 0004 803c jsr 4803c <_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 d530 moveal 5d530 <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 c764 pea 5c764 <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 0005 f708 cmpal #390920,%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
0005b48c <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
5b48c: 4e56 0000 linkw %fp,#0
5b490: 202e 0008 movel %fp@(8),%d0
5b494: 2f0a movel %a2,%sp@-
5b496: 2f02 movel %d2,%sp@-
5b498: 242e 000c movel %fp@(12),%d2
rtems_libio_t *iop;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
5b49c: 6770 beqs 5b50e <fstat+0x82> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
5b49e: b0b9 0005 d524 cmpl 5d524 <rtems_libio_number_iops>,%d0
5b4a4: 644e bccs 5b4f4 <fstat+0x68> <== NEVER TAKEN
5b4a6: 2200 movel %d0,%d1
5b4a8: ed88 lsll #6,%d0
5b4aa: e789 lsll #3,%d1
5b4ac: 2479 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a2
5b4b2: 9081 subl %d1,%d0
5b4b4: d5c0 addal %d0,%a2
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5b4b6: 202a 0014 movel %a2@(20),%d0
5b4ba: 0280 0000 0100 andil #256,%d0
5b4c0: 6732 beqs 5b4f4 <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) );
5b4c2: 4878 0046 pea 46 <DBL_MANT_DIG+0x11>
5b4c6: 42a7 clrl %sp@-
5b4c8: 2f02 movel %d2,%sp@-
5b4ca: 4eb9 0004 e178 jsr 4e178 <memset>
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
5b4d0: 206a 0020 moveal %a2@(32),%a0
5b4d4: 45ea 0018 lea %a2@(24),%a2
5b4d8: 4fef 000c lea %sp@(12),%sp
5b4dc: 2d42 000c movel %d2,%fp@(12)
}
5b4e0: 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 );
5b4e4: 2d4a 0008 movel %a2,%fp@(8)
}
5b4e8: 246e fffc moveal %fp@(-4),%a2
5b4ec: 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 );
5b4ee: 2268 0018 moveal %a0@(24),%a1
5b4f2: 4ed1 jmp %a1@
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
5b4f4: 4eb9 0004 d85c jsr 4d85c <__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 );
}
5b4fa: 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);
5b4fe: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b500: 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 );
}
5b502: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5b506: 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);
5b508: 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 );
}
5b50a: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b50c: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
rtems_set_errno_and_return_minus_one( EFAULT );
5b50e: 4eb9 0004 d85c jsr 4d85c <__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 );
}
5b514: 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 );
5b518: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b51a: 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 );
}
5b51c: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b51e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5b522: 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 );
5b524: 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 0005 f274 cmpl 5f274 <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 0a38 moveal 60a38 <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 eb40 jsr 4eb40 <__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 eb40 jsr 4eb40 <__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
...
0004ada8 <ftruncate>:
int ftruncate(
int fd,
off_t length
)
{
4ada8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4adac: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4adb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
4adb2: b0b9 0005 d524 cmpl 5d524 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4adb8: 6478 bccs 4ae32 <ftruncate+0x8a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
4adba: 2200 movel %d0,%d1 <== NOT EXECUTED
4adbc: ed88 lsll #6,%d0 <== NOT EXECUTED
4adbe: e789 lsll #3,%d1 <== NOT EXECUTED
4adc0: 2479 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a2 <== NOT EXECUTED
4adc6: 9081 subl %d1,%d0 <== NOT EXECUTED
4adc8: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4adca: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4adce: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED
4add4: 675c beqs 4ae32 <ftruncate+0x8a> <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4add6: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED
4addc: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED
4ade2: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED
4ade8: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4adee: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
4adf2: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
4adf8: 486e ffec pea %fp@(-20) <== NOT EXECUTED
4adfc: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4ae00: 4e90 jsr %a0@ <== NOT EXECUTED
4ae02: 588f addql #4,%sp <== NOT EXECUTED
4ae04: 7201 moveq #1,%d1 <== NOT EXECUTED
4ae06: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ae08: 6754 beqs 4ae5e <ftruncate+0xb6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4ae0a: 7004 moveq #4,%d0 <== NOT EXECUTED
4ae0c: c0aa 0014 andl %a2@(20),%d0 <== NOT EXECUTED
4ae10: 6736 beqs 4ae48 <ftruncate+0xa0> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4ae12: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
4ae16: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ae1a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4ae1e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ae20: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED
4ae24: 4e90 jsr %a0@ <== NOT EXECUTED
}
4ae26: 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 );
4ae2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4ae2e: 4e5e unlk %fp <== NOT EXECUTED
4ae30: 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);
4ae32: 4eb9 0004 d85c jsr 4d85c <__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 );
}
4ae38: 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);
4ae3c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ae3e: 7209 moveq #9,%d1 <== NOT EXECUTED
4ae40: 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 );
}
4ae42: 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);
4ae44: 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 );
}
4ae46: 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 );
4ae48: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4ae4e: 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 );
4ae52: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ae54: 7216 moveq #22,%d1 <== NOT EXECUTED
4ae56: 70ff moveq #-1,%d0 <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4ae58: 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 );
4ae5a: 2081 movel %d1,%a0@ <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4ae5c: 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 );
4ae5e: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4ae64: 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 );
4ae68: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ae6a: 7215 moveq #21,%d1 <== NOT EXECUTED
4ae6c: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
}
4ae6e: 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 );
4ae70: 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 d894 jsr 4d894 <__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 e7dc moveal 5e7dc <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
0005d0e4 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
5d0e4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5d0e8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5d0ec: 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 );
5d0ee: b0b9 0005 fa04 cmpl 5fa04 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
5d0f4: 6464 bccs 5d15a <getdents+0x76> <== NOT EXECUTED
5d0f6: 2200 movel %d0,%d1 <== NOT EXECUTED
5d0f8: ed88 lsll #6,%d0 <== NOT EXECUTED
5d0fa: e789 lsll #3,%d1 <== NOT EXECUTED
5d0fc: 2479 0006 12e8 moveal 612e8 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5d102: 9081 subl %d1,%d0 <== NOT EXECUTED
5d104: d5c0 addal %d0,%a2 <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
5d106: 2d6a 0018 ffec movel %a2@(24),%fp@(-20) <== NOT EXECUTED
5d10c: 2d6a 001c fff0 movel %a2@(28),%fp@(-16) <== NOT EXECUTED
5d112: 2d6a 0020 fff4 movel %a2@(32),%fp@(-12) <== NOT EXECUTED
5d118: 2d6a 0024 fff8 movel %a2@(36),%fp@(-8) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d11e: 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;
5d122: 2d6a 0028 fffc movel %a2@(40),%fp@(-4) <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5d128: 486e ffec pea %fp@(-20) <== NOT EXECUTED
5d12c: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
5d130: 4e90 jsr %a0@ <== NOT EXECUTED
5d132: 588f addql #4,%sp <== NOT EXECUTED
5d134: 7201 moveq #1,%d1 <== NOT EXECUTED
5d136: b280 cmpl %d0,%d1 <== NOT EXECUTED
5d138: 6624 bnes 5d15e <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 );
5d13a: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
5d13e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5d142: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5d146: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5d148: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
5d14c: 4e90 jsr %a0@ <== NOT EXECUTED
}
5d14e: 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 );
5d152: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
5d156: 4e5e unlk %fp <== NOT EXECUTED
5d158: 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 );
5d15a: 95ca subal %a2,%a2 <== NOT EXECUTED
5d15c: 60a8 bras 5d106 <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 );
5d15e: 4eb9 0004 ec08 jsr 4ec08 <__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 );
}
5d164: 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 );
5d168: 2040 moveal %d0,%a0 <== NOT EXECUTED
5d16a: 7214 moveq #20,%d1 <== NOT EXECUTED
5d16c: 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 );
}
5d16e: 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 );
5d170: 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 );
}
00043320 <getegid>:
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getegid( void )
{
43320: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Egid;
43324: 2079 0005 f220 moveal 5f220 <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
4332a: 4e5e unlk %fp <== NOT EXECUTED
4332c: 3028 0038 movew %a0@(56),%d0 <== NOT EXECUTED
...
00043334 <geteuid>:
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t geteuid( void )
{
43334: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Euid;
43338: 2079 0005 f220 moveal 5f220 <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
4333e: 4e5e unlk %fp <== NOT EXECUTED
43340: 3028 0036 movew %a0@(54),%d0 <== NOT EXECUTED
...
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 f220 moveal 5f220 <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 0140 lea 50140 <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 e8f7 pea 5e8f7 <_global_impure_ptr+0xbf> <== NOT EXECUTED
438e6: 4879 0005 e248 pea 5e248 <rtems_status_assoc+0x21a> <== NOT EXECUTED
438ec: 4eb9 0004 efc0 jsr 4efc0 <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 e8c2 jsr 4e8c2 <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 e8c2 jsr 4e8c2 <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43956: 4eb9 0004 e774 jsr 4e774 <__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 e774 jsr 4e774 <__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 0005 ffd4 movel 5ffd4 <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 0005 ffe6 pea 5ffe6 <grbuf> <== NOT EXECUTED
43c80: 4879 0005 ffd8 pea 5ffd8 <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 0005 ffd8 andil #393176,%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 0005 ffe6 pea 5ffe6 <grbuf> <== NOT EXECUTED
43c40: 4879 0005 ffd8 pea 5ffd8 <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 0005 ffe6 pea 5ffe6 <grbuf> <== NOT EXECUTED
43bdc: 4879 0005 ffd8 pea 5ffd8 <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
...
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 f220 moveal 5f220 <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 f220 movel 5f220 <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 e332 movel #385842,%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 06b0 jsr 506b0 <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
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
...
0005b544 <getpid>:
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
5b544: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
5b546: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Local_node;
}
5b54a: 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 0005 ffd0 movel 5ffd0 <_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 0140 lea 50140 <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 e8f7 pea 5e8f7 <_global_impure_ptr+0xbf> <== NOT EXECUTED
439ba: 4879 0005 e1d3 pea 5e1d3 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
439c0: 4eb9 0004 efc0 jsr 4efc0 <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 e8c2 jsr 4e8c2 <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 e8c2 jsr 4e8c2 <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43a2c: 4eb9 0004 e774 jsr 4e774 <__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 e774 jsr 4e774 <__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 00ae movel 600ae <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 00ce pea 600ce <pwbuf> <== NOT EXECUTED
43b34: 4879 0006 00b2 pea 600b2 <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 00b2 andil #393394,%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 00ce pea 600ce <pwbuf> <== NOT EXECUTED
43a90: 4879 0006 00b2 pea 600b2 <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 00ce pea 600ce <pwbuf> <== NOT EXECUTED
43af4: 4879 0006 00b2 pea 600b2 <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 db30 jsr 4db30 <__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 db30 jsr 4db30 <__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 db30 jsr 4db30 <__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 72f0 jsr 472f0 <_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 d85c jsr 4d85c <__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 f220 moveal 5f220 <rtems_current_user_env>,%a0 <== NOT EXECUTED
}
43d8a: 4e5e unlk %fp <== NOT EXECUTED
43d8c: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
...
0004d156 <imfs_dir_close>:
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4d156: 4280 clrl %d0 <== NOT EXECUTED
*/
int imfs_dir_close(
rtems_libio_t *iop
)
{
4d158: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4d15c: 4e5e unlk %fp <== NOT EXECUTED
0004d1f0 <imfs_dir_fstat>:
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4d1f0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4d1f4: 4280 clrl %d0 <== NOT EXECUTED
4d1f6: 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;
4d1f8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4d1fc: 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;
4d200: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4d202: 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));
4d206: 2408 movel %a0,%d2 <== NOT EXECUTED
4d208: 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;
4d20e: 2368 0034 0008 movel %a0@(52),%a1@(8) <== NOT EXECUTED
buf->st_mode = the_jnode->st_mode;
4d214: 2368 002e 000c movel %a0@(46),%a1@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4d21a: 3368 0032 0010 movew %a0@(50),%a1@(16) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4d220: 3368 0038 0012 movew %a0@(56),%a1@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4d226: 3368 003a 0014 movew %a0@(58),%a1@(20) <== NOT EXECUTED
buf->st_rdev = 0ll;
buf->st_blksize = 0;
4d22c: 42a9 003e clrl %a1@(62) <== NOT EXECUTED
buf->st_blocks = 0;
buf->st_atime = the_jnode->stat_atime;
4d230: 2368 003c 0026 movel %a0@(60),%a1@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4d236: 2368 0040 002e movel %a0@(64),%a1@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4d23c: 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;
4d242: 2280 movel %d0,%a1@ <== NOT EXECUTED
4d244: 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;
4d248: 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;
4d24c: 2340 0016 movel %d0,%a1@(22) <== NOT EXECUTED
4d250: 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;
4d254: 2340 001e movel %d0,%a1@(30) <== NOT EXECUTED
4d258: 2341 0022 movel %d1,%a1@(34) <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d25c: 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 );
4d260: b488 cmpl %a0,%d2 <== NOT EXECUTED
4d262: 6724 beqs 4d288 <imfs_dir_fstat+0x98> <== NOT EXECUTED
4d264: 4280 clrl %d0 <== NOT EXECUTED
4d266: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4d26c: 2800 movel %d0,%d4 <== NOT EXECUTED
4d26e: 2601 movel %d1,%d3 <== NOT EXECUTED
!rtems_chain_is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
4d270: 2050 moveal %a0@,%a0 <== NOT EXECUTED
4d272: 4285 clrl %d5 <== NOT EXECUTED
4d274: 0681 0000 0110 addil #272,%d1 <== NOT EXECUTED
4d27a: 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 );
4d27c: b488 cmpl %a0,%d2 <== NOT EXECUTED
4d27e: 66ec bnes 4d26c <imfs_dir_fstat+0x7c> <== NOT EXECUTED
4d280: 2344 001e movel %d4,%a1@(30) <== NOT EXECUTED
4d284: 2343 0022 movel %d3,%a1@(34) <== NOT EXECUTED
buf->st_size = buf->st_size + sizeof( struct dirent );
}
return 0;
}
4d288: 4280 clrl %d0 <== NOT EXECUTED
4d28a: 4cd7 003c moveml %sp@,%d2-%d5 <== NOT EXECUTED
4d28e: 4e5e unlk %fp <== NOT EXECUTED
0004d160 <imfs_dir_lseek>:
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
switch( whence ) {
4d160: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_off64_t imfs_dir_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4d162: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d166: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED
4d16a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch( whence ) {
4d16e: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED
4d172: 6422 bccs 4d196 <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 );
4d174: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4d17a: 2440 moveal %d0,%a2 <== NOT EXECUTED
4d17c: 7016 moveq #22,%d0 <== NOT EXECUTED
4d17e: 307c ffff moveaw #-1,%a0 <== NOT EXECUTED
4d182: 327c ffff moveaw #-1,%a1 <== NOT EXECUTED
4d186: 2480 movel %d0,%a2@ <== NOT EXECUTED
break;
}
return 0;
}
4d188: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
4d18e: 2008 movel %a0,%d0 <== NOT EXECUTED
4d190: 2209 movel %a1,%d1 <== NOT EXECUTED
4d192: 4e5e unlk %fp <== NOT EXECUTED
4d194: 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)) *
4d196: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
4d19a: 741c moveq #28,%d2 <== NOT EXECUTED
4d19c: 42a7 clrl %sp@- <== NOT EXECUTED
4d19e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4d1a2: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4d1a6: 4eb9 0005 a074 jsr 5a074 <__divdi3> <== NOT EXECUTED
4d1ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d1b0: 2c01 movel %d1,%d6 <== NOT EXECUTED
4d1b2: e4ae lsrl %d2,%d6 <== NOT EXECUTED
4d1b4: 2406 movel %d6,%d2 <== NOT EXECUTED
4d1b6: 2601 movel %d1,%d3 <== NOT EXECUTED
4d1b8: 721c moveq #28,%d1 <== NOT EXECUTED
4d1ba: e988 lsll #4,%d0 <== NOT EXECUTED
4d1bc: e98b lsll #4,%d3 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
4d1be: 91c8 subal %a0,%a0 <== NOT EXECUTED
4d1c0: 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)) *
4d1c2: 8480 orl %d0,%d2 <== NOT EXECUTED
4d1c4: 2003 movel %d3,%d0 <== NOT EXECUTED
4d1c6: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
4d1c8: 2802 movel %d2,%d4 <== NOT EXECUTED
4d1ca: 2a03 movel %d3,%d5 <== NOT EXECUTED
4d1cc: e98c lsll #4,%d4 <== NOT EXECUTED
4d1ce: e98d lsll #4,%d5 <== NOT EXECUTED
4d1d0: 8880 orl %d0,%d4 <== NOT EXECUTED
4d1d2: 2002 movel %d2,%d0 <== NOT EXECUTED
4d1d4: 2203 movel %d3,%d1 <== NOT EXECUTED
4d1d6: d285 addl %d5,%d1 <== NOT EXECUTED
4d1d8: d184 addxl %d4,%d0 <== NOT EXECUTED
4d1da: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
4d1de: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
}
4d1e2: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
4d1e8: 2008 movel %a0,%d0 <== NOT EXECUTED
4d1ea: 2209 movel %a1,%d1 <== NOT EXECUTED
4d1ec: 4e5e unlk %fp <== NOT EXECUTED
0004d030 <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 )
4d030: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4d032: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d036: 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 )
4d03a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4d03e: 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 )
4d040: b0a9 0048 cmpl %a1@(72),%d0 <== NOT EXECUTED
4d044: 6708 beqs 4d04e <imfs_dir_open+0x1e> <== NOT EXECUTED
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
}
4d046: 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 */
4d048: 70ff moveq #-1,%d0 <== NOT EXECUTED
iop->offset = 0;
return 0;
}
4d04a: 4e5e unlk %fp <== NOT EXECUTED
4d04c: 4e75 rts <== NOT EXECUTED
if ( the_jnode->type != IMFS_DIRECTORY )
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
return 0;
4d04e: 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;
4d050: 4281 clrl %d1 <== NOT EXECUTED
4d052: 4282 clrl %d2 <== NOT EXECUTED
4d054: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
4d058: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
return 0;
}
4d05c: 241f movel %sp@+,%d2 <== NOT EXECUTED
4d05e: 4e5e unlk %fp <== NOT EXECUTED
0004d062 <imfs_dir_read>:
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d062: 4e56 fec4 linkw %fp,#-316 <== NOT EXECUTED
4d066: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4d06a: 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;
4d06e: 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 );
4d072: 2a08 movel %a0,%d5 <== NOT EXECUTED
4d074: 0685 0000 0050 addil #80,%d5 <== NOT EXECUTED
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4d07a: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d07e: 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 ) )
4d082: ba8a cmpl %a2,%d5 <== NOT EXECUTED
4d084: 6700 00c4 beqw 4d14a <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);
4d088: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4d08e: 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;
4d092: 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);
4d096: 2004 movel %d4,%d0 <== NOT EXECUTED
4d098: e18c lsll #8,%d4 <== NOT EXECUTED
4d09a: e988 lsll #4,%d0 <== NOT EXECUTED
4d09c: d880 addl %d0,%d4 <== NOT EXECUTED
4d09e: d883 addl %d3,%d4 <== NOT EXECUTED
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4d0a0: 4a84 tstl %d4 <== NOT EXECUTED
4d0a2: 6f00 00a6 blew 4d14a <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 );
4d0a6: 49ee fef0 lea %fp@(-272),%a4 <== NOT EXECUTED
4d0aa: 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 (
4d0ae: 4282 clrl %d2 <== NOT EXECUTED
4d0b0: 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(
4d0b2: 4bf9 0004 e108 lea 4e108 <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 );
4d0b8: 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 ) {
4d0bc: b483 cmpl %d3,%d2 <== NOT EXECUTED
4d0be: 6c1c bges 4d0dc <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;
4d0c0: 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(
4d0c2: 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 (
4d0c8: b484 cmpl %d4,%d2 <== NOT EXECUTED
4d0ca: 6c04 bges 4d0d0 <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 ) ){
4d0cc: ba8a cmpl %a2,%d5 <== NOT EXECUTED
4d0ce: 66ec bnes 4d0bc <imfs_dir_read+0x5a> <== NOT EXECUTED
4d0d0: 2006 movel %d6,%d0 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4d0d2: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d0d8: 4e5e unlk %fp <== NOT EXECUTED
4d0da: 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 );
4d0dc: 2e0a movel %a2,%d7 <== NOT EXECUTED
4d0de: 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;
4d0e4: 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 );
4d0ea: 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 );
4d0ee: 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 );
4d0f0: 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;
4d0f4: 2d42 fef8 movel %d2,%fp@(-264) <== NOT EXECUTED
4d0f8: 5bc0 smi %d0 <== NOT EXECUTED
4d0fa: 49c0 extbl %d0 <== NOT EXECUTED
4d0fc: 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 );
4d100: 4eb9 0004 ecb4 jsr 4ecb4 <strlen> <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4d106: 2e87 movel %d7,%sp@ <== NOT EXECUTED
4d108: 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 );
4d10c: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4d110: 4eb9 0004 e808 jsr 4e808 <strcpy> <== NOT EXECUTED
memcpy(
4d116: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
4d11a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d11e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4d120: 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 );
4d124: 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(
4d12a: 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 );
4d12c: 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);
4d130: 4280 clrl %d0 <== NOT EXECUTED
4d132: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4d138: d3ab 0010 addl %d1,%a3@(16) <== NOT EXECUTED
4d13c: 2e2b 000c movel %a3@(12),%d7 <== NOT EXECUTED
4d140: df80 addxl %d0,%d7 <== NOT EXECUTED
4d142: 2747 000c movel %d7,%a3@(12) <== NOT EXECUTED
4d146: 6000 ff78 braw 4d0c0 <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;
4d14a: 4280 clrl %d0 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4d14c: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d152: 4e5e unlk %fp <== NOT EXECUTED
0004d292 <imfs_dir_rmnod>:
int imfs_dir_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4d292: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d296: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d29a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
4d29c: 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 );
4d29e: 200a movel %a2,%d0 <== NOT EXECUTED
4d2a0: 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 ) )
4d2a6: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED
4d2aa: 6642 bnes 4d2ee <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 )
4d2ac: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4d2b0: b5e8 001c cmpal %a0@(28),%a2 <== NOT EXECUTED
4d2b4: 6722 beqs 4d2d8 <imfs_dir_rmnod+0x46> <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
4d2b6: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED
4d2ba: 661c bnes 4d2d8 <imfs_dir_rmnod+0x46> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
IMFS_create_orphan( the_jnode );
4d2bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d2be: 4eb9 0004 a990 jsr 4a990 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4d2c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d2c6: 4eb9 0004 a9d4 jsr 4a9d4 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4d2cc: 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;
4d2d0: 508f addql #8,%sp <== NOT EXECUTED
4d2d2: 4280 clrl %d0 <== NOT EXECUTED
}
4d2d4: 4e5e unlk %fp <== NOT EXECUTED
4d2d6: 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 );
4d2d8: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d2de: 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 );
4d2e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d2e4: 7210 moveq #16,%d1 <== NOT EXECUTED
4d2e6: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d2e8: 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 );
4d2ea: 2081 movel %d1,%a0@ <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d2ec: 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 );
4d2ee: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d2f4: 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 );
4d2f8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d2fa: 725a moveq #90,%d1 <== NOT EXECUTED
4d2fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4d2fe: 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 );
4d300: 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 0196 tstb 60196 <etc_passwd_initted.6377> <== 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 0004 efc0 lea 4efc0 <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 e1ce pea 5e1ce <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 0196 moveb %d0,60196 <etc_passwd_initted.6377> <== 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 e8f7 pea 5e8f7 <_global_impure_ptr+0xbf> <== NOT EXECUTED
437ea: 4879 0005 e1d3 pea 5e1d3 <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 e8c2 jsr 4e8c2 <fclose> <== NOT EXECUTED
43802: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
43804: 4879 0005 e8f7 pea 5e8f7 <_global_impure_ptr+0xbf> <== NOT EXECUTED
4380a: 4879 0005 e248 pea 5e248 <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 e8c2 jsr 4e8c2 <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 e1df pea 5e1df <rtems_status_assoc+0x1b1> <== NOT EXECUTED
43834: 4879 0005 e248 pea 5e248 <rtems_status_assoc+0x21a> <== NOT EXECUTED
4383a: 4eb9 0004 efc0 jsr 4efc0 <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 e253 pea 5e253 <rtems_status_assoc+0x225> <== NOT EXECUTED
4385a: 4eb9 0004 f774 jsr 4f774 <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 e8c2 jsr 4e8c2 <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 e1df pea 5e1df <rtems_status_assoc+0x1b1> <== NOT EXECUTED
4387e: 4879 0005 e1d3 pea 5e1d3 <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 e1e1 pea 5e1e1 <rtems_status_assoc+0x1b3> <== NOT EXECUTED
4389e: 4eb9 0004 f774 jsr 4f774 <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 e8c2 jsr 4e8c2 <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 18b4 cmpl 618b4 <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 3144 moveal 63144 <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 1db0 jsr 51db0 <__errno> <== NOT EXECUTED
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 d7c0 moveal 5d7c0 <__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 d730 movel 5d730 <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
...
0005b56c <kill>:
#if !defined(RTEMS_POSIX_API)
int kill( pid_t pid, int sig )
{
return 0;
}
5b56c: 4280 clrl %d0 <== NOT EXECUTED
* These are directly supported (and completely correct) in the posix api.
*/
#if !defined(RTEMS_POSIX_API)
int kill( pid_t pid, int sig )
{
5b56e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
5b572: 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 efa0 cmpl 5efa0 <_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
435ae: 4e75 rts
/*
* This was already done if the user called exit() directly .
_wrapup_reent(0);
*/
if (_REENT != _global_impure_ptr) {
435b0: 2079 0005 d7c4 moveal 5d7c4 <_impure_ptr>,%a0
435b6: 2479 0005 cd56 moveal 5cd56 <_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 e406 jsr 4e406 <_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 d7c4 movel %a2,5d7c4 <_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 d9aa lea 4d9aa <fclose>,%a2
435dc: 4e92 jsr %a2@
fclose (stdout);
435de: 2079 0005 d7c4 moveal 5d7c4 <_impure_ptr>,%a0
435e4: 2f28 0008 movel %a0@(8),%sp@-
435e8: 4e92 jsr %a2@
fclose (stderr);
435ea: 2079 0005 d7c4 moveal 5d7c4 <_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 483c jsr 5483c <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 1810 jsr 51810 <__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
0005b58c <lseek>:
off_t lseek(
int fd,
off_t offset,
int whence
)
{
5b58c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5b590: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
5b594: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
5b598: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
5b59c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
5b5a0: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
rtems_libio_t *iop;
off_t old_offset;
off_t status;
rtems_libio_check_fd( fd );
5b5a4: b4b9 0005 d524 cmpl 5d524 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED
5b5aa: 6400 011e bccw 5b6ca <lseek+0x13e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5b5ae: 2802 movel %d2,%d4 <== NOT EXECUTED
5b5b0: ed8a lsll #6,%d2 <== NOT EXECUTED
5b5b2: e78c lsll #3,%d4 <== NOT EXECUTED
5b5b4: 2479 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5b5ba: 9484 subl %d4,%d2 <== NOT EXECUTED
5b5bc: d5c2 addal %d2,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
5b5be: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED
5b5c2: 0282 0000 0100 andil #256,%d2 <== NOT EXECUTED
5b5c8: 6700 0100 beqw 5b6ca <lseek+0x13e> <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
switch ( whence ) {
5b5cc: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
5b5ce: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED
5b5d2: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
switch ( whence ) {
5b5d6: b888 cmpl %a0,%d4 <== NOT EXECUTED
5b5d8: 6700 00b6 beqw 5b690 <lseek+0x104> <== NOT EXECUTED
5b5dc: 7a02 moveq #2,%d5 <== NOT EXECUTED
5b5de: ba88 cmpl %a0,%d5 <== NOT EXECUTED
5b5e0: 6756 beqs 5b638 <lseek+0xac> <== NOT EXECUTED
5b5e2: 4a88 tstl %a0 <== NOT EXECUTED
5b5e4: 6600 008c bnew 5b672 <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 );
5b5e8: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
*/
old_offset = iop->offset;
switch ( whence ) {
case SEEK_SET:
iop->offset = offset;
5b5ec: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
5b5f0: 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 );
5b5f4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5b5f6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5b5f8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b5fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b5fc: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
5b600: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5b602: 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 );
5b606: 2800 movel %d0,%d4 <== NOT EXECUTED
5b608: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5b60a: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b60c: 72ff moveq #-1,%d1 <== NOT EXECUTED
5b60e: 9285 subl %d5,%d1 <== NOT EXECUTED
5b610: 9184 subxl %d4,%d0 <== NOT EXECUTED
5b612: 670e beqs 5b622 <lseek+0x96> <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5b614: 2004 movel %d4,%d0 <== NOT EXECUTED
5b616: 2205 movel %d5,%d1 <== NOT EXECUTED
5b618: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5b61e: 4e5e unlk %fp <== NOT EXECUTED
5b620: 4e75 rts <== NOT EXECUTED
5b622: 2004 movel %d4,%d0 <== NOT EXECUTED
5b624: 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;
5b626: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
5b62a: 2543 0010 movel %d3,%a2@(16) <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5b62e: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5b634: 4e5e unlk %fp <== NOT EXECUTED
5b636: 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 );
5b638: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_CUR:
iop->offset += offset;
break;
case SEEK_END:
iop->offset = iop->size + offset;
5b63c: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED
5b640: 2a2a 0008 movel %a2@(8),%d5 <== NOT EXECUTED
5b644: da81 addl %d1,%d5 <== NOT EXECUTED
5b646: d980 addxl %d0,%d4 <== NOT EXECUTED
5b648: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED
5b64c: 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 );
5b650: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5b652: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5b654: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b656: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b658: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
5b65c: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5b65e: 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 );
5b662: 2800 movel %d0,%d4 <== NOT EXECUTED
5b664: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5b666: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b668: 72ff moveq #-1,%d1 <== NOT EXECUTED
5b66a: 9285 subl %d5,%d1 <== NOT EXECUTED
5b66c: 9184 subxl %d4,%d0 <== NOT EXECUTED
5b66e: 66a4 bnes 5b614 <lseek+0x88> <== NOT EXECUTED
5b670: 60b0 bras 5b622 <lseek+0x96> <== NOT EXECUTED
case SEEK_END:
iop->offset = iop->size + offset;
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
5b672: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
5b678: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b67a: 7016 moveq #22,%d0 <== NOT EXECUTED
5b67c: 78ff moveq #-1,%d4 <== NOT EXECUTED
5b67e: 7aff moveq #-1,%d5 <== NOT EXECUTED
5b680: 2080 movel %d0,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5b682: 2004 movel %d4,%d0 <== NOT EXECUTED
5b684: 2205 movel %d5,%d1 <== NOT EXECUTED
5b686: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5b68c: 4e5e unlk %fp <== NOT EXECUTED
5b68e: 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 );
5b690: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
case SEEK_SET:
iop->offset = offset;
break;
case SEEK_CUR:
iop->offset += offset;
5b694: 2800 movel %d0,%d4 <== NOT EXECUTED
5b696: 2a01 movel %d1,%d5 <== NOT EXECUTED
5b698: da83 addl %d3,%d5 <== NOT EXECUTED
5b69a: d982 addxl %d2,%d4 <== NOT EXECUTED
5b69c: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED
5b6a0: 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 );
5b6a4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5b6a6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5b6a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b6aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b6ac: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
5b6b0: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
5b6b2: 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 );
5b6b6: 2800 movel %d0,%d4 <== NOT EXECUTED
5b6b8: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
5b6ba: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b6bc: 72ff moveq #-1,%d1 <== NOT EXECUTED
5b6be: 9285 subl %d5,%d1 <== NOT EXECUTED
5b6c0: 9184 subxl %d4,%d0 <== NOT EXECUTED
5b6c2: 6600 ff50 bnew 5b614 <lseek+0x88> <== NOT EXECUTED
5b6c6: 6000 ff5a braw 5b622 <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);
5b6ca: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
5b6d0: 7209 moveq #9,%d1 <== NOT EXECUTED
5b6d2: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b6d4: 78ff moveq #-1,%d4 <== NOT EXECUTED
5b6d6: 7aff moveq #-1,%d5 <== NOT EXECUTED
5b6d8: 2081 movel %d1,%a0@ <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
5b6da: 2004 movel %d4,%d0 <== NOT EXECUTED
5b6dc: 2205 movel %d5,%d1 <== NOT EXECUTED
5b6de: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
5b6e4: 4e5e unlk %fp <== NOT EXECUTED
00044fb8 <lstat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
44fb8: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
44fbc: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
44fc0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
44fc4: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
44fc8: 676e beqs 45038 <lstat+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
44fca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44fcc: 280e movel %fp,%d4 <== NOT EXECUTED
44fce: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED
44fd4: 4eb9 0005 1694 jsr 51694 <strlen> <== NOT EXECUTED
44fda: 4297 clrl %sp@ <== NOT EXECUTED
44fdc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
44fde: 42a7 clrl %sp@- <== NOT EXECUTED
44fe0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44fe2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44fe4: 4eb9 0004 490c jsr 4490c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
44fea: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
44fee: 4a80 tstl %d0 <== NOT EXECUTED
44ff0: 670c beqs 44ffe <lstat+0x46> <== NOT EXECUTED
return -1;
44ff2: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
44ff4: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
44ffa: 4e5e unlk %fp <== NOT EXECUTED
44ffc: 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) );
44ffe: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED
45002: 42a7 clrl %sp@- <== NOT EXECUTED
45004: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45006: 4eb9 0005 0964 jsr 50964 <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
4500c: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
45010: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45012: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45014: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
45018: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4501a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4501c: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
45020: 4eb9 0004 49f0 jsr 449f0 <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
45026: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
4502a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
4502e: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
45034: 4e5e unlk %fp <== NOT EXECUTED
45036: 4e75 rts <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
rtems_set_errno_and_return_minus_one( EFAULT );
45038: 4eb9 0004 f8ac jsr 4f8ac <__errno> <== NOT EXECUTED
4503e: 720e moveq #14,%d1 <== NOT EXECUTED
45040: 2040 moveal %d0,%a0 <== NOT EXECUTED
45042: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
45044: 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 );
4504a: 2081 movel %d1,%a0@ <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
4504c: 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 ed04 addql #1,5ed04 <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 efa0 cmpl 5efa0 <_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 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@-
4305e: 4eb9 0004 7ffc jsr 47ffc <_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 dcbe moveal 5dcbe <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 dcb6 moveal 5dcb6 <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 dcba moveal 5dcba <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 dcbe moveal 5dcbe <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 d85c jsr 4d85c <__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 ecf4 pea 5ecf4 <RTEMS_Malloc_GC_list> <== NOT EXECUTED
42f50: 4eb9 0004 6e78 jsr 46e78 <_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 ecf4 pea 5ecf4 <RTEMS_Malloc_GC_list>
42f14: 45f9 0004 6ed8 lea 46ed8 <_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 ecf4 pea 5ecf4 <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 3080 movel 63080 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46c0e: 4eb9 0004 cf1c jsr 4cf1c <_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 dac0 movel 5dac0 <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 ee48 movel 5ee48 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
42fa2: 4eb9 0004 6e48 jsr 46e48 <_API_Mutex_Lock> <== NOT EXECUTED
*stats = rtems_malloc_statistics;
42fa8: 2042 moveal %d2,%a0 <== NOT EXECUTED
42faa: 20f9 0005 ec50 movel 5ec50 <rtems_malloc_statistics>,%a0@+ <== NOT EXECUTED
42fb0: 20f9 0005 ec54 movel 5ec54 <rtems_malloc_statistics+0x4>,%a0@+<== NOT EXECUTED
42fb6: 20f9 0005 ec58 movel 5ec58 <rtems_malloc_statistics+0x8>,%a0@+<== NOT EXECUTED
42fbc: 20f9 0005 ec5c movel 5ec5c <rtems_malloc_statistics+0xc>,%a0@+<== NOT EXECUTED
42fc2: 20f9 0005 ec60 movel 5ec60 <rtems_malloc_statistics+0x10>,%a0@+<== NOT EXECUTED
42fc8: 20f9 0005 ec64 movel 5ec64 <rtems_malloc_statistics+0x14>,%a0@+<== NOT EXECUTED
42fce: 20f9 0005 ec68 movel 5ec68 <rtems_malloc_statistics+0x18>,%a0@+<== NOT EXECUTED
42fd4: 20f9 0005 ec6c movel 5ec6c <rtems_malloc_statistics+0x1c>,%a0@+<== NOT EXECUTED
42fda: 20f9 0005 ec70 movel 5ec70 <rtems_malloc_statistics+0x20>,%a0@+<== NOT EXECUTED
42fe0: 20f9 0005 ec74 movel 5ec74 <rtems_malloc_statistics+0x24>,%a0@+<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42fe6: 2f39 0005 ee48 movel 5ee48 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
)
{
if ( !stats )
return -1;
_RTEMS_Lock_allocator();
*stats = rtems_malloc_statistics;
42fec: 20b9 0005 ec78 movel 5ec78 <rtems_malloc_statistics+0x28>,%a0@<== NOT EXECUTED
_RTEMS_Unlock_allocator();
42ff2: 4eb9 0004 6ea8 jsr 46ea8 <_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 3080 movel 63080 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46c2e: 4eb9 0004 cf4c jsr 4cf4c <_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 ee38 movel 5ee38 <_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 0005 eff0 tstl 5eff0 <_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 5144 moveal 65144 <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 5148 movel 65148 <rtems_malloc_statistics+0x1c>,%d4<== NOT EXECUTED
46e1a: 2a39 0006 514c movel 6514c <rtems_malloc_statistics+0x20>,%d5<== NOT EXECUTED
46e20: 2039 0006 5150 movel 65150 <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED
46e26: 2239 0006 5154 movel 65154 <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 512c movel 6512c <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 ebb0 jsr 5ebb0 <__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 f3fc jsr 5f3fc <__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 1cfc pea 61cfc <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 5140 movel 65140 <rtems_malloc_statistics+0x14>,%sp@<== NOT EXECUTED
46ed2: 2f39 0006 513c movel 6513c <rtems_malloc_statistics+0x10>,%sp@-<== NOT EXECUTED
46ed8: 2f39 0006 5138 movel 65138 <rtems_malloc_statistics+0xc>,%sp@-<== NOT EXECUTED
46ede: 2f39 0006 5134 movel 65134 <rtems_malloc_statistics+0x8>,%sp@-<== NOT EXECUTED
46ee4: 2f39 0006 5130 movel 65130 <rtems_malloc_statistics+0x4>,%sp@-<== NOT EXECUTED
46eea: 4879 0006 1d5e pea 61d5e <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 0005 f404 movel 5f404 <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 dac0 movel 5dac0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
433e6: 4eb9 0004 8308 jsr 48308 <_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 0005 f3d8 addl %d2,5f3d8 <rtems_malloc_statistics> <== NOT EXECUTED
433fc: 42a7 clrl %sp@- <== NOT EXECUTED
433fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43402: 2f39 0005 dac0 movel 5dac0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
43408: 4eb9 0004 82c8 jsr 482c8 <_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 dde0 jsr 4dde0 <__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 0005 f404 movel %d1,5f404 <RTEMS_Malloc_Sbrk_amount>
* If the starting address is 0 then we are to attempt to
* get length worth of memory using sbrk. Make sure we
* align the address that we get back.
*/
if (!starting_address) {
43452: 4a80 tstl %d0
43454: 6704 beqs 4345a <malloc_sbrk_initialize+0x1a> <== ALWAYS TAKEN
}
starting_address = (void *)uaddress;
}
return starting_address;
}
43456: 4e5e unlk %fp <== NOT EXECUTED
43458: 4e75 rts <== NOT EXECUTED
* get length worth of memory using sbrk. Make sure we
* align the address that we get back.
*/
if (!starting_address) {
uaddress = (uintptr_t)sbrk(length);
4345a: 2f01 movel %d1,%sp@-
4345c: 4eb9 0004 0812 jsr 40812 <sbrk>
if (uaddress == (uintptr_t) -1) {
43462: 588f addql #4,%sp
43464: 72ff moveq #-1,%d1
43466: b280 cmpl %d0,%d1
43468: 6710 beqs 4347a <malloc_sbrk_initialize+0x3a> <== ALWAYS TAKEN
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
/* DOES NOT RETURN!!! */
}
if (uaddress & (CPU_HEAP_ALIGNMENT-1)) {
4346a: 7203 moveq #3,%d1 <== NOT EXECUTED
4346c: c280 andl %d0,%d1 <== NOT EXECUTED
4346e: 67e6 beqs 43456 <malloc_sbrk_initialize+0x16> <== NOT EXECUTED
old_address = uaddress;
uaddress = (uaddress + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1);
43470: 5880 addql #4,%d0 <== NOT EXECUTED
43472: 72fc moveq #-4,%d1 <== NOT EXECUTED
}
starting_address = (void *)uaddress;
}
return starting_address;
}
43474: 4e5e unlk %fp <== NOT EXECUTED
/* DOES NOT RETURN!!! */
}
if (uaddress & (CPU_HEAP_ALIGNMENT-1)) {
old_address = uaddress;
uaddress = (uaddress + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1);
43476: c081 andl %d1,%d0 <== NOT EXECUTED
}
starting_address = (void *)uaddress;
}
return starting_address;
}
43478: 4e75 rts <== NOT EXECUTED
if (!starting_address) {
uaddress = (uintptr_t)sbrk(length);
if (uaddress == (uintptr_t) -1) {
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
4347a: 4878 001a pea 1a <OPER2+0x6>
4347e: 4eb9 0004 6ef4 jsr 46ef4 <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 dac0 movel %a0@,5dac0 <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 3080 movel 63080 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
4701e: 4eb9 0004 d000 jsr 4d000 <_Protected_heap_Walk> <== NOT EXECUTED
47024: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
47028: 4e5e unlk %fp <== NOT EXECUTED
0004c2b0 <memfile_alloc_block>:
* Allocate a block for an in-memory file.
*/
int memfile_blocks_allocated = 0;
void *memfile_alloc_block(void)
{
4c2b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void *memory;
memory = (void *)calloc(1, IMFS_MEMFILE_BYTES_PER_BLOCK);
4c2b4: 2f39 0005 e4e8 movel 5e4e8 <imfs_memfile_bytes_per_block>,%sp@-<== NOT EXECUTED
4c2ba: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c2be: 4eb9 0004 28f0 jsr 428f0 <calloc> <== NOT EXECUTED
if ( memory )
4c2c4: 508f addql #8,%sp <== NOT EXECUTED
4c2c6: 4a80 tstl %d0 <== NOT EXECUTED
4c2c8: 6706 beqs 4c2d0 <memfile_alloc_block+0x20> <== NOT EXECUTED
memfile_blocks_allocated++;
4c2ca: 52b9 0005 e5f8 addql #1,5e5f8 <memfile_blocks_allocated> <== NOT EXECUTED
return memory;
}
4c2d0: 4e5e unlk %fp <== NOT EXECUTED
0004c270 <memfile_close>:
* nothing to flush or memory to free at this point.
*/
int memfile_close(
rtems_libio_t *iop
)
{
4c270: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c274: 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)
4c278: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
4c27c: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
rtems_libio_t *iop
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4c282: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
if (iop->flags & LIBIO_FLAGS_APPEND)
4c286: 6710 beqs 4c298 <memfile_close+0x28> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4c288: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED
4c28c: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED
4c290: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
4c294: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4c298: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4c29a: 4eb9 0004 a9d4 jsr 4a9d4 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4c2a0: 4280 clrl %d0 <== NOT EXECUTED
4c2a2: 4e5e unlk %fp <== NOT EXECUTED
0004c74c <memfile_free_block>:
* Free a block from an in-memory file.
*/
void memfile_free_block(
void *memory
)
{
4c74c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free(memory);
4c750: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c754: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
memfile_blocks_allocated--;
4c75a: 588f addql #4,%sp <== NOT EXECUTED
4c75c: 53b9 0005 e5f8 subql #1,5e5f8 <memfile_blocks_allocated> <== NOT EXECUTED
}
4c762: 4e5e unlk %fp <== NOT EXECUTED
0004c766 <memfile_free_blocks_in_table>:
*/
void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4c766: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4c76a: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4c76e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
4c772: 47f9 0004 c74c lea 4c74c <memfile_free_block>,%a3 <== NOT EXECUTED
4c778: 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;
4c77c: 2454 moveal %a4@,%a2 <== NOT EXECUTED
for ( i=0 ; i<entries ; i++ ) {
4c77e: 6f1a bles 4c79a <memfile_free_blocks_in_table+0x34><== NOT EXECUTED
4c780: 4282 clrl %d2 <== NOT EXECUTED
if ( b[i] ) {
4c782: 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++ ) {
4c784: 5282 addql #1,%d2 <== NOT EXECUTED
if ( b[i] ) {
4c786: 4a80 tstl %d0 <== NOT EXECUTED
4c788: 670a beqs 4c794 <memfile_free_blocks_in_table+0x2e><== NOT EXECUTED
memfile_free_block( b[i] );
4c78a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c78c: 4e93 jsr %a3@ <== NOT EXECUTED
b[i] = 0;
4c78e: 588f addql #4,%sp <== NOT EXECUTED
4c790: 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++ ) {
4c794: b483 cmpl %d3,%d2 <== NOT EXECUTED
4c796: 6dea blts 4c782 <memfile_free_blocks_in_table+0x1c><== NOT EXECUTED
4c798: 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 );
4c79a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c79c: 4e93 jsr %a3@ <== NOT EXECUTED
*block_table = 0;
4c79e: 588f addql #4,%sp <== NOT EXECUTED
4c7a0: 4294 clrl %a4@ <== NOT EXECUTED
}
4c7a2: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4c7a8: 4e5e unlk %fp <== NOT EXECUTED
0004ccb8 <memfile_ftruncate>:
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4ccb8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4ccbc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4ccc0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4ccc4: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4ccc8: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4cccc: 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 )
4ccd0: 242a 004c movel %a2@(76),%d2 <== NOT EXECUTED
4ccd4: 262a 0050 movel %a2@(80),%d3 <== NOT EXECUTED
4ccd8: 9681 subl %d1,%d3 <== NOT EXECUTED
4ccda: 9580 subxl %d0,%d2 <== NOT EXECUTED
4ccdc: 6d30 blts 4cd0e <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;
4ccde: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
4cce2: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4cce6: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
4ccea: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4ccee: 42a7 clrl %sp@- <== NOT EXECUTED
4ccf0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4ccf4: 4eb9 0004 2d8c jsr 42d8c <gettimeofday> <== NOT EXECUTED
4ccfa: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return 0;
4cd00: 508f addql #8,%sp <== NOT EXECUTED
4cd02: 4280 clrl %d0 <== NOT EXECUTED
}
4cd04: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4cd0a: 4e5e unlk %fp <== NOT EXECUTED
4cd0c: 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 );
4cd0e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4cd10: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cd12: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cd14: 4eb9 0004 c8ee jsr 4c8ee <IMFS_memfile_extend> <== NOT EXECUTED
4cd1a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
IMFS_update_atime( the_jnode );
return 0;
}
4cd1e: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4cd24: 4e5e unlk %fp <== NOT EXECUTED
0004c2a6 <memfile_ioctl>:
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4c2a6: 4280 clrl %d0 <== NOT EXECUTED
int memfile_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4c2a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4c2ac: 4e5e unlk %fp <== NOT EXECUTED
0004cd28 <memfile_lseek>:
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4cd28: 7006 moveq #6,%d0 <== NOT EXECUTED
rtems_off64_t memfile_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4cd2a: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4cd2e: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
4cd32: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4cd36: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
if (the_jnode->type == IMFS_LINEAR_FILE) {
4cd3a: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED
4cd3e: 673e beqs 4cd7e <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 ))
4cd40: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4cd44: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4cd48: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4cd4a: 4eb9 0004 c8ee jsr 4c8ee <IMFS_memfile_extend> <== NOT EXECUTED
4cd50: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cd54: 4a80 tstl %d0 <== NOT EXECUTED
4cd56: 665a bnes 4cdb2 <memfile_lseek+0x8a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
iop->size = the_jnode->info.file.size;
4cd58: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED
4cd5c: 222b 0050 movel %a3@(80),%d1 <== NOT EXECUTED
4cd60: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4cd64: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
4cd68: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4cd6c: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
}
return iop->offset;
}
4cd70: 2001 movel %d1,%d0 <== NOT EXECUTED
4cd72: 2202 movel %d2,%d1 <== NOT EXECUTED
4cd74: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4cd7a: 4e5e unlk %fp <== NOT EXECUTED
4cd7c: 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)
4cd7e: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4cd82: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
4cd86: 262b 004c movel %a3@(76),%d3 <== NOT EXECUTED
4cd8a: 282b 0050 movel %a3@(80),%d4 <== NOT EXECUTED
4cd8e: 2a01 movel %d1,%d5 <== NOT EXECUTED
4cd90: 2c02 movel %d2,%d6 <== NOT EXECUTED
4cd92: 9c84 subl %d4,%d6 <== NOT EXECUTED
4cd94: 9b83 subxl %d3,%d5 <== NOT EXECUTED
4cd96: 6fd8 bles 4cd70 <memfile_lseek+0x48> <== NOT EXECUTED
iop->offset = the_jnode->info.linearfile.size;
4cd98: 2203 movel %d3,%d1 <== NOT EXECUTED
4cd9a: 2404 movel %d4,%d2 <== NOT EXECUTED
4cd9c: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
4cda0: 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;
}
4cda4: 2001 movel %d1,%d0 <== NOT EXECUTED
4cda6: 2202 movel %d2,%d1 <== NOT EXECUTED
4cda8: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4cdae: 4e5e unlk %fp <== NOT EXECUTED
4cdb0: 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 );
4cdb2: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4cdb8: 781c moveq #28,%d4 <== NOT EXECUTED
4cdba: 2040 moveal %d0,%a0 <== NOT EXECUTED
4cdbc: 72ff moveq #-1,%d1 <== NOT EXECUTED
4cdbe: 74ff moveq #-1,%d2 <== NOT EXECUTED
4cdc0: 2084 movel %d4,%a0@ <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
}
return iop->offset;
}
4cdc2: 2001 movel %d1,%d0 <== NOT EXECUTED
4cdc4: 2202 movel %d2,%d1 <== NOT EXECUTED
4cdc6: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
4cdcc: 4e5e unlk %fp <== NOT EXECUTED
0004cbf0 <memfile_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4cbf0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4cbf4: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4cbf8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4cbfc: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4cc00: 2200 movel %d0,%d1 <== NOT EXECUTED
4cc02: 0281 0000 0204 andil #516,%d1 <== NOT EXECUTED
uint32_t mode
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4cc08: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4cc0c: 6708 beqs 4cc16 <memfile_open+0x26> <== NOT EXECUTED
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
4cc0e: 7206 moveq #6,%d1 <== NOT EXECUTED
4cc10: b2ab 0048 cmpl %a3@(72),%d1 <== NOT EXECUTED
4cc14: 6732 beqs 4cc48 <memfile_open+0x58> <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
the_jnode->info.file.triply_indirect = 0;
if ((count != 0)
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
4cc16: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4cc1a: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4cc1e: 0800 0009 btst #9,%d0 <== NOT EXECUTED
4cc22: 6710 beqs 4cc34 <memfile_open+0x44> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4cc24: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
4cc28: 2542 0010 movel %d2,%a2@(16) <== NOT EXECUTED
4cc2c: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4cc30: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
return 0;
4cc34: 4280 clrl %d0 <== NOT EXECUTED
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
iop->offset = the_jnode->info.file.size;
iop->size = the_jnode->info.file.size;
4cc36: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
4cc3a: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return 0;
}
4cc3e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4cc44: 4e5e unlk %fp <== NOT EXECUTED
4cc46: 4e75 rts <== NOT EXECUTED
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
uint32_t count = the_jnode->info.linearfile.size;
4cc48: 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;
4cc4c: 4282 clrl %d2 <== NOT EXECUTED
4cc4e: 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;
4cc50: 222b 0054 movel %a3@(84),%d1 <== NOT EXECUTED
the_jnode->type = IMFS_MEMORY_FILE;
the_jnode->info.file.size = 0;
4cc54: 2742 004c movel %d2,%a3@(76) <== NOT EXECUTED
4cc58: 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;
4cc5c: 7605 moveq #5,%d3 <== NOT EXECUTED
the_jnode->info.file.size = 0;
the_jnode->info.file.indirect = 0;
4cc5e: 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;
4cc62: 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;
4cc66: 42ab 0058 clrl %a3@(88) <== NOT EXECUTED
the_jnode->info.file.triply_indirect = 0;
4cc6a: 42ab 005c clrl %a3@(92) <== NOT EXECUTED
if ((count != 0)
4cc6e: 4a80 tstl %d0 <== NOT EXECUTED
4cc70: 6610 bnes 4cc82 <memfile_open+0x92> <== NOT EXECUTED
4cc72: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4cc76: 4281 clrl %d1 <== NOT EXECUTED
4cc78: 4282 clrl %d2 <== NOT EXECUTED
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4cc7a: 0800 0009 btst #9,%d0 <== NOT EXECUTED
4cc7e: 67b4 beqs 4cc34 <memfile_open+0x44> <== NOT EXECUTED
4cc80: 60a2 bras 4cc24 <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))
4cc82: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4cc84: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4cc86: 42a7 clrl %sp@- <== NOT EXECUTED
4cc88: 42a7 clrl %sp@- <== NOT EXECUTED
4cc8a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4cc8c: 4eb9 0004 c9f4 jsr 4c9f4 <IMFS_memfile_write> <== NOT EXECUTED
4cc92: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4cc96: 72ff moveq #-1,%d1 <== NOT EXECUTED
4cc98: b280 cmpl %d0,%d1 <== NOT EXECUTED
4cc9a: 6710 beqs 4ccac <memfile_open+0xbc> <== NOT EXECUTED
4cc9c: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4cca0: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4cca4: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
4cca8: 6000 ff74 braw 4cc1e <memfile_open+0x2e> <== NOT EXECUTED
return -1;
4ccac: 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;
}
4ccae: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4ccb4: 4e5e unlk %fp <== NOT EXECUTED
0004c6da <memfile_read>:
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4c6da: 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 );
4c6de: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4c6e2: 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 );
4c6e6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4c6ea: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED
4c6ee: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4c6f2: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED
4c6f6: 4eb9 0004 c47a jsr 4c47a <IMFS_memfile_read> <== NOT EXECUTED
}
4c6fc: 4e5e unlk %fp <== NOT EXECUTED
0004cbae <memfile_write>:
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4cbae: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4cbb2: 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 );
4cbb6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4cbba: 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 );
4cbbe: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
)
{
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
4cbc2: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4cbc6: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4cbca: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4cbce: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4cbd0: 4eb9 0004 c9f4 jsr 4c9f4 <IMFS_memfile_write> <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4cbd6: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4cbda: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
4cbde: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
4cbe2: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return status;
}
4cbe6: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4cbec: 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 d85c jsr 4d85c <__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 b23c jsr 4b23c <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 ecb4 lea 4ecb4 <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 ecb4 jsr 4ecb4 <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 e108 lea 4e108 <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 d628 movel #382504,%d0
43390: b0b9 0005 d624 cmpl 5d624 <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 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@-
433b6: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
433bc: 2f0a movel %a2,%sp@-
433be: 4879 0005 d624 pea 5d624 <mount_chain>
433c4: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append>
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
433ca: 2f39 0005 ecf0 movel 5ecf0 <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 d740 moveal 5d740 <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 d85c jsr 4d85c <__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 c2e8 lea 5c2e8 <IMFS_ops+0x48>,%a0
434da: 45f9 0004 ecb4 lea 4ecb4 <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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 d85c jsr 4d85c <__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 e044 jsr 4e044 <__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
...
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 eede tstl 5eede <_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 9a82 jsr 49a82 <_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 c7cc movel #378828,%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 e178 jsr 4e178 <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 00f8 movel %a2,%a0@(248)
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 cd56 lea 5cd56 <_global_impure_ptr>,%a0
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (
struct _reent **libc_reent
)
{
_Thread_libc_reent = libc_reent;
43826: 43f9 0005 d7c4 lea 5d7c4 <_impure_ptr>,%a1
4382c: 23d0 0005 d7c4 movel %a0@,5d7c4 <_impure_ptr>
43832: 23c9 0005 eede movel %a1,5eede <_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 00f8 movel %a2@(248),%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 cd56 cmpl 5cd56 <_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 e010 jsr 4e010 <_fwalk>
#if REENT_MALLOCED
free(ptr);
#else
_Workspace_Free(ptr);
4386e: 2f02 movel %d2,%sp@-
43870: 4eb9 0004 9a9e jsr 49a9e <_Workspace_Free>
43876: 4fef 000c lea %sp@(12),%sp
#endif
}
deleted_task->libc_reent = NULL;
4387a: 42aa 00f8 clrl %a2@(248)
/*
* 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 d7c4 clrl 5d7c4 <_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 d7c4 movel 5d7c4 <_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 dbfc jsr 4dbfc <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 d9aa jsr 4d9aa <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 bf5c tstb 5bf5c <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 9abe pea 59abe <_rodata_start+0x21e>
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
42754: 13c0 0005 bf5c moveb %d0,5bf5c <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 c754 movel %d2,5c754 <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 6c44 jsr 46c44 <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 af02 jsr 4af02 <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 ecb4 lea 4ecb4 <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 ae74 jsr 4ae74 <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 ece8 subl 5ece8 <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 d85c movel #317532,%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 d85c movel #317532,%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 afc6 jsr 4afc6 <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 ece8 subl 5ece8 <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 ada8 jsr 4ada8 <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 d85c movel #317532,%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 ece8 subl 5ece8 <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 ad20 jsr 4ad20 <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 ece8 subl 5ece8 <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 d85c movel #317532,%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 d85c movel #317532,%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> <== NEVER TAKEN
int mode;
int rc;
rtems_libio_t *iop = 0;
int status;
rtems_filesystem_location_info_t loc;
rtems_filesystem_location_info_t *loc_to_free = NULL;
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 ece8 subl 5ece8 <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 ad20 jsr 4ad20 <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@- <== NOT EXECUTED
43b40: 2005 movel %d5,%d0 <== NOT EXECUTED
43b42: 42a7 clrl %sp@- <== NOT EXECUTED
43b44: 08c0 000f bset #15,%d0 <== NOT EXECUTED
43b48: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43b4a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43b4c: 4eb9 0004 311c jsr 4311c <mknod> <== NOT EXECUTED
if ( rc ) {
43b52: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
43b56: 4a80 tstl %d0 <== NOT EXECUTED
43b58: 6698 bnes 43af2 <open+0x1da> <== NOT EXECUTED
/*
* After we do the mknod(), we have to evaluate the path to get the
* "loc" structure needed to actually have the file itself open.
* So we created it, and then we need to have "look it up."
*/
status = rtems_filesystem_evaluate_path(
43b5a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43b5c: 4e95 jsr %a5@ <== NOT EXECUTED
43b5e: 7201 moveq #1,%d1 <== NOT EXECUTED
43b60: 2e81 movel %d1,%sp@ <== NOT EXECUTED
43b62: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43b64: 42a7 clrl %sp@- <== NOT EXECUTED
43b66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43b68: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43b6a: 4e94 jsr %a4@ <== NOT EXECUTED
pathname, strlen( pathname ), 0x0, &loc, true );
if ( status != 0 ) { /* The file did not exist */
43b6c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43b70: 4a80 tstl %d0 <== NOT EXECUTED
43b72: 6700 fe1e beqw 43992 <open+0x7a> <== NOT EXECUTED
int mode;
int rc;
rtems_libio_t *iop = 0;
int status;
rtems_filesystem_location_info_t loc;
rtems_filesystem_location_info_t *loc_to_free = NULL;
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 c20a pea 5c20a <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 c20a pea 5c20a <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 c20a pea 5c20a <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 6ba8 jsr 46ba8 <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 6ba8 jsr 46ba8 <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 d7c0 moveal 5d7c0 <__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 c842 pea 5c842 <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 d7c0 moveal 5d7c0 <__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 c844 pea 5c844 <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
000451d0 <pipe>:
extern int pipe_create(int filsdes[2]);
int pipe(
int filsdes[2]
)
{
451d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
451d4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if (filsdes == NULL)
451d8: 670c beqs 451e6 <pipe+0x16> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
451da: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
451de: 4e5e unlk %fp <== NOT EXECUTED
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
451e0: 4ef9 0004 bf78 jmp 4bf78 <pipe_create> <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
451e6: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
451ec: 720e moveq #14,%d1 <== NOT EXECUTED
451ee: 2040 moveal %d0,%a0 <== NOT EXECUTED
return pipe_create(filsdes);
}
451f0: 70ff moveq #-1,%d0 <== NOT EXECUTED
451f2: 4e5e unlk %fp <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
451f4: 2081 movel %d1,%a0@ <== NOT EXECUTED
return pipe_create(filsdes);
}
0004bf78 <pipe_create>:
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4bf78: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4bf7c: 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)
4bf80: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
4bf84: 4879 0005 e578 pea 5e578 <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4bf8a: 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)
4bf8e: 4eb9 0004 d80c jsr 4d80c <rtems_mkdir> <== NOT EXECUTED
4bf94: 508f addql #8,%sp <== NOT EXECUTED
4bf96: 4a80 tstl %d0 <== NOT EXECUTED
4bf98: 670c beqs 4bfa6 <pipe_create+0x2e> <== NOT EXECUTED
return -1;
4bf9a: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4bf9c: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4bfa2: 4e5e unlk %fp <== NOT EXECUTED
4bfa4: 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);
4bfa6: 45ee fff1 lea %fp@(-15),%a2 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4bfaa: 3039 0006 002c movew 6002c <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);
4bfb0: 24bc 2f74 6d70 movel #796159344,%a2@ <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4bfb6: 2200 movel %d0,%d1 <== NOT EXECUTED
4bfb8: 5281 addql #1,%d1 <== NOT EXECUTED
4bfba: 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);
4bfbc: 203c 2f2e 6669 movel #791570025,%d0 <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4bfc2: 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);
4bfc4: 307c 666f moveaw #26223,%a0 <== NOT EXECUTED
4bfc8: 2d40 fff5 movel %d0,%fp@(-11) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4bfcc: 4879 0005 e57d pea 5e57d <_CPU_m68k_BFFFO_table+0x105> <== NOT EXECUTED
4bfd2: 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);
4bfd6: 3d48 fff9 movew %a0,%fp@(-7) <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4bfda: 33c1 0006 002c movew %d1,6002c <rtems_pipe_no> <== NOT EXECUTED
4bfe0: 4eb9 0004 fe84 jsr 4fe84 <sprintf> <== NOT EXECUTED
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
4bfe6: 4878 0180 pea 180 <DBL_MANT_DIG+0x14b> <== NOT EXECUTED
4bfea: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bfec: 4eb9 0004 d538 jsr 4d538 <mkfifo> <== NOT EXECUTED
4bff2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4bff6: 4a80 tstl %d0 <== NOT EXECUTED
4bff8: 6600 009a bnew 4c094 <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);
4bffc: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
4c000: 49f9 0004 4f48 lea 44f48 <open>,%a4 <== NOT EXECUTED
4c006: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c008: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c00a: 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);
4c00c: 2680 movel %d0,%a3@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4c00e: 6d4e blts 4c05e <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]);
4c010: b0b9 0005 ef44 cmpl 5ef44 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4c016: 6442 bccs 4c05a <pipe_create+0xe2> <== NOT EXECUTED
4c018: 2200 movel %d0,%d1 <== NOT EXECUTED
4c01a: ed88 lsll #6,%d0 <== NOT EXECUTED
4c01c: e789 lsll #3,%d1 <== NOT EXECUTED
4c01e: 2079 0006 0720 moveal 60720 <rtems_libio_iops>,%a0 <== NOT EXECUTED
4c024: 9081 subl %d1,%d0 <== NOT EXECUTED
4c026: d1c0 addal %d0,%a0 <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4c028: 70fe moveq #-2,%d0 <== NOT EXECUTED
4c02a: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED
filsdes[1] = open(fifopath, O_WRONLY);
4c02e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c032: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c034: 4e94 jsr %a4@ <== NOT EXECUTED
if (filsdes[1] < 0) {
4c036: 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);
4c038: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
if (filsdes[1] < 0) {
4c03c: 6d36 blts 4c074 <pipe_create+0xfc> <== NOT EXECUTED
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c03e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
int pipe_create(
int filsdes[2]
)
{
rtems_libio_t *iop;
int err = 0;
4c040: 99cc subal %a4,%a4 <== NOT EXECUTED
if (filsdes[1] < 0) {
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4c042: 4eb9 0004 7068 jsr 47068 <unlink> <== NOT EXECUTED
4c048: 588f addql #4,%sp <== NOT EXECUTED
}
if(err != 0)
4c04a: 4a8c tstl %a4 <== NOT EXECUTED
4c04c: 6658 bnes 4c0a6 <pipe_create+0x12e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(err);
return 0;
4c04e: 4280 clrl %d0 <== NOT EXECUTED
}
4c050: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c056: 4e5e unlk %fp <== NOT EXECUTED
4c058: 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]);
4c05a: 91c8 subal %a0,%a0 <== NOT EXECUTED
4c05c: 60ca bras 4c028 <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;
4c05e: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
4c064: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c066: 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);
4c068: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c06a: 4eb9 0004 7068 jsr 47068 <unlink> <== NOT EXECUTED
4c070: 588f addql #4,%sp <== NOT EXECUTED
4c072: 60d6 bras 4c04a <pipe_create+0xd2> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
filsdes[1] = open(fifopath, O_WRONLY);
if (filsdes[1] < 0) {
err = errno;
4c074: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
4c07a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c07c: 2850 moveal %a0@,%a4 <== NOT EXECUTED
close(filsdes[0]);
4c07e: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4c080: 4eb9 0004 3bec jsr 43bec <close> <== NOT EXECUTED
4c086: 588f addql #4,%sp <== NOT EXECUTED
}
unlink(fifopath);
4c088: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c08a: 4eb9 0004 7068 jsr 47068 <unlink> <== NOT EXECUTED
4c090: 588f addql #4,%sp <== NOT EXECUTED
4c092: 60b6 bras 4c04a <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){
4c094: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
return -1;
4c09a: 70ff moveq #-1,%d0 <== NOT EXECUTED
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
return 0;
}
4c09c: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c0a2: 4e5e unlk %fp <== NOT EXECUTED
4c0a4: 4e75 rts <== NOT EXECUTED
close(filsdes[0]);
}
unlink(fifopath);
}
if(err != 0)
rtems_set_errno_and_return_minus_one(err);
4c0a6: 4eb9 0004 f160 jsr 4f160 <__errno> <== NOT EXECUTED
4c0ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c0ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c0b0: 208c movel %a4,%a0@ <== NOT EXECUTED
return 0;
}
4c0b2: 4cee 1c00 ffe4 moveml %fp@(-28),%a2-%a4 <== NOT EXECUTED
4c0b8: 4e5e unlk %fp <== NOT EXECUTED
0004d622 <pipe_ioctl>:
pipe_control_t *pipe,
uint32_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4d622: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (cmd == FIONREAD) {
4d626: 203c 4004 667f movel #1074030207,%d0 <== NOT EXECUTED
4d62c: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED
4d630: 6706 beqs 4d638 <pipe_ioctl+0x16> <== NOT EXECUTED
*(unsigned int *)buffer = pipe->Length;
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
4d632: 70ea moveq #-22,%d0 <== NOT EXECUTED
}
4d634: 4e5e unlk %fp <== NOT EXECUTED
4d636: 4e75 rts <== NOT EXECUTED
void *buffer,
rtems_libio_t *iop
)
{
if (cmd == FIONREAD) {
if (buffer == NULL)
4d638: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
4d63c: 6606 bnes 4d644 <pipe_ioctl+0x22> <== NOT EXECUTED
return -EFAULT;
4d63e: 70f2 moveq #-14,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d640: 4e5e unlk %fp <== NOT EXECUTED
4d642: 4e75 rts <== NOT EXECUTED
{
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
if (! PIPE_LOCK(pipe))
4d644: 42a7 clrl %sp@- <== NOT EXECUTED
4d646: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d64a: 42a7 clrl %sp@- <== NOT EXECUTED
4d64c: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
4d650: 4eb9 0004 8730 jsr 48730 <rtems_semaphore_obtain> <== NOT EXECUTED
4d656: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d65a: 4a80 tstl %d0 <== NOT EXECUTED
4d65c: 6706 beqs 4d664 <pipe_ioctl+0x42> <== NOT EXECUTED
return -EINTR;
4d65e: 70fc moveq #-4,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4d660: 4e5e unlk %fp <== NOT EXECUTED
4d662: 4e75 rts <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
4d664: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4d668: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
4d66c: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d670: 2f28 0028 movel %a0@(40),%sp@- <== NOT EXECUTED
4d674: 4eb9 0004 8870 jsr 48870 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
4d67a: 588f addql #4,%sp <== NOT EXECUTED
4d67c: 4280 clrl %d0 <== NOT EXECUTED
}
return -EINVAL;
}
4d67e: 4e5e unlk %fp <== NOT EXECUTED
0004d682 <pipe_lseek>:
rtems_libio_t *iop
)
{
/* Seek on pipe is not supported */
return -ESPIPE;
}
4d682: 70e3 moveq #-29,%d0 <== NOT EXECUTED
pipe_control_t *pipe,
off_t offset,
int whence,
rtems_libio_t *iop
)
{
4d684: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Seek on pipe is not supported */
return -ESPIPE;
}
4d688: 4e5e unlk %fp <== NOT EXECUTED
0004d240 <pipe_read>:
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d240: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
4d244: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d248: 42a7 clrl %sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d24a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d24e: 47f9 0004 8730 lea 48730 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
4d254: 42a7 clrl %sp@- <== NOT EXECUTED
4d256: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d25a: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
4d25e: 2a6e 0014 moveal %fp@(20),%a5 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4d262: 4e93 jsr %a3@ <== NOT EXECUTED
4d264: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d268: 4a80 tstl %d0 <== NOT EXECUTED
4d26a: 6600 00aa bnew 4d316 <pipe_read+0xd6> <== NOT EXECUTED
return -EINTR;
while (read < count) {
4d26e: 4a84 tstl %d4 <== NOT EXECUTED
4d270: 6700 01a8 beqw 4d41a <pipe_read+0x1da> <== NOT EXECUTED
4d274: 4285 clrl %d5 <== NOT EXECUTED
4d276: 4283 clrl %d3 <== NOT EXECUTED
4d278: 49f9 0004 8870 lea 48870 <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))
4d27e: 243c 0004 e3e4 movel #320484,%d2 <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4d284: 2e3c 0004 e36c movel #320364,%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);
4d28a: 2c3c 0005 0828 movel #329768,%d6 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
4d290: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4d294: 6600 008c bnew 4d322 <pipe_read+0xe2> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
4d298: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4d29c: 6700 0106 beqw 4d3a4 <pipe_read+0x164> <== NOT EXECUTED
goto out_locked;
if (LIBIO_NODELAY(iop)) {
4d2a0: 7001 moveq #1,%d0 <== NOT EXECUTED
4d2a2: c0ad 0014 andl %a5@(20),%d0 <== NOT EXECUTED
4d2a6: 6600 010c bnew 4d3b4 <pipe_read+0x174> <== NOT EXECUTED
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
PIPE_UNLOCK(pipe);
4d2aa: 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 ++;
4d2ae: 52aa 0018 addql #1,%a2@(24) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d2b2: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4d2b4: 2042 moveal %d2,%a0 <== NOT EXECUTED
4d2b6: 42a7 clrl %sp@- <== NOT EXECUTED
4d2b8: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d2bc: 4e90 jsr %a0@ <== NOT EXECUTED
4d2be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d2c2: 4a80 tstl %d0 <== NOT EXECUTED
4d2c4: 663a bnes 4d300 <pipe_read+0xc0> <== NOT EXECUTED
4d2c6: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d2ca: 42a7 clrl %sp@- <== NOT EXECUTED
4d2cc: 42a7 clrl %sp@- <== NOT EXECUTED
4d2ce: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d2d2: 4e93 jsr %a3@ <== NOT EXECUTED
4d2d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d2d8: 4a80 tstl %d0 <== NOT EXECUTED
4d2da: 6600 00ea bnew 4d3c6 <pipe_read+0x186> <== NOT EXECUTED
/* WARN waitingReaders not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingReaders --;
4d2de: 53aa 0018 subql #1,%a2@(24) <== NOT EXECUTED
if (ret != 0)
4d2e2: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
4d2e6: 67a8 beqs 4d290 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d2e8: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d2ec: 4e94 jsr %a4@ <== NOT EXECUTED
4d2ee: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
if (read > 0)
4d2f0: 4a83 tstl %d3 <== NOT EXECUTED
4d2f2: 6f14 bles 4d308 <pipe_read+0xc8> <== NOT EXECUTED
4d2f4: 2003 movel %d3,%d0 <== NOT EXECUTED
return read;
return ret;
}
4d2f6: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d2fc: 4e5e unlk %fp <== NOT EXECUTED
4d2fe: 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;
4d300: 70fc moveq #-4,%d0 <== NOT EXECUTED
4d302: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
4d306: 60c2 bras 4d2ca <pipe_read+0x8a> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
return read;
return ret;
4d308: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
}
4d30c: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d312: 4e5e unlk %fp <== NOT EXECUTED
4d314: 4e75 rts <== NOT EXECUTED
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d316: 70fc moveq #-4,%d0 <== NOT EXECUTED
out_nolock:
if (read > 0)
return read;
return ret;
}
4d318: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d31e: 4e5e unlk %fp <== NOT EXECUTED
4d320: 4e75 rts <== NOT EXECUTED
if (ret != 0)
goto out_locked;
}
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
4d322: 2004 movel %d4,%d0 <== NOT EXECUTED
4d324: 9085 subl %d5,%d0 <== NOT EXECUTED
4d326: b081 cmpl %d1,%d0 <== NOT EXECUTED
4d328: 6402 bccs 4d32c <pipe_read+0xec> <== NOT EXECUTED
4d32a: 2200 movel %d0,%d1 <== NOT EXECUTED
chunk1 = pipe->Size - pipe->Start;
4d32c: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
4d330: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
4d334: 91c0 subal %d0,%a0 <== NOT EXECUTED
if (chunk > chunk1) {
4d336: b1c1 cmpal %d1,%a0 <== NOT EXECUTED
4d338: 6d00 009c bltw 4d3d6 <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);
4d33c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d33e: d092 addl %a2@,%d0 <== NOT EXECUTED
4d340: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d342: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d346: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d348: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED
4d34c: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d350: 4e91 jsr %a1@ <== NOT EXECUTED
4d352: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d356: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Start += chunk;
4d35a: 2041 moveal %d1,%a0 <== NOT EXECUTED
4d35c: d1ea 0008 addal %a2@(8),%a0 <== NOT EXECUTED
pipe->Start %= pipe->Size;
4d360: 2008 movel %a0,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d362: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED
4d366: 93c1 subal %d1,%a1 <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d368: 4c6a 0005 0004 remul %a2@(4),%d5,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4d36e: 2549 000c movel %a1,%a2@(12) <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4d372: 2545 0008 movel %d5,%a2@(8) <== NOT EXECUTED
pipe->Length -= chunk;
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
4d376: 4a89 tstl %a1 <== NOT EXECUTED
4d378: 6604 bnes 4d37e <pipe_read+0x13e> <== NOT EXECUTED
pipe->Start = 0;
4d37a: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
if (pipe->waitingWriters > 0)
4d37e: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED
4d382: 6716 beqs 4d39a <pipe_read+0x15a> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4d384: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d388: 2047 moveal %d7,%a0 <== NOT EXECUTED
4d38a: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d38e: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d392: 4e90 jsr %a0@ <== NOT EXECUTED
4d394: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d398: 508f addql #8,%sp <== NOT EXECUTED
read += chunk;
4d39a: d681 addl %d1,%d3 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d39c: 2a03 movel %d3,%d5 <== NOT EXECUTED
4d39e: b883 cmpl %d3,%d4 <== NOT EXECUTED
4d3a0: 6200 feee bhiw 4d290 <pipe_read+0x50> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d3a4: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4d3a8: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d3ac: 4e94 jsr %a4@ <== NOT EXECUTED
4d3ae: 588f addql #4,%sp <== NOT EXECUTED
4d3b0: 6000 ff3e braw 4d2f0 <pipe_read+0xb0> <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d3b4: 70f5 moveq #-11,%d0 <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d3b6: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
/* Not an error */
if (pipe->Writers == 0)
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4d3ba: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d3be: 4e94 jsr %a4@ <== NOT EXECUTED
4d3c0: 588f addql #4,%sp <== NOT EXECUTED
4d3c2: 6000 ff2c braw 4d2f0 <pipe_read+0xb0> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingReaders not restored! */
ret = -EINTR;
4d3c6: 7afc moveq #-4,%d5 <== NOT EXECUTED
4d3c8: 2d45 fff8 movel %d5,%fp@(-8) <== NOT EXECUTED
out_locked:
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
4d3cc: 4a83 tstl %d3 <== NOT EXECUTED
4d3ce: 6e00 ff24 bgtw 4d2f4 <pipe_read+0xb4> <== NOT EXECUTED
4d3d2: 6000 ff34 braw 4d308 <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);
4d3d6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d3d8: d092 addl %a2@,%d0 <== NOT EXECUTED
4d3da: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d3de: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d3e0: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED
4d3e4: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d3e6: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d3ea: 2d48 fff0 movel %a0,%fp@(-16) <== NOT EXECUTED
4d3ee: 4e91 jsr %a1@ <== NOT EXECUTED
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
4d3f0: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d3f4: 2001 movel %d1,%d0 <== NOT EXECUTED
4d3f6: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d3f8: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
4d3fc: 9088 subl %a0,%d0 <== NOT EXECUTED
4d3fe: da88 addl %a0,%d5 <== NOT EXECUTED
4d400: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d402: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4d404: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d408: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED
4d40c: 4e91 jsr %a1@ <== NOT EXECUTED
4d40e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d412: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4d416: 6000 ff42 braw 4d35a <pipe_read+0x11a> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d41a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d41e: 49f9 0004 8870 lea 48870 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4d424: 4283 clrl %d3 <== NOT EXECUTED
4d426: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4d42a: 4e94 jsr %a4@ <== NOT EXECUTED
4d42c: 588f addql #4,%sp <== NOT EXECUTED
4d42e: 6000 fec0 braw 4d2f0 <pipe_read+0xb0> <== NOT EXECUTED
0004cd1a <pipe_release>:
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cd1a: 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);
4cd1e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4cd22: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
4cd26: 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);
4cd2a: 7406 moveq #6,%d2 <== NOT EXECUTED
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
pipe_control_t *pipe = *pipep;
4cd2c: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4cd2e: c4a8 0014 andl %a0@(20),%d2 <== NOT EXECUTED
if (mode & LIBIO_FLAGS_READ)
4cd32: 0802 0001 btst #1,%d2 <== NOT EXECUTED
4cd36: 6704 beqs 4cd3c <pipe_release+0x22> <== NOT EXECUTED
pipe->Readers --;
4cd38: 53aa 0010 subql #1,%a2@(16) <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
4cd3c: 44c2 movew %d2,%ccr <== NOT EXECUTED
4cd3e: 6604 bnes 4cd44 <pipe_release+0x2a> <== NOT EXECUTED
pipe->Writers --;
4cd40: 53aa 0014 subql #1,%a2@(20) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4cd44: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4cd48: 4eb9 0004 8870 jsr 48870 <rtems_semaphore_release> <== NOT EXECUTED
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cd4e: 588f addql #4,%sp <== NOT EXECUTED
4cd50: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4cd54: 672a beqs 4cd80 <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)
4cd56: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4cd5a: 6616 bnes 4cd72 <pipe_release+0x58> <== NOT EXECUTED
4cd5c: 7002 moveq #2,%d0 <== NOT EXECUTED
4cd5e: b082 cmpl %d2,%d0 <== NOT EXECUTED
4cd60: 6710 beqs 4cd72 <pipe_release+0x58> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4cd62: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cd66: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4cd6a: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4cd70: 508f addql #8,%sp <== NOT EXECUTED
pipe_unlock();
4cd72: 4eba ff90 jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cd76: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED
4cd7c: 4e5e unlk %fp <== NOT EXECUTED
4cd7e: 4e75 rts <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
pipe->Writers --;
PIPE_UNLOCK(pipe);
if (pipe->Readers == 0 && pipe->Writers == 0) {
4cd80: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4cd84: 6724 beqs 4cdaa <pipe_release+0x90> <== NOT EXECUTED
delfile = TRUE;
#endif
pipe_free(pipe);
*pipep = NULL;
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
4cd86: 7004 moveq #4,%d0 <== NOT EXECUTED
4cd88: b082 cmpl %d2,%d0 <== NOT EXECUTED
4cd8a: 67e6 beqs 4cd72 <pipe_release+0x58> <== NOT EXECUTED
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
4cd8c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cd90: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4cd94: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4cd9a: 508f addql #8,%sp <== NOT EXECUTED
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
PIPE_WAKEUPREADERS(pipe);
pipe_unlock();
4cd9c: 4eba ff66 jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cda0: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED
4cda6: 4e5e unlk %fp <== NOT EXECUTED
4cda8: 4e75 rts <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cdaa: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4cdae: 4bf9 0004 e2cc lea 4e2cc <rtems_barrier_delete>,%a5 <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
4cdb4: 49f9 0004 4a04 lea 44a04 <free>,%a4 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
rtems_barrier_delete(pipe->readBarrier);
4cdba: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4cdbc: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4cdc0: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4cdc2: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4cdc6: 4eb9 0004 8658 jsr 48658 <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4cdcc: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4cdce: 4e94 jsr %a4@ <== NOT EXECUTED
free(pipe);
4cdd0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cdd2: 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;
4cdd4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4cdd8: 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();
4cdda: 4eba ff28 jsr %pc@(4cd04 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4cdde: 4cee 3c04 ffe8 moveml %fp@(-24),%d2/%a2-%a5 <== NOT EXECUTED
4cde4: 4e5e unlk %fp <== NOT EXECUTED
0004cd04 <pipe_unlock>:
return -ENOMEM;
}
}
static void pipe_unlock(void)
{
4cd04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_release(pipe_semaphore);
4cd08: 2f39 0006 0f3c movel 60f3c <pipe_semaphore>,%sp@- <== NOT EXECUTED
4cd0e: 4eb9 0004 8870 jsr 48870 <rtems_semaphore_release> <== NOT EXECUTED
4cd14: 588f addql #4,%sp <== NOT EXECUTED
#ifdef RTEMS_DEBUG
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
}
#endif
}
4cd16: 4e5e unlk %fp <== NOT EXECUTED
0004d432 <pipe_write>:
pipe_control_t *pipe,
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4d432: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
4d436: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4d43a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4d43e: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
4d442: 660c bnes 4d450 <pipe_write+0x1e> <== NOT EXECUTED
return 0;
4d444: 4280 clrl %d0 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d446: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d44c: 4e5e unlk %fp <== NOT EXECUTED
4d44e: 4e75 rts <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
4d450: 42a7 clrl %sp@- <== NOT EXECUTED
4d452: 47f9 0004 8730 lea 48730 <rtems_semaphore_obtain>,%a3 <== NOT EXECUTED
4d458: 42a7 clrl %sp@- <== NOT EXECUTED
4d45a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d45e: 4e93 jsr %a3@ <== NOT EXECUTED
4d460: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d464: 4a80 tstl %d0 <== NOT EXECUTED
4d466: 6600 00aa bnew 4d512 <pipe_write+0xe0> <== NOT EXECUTED
return -EINTR;
if (pipe->Readers == 0) {
4d46a: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d46e: 6700 00e2 beqw 4d552 <pipe_write+0x120> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4d472: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4d476: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d478: 6500 00bc bcsw 4d536 <pipe_write+0x104> <== NOT EXECUTED
4d47c: 2602 movel %d2,%d3 <== NOT EXECUTED
4d47e: 4285 clrl %d5 <== NOT EXECUTED
4d480: 4284 clrl %d4 <== NOT EXECUTED
4d482: 49f9 0004 8870 lea 48870 <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))
4d488: 4bf9 0004 e3e4 lea 4e3e4 <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);
4d48e: 2c3c 0005 0828 movel #329768,%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) {
4d494: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4d498: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d49a: 91c1 subal %d1,%a0 <== NOT EXECUTED
4d49c: b688 cmpl %a0,%d3 <== NOT EXECUTED
4d49e: 6300 00c6 blsw 4d566 <pipe_write+0x134> <== NOT EXECUTED
if (LIBIO_NODELAY(iop)) {
4d4a2: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4d4a6: 7001 moveq #1,%d0 <== NOT EXECUTED
4d4a8: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4d4ac: 6600 0144 bnew 4d5f2 <pipe_write+0x1c0> <== NOT EXECUTED
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
4d4b0: 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 ++;
4d4b4: 52aa 001c addql #1,%a2@(28) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4d4b8: 4e94 jsr %a4@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4d4ba: 42a7 clrl %sp@- <== NOT EXECUTED
4d4bc: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4d4c0: 4e95 jsr %a5@ <== NOT EXECUTED
4d4c2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d4c6: 4a80 tstl %d0 <== NOT EXECUTED
4d4c8: 662a bnes 4d4f4 <pipe_write+0xc2> <== NOT EXECUTED
4d4ca: 4287 clrl %d7 <== NOT EXECUTED
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4d4cc: 42a7 clrl %sp@- <== NOT EXECUTED
4d4ce: 42a7 clrl %sp@- <== NOT EXECUTED
4d4d0: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d4d4: 4e93 jsr %a3@ <== NOT EXECUTED
4d4d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d4da: 4a80 tstl %d0 <== NOT EXECUTED
4d4dc: 6600 010e bnew 4d5ec <pipe_write+0x1ba> <== NOT EXECUTED
/* WARN waitingWriters not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingWriters --;
4d4e0: 53aa 001c subql #1,%a2@(28) <== NOT EXECUTED
if (ret != 0)
4d4e4: 4a87 tstl %d7 <== NOT EXECUTED
4d4e6: 6612 bnes 4d4fa <pipe_write+0xc8> <== NOT EXECUTED
goto out_locked;
if (pipe->Readers == 0) {
4d4e8: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4d4ec: 6730 beqs 4d51e <pipe_write+0xec> <== NOT EXECUTED
4d4ee: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4d4f2: 60a0 bras 4d494 <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;
4d4f4: 7efc moveq #-4,%d7 <== NOT EXECUTED
4d4f6: 60d4 bras 4d4cc <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) {
4d4f8: 4287 clrl %d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d4fa: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d4fe: 4e94 jsr %a4@ <== NOT EXECUTED
4d500: 588f addql #4,%sp <== NOT EXECUTED
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4d502: 4a84 tstl %d4 <== NOT EXECUTED
4d504: 6f24 bles 4d52a <pipe_write+0xf8> <== NOT EXECUTED
4d506: 2004 movel %d4,%d0 <== NOT EXECUTED
return written;
return ret;
}
4d508: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d50e: 4e5e unlk %fp <== NOT EXECUTED
4d510: 4e75 rts <== NOT EXECUTED
/* Write nothing */
if (count == 0)
return 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4d512: 70fc moveq #-4,%d0 <== NOT EXECUTED
#endif
if (written > 0)
return written;
return ret;
}
4d514: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d51a: 4e5e unlk %fp <== NOT EXECUTED
4d51c: 4e75 rts <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d51e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe->waitingWriters --;
if (ret != 0)
goto out_locked;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d522: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d524: 4e94 jsr %a4@ <== NOT EXECUTED
4d526: 588f addql #4,%sp <== NOT EXECUTED
4d528: 60d8 bras 4d502 <pipe_write+0xd0> <== NOT EXECUTED
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
return written;
return ret;
4d52a: 2007 movel %d7,%d0 <== NOT EXECUTED
}
4d52c: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d532: 4e5e unlk %fp <== NOT EXECUTED
4d534: 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;
4d536: 7601 moveq #1,%d3 <== NOT EXECUTED
4d538: 4285 clrl %d5 <== NOT EXECUTED
4d53a: 4284 clrl %d4 <== NOT EXECUTED
4d53c: 49f9 0004 8870 lea 48870 <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))
4d542: 4bf9 0004 e3e4 lea 4e3e4 <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);
4d548: 2c3c 0005 0828 movel #329768,%d6 <== NOT EXECUTED
4d54e: 6000 ff44 braw 4d494 <pipe_write+0x62> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d552: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4d556: 49f9 0004 8870 lea 48870 <rtems_semaphore_release>,%a4 <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
if (pipe->Readers == 0) {
ret = -EPIPE;
4d55c: 7ee0 moveq #-32,%d7 <== NOT EXECUTED
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
int chunk, chunk1, written = 0, ret = 0;
4d55e: 4284 clrl %d4 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d560: 4e94 jsr %a4@ <== NOT EXECUTED
4d562: 588f addql #4,%sp <== NOT EXECUTED
4d564: 609c bras 4d502 <pipe_write+0xd0> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
4d566: 2242 moveal %d2,%a1 <== NOT EXECUTED
4d568: 93c5 subal %d5,%a1 <== NOT EXECUTED
4d56a: 2608 movel %a0,%d3 <== NOT EXECUTED
4d56c: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
4d56e: 6402 bccs 4d572 <pipe_write+0x140> <== NOT EXECUTED
4d570: 2609 movel %a1,%d3 <== NOT EXECUTED
chunk1 = pipe->Size - PIPE_WSTART(pipe);
4d572: 2241 moveal %d1,%a1 <== NOT EXECUTED
4d574: d3ea 0008 addal %a2@(8),%a1 <== NOT EXECUTED
4d578: 2209 movel %a1,%d1 <== NOT EXECUTED
4d57a: 4c40 1007 remul %d0,%d7,%d1 <== NOT EXECUTED
4d57e: 2200 movel %d0,%d1 <== NOT EXECUTED
4d580: 2047 moveal %d7,%a0 <== NOT EXECUTED
4d582: 9287 subl %d7,%d1 <== NOT EXECUTED
if (chunk > chunk1) {
4d584: b283 cmpl %d3,%d1 <== NOT EXECUTED
4d586: 6c78 bges 4d600 <pipe_write+0x1ce> <== NOT EXECUTED
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4d588: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d58c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4d58e: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED
4d592: d1d2 addal %a2@,%a0 <== NOT EXECUTED
4d594: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
4d598: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d59a: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d59c: 4e90 jsr %a0@ <== NOT EXECUTED
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4d59e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4d5a2: 2003 movel %d3,%d0 <== NOT EXECUTED
4d5a4: 9081 subl %d1,%d0 <== NOT EXECUTED
4d5a6: da81 addl %d1,%d5 <== NOT EXECUTED
4d5a8: 2246 moveal %d6,%a1 <== NOT EXECUTED
4d5aa: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4d5ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d5b0: 4870 5800 pea %a0@(00000000,%d5:l) <== NOT EXECUTED
4d5b4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4d5b6: 4e91 jsr %a1@ <== NOT EXECUTED
4d5b8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
4d5bc: d7aa 000c addl %d3,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d5c0: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
4d5c4: 6614 bnes 4d5da <pipe_write+0x1a8> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
written += chunk;
4d5c6: 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) {
4d5c8: 2a04 movel %d4,%d5 <== NOT EXECUTED
4d5ca: b882 cmpl %d2,%d4 <== NOT EXECUTED
4d5cc: 6400 ff2a bccw 4d4f8 <pipe_write+0xc6> <== NOT EXECUTED
4d5d0: 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;
4d5d4: 7601 moveq #1,%d3 <== NOT EXECUTED
4d5d6: 6000 febc braw 4d494 <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);
4d5da: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d5de: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4d5e2: 4eb9 0004 e36c jsr 4e36c <rtems_barrier_release> <== NOT EXECUTED
4d5e8: 508f addql #8,%sp <== NOT EXECUTED
4d5ea: 60da bras 4d5c6 <pipe_write+0x194> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingWriters not restored! */
ret = -EINTR;
4d5ec: 7efc moveq #-4,%d7 <== NOT EXECUTED
4d5ee: 6000 ff12 braw 4d502 <pipe_write+0xd0> <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5f2: 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;
4d5f6: 7ef5 moveq #-11,%d7 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4d5f8: 4e94 jsr %a4@ <== NOT EXECUTED
4d5fa: 588f addql #4,%sp <== NOT EXECUTED
4d5fc: 6000 ff04 braw 4d502 <pipe_write+0xd0> <== 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);
4d600: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4d604: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d606: 4871 5800 pea %a1@(00000000,%d5:l) <== NOT EXECUTED
4d60a: d1d2 addal %a2@,%a0 <== NOT EXECUTED
4d60c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d60e: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d610: 4e90 jsr %a0@ <== NOT EXECUTED
4d612: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Length += chunk;
4d616: d7aa 000c addl %d3,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4d61a: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
4d61e: 67a6 beqs 4d5c6 <pipe_write+0x194> <== NOT EXECUTED
4d620: 60b8 bras 4d5da <pipe_write+0x1a8> <== 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 5134 addql #1,65134 <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
00044ef0 <printk_plugin>:
int printk_plugin(
void *ignored __attribute__((unused)),
const char *format,
...
)
{
44ef0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
va_list arg_pointer;
va_start (arg_pointer, format);
vprintk( format, arg_pointer );
44ef4: 486e 0010 pea %fp@(16) <== NOT EXECUTED
44ef8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44efc: 4eb9 0004 6d0c jsr 46d0c <vprintk> <== NOT EXECUTED
va_end(arg_pointer); /* clean up when done */
return 0;
}
44f02: 4280 clrl %d0 <== NOT EXECUTED
44f04: 4e5e unlk %fp <== 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 d900 moveal 5d900 <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 d900 moveal 5d900 <BSP_output_char>,%a1 <== NOT EXECUTED
43dc8: 4ed1 jmp %a1@ <== NOT EXECUTED
...
0005b728 <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
5b728: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5b72c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5b730: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
5b734: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
5b738: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5b73c: b0b9 0005 d524 cmpl 5d524 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
5b742: 646a bccs 5b7ae <read+0x86> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
5b744: 2400 movel %d0,%d2 <== NOT EXECUTED
5b746: ed88 lsll #6,%d0 <== NOT EXECUTED
5b748: e78a lsll #3,%d2 <== NOT EXECUTED
5b74a: 2479 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5b750: 9082 subl %d2,%d0 <== NOT EXECUTED
5b752: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
5b754: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
5b758: 0800 0008 btst #8,%d0 <== NOT EXECUTED
5b75c: 6750 beqs 5b7ae <read+0x86> <== NOT EXECUTED
rtems_libio_check_buffer( buffer );
5b75e: 4a81 tstl %d1 <== NOT EXECUTED
5b760: 6764 beqs 5b7c6 <read+0x9e> <== NOT EXECUTED
rtems_libio_check_count( count );
5b762: 4a88 tstl %a0 <== NOT EXECUTED
5b764: 673c beqs 5b7a2 <read+0x7a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
5b766: 0800 0001 btst #1,%d0 <== NOT EXECUTED
5b76a: 675a beqs 5b7c6 <read+0x9e> <== NOT EXECUTED
/*
* Now process the read().
*/
rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
5b76c: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
5b770: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5b772: 2f01 movel %d1,%sp@- <== NOT EXECUTED
5b774: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b776: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
5b77a: 4e90 jsr %a0@ <== NOT EXECUTED
if ( rc > 0 )
5b77c: 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 );
5b780: 2200 movel %d0,%d1 <== NOT EXECUTED
if ( rc > 0 )
5b782: 6f14 bles 5b798 <read+0x70> <== NOT EXECUTED
iop->offset += rc;
5b784: 2401 movel %d1,%d2 <== NOT EXECUTED
5b786: 5bc1 smi %d1 <== NOT EXECUTED
5b788: 49c1 extbl %d1 <== NOT EXECUTED
5b78a: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED
5b78e: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
5b792: d781 addxl %d1,%d3 <== NOT EXECUTED
5b794: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5b798: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5b79e: 4e5e unlk %fp <== NOT EXECUTED
5b7a0: 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 );
5b7a2: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5b7a4: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5b7aa: 4e5e unlk %fp <== NOT EXECUTED
5b7ac: 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 );
5b7ae: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
5b7b4: 7409 moveq #9,%d2 <== NOT EXECUTED
5b7b6: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b7b8: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b7ba: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5b7bc: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5b7c2: 4e5e unlk %fp <== NOT EXECUTED
5b7c4: 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 );
5b7c6: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
5b7cc: 7216 moveq #22,%d1 <== NOT EXECUTED
5b7ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b7d0: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5b7d2: 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 );
5b7d8: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5b7da: 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 2764 jsr 52764 <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 0c90 jsr 50c90 <__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 0c90 jsr 50c90 <__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 e2f4 cmpl 5e2f4 <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 0005 fab8 moveal 5fab8 <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 e8e8 jsr 4e8e8 <__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 e8e8 jsr 4e8e8 <__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
...
0005b840 <realloc>:
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
5b840: 7003 moveq #3,%d0
void *realloc(
void *ptr,
size_t size
)
{
5b842: 4e56 fff0 linkw %fp,#-16
uintptr_t old_size;
char *new_area;
MSBUMP(realloc_calls, 1);
5b846: 52b9 0005 ed10 addql #1,5ed10 <rtems_malloc_statistics+0x10>
void *realloc(
void *ptr,
size_t size
)
{
5b84c: 48d7 001c moveml %d2-%d4,%sp@
5b850: 242e 0008 movel %fp@(8),%d2
5b854: 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())) {
5b858: b0b9 0005 efa0 cmpl 5efa0 <_System_state_Current>,%d0
5b85e: 677a beqs 5b8da <realloc+0x9a> <== ALWAYS TAKEN
}
/*
* Continue with realloc().
*/
if ( !ptr )
5b860: 4a82 tstl %d2
5b862: 6700 00de beqw 5b942 <realloc+0x102>
return malloc( size );
if ( !size ) {
5b866: 4a83 tstl %d3 <== NOT EXECUTED
5b868: 673e beqs 5b8a8 <realloc+0x68> <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
5b86a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5b86e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b870: 2f39 0005 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
5b876: 4eb9 0005 ba10 jsr 5ba10 <_Protected_heap_Get_block_size> <== NOT EXECUTED
5b87c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5b880: 4a00 tstb %d0 <== NOT EXECUTED
5b882: 673c beqs 5b8c0 <realloc+0x80> <== NOT EXECUTED
}
/*
* Now resize it.
*/
if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
5b884: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b886: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b888: 2f39 0005 d530 movel 5d530 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
5b88e: 4eb9 0005 ba4c jsr 5ba4c <_Protected_heap_Resize_block> <== NOT EXECUTED
5b894: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5b898: 4a00 tstb %d0 <== NOT EXECUTED
5b89a: 6754 beqs 5b8f0 <realloc+0xb0> <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5b89c: 2002 movel %d2,%d0 <== NOT EXECUTED
5b89e: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5b8a4: 4e5e unlk %fp <== NOT EXECUTED
5b8a6: 4e75 rts <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5b8a8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (void *) 0;
5b8aa: 4282 clrl %d2 <== NOT EXECUTED
*/
if ( !ptr )
return malloc( size );
if ( !size ) {
free( ptr );
5b8ac: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return (void *) 0;
5b8b2: 588f addql #4,%sp <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5b8b4: 2002 movel %d2,%d0 <== NOT EXECUTED
5b8b6: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5b8bc: 4e5e unlk %fp <== NOT EXECUTED
5b8be: 4e75 rts <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5b8c0: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
return (void *) 0;
5b8c6: 4282 clrl %d2 <== NOT EXECUTED
free( ptr );
return (void *) 0;
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
errno = EINVAL;
5b8c8: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b8ca: 7016 moveq #22,%d0 <== NOT EXECUTED
5b8cc: 2080 movel %d0,%a0@ <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5b8ce: 2002 movel %d2,%d0 <== NOT EXECUTED
5b8d0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5b8d6: 4e5e unlk %fp <== NOT EXECUTED
5b8d8: 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)
5b8da: 2039 0005 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
5b8e0: 6752 beqs 5b934 <realloc+0xf4> <== ALWAYS TAKEN
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5b8e2: 4282 clrl %d2 <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5b8e4: 2002 movel %d2,%d0 <== NOT EXECUTED
5b8e6: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5b8ec: 4e5e unlk %fp <== NOT EXECUTED
5b8ee: 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 );
5b8f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b8f2: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5b8f8: 588f addql #4,%sp <== NOT EXECUTED
* and the C Standard.
*/
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
5b8fa: 53b9 0005 ed04 subql #1,5ed04 <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 );
5b900: 2800 movel %d0,%d4 <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
5b902: 67de beqs 5b8e2 <realloc+0xa2> <== NOT EXECUTED
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
5b904: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
5b908: b083 cmpl %d3,%d0 <== NOT EXECUTED
5b90a: 6402 bccs 5b90e <realloc+0xce> <== NOT EXECUTED
5b90c: 2600 movel %d0,%d3 <== NOT EXECUTED
5b90e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5b910: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b912: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5b914: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
free( ptr );
5b91a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return new_area;
5b91c: 2404 movel %d4,%d2 <== NOT EXECUTED
if ( !new_area ) {
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
5b91e: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
return new_area;
5b924: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
5b928: 2002 movel %d2,%d0 <== NOT EXECUTED
5b92a: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5b930: 4e5e unlk %fp <== NOT EXECUTED
5b932: 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)
5b934: 4ab9 0005 eff0 tstl 5eff0 <_Per_CPU_Information+0x8>
5b93a: 6700 ff24 beqw 5b860 <realloc+0x20>
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
5b93e: 4282 clrl %d2 <== NOT EXECUTED
5b940: 60a2 bras 5b8e4 <realloc+0xa4> <== NOT EXECUTED
/*
* Continue with realloc().
*/
if ( !ptr )
return malloc( size );
5b942: 2f03 movel %d3,%sp@-
5b944: 4eb9 0004 302c jsr 4302c <malloc>
5b94a: 588f addql #4,%sp
5b94c: 2400 movel %d0,%d2
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
5b94e: 2002 movel %d2,%d0
5b950: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
5b956: 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 0004 f528 lea 4f528 <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 e184 jsr 4e184 <__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 e184 jsr 4e184 <__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
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
0004abf0 <rtems_assoc_local_by_remote>:
uint32_t rtems_assoc_local_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4abf0: 4e56 0000 linkw %fp,#0
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4abf4: 2f2e 000c movel %fp@(12),%sp@-
4abf8: 2f2e 0008 movel %fp@(8),%sp@-
4abfc: 4eb9 0004 acb8 jsr 4acb8 <rtems_assoc_ptr_by_remote>
if (nap)
4ac02: 508f addql #8,%sp
4ac04: 4a80 tstl %d0
4ac06: 670a beqs 4ac12 <rtems_assoc_local_by_remote+0x22><== NEVER TAKEN
return nap->local_value;
4ac08: 2040 moveal %d0,%a0
return 0;
}
4ac0a: 4e5e unlk %fp
{
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
4ac0c: 2028 0004 movel %a0@(4),%d0
return 0;
}
4ac10: 4e75 rts
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
if (nap)
return nap->local_value;
return 0;
4ac12: 4280 clrl %d0 <== NOT EXECUTED
}
4ac14: 4e5e unlk %fp <== NOT EXECUTED
0004d354 <rtems_assoc_local_by_remote_bitfield>:
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4d354: 4e56 ffe8 linkw %fp,#-24
4d358: 48d7 047c moveml %d2-%d6/%a2,%sp@
4d35c: 2c2e 0008 movel %fp@(8),%d6
4d360: 7620 moveq #32,%d3
uint32_t b;
uint32_t local_value = 0;
4d362: 4285 clrl %d5
for (b = 1; b; b <<= 1) {
4d364: 7401 moveq #1,%d2
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4d366: 45f9 0004 abf0 lea 4abf0 <rtems_assoc_local_by_remote>,%a2
uint32_t rtems_assoc_local_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4d36c: 282e 000c movel %fp@(12),%d4
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
if (b & remote_value)
4d370: 2002 movel %d2,%d0
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4d372: 5383 subql #1,%d3
if (b & remote_value)
4d374: c084 andl %d4,%d0
4d376: 6612 bnes 4d38a <rtems_assoc_local_by_remote_bitfield+0x36><== NEVER TAKEN
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4d378: d482 addl %d2,%d2
4d37a: 4a83 tstl %d3
4d37c: 66f2 bnes 4d370 <rtems_assoc_local_by_remote_bitfield+0x1c>
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
}
return local_value;
}
4d37e: 2005 movel %d5,%d0
4d380: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4d386: 4e5e unlk %fp
4d388: 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);
4d38a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4d38c: d482 addl %d2,%d2 <== NOT EXECUTED
if (b & remote_value)
local_value |= rtems_assoc_local_by_remote(ap, b);
4d38e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4d390: 4e92 jsr %a2@ <== NOT EXECUTED
4d392: 508f addql #8,%sp <== NOT EXECUTED
4d394: 8a80 orl %d0,%d5 <== NOT EXECUTED
)
{
uint32_t b;
uint32_t local_value = 0;
for (b = 1; b; b <<= 1) {
4d396: 4a83 tstl %d3 <== NOT EXECUTED
4d398: 66d6 bnes 4d370 <rtems_assoc_local_by_remote_bitfield+0x1c><== NOT EXECUTED
4d39a: 60e2 bras 4d37e <rtems_assoc_local_by_remote_bitfield+0x2a><== NOT EXECUTED
0004d39c <rtems_assoc_name_bad>:
uint32_t bad_value
#else
uint32_t bad_value __attribute((unused))
#endif
)
{
4d39c: 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;
}
4d3a0: 203c 0005 d798 movel #382872,%d0 <== NOT EXECUTED
4d3a6: 4e5e unlk %fp <== NOT EXECUTED
...
0004ac18 <rtems_assoc_name_by_local>:
const char *rtems_assoc_name_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4ac18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ac1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ac1e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
4ac22: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ac24: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4ac28: 4eb9 0004 ac50 jsr 4ac50 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
4ac2e: 508f addql #8,%sp <== NOT EXECUTED
4ac30: 4a80 tstl %d0 <== NOT EXECUTED
4ac32: 670c beqs 4ac40 <rtems_assoc_name_by_local+0x28> <== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(local_value);
}
4ac34: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ac36: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4ac3a: 4e5e unlk %fp <== NOT EXECUTED
4ac3c: 2010 movel %a0@,%d0 <== NOT EXECUTED
4ac3e: 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);
4ac40: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
4ac44: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4ac48: 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);
4ac4a: 4ef9 0004 d39c jmp 4d39c <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 0004 f4f4 lea 4f4f4 <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43560: 4bf9 0004 fab8 lea 4fab8 <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 bbb4 jmp 4bbb4 <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 0004 f4f4 lea 4f4f4 <strcat>,%a3 <== NOT EXECUTED
*buffer = 0;
for (b = 1; b; b <<= 1) {
if (b & value) {
if (*buffer)
strcat(buffer, " ");
43614: 4bf9 0004 fab8 lea 4fab8 <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
...
0004ac50 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
4ac50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ac54: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ac56: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4ac5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ac5c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4ac60: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ac62: 6742 beqs 4aca6 <rtems_assoc_ptr_by_local+0x56> <== NOT EXECUTED
4ac64: 4879 0005 cb42 pea 5cb42 <IMFS_memfile_handlers+0x38> <== NOT EXECUTED
4ac6a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ac6c: 4eb9 0004 e75c jsr 4e75c <strcmp> <== NOT EXECUTED
4ac72: 508f addql #8,%sp <== NOT EXECUTED
4ac74: 4a80 tstl %d0 <== NOT EXECUTED
4ac76: 662a bnes 4aca2 <rtems_assoc_ptr_by_local+0x52> <== NOT EXECUTED
default_ap = ap++;
4ac78: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4ac7c: 4a90 tstl %a0@ <== NOT EXECUTED
4ac7e: 6714 beqs 4ac94 <rtems_assoc_ptr_by_local+0x44> <== NOT EXECUTED
4ac80: 200a movel %a2,%d0 <== NOT EXECUTED
4ac82: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
4ac84: b4aa 0004 cmpl %a2@(4),%d2 <== NOT EXECUTED
4ac88: 670a beqs 4ac94 <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++)
4ac8a: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED
4ac8e: 4a92 tstl %a2@ <== NOT EXECUTED
4ac90: 66f2 bnes 4ac84 <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED
4ac92: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4ac94: 200a movel %a2,%d0 <== NOT EXECUTED
4ac96: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ac9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ac9e: 4e5e unlk %fp <== NOT EXECUTED
4aca0: 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;
4aca2: 4280 clrl %d0 <== NOT EXECUTED
4aca4: 60de bras 4ac84 <rtems_assoc_ptr_by_local+0x34> <== NOT EXECUTED
4aca6: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
return ap;
return default_ap;
}
4aca8: 200a movel %a2,%d0 <== NOT EXECUTED
4acaa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4acae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4acb2: 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 d2c3 pea 5d2c3 <_rodata_start+0x603> <== NOT EXECUTED
4372e: 47f9 0004 f560 lea 4f560 <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
...
0004acb8 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
4acb8: 4e56 0000 linkw %fp,#0
4acbc: 2f0a movel %a2,%sp@-
4acbe: 246e 0008 moveal %fp@(8),%a2
4acc2: 2f02 movel %d2,%sp@-
4acc4: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
4acc8: 2012 movel %a2@,%d0
4acca: 6742 beqs 4ad0e <rtems_assoc_ptr_by_remote+0x56> <== NEVER TAKEN
4accc: 4879 0005 cb42 pea 5cb42 <IMFS_memfile_handlers+0x38>
4acd2: 2f00 movel %d0,%sp@-
4acd4: 4eb9 0004 e75c jsr 4e75c <strcmp>
4acda: 508f addql #8,%sp
4acdc: 4a80 tstl %d0
4acde: 662a bnes 4ad0a <rtems_assoc_ptr_by_remote+0x52> <== ALWAYS TAKEN
default_ap = ap++;
4ace0: 41ea 000c lea %a2@(12),%a0 <== NOT EXECUTED
for ( ; ap->name; ap++)
4ace4: 4a90 tstl %a0@ <== NOT EXECUTED
4ace6: 6714 beqs 4acfc <rtems_assoc_ptr_by_remote+0x44> <== NOT EXECUTED
4ace8: 200a movel %a2,%d0 <== NOT EXECUTED
4acea: 2448 moveal %a0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
4acec: b4aa 0008 cmpl %a2@(8),%d2
4acf0: 670a beqs 4acfc <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++)
4acf2: 45ea 000c lea %a2@(12),%a2
4acf6: 4a92 tstl %a2@
4acf8: 66f2 bnes 4acec <rtems_assoc_ptr_by_remote+0x34> <== ALWAYS TAKEN
4acfa: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4acfc: 200a movel %a2,%d0
4acfe: 242e fff8 movel %fp@(-8),%d2
4ad02: 246e fffc moveal %fp@(-4),%a2
4ad06: 4e5e unlk %fp
4ad08: 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;
4ad0a: 4280 clrl %d0
4ad0c: 60de bras 4acec <rtems_assoc_ptr_by_remote+0x34>
4ad0e: 95ca subal %a2,%a2 <== NOT EXECUTED
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
return ap;
return default_ap;
}
4ad10: 200a movel %a2,%d0 <== NOT EXECUTED
4ad12: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ad16: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ad1a: 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
0004e1d4 <rtems_barrier_create>:
rtems_name name,
rtems_attribute attribute_set,
uint32_t maximum_waiters,
rtems_id *id
)
{
4e1d4: 4e56 ffe8 linkw %fp,#-24
4e1d8: 202e 0010 movel %fp@(16),%d0
4e1dc: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4e1e0: 242e 0008 movel %fp@(8),%d2
4e1e4: 262e 000c movel %fp@(12),%d3
4e1e8: 246e 0014 moveal %fp@(20),%a2
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
4e1ec: 4a82 tstl %d2
4e1ee: 677a beqs 4e26a <rtems_barrier_create+0x96> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
4e1f0: 4a8a tstl %a2
4e1f2: 6700 00cc beqw 4e2c0 <rtems_barrier_create+0xec>
return RTEMS_INVALID_ADDRESS;
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
4e1f6: 0803 0004 btst #4,%d3
4e1fa: 677a beqs 4e276 <rtems_barrier_create+0xa2> <== NEVER TAKEN
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
4e1fc: 42ae fff8 clrl %fp@(-8)
if ( maximum_waiters == 0 )
4e200: 4a80 tstl %d0
4e202: 6700 00b0 beqw 4e2b4 <rtems_barrier_create+0xe0>
4e206: 2239 0006 177c movel 6177c <_Thread_Dispatch_disable_level>,%d1
4e20c: 5281 addql #1,%d1
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
the_attributes.maximum_count = maximum_waiters;
4e20e: 2d40 fffc movel %d0,%fp@(-4)
4e212: 23c1 0006 177c movel %d1,6177c <_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 );
4e218: 4879 0006 196c pea 6196c <_Barrier_Information>
4e21e: 4eb9 0004 9afc jsr 49afc <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4e224: 588f addql #4,%sp
4e226: 2640 moveal %d0,%a3
4e228: 4a80 tstl %d0
4e22a: 6776 beqs 4e2a2 <rtems_barrier_create+0xce> <== NEVER TAKEN
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_barrier->attribute_set = attribute_set;
4e22c: 2743 0010 movel %d3,%a3@(16)
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
4e230: 486e fff8 pea %fp@(-8)
4e234: 486b 0014 pea %a3@(20)
4e238: 4eb9 0004 ea84 jsr 4ea84 <_CORE_barrier_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4e23e: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4e242: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4e244: 2079 0006 1984 moveal 61984 <_Barrier_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4e24a: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4e24c: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4e250: 2742 000c movel %d2,%a3@(12)
&_Barrier_Information,
&the_barrier->Object,
(Objects_Name) name
);
*id = the_barrier->Object.id;
4e254: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
4e256: 4eb9 0004 aafa jsr 4aafa <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4e25c: 508f addql #8,%sp
4e25e: 4280 clrl %d0
}
4e260: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3
4e266: 4e5e unlk %fp
4e268: 4e75 rts
{
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4e26a: 7003 moveq #3,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e26c: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e272: 4e5e unlk %fp <== NOT EXECUTED
4e274: 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;
4e276: 7201 moveq #1,%d1 <== NOT EXECUTED
4e278: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
4e27c: 2239 0006 177c movel 6177c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
4e282: 5281 addql #1,%d1 <== NOT EXECUTED
the_attributes.maximum_count = maximum_waiters;
4e284: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4e288: 23c1 0006 177c movel %d1,6177c <_Thread_Dispatch_disable_level><== NOT EXECUTED
4e28e: 4879 0006 196c pea 6196c <_Barrier_Information> <== NOT EXECUTED
4e294: 4eb9 0004 9afc jsr 49afc <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4e29a: 588f addql #4,%sp <== NOT EXECUTED
4e29c: 2640 moveal %d0,%a3 <== NOT EXECUTED
4e29e: 4a80 tstl %d0 <== NOT EXECUTED
4e2a0: 668a bnes 4e22c <rtems_barrier_create+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
4e2a2: 4eb9 0004 aafa jsr 4aafa <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4e2a8: 7005 moveq #5,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2aa: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e2b0: 4e5e unlk %fp <== NOT EXECUTED
4e2b2: 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;
4e2b4: 700a moveq #10,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2b6: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e2bc: 4e5e unlk %fp <== NOT EXECUTED
4e2be: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4e2c0: 7009 moveq #9,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2c2: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e2c8: 4e5e unlk %fp <== NOT EXECUTED
0004e2cc <rtems_barrier_delete>:
*/
rtems_status_code rtems_barrier_delete(
rtems_id id
)
{
4e2cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4e2d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4e2d2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e2d6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4e2da: 4879 0006 196c pea 6196c <_Barrier_Information> <== NOT EXECUTED
4e2e0: 4eb9 0004 9fbc jsr 49fbc <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4e2e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e2ea: 2440 moveal %d0,%a2 <== NOT EXECUTED
4e2ec: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e2f0: 6640 bnes 4e332 <rtems_barrier_delete+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Flush(
4e2f2: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4e2f6: 42a7 clrl %sp@- <== NOT EXECUTED
4e2f8: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4e2fc: 4eb9 0004 b234 jsr 4b234 <_Thread_queue_Flush> <== NOT EXECUTED
&the_barrier->Barrier,
NULL,
CORE_BARRIER_WAS_DELETED
);
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
4e302: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e304: 4879 0006 196c pea 6196c <_Barrier_Information> <== NOT EXECUTED
4e30a: 4eb9 0004 9b8c jsr 49b8c <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Barrier_Free (
Barrier_Control *the_barrier
)
{
_Objects_Free( &_Barrier_Information, &the_barrier->Object );
4e310: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e312: 4879 0006 196c pea 6196c <_Barrier_Information> <== NOT EXECUTED
4e318: 4eb9 0004 9e50 jsr 49e50 <_Objects_Free> <== NOT EXECUTED
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4e31e: 4eb9 0004 aafa jsr 4aafa <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e324: 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;
4e328: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4e32c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e32e: 4e5e unlk %fp <== NOT EXECUTED
4e330: 4e75 rts <== NOT EXECUTED
4e332: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4e336: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4e338: 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 0b3c pea 60b3c <_Barrier_Information> <== NOT EXECUTED
4733c: 4eb9 0004 9694 jsr 49694 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47342: 41f9 0005 e67e lea 5e67e <_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
0004e36c <rtems_barrier_release>:
rtems_status_code rtems_barrier_release(
rtems_id id,
uint32_t *released
)
{
4e36c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4e370: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e372: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4e376: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e378: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
4e37c: 4a8a tstl %a2 <== NOT EXECUTED
4e37e: 6754 beqs 4e3d4 <rtems_barrier_release+0x68> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4e380: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e384: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e386: 4879 0006 196c pea 6196c <_Barrier_Information> <== NOT EXECUTED
4e38c: 4eb9 0004 9fbc jsr 49fbc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4e392: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e396: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e39a: 662a bnes 4e3c6 <rtems_barrier_release+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
4e39c: 42a7 clrl %sp@- <== NOT EXECUTED
4e39e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e3a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e3a2: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4e3a6: 4eb9 0004 eac0 jsr 4eac0 <_CORE_barrier_Release> <== NOT EXECUTED
4e3ac: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4e3ae: 4eb9 0004 aafa jsr 4aafa <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e3b4: 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;
4e3b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e3bc: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e3be: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e3c2: 4e5e unlk %fp <== NOT EXECUTED
4e3c4: 4e75 rts <== NOT EXECUTED
4e3c6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4e3ca: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4e3cc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e3d0: 4e5e unlk %fp <== NOT EXECUTED
4e3d2: 4e75 rts <== NOT EXECUTED
4e3d4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
{
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
return RTEMS_INVALID_ADDRESS;
4e3d8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e3da: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e3de: 4e5e unlk %fp <== NOT EXECUTED
...
0004e3e4 <rtems_barrier_wait>:
rtems_status_code rtems_barrier_wait(
rtems_id id,
rtems_interval timeout
)
{
4e3e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4e3e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e3ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e3ee: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4e3f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e3f4: 4879 0006 196c pea 6196c <_Barrier_Information> <== NOT EXECUTED
4e3fa: 4eb9 0004 9fbc jsr 49fbc <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4e400: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e404: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e408: 663a bnes 4e444 <rtems_barrier_wait+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
4e40a: 42a7 clrl %sp@- <== NOT EXECUTED
4e40c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4e410: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e412: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4e416: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e418: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4e41c: 4eb9 0004 eafc jsr 4eafc <_CORE_barrier_Wait> <== NOT EXECUTED
id,
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
4e422: 4eb9 0004 aafa jsr 4aafa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4e428: 2079 0006 1938 moveal 61938 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4e42e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4e432: 4eb9 0004 f580 jsr 4f580 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e438: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4e43c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e440: 4e5e unlk %fp <== NOT EXECUTED
4e442: 4e75 rts <== NOT EXECUTED
4e444: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4e448: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4e44a: 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 0005 fb34 movel 5fb34 <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 0005 fb34 movel 5fb34 <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 0004 f838 jsr 4f838 <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 0004 f3ac jsr 4f3ac <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 757c jsr 4757c <_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 761c jsr 4761c <_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 766c lea 4766c <_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 76d8 jsr 476d8 <_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
...
0004706c <rtems_clock_get_seconds_since_epoch>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
4706c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47070: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !the_interval )
47074: 4a88 tstl %a0 <== NOT EXECUTED
47076: 671a beqs 47092 <rtems_clock_get_seconds_since_epoch+0x26><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
47078: 4a39 0006 93e8 tstb 693e8 <_TOD_Is_set> <== NOT EXECUTED
4707e: 670c beqs 4708c <rtems_clock_get_seconds_since_epoch+0x20><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
47080: 20b9 0006 9482 movel 69482 <_TOD_Now>,%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47086: 4280 clrl %d0 <== NOT EXECUTED
}
47088: 4e5e unlk %fp <== NOT EXECUTED
4708a: 4e75 rts <== NOT EXECUTED
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
4708c: 700b moveq #11,%d0 <== NOT EXECUTED
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
4708e: 4e5e unlk %fp <== NOT EXECUTED
47090: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
47092: 7009 moveq #9,%d0 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
47094: 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 d5e0 lea 5d5e0 <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 ef60 movel 5ef60 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
}
45d3e: 4e5e unlk %fp <== NOT EXECUTED
...
000470c0 <rtems_clock_get_tod>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod(
rtems_time_of_day *time_buffer
)
{
470c0: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
470c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470c6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
470ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
470cc: 4a8a tstl %a2 <== NOT EXECUTED
470ce: 6700 00a6 beqw 47176 <rtems_clock_get_tod+0xb6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
470d2: 4a39 0006 93e8 tstb 693e8 <_TOD_Is_set> <== NOT EXECUTED
470d8: 660e bnes 470e8 <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;
}
470da: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
470de: 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;
}
470e0: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
470e4: 4e5e unlk %fp <== NOT EXECUTED
470e6: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
470e8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
470ee: 40c2 movew %sr,%d2 <== NOT EXECUTED
470f0: 8082 orl %d2,%d0 <== NOT EXECUTED
470f2: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
470f4: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
470f8: 4eb9 0004 8ba4 jsr 48ba4 <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
470fe: 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;
47100: 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 );
47106: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
4710a: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4710e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
47112: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED
time->tv_usec = useconds;
47118: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED
4711c: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
47120: 4eb9 0004 fb68 jsr 4fb68 <gmtime_r> <== NOT EXECUTED
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
47126: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
4712a: 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;
4712c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47130: 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;
47132: 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;
47136: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
4713a: 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 /
4713e: 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;
47142: 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 /
47144: 41f9 0005 fdc0 lea 5fdc0 <Configuration+0xc>,%a0 <== NOT EXECUTED
4714a: 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;
4714e: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED
tmbuf->hour = time.tm_hour;
47154: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED
tmbuf->minute = time.tm_min;
4715a: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED
tmbuf->second = time.tm_sec;
47160: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED
tmbuf->ticks = now.tv_usec /
47166: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
4716a: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
4716e: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
47172: 4e5e unlk %fp <== NOT EXECUTED
47174: 4e75 rts <== NOT EXECUTED
47176: 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;
4717a: 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;
}
4717c: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
47180: 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 db44 tstb 7db44 <_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 a47c jsr 5a47c <_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
00045f38 <rtems_clock_get_uptime>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
45f38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45f3c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !uptime )
45f40: 6710 beqs 45f52 <rtems_clock_get_uptime+0x1a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_TOD_Get_uptime_as_timespec( uptime );
45f42: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45f44: 4eb9 0004 7740 jsr 47740 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45f4a: 588f addql #4,%sp <== NOT EXECUTED
45f4c: 4280 clrl %d0 <== NOT EXECUTED
}
45f4e: 4e5e unlk %fp <== NOT EXECUTED
45f50: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
if ( !uptime )
return RTEMS_INVALID_ADDRESS;
45f52: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Get_uptime_as_timespec( uptime );
return RTEMS_SUCCESSFUL;
}
45f54: 4e5e unlk %fp <== NOT EXECUTED
000471a0 <rtems_clock_set>:
*/
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
)
{
471a0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
471a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471a6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
471aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
struct timespec newtime;
if ( !time_buffer )
471ac: 4a8a tstl %a2 <== NOT EXECUTED
471ae: 6772 beqs 47222 <rtems_clock_set+0x82> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
471b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471b2: 4eb9 0004 7378 jsr 47378 <_TOD_Validate> <== NOT EXECUTED
471b8: 588f addql #4,%sp <== NOT EXECUTED
471ba: 4a00 tstb %d0 <== NOT EXECUTED
471bc: 660e bnes 471cc <rtems_clock_set+0x2c> <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
471be: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
471c2: 7014 moveq #20,%d0 <== NOT EXECUTED
}
471c4: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
471c8: 4e5e unlk %fp <== NOT EXECUTED
471ca: 4e75 rts <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
471cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471ce: 4eb9 0004 7270 jsr 47270 <_TOD_To_seconds> <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471d4: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED
471d8: 41f9 0005 fdc0 lea 5fdc0 <Configuration+0xc>,%a0 <== NOT EXECUTED
471de: 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 );
471e2: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471e6: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
471ec: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471f0: 2239 0006 93d8 movel 693d8 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
471f6: 5281 addql #1,%d1 <== NOT EXECUTED
471f8: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
471fc: 23c1 0006 93d8 movel %d1,693d8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
47202: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
47206: 4eb9 0004 8c9c jsr 48c9c <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
4720c: 4eb9 0004 a33e jsr 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
47212: 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;
47216: 508f addql #8,%sp <== NOT EXECUTED
47218: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_INVALID_CLOCK;
}
4721a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4721e: 4e5e unlk %fp <== NOT EXECUTED
47220: 4e75 rts <== NOT EXECUTED
47222: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
)
{
struct timespec newtime;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47226: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
47228: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4722c: 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 d744 movel %d0,5d744 <_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 7384 jsr 47384 <_TOD_Tickle_ticks>
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
45d6a: 4879 0005 ef18 pea 5ef18 <_Watchdog_Ticks_chain> <== NOT EXECUTED
45d70: 4eb9 0004 99a0 jsr 499a0 <_Watchdog_Tickle> <== NOT EXECUTED
_Watchdog_Tickle_ticks();
_Thread_Tickle_timeslice();
45d76: 4eb9 0004 9404 jsr 49404 <_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 0005 f000 moveb 5f000 <_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 ee38 movel 5ee38 <_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 8758 jsr 48758 <_Thread_Dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
45d9a: 4280 clrl %d0 <== NOT EXECUTED
45d9c: 4e5e unlk %fp <== NOT EXECUTED
000433de <rtems_cpu_usage_report>:
);
#endif
}
void rtems_cpu_usage_report( void )
{
433de: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );
433e2: 4879 0004 4ef0 pea 44ef0 <printk_plugin> <== NOT EXECUTED
433e8: 42a7 clrl %sp@- <== NOT EXECUTED
433ea: 4eb9 0004 3210 jsr 43210 <rtems_cpu_usage_report_with_plugin><== NOT EXECUTED
433f0: 508f addql #8,%sp <== NOT EXECUTED
}
433f2: 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 0152 beqw 43376 <rtems_cpu_usage_report_with_plugin+0x166><== 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 9398 lea 69398 <_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 af70 lea 4af70 <_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 94a4 movel 694a4 <_Thread_Time_of_last_context_switch>,%d0<== NOT EXECUTED
43254: 2239 0006 94a8 movel 694a8 <_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 8c08 jsr 48c08 <_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 9600 pea 69600 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED
43278: 4eb9 0004 b054 jsr 4b054 <_Timespec_Subtract> <== NOT EXECUTED
}
}
}
#endif
(*print)(
4327e: 4879 0005 e6de pea 5e6de <IntUartPollCallbacks.6323+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
"------------+----------------------------------------+---------------+---------\n"
);
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
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: 4a88 tstl %a0 <== NOT EXECUTED
43298: 6700 00ac beqw 43346 <rtems_cpu_usage_report_with_plugin+0x136><== NOT EXECUTED
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
4329c: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
if ( information ) {
432a0: 4a8b tstl %a3 <== NOT EXECUTED
432a2: 6700 00a2 beqw 43346 <rtems_cpu_usage_report_with_plugin+0x136><== NOT EXECUTED
for ( i=1 ; i <= information->maximum ; i++ ) {
432a6: 4a6b 000e tstw %a3@(14) <== NOT EXECUTED
432aa: 6700 009a beqw 43346 <rtems_cpu_usage_report_with_plugin+0x136><== NOT EXECUTED
432ae: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
432b0: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED
432b4: 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++ ) {
432b8: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
432ba: 4a8a tstl %a2 <== NOT EXECUTED
432bc: 677c beqs 4333a <rtems_cpu_usage_report_with_plugin+0x12a><== NOT EXECUTED
continue;
rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
432be: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432c0: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
432c4: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
432c8: 4eb9 0004 7824 jsr 47824 <rtems_object_get_name> <== NOT EXECUTED
(*print)(
432ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432d0: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
432d4: 4879 0005 e850 pea 5e850 <IntUartPollCallbacks.6323+0x192> <== NOT EXECUTED
432da: 2f03 movel %d3,%sp@- <== NOT EXECUTED
432dc: 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 ) {
432de: 2079 0006 95cc moveal 695cc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
432e4: 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;
432e8: 202a 0082 movel %a2@(130),%d0 <== NOT EXECUTED
432ec: 222a 0086 movel %a2@(134),%d1 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432f0: 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;
432f4: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
432f8: 2d41 ffe4 movel %d1,%fp@(-28) <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
432fc: b5e8 0008 cmpal %a0@(8),%a2 <== NOT EXECUTED
43300: 677e beqs 43380 <rtems_cpu_usage_report_with_plugin+0x170><== NOT EXECUTED
Timestamp_Control used;
_Timestamp_Subtract( &last_context_switch, &uptime, &used );
_Timestamp_Add_to( &ran, &used );
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
43302: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
43306: 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 );
4330c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43310: 2f06 movel %d6,%sp@- <== NOT EXECUTED
43312: 2f05 movel %d5,%sp@- <== NOT EXECUTED
43314: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
43316: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
4331a: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED
4331e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
43322: 4c47 0000 remul %d7,%d0,%d0 <== NOT EXECUTED
43326: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43328: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
4332c: 4879 0005 e863 pea 5e863 <IntUartPollCallbacks.6323+0x1a5> <== NOT EXECUTED
43332: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43334: 4e94 jsr %a4@ <== NOT EXECUTED
43336: 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++ ) {
4333a: 4280 clrl %d0 <== NOT EXECUTED
4333c: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED
43340: b480 cmpl %d0,%d2 <== NOT EXECUTED
43342: 6300 ff6c blsw 432b0 <rtems_cpu_usage_report_with_plugin+0xa0><== NOT EXECUTED
" ID | NAME | TICKS | PERCENT\n"
#endif
"------------+----------------------------------------+---------------+---------\n"
);
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
43346: 206e ffbc moveal %fp@(-68),%a0 <== NOT EXECUTED
4334a: b1fc 0006 93a4 cmpal #431012,%a0 <== NOT EXECUTED
43350: 6600 ff3a bnew 4328c <rtems_cpu_usage_report_with_plugin+0x7c><== NOT EXECUTED
}
}
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)(
43354: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
43358: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
4335e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
43362: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43364: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
43368: 4879 0005 e87b pea 5e87b <IntUartPollCallbacks.6323+0x1bd> <== NOT EXECUTED
4336e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43370: 4e94 jsr %a4@ <== NOT EXECUTED
43372: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
"-------------------------------------------------------------------------------\n",
_Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,
total_units
);
#endif
}
43376: 4cee 3cfc ff94 moveml %fp@(-108),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4337c: 4e5e unlk %fp <== NOT EXECUTED
4337e: 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 );
43380: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
43384: 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 );
4338a: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
4338e: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
43392: 4eb9 0004 b054 jsr 4b054 <_Timespec_Subtract> <== NOT EXECUTED
_Timestamp_Add_to( &ran, &used );
43398: 486e ffd0 pea %fp@(-48) <== NOT EXECUTED
4339c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4339e: 4eb9 0004 af28 jsr 4af28 <_Timespec_Add_to> <== NOT EXECUTED
433a4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
433a8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
433ac: 486e fffc pea %fp@(-4) <== NOT EXECUTED
433b0: 2f06 movel %d6,%sp@- <== NOT EXECUTED
433b2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
433b4: 4e95 jsr %a5@ <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
433b6: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
433ba: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED
433be: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
433c2: 4c47 0000 remul %d7,%d0,%d0 <== NOT EXECUTED
433c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
433c8: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
433cc: 4879 0005 e863 pea 5e863 <IntUartPollCallbacks.6323+0x1a5> <== NOT EXECUTED
433d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
433d4: 4e94 jsr %a4@ <== NOT EXECUTED
433d6: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
433da: 6000 ff5e braw 4333a <rtems_cpu_usage_report_with_plugin+0x12a><== NOT EXECUTED
0004340c <rtems_cpu_usage_reset>:
/*
* rtems_cpu_usage_reset
*/
void rtems_cpu_usage_reset( void )
{
4340c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
43410: 4879 0006 9600 pea 69600 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED
43416: 4eb9 0004 8c08 jsr 48c08 <_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);
4341c: 487a ffda pea %pc@(433f8 <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;
43420: 2039 0006 9600 movel 69600 <CPU_usage_Uptime_at_last_reset>,%d0<== NOT EXECUTED
43426: 2239 0006 9604 movel 69604 <CPU_usage_Uptime_at_last_reset+0x4>,%d1<== NOT EXECUTED
4342c: 23c0 0006 94a4 movel %d0,694a4 <_Thread_Time_of_last_context_switch><== NOT EXECUTED
43432: 23c1 0006 94a8 movel %d1,694a8 <_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);
43438: 4eb9 0004 9224 jsr 49224 <rtems_iterate_over_all_threads> <== NOT EXECUTED
4343e: 508f addql #8,%sp <== NOT EXECUTED
}
43440: 4e5e unlk %fp <== NOT EXECUTED
0004b86c <rtems_debug_disable>:
* rtems_debug_disable
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
4b86c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level &= ~to_be_disabled;
4b870: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4b874: 4680 notl %d0 <== NOT EXECUTED
}
4b876: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
_Debug_Level &= ~to_be_disabled;
4b878: c1b9 0005 ef00 andl %d0,5ef00 <_Debug_Level> <== NOT EXECUTED
}
0004b85a <rtems_debug_enable>:
* rtems_debug_enable
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
4b85a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level |= to_be_enabled;
4b85e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4b862: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
_Debug_Level |= to_be_enabled;
4b864: 81b9 0005 ef00 orl %d0,5ef00 <_Debug_Level> <== NOT EXECUTED
}
0004b880 <rtems_debug_is_enabled>:
* rtems_debug_is_enabled
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
4b880: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (_Debug_Level & level) ? true : false;
4b884: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4b888: 4e5e unlk %fp <== NOT EXECUTED
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
return (_Debug_Level & level) ? true : false;
4b88a: c0b9 0005 ef00 andl 5ef00 <_Debug_Level>,%d0 <== NOT EXECUTED
4b890: 56c0 sne %d0 <== NOT EXECUTED
}
4b892: 4480 negl %d0 <== NOT EXECUTED
...
0004d7e0 <rtems_deviceio_errno>:
[RTEMS_IO_ERROR] = EIO,
[RTEMS_PROXY_BLOCKING] = EIO
};
int rtems_deviceio_errno(rtems_status_code sc)
{
4d7e0: 4e56 0000 linkw %fp,#0
4d7e4: 202e 0008 movel %fp@(8),%d0
4d7e8: 2f02 movel %d2,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
4d7ea: 4a80 tstl %d0
4d7ec: 660a bnes 4d7f8 <rtems_deviceio_errno+0x18> <== NEVER TAKEN
errno = eno;
return -1;
}
}
4d7ee: 242e fffc movel %fp@(-4),%d2
};
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4d7f2: 4280 clrl %d0
errno = eno;
return -1;
}
}
4d7f4: 4e5e unlk %fp
4d7f6: 4e75 rts
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
4d7f8: 721c moveq #28,%d1 <== NOT EXECUTED
4d7fa: b280 cmpl %d0,%d1 <== NOT EXECUTED
4d7fc: 651e bcss 4d81c <rtems_deviceio_errno+0x3c> <== NOT EXECUTED
eno = status_code_to_errno [sc];
4d7fe: 41f9 0005 cbe0 lea 5cbe0 <status_code_to_errno>,%a0 <== NOT EXECUTED
4d804: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED
}
errno = eno;
4d808: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4d80e: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4d810: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4d812: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
}
}
4d814: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4d818: 4e5e unlk %fp <== NOT EXECUTED
4d81a: 4e75 rts <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4d81c: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
4d822: 7416 moveq #22,%d2 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4d824: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4d826: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4d828: 2082 movel %d2,%a0@ <== NOT EXECUTED
4d82a: 60e8 bras 4d814 <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 c31e pea 5c31e <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 d85c jsr 4d85c <__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 c333 pea 5c333 <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 d82c jsr 4d82c <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 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a1
45db6: 2269 00fc moveal %a1@(252),%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 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d1
45dca: 5281 addql #1,%d1
45dcc: 23c1 0005 ee38 movel %d1,5ee38 <_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 88c2 jsr 488c2 <_Thread_Enable_dispatch>
return( _Thread_Executing->Wait.return_code );
45dea: 2079 0005 eff4 moveal 5eff4 <_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 88e8 jsr 488e8 <_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 00fc moveal %a1@(252),%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 88c2 jsr 488c2 <_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
...
0004836c <rtems_extension_create>:
rtems_status_code rtems_extension_create(
rtems_name name,
const rtems_extensions_table *extension_table,
rtems_id *id
)
{
4836c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
48370: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
48374: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
48378: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Extension_Control *the_extension;
if ( !id )
4837c: 4a8a tstl %a2 <== NOT EXECUTED
4837e: 6700 00a0 beqw 48420 <rtems_extension_create+0xb4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
48382: 4a82 tstl %d2 <== NOT EXECUTED
48384: 660c bnes 48392 <rtems_extension_create+0x26> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
48386: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48388: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4838e: 4e5e unlk %fp <== NOT EXECUTED
48390: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48392: 2039 0006 93d8 movel 693d8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
48398: 5280 addql #1,%d0 <== NOT EXECUTED
4839a: 23c0 0006 93d8 movel %d0,693d8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#ifndef __EXTENSION_MANAGER_inl
#define __EXTENSION_MANAGER_inl
RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void )
{
return (Extension_Control *) _Objects_Allocate( &_Extension_Information );
483a0: 4879 0006 955c pea 6955c <_Extension_Information> <== NOT EXECUTED
483a6: 4eb9 0004 9280 jsr 49280 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
483ac: 588f addql #4,%sp <== NOT EXECUTED
483ae: 2640 moveal %d0,%a3 <== NOT EXECUTED
483b0: 4a80 tstl %d0 <== NOT EXECUTED
483b2: 675a beqs 4840e <rtems_extension_create+0xa2> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
483b4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
483b8: 2758 0024 movel %a0@+,%a3@(36) <== NOT EXECUTED
483bc: 2758 0028 movel %a0@+,%a3@(40) <== NOT EXECUTED
483c0: 2758 002c movel %a0@+,%a3@(44) <== NOT EXECUTED
483c4: 2758 0030 movel %a0@+,%a3@(48) <== NOT EXECUTED
483c8: 2758 0034 movel %a0@+,%a3@(52) <== NOT EXECUTED
483cc: 2758 0038 movel %a0@+,%a3@(56) <== NOT EXECUTED
483d0: 2758 003c movel %a0@+,%a3@(60) <== NOT EXECUTED
483d4: 2750 0040 movel %a0@,%a3@(64) <== NOT EXECUTED
_User_extensions_Add_set( extension );
483d8: 486b 0010 pea %a3@(16) <== NOT EXECUTED
483dc: 4eb9 0004 b0a4 jsr 4b0a4 <_User_extensions_Add_set> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
483e2: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483e6: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483e8: 2079 0006 9574 moveal 69574 <_Extension_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483ee: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483f0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
483f4: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Extension_Information,
&the_extension->Object,
(Objects_Name) name
);
*id = the_extension->Object.id;
483f8: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
483fa: 4eb9 0004 a33e jsr 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48400: 588f addql #4,%sp <== NOT EXECUTED
48402: 4280 clrl %d0 <== NOT EXECUTED
}
48404: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4840a: 4e5e unlk %fp <== NOT EXECUTED
4840c: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
_Thread_Enable_dispatch();
4840e: 4eb9 0004 a33e jsr 4a33e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
48414: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48416: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4841c: 4e5e unlk %fp <== NOT EXECUTED
4841e: 4e75 rts <== NOT EXECUTED
)
{
Extension_Control *the_extension;
if ( !id )
return RTEMS_INVALID_ADDRESS;
48420: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48422: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48428: 4e5e unlk %fp <== NOT EXECUTED
000481fc <rtems_extension_delete>:
#include <rtems/extension.h>
rtems_status_code rtems_extension_delete(
rtems_id id
)
{
481fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48200: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Extension_Control *)
_Objects_Get( &_Extension_Information, id, location );
48202: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48206: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4820a: 4879 0006 8e9c pea 68e9c <_Extension_Information> <== NOT EXECUTED
48210: 4eb9 0004 94bc jsr 494bc <_Objects_Get> <== NOT EXECUTED
Extension_Control *the_extension;
Objects_Locations location;
the_extension = _Extension_Get( id, &location );
switch ( location ) {
48216: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4821a: 2440 moveal %d0,%a2 <== NOT EXECUTED
4821c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48220: 663a bnes 4825c <rtems_extension_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
48222: 486a 0010 pea %a2@(16) <== NOT EXECUTED
48226: 4eb9 0004 ad54 jsr 4ad54 <_User_extensions_Remove_set> <== NOT EXECUTED
_Objects_Close( &_Extension_Information, &the_extension->Object );
4822c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4822e: 4879 0006 8e9c pea 68e9c <_Extension_Information> <== NOT EXECUTED
48234: 4eb9 0004 908c jsr 4908c <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Extension_Free (
Extension_Control *the_extension
)
{
_Objects_Free( &_Extension_Information, &the_extension->Object );
4823a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4823c: 4879 0006 8e9c pea 68e9c <_Extension_Information> <== NOT EXECUTED
48242: 4eb9 0004 9350 jsr 49350 <_Objects_Free> <== NOT EXECUTED
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
48248: 4eb9 0004 9fca jsr 49fca <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4824e: 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;
48252: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48256: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48258: 4e5e unlk %fp <== NOT EXECUTED
4825a: 4e75 rts <== NOT EXECUTED
4825c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48260: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48262: 4e5e unlk %fp <== NOT EXECUTED
...
000492f8 <rtems_extension_ident>:
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
)
{
492f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
492fc: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49300: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
49306: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4930a: 4879 0006 276c pea 6276c <_Extension_Information> <== NOT EXECUTED
49310: 4eb9 0004 a66c jsr 4a66c <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
49316: 41f9 0005 fe1a lea 5fe1a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4931c: 4e5e unlk %fp <== NOT EXECUTED
4931e: 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 ecb4 jsr 4ecb4 <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
0004b23c <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
4b23c: 4e56 fff8 linkw %fp,#-8
4b240: 202e 0008 movel %fp@(8),%d0
find_arg fa = {
4b244: 42ae fffc clrl %fp@(-4)
4b248: 2d40 fff8 movel %d0,%fp@(-8)
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b24c: 6718 beqs 4b266 <rtems_filesystem_get_mount_handler+0x2a><== NEVER TAKEN
rtems_filesystem_iterate( find_handler, &fa );
4b24e: 486e fff8 pea %fp@(-8)
4b252: 487a fefc pea %pc@(4b150 <find_handler>)
4b256: 4eb9 0004 b192 jsr 4b192 <rtems_filesystem_iterate>
4b25c: 202e fffc movel %fp@(-4),%d0
4b260: 508f addql #8,%sp
}
return fa.mount_h;
}
4b262: 4e5e unlk %fp
4b264: 4e75 rts
find_arg fa = {
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
4b266: 4280 clrl %d0 <== NOT EXECUTED
rtems_filesystem_iterate( find_handler, &fa );
}
return fa.mount_h;
}
4b268: 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 d740 moveal 5d740 <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 d740 moveal 5d740 <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
0004b404 <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)
{
4b404: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b408: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b40c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b40e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_filesystem_is_separator(path[0])) {
4b412: 1010 moveb %a0@,%d0 <== NOT EXECUTED
4b414: 49c0 extbl %d0 <== NOT EXECUTED
4b416: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b418: 4eb9 0004 3c2c jsr 43c2c <rtems_filesystem_is_separator> <== NOT EXECUTED
4b41e: 588f addql #4,%sp <== NOT EXECUTED
4b420: 4a80 tstl %d0 <== NOT EXECUTED
4b422: 660a bnes 4b42e <rtems_filesystem_get_sym_start_loc+0x2a><== NOT EXECUTED
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*index = 0;
4b424: 4292 clrl %a2@ <== NOT EXECUTED
}
}
4b426: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b42a: 4e5e unlk %fp <== NOT EXECUTED
4b42c: 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;
4b42e: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
*index = 1;
4b432: 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;
4b434: 2279 0005 d740 moveal 5d740 <rtems_current_user_env>,%a1 <== NOT EXECUTED
4b43a: 20e9 0018 movel %a1@(24),%a0@+ <== NOT EXECUTED
4b43e: 20e9 001c movel %a1@(28),%a0@+ <== NOT EXECUTED
4b442: 20e9 0020 movel %a1@(32),%a0@+ <== NOT EXECUTED
4b446: 20e9 0024 movel %a1@(36),%a0@+ <== NOT EXECUTED
4b44a: 20a9 0028 movel %a1@(40),%a0@ <== NOT EXECUTED
*index = 1;
4b44e: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
else {
*index = 0;
}
}
4b450: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b454: 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 d740 moveal 5d740 <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 bf2e tstl 5bf2e <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 d52c moveal 5d52c <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 d740 moveal 5d740 <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 c2e8 pea 5c2e8 <IMFS_ops+0x48>
4285a: 4e94 jsr %a4@
rtems_filesystem_root = loc;
4285c: 2079 0005 d740 moveal 5d740 <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 c2e8 pea 5c2e8 <IMFS_ops+0x48>
4288c: 4e94 jsr %a4@
rtems_filesystem_current = loc;
4288e: 2079 0005 d740 moveal 5d740 <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 c2ea pea 5c2ea <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 6ba8 jsr 46ba8 <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 6ba8 jsr 46ba8 <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 6ba8 jsr 46ba8 <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
...
0004b192 <rtems_filesystem_iterate>:
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
4b192: 4e56 fff0 linkw %fp,#-16
4b196: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4b19a: 266e 0008 moveal %fp@(8),%a3
4b19e: 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 ) {
4b1a2: 4ab9 0005 bf0e tstl 5bf0e <rtems_filesystem_table>
4b1a8: 672a beqs 4b1d4 <rtems_filesystem_iterate+0x42> <== NEVER TAKEN
4b1aa: 45f9 0005 bf0e lea 5bf0e <rtems_filesystem_table>,%a2
stop = (*routine)( table_entry, routine_arg );
4b1b0: 2f03 movel %d3,%sp@-
4b1b2: 2f0a movel %a2,%sp@-
++table_entry;
4b1b4: 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 );
4b1b6: 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 ) {
4b1b8: 508f addql #8,%sp
stop = (*routine)( table_entry, routine_arg );
4b1ba: 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 ) {
4b1bc: 4a92 tstl %a2@
4b1be: 6710 beqs 4b1d0 <rtems_filesystem_iterate+0x3e>
4b1c0: 4a00 tstb %d0
4b1c2: 67ec beqs 4b1b0 <rtems_filesystem_iterate+0x1e> <== NEVER TAKEN
}
rtems_libio_unlock();
}
return stop;
}
4b1c4: 1002 moveb %d2,%d0
4b1c6: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4b1cc: 4e5e unlk %fp
4b1ce: 4e75 rts
while ( table_entry->type && !stop ) {
stop = (*routine)( table_entry, routine_arg );
++table_entry;
}
if ( !stop ) {
4b1d0: 4a00 tstb %d0
4b1d2: 66f0 bnes 4b1c4 <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 );
4b1d4: 42a7 clrl %sp@- <== NOT EXECUTED
4b1d6: 42a7 clrl %sp@- <== NOT EXECUTED
4b1d8: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b1de: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b1e4: 2479 0005 d748 moveal 5d748 <filesystem_chain>,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b1ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b1ee: b5fc 0005 d74c cmpal #382796,%a2 <== NOT EXECUTED
4b1f4: 6734 beqs 4b22a <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 );
4b1f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b1f8: 486a 0008 pea %a2@(8) <== NOT EXECUTED
4b1fc: 4e93 jsr %a3@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b1fe: 2452 moveal %a2@,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b200: 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 );
4b202: 1400 moveb %d0,%d2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b204: b5fc 0005 d74c cmpal #382796,%a2 <== NOT EXECUTED
4b20a: 6704 beqs 4b210 <rtems_filesystem_iterate+0x7e> <== NOT EXECUTED
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
4b20c: 4a00 tstb %d0 <== NOT EXECUTED
4b20e: 67e6 beqs 4b1f6 <rtems_filesystem_iterate+0x64> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b210: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b216: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b21c: 588f addql #4,%sp <== NOT EXECUTED
}
rtems_libio_unlock();
}
return stop;
}
4b21e: 1002 moveb %d2,%d0 <== NOT EXECUTED
4b220: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b226: 4e5e unlk %fp <== NOT EXECUTED
4b228: 4e75 rts <== NOT EXECUTED
4b22a: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
4b230: 4202 clrb %d2 <== NOT EXECUTED
4b232: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b238: 588f addql #4,%sp <== NOT EXECUTED
4b23a: 60e2 bras 4b21e <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 ecf0 movel 5ecf0 <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 d624 moveal 5d624 <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 d628 cmpal #382504,%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 d628 cmpal #382504,%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 ecf0 movel 5ecf0 <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 ecf0 movel 5ecf0 <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
...
0004b26c <rtems_filesystem_register>:
int
rtems_filesystem_register(
const char *type,
rtems_filesystem_fsmount_me_t mount_h
)
{
4b26c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b270: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4b274: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
size_t type_size = strlen(type) + 1;
4b278: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b27a: 4eb9 0004 ecb4 jsr 4ecb4 <strlen> <== NOT EXECUTED
4b280: 588f addql #4,%sp <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
4b282: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b284: 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;
4b288: 2600 movel %d0,%d3 <== NOT EXECUTED
4b28a: 5283 addql #1,%d3 <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
4b28c: 4eb9 0004 302c jsr 4302c <malloc> <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b292: 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 );
4b294: 2440 moveal %d0,%a2 <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
4b296: 4a80 tstl %d0 <== NOT EXECUTED
4b298: 6700 0098 beqw 4b332 <rtems_filesystem_register+0xc6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
4b29c: 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 );
4b29e: 2600 movel %d0,%d3 <== NOT EXECUTED
4b2a0: 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);
4b2a6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b2a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b2aa: 4eb9 0004 e108 jsr 4e108 <memcpy> <== NOT EXECUTED
fsn->entry.type = type_storage;
fsn->entry.mount_h = mount_h;
4b2b0: 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 );
4b2b6: 42a7 clrl %sp@- <== NOT EXECUTED
4b2b8: 42a7 clrl %sp@- <== NOT EXECUTED
4b2ba: 2f39 0005 ecf0 movel 5ecf0 <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;
4b2c0: 2543 0008 movel %d3,%a2@(8) <== NOT EXECUTED
4b2c4: 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 ) {
4b2ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b2cc: 4eb9 0004 b23c jsr 4b23c <rtems_filesystem_get_mount_handler><== NOT EXECUTED
4b2d2: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4b2d6: 4a80 tstl %d0 <== NOT EXECUTED
4b2d8: 662a bnes 4b304 <rtems_filesystem_register+0x98> <== NOT EXECUTED
4b2da: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b2dc: 4879 0005 d748 pea 5d748 <filesystem_chain> <== NOT EXECUTED
4b2e2: 4eb9 0004 6e78 jsr 46e78 <_Chain_Append> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b2e8: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b2ee: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b2f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
4b2f8: 4280 clrl %d0 <== NOT EXECUTED
}
4b2fa: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4b300: 4e5e unlk %fp <== NOT EXECUTED
4b302: 4e75 rts <== NOT EXECUTED
4b304: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b30a: 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 );
4b310: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b312: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4b318: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4b31e: 508f addql #8,%sp <== NOT EXECUTED
4b320: 7216 moveq #22,%d1 <== NOT EXECUTED
4b322: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b324: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b326: 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 );
4b32c: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
4b32e: 4e5e unlk %fp <== NOT EXECUTED
4b330: 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 );
4b332: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4b338: 740c moveq #12,%d2 <== NOT EXECUTED
4b33a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b33c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b33e: 2082 movel %d2,%a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
return 0;
}
4b340: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4b346: 4e5e unlk %fp <== NOT EXECUTED
0004b34a <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
4b34a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b34e: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4b352: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_chain_node *node = NULL;
if ( type == NULL ) {
4b356: 6700 0094 beqw 4b3ec <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 );
4b35a: 42a7 clrl %sp@- <== NOT EXECUTED
4b35c: 42a7 clrl %sp@- <== NOT EXECUTED
4b35e: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b364: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain> <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b36a: 2479 0005 d748 moveal 5d748 <filesystem_chain>,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b370: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b374: b5fc 0005 d74c cmpal #382796,%a2 <== NOT EXECUTED
4b37a: 671e beqs 4b39a <rtems_filesystem_unregister+0x50><== NOT EXECUTED
4b37c: 47f9 0004 e75c lea 4e75c <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 ) {
4b382: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b384: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
4b388: 4e93 jsr %a3@ <== NOT EXECUTED
4b38a: 508f addql #8,%sp <== NOT EXECUTED
4b38c: 4a80 tstl %d0 <== NOT EXECUTED
4b38e: 6730 beqs 4b3c0 <rtems_filesystem_unregister+0x76><== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b390: 2452 moveal %a2@,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
4b392: b5fc 0005 d74c cmpal #382796,%a2 <== NOT EXECUTED
4b398: 66e8 bnes 4b382 <rtems_filesystem_unregister+0x38><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b39a: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b3a0: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b3a6: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4b3ac: 588f addql #4,%sp <== NOT EXECUTED
4b3ae: 7202 moveq #2,%d1 <== NOT EXECUTED
4b3b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b3b2: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4b3b4: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
return 0;
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
4b3ba: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
4b3bc: 4e5e unlk %fp <== NOT EXECUTED
4b3be: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4b3c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b3c2: 4eb9 0004 6eb0 jsr 46eb0 <_Chain_Extract> <== NOT EXECUTED
) {
filesystem_node *fsn = (filesystem_node *) node;
if ( strcmp( fsn->entry.type, type ) == 0 ) {
rtems_chain_extract( node );
free( fsn );
4b3c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b3ca: 4eb9 0004 2cfc jsr 42cfc <free> <== NOT EXECUTED
4b3d0: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b3d6: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
4b3dc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_libio_unlock();
return 0;
4b3e0: 4280 clrl %d0 <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b3e2: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4b3e8: 4e5e unlk %fp <== NOT EXECUTED
4b3ea: 4e75 rts <== NOT EXECUTED
)
{
rtems_chain_node *node = NULL;
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
4b3ec: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
4b3f2: 7416 moveq #22,%d2 <== NOT EXECUTED
4b3f4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b3f6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b3f8: 2082 movel %d2,%a0@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
4b3fa: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4b400: 4e5e unlk %fp <== NOT EXECUTED
00048b38 <rtems_get_version_string>:
#endif
#include <rtems/system.h>
const char *rtems_get_version_string(void)
{
48b38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _RTEMS_version;
}
48b3c: 203c 0006 0488 movel #394376,%d0 <== NOT EXECUTED
48b42: 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 87d4 jsr 487d4 <_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 87d4 jsr 487d4 <_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 53cc cmpl 653cc <_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 3080 movel 63080 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
47c8a: 4eb9 0004 ce28 jsr 4ce28 <_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
00046b1a <rtems_initialize_start_multitasking>:
46b1a: 7002 moveq #2,%d0
}
void rtems_initialize_start_multitasking(void)
{
46b1c: 4e56 0000 linkw %fp,#0
****** APPLICATION RUNS HERE ******
****** RETURNS WHEN SYSTEM IS SHUT DOWN ******
*******************************************************************
*******************************************************************
*******************************************************************/
}
46b20: 4e5e unlk %fp
46b22: 23c0 0005 efa0 movel %d0,5efa0 <_System_state_Current>
void rtems_initialize_start_multitasking(void)
{
_System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING );
_Thread_Start_multitasking();
46b28: 4ef9 0004 9308 jmp 49308 <_Thread_Start_multitasking>
...
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 9bda jsr 49bda <_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 0730 tstl 60730 <_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
...
0004d52c <rtems_io_close>:
rtems_status_code rtems_io_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d52c: 4e56 0000 linkw %fp,#0
4d530: 202e 0008 movel %fp@(8),%d0
4d534: 2f03 movel %d3,%sp@-
4d536: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d538: b0b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d0
4d53e: 6420 bccs 4d560 <rtems_io_close+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
4d540: 2600 movel %d0,%d3
4d542: 2400 movel %d0,%d2
4d544: e78b lsll #3,%d3
4d546: eb8a lsll #5,%d2
4d548: 2279 0005 f068 moveal 5f068 <_IO_Driver_address_table>,%a1
4d54e: 9483 subl %d3,%d2
4d550: 2271 2808 moveal %a1@(00000008,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d554: 4a89 tstl %a1
4d556: 6712 beqs 4d56a <rtems_io_close+0x3e> <== NEVER TAKEN
}
4d558: 241f movel %sp@+,%d2
4d55a: 261f movel %sp@+,%d3
4d55c: 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;
4d55e: 4ed1 jmp %a1@
}
4d560: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d562: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d564: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d566: 4e5e unlk %fp <== NOT EXECUTED
4d568: 4e75 rts <== NOT EXECUTED
4d56a: 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;
4d56c: 4280 clrl %d0 <== NOT EXECUTED
}
4d56e: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d570: 4e5e unlk %fp <== NOT EXECUTED
0004d574 <rtems_io_control>:
rtems_status_code rtems_io_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d574: 4e56 0000 linkw %fp,#0
4d578: 202e 0008 movel %fp@(8),%d0
4d57c: 2f03 movel %d3,%sp@-
4d57e: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d580: b0b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d0
4d586: 6420 bccs 4d5a8 <rtems_io_control+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
4d588: 2600 movel %d0,%d3
4d58a: 2400 movel %d0,%d2
4d58c: e78b lsll #3,%d3
4d58e: eb8a lsll #5,%d2
4d590: 2279 0005 f068 moveal 5f068 <_IO_Driver_address_table>,%a1
4d596: 9483 subl %d3,%d2
4d598: 2271 2814 moveal %a1@(00000014,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d59c: 4a89 tstl %a1
4d59e: 6712 beqs 4d5b2 <rtems_io_control+0x3e> <== NEVER TAKEN
}
4d5a0: 241f movel %sp@+,%d2
4d5a2: 261f movel %sp@+,%d3
4d5a4: 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;
4d5a6: 4ed1 jmp %a1@
}
4d5a8: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d5aa: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d5ac: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d5ae: 4e5e unlk %fp <== NOT EXECUTED
4d5b0: 4e75 rts <== NOT EXECUTED
4d5b2: 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;
4d5b4: 4280 clrl %d0 <== NOT EXECUTED
}
4d5b6: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d5b8: 4e5e unlk %fp <== NOT EXECUTED
0004b898 <rtems_io_initialize>:
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4b898: 4e56 0000 linkw %fp,#0
4b89c: 202e 0008 movel %fp@(8),%d0
4b8a0: 2f03 movel %d3,%sp@-
4b8a2: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4b8a4: b0b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d0
4b8aa: 6420 bccs 4b8cc <rtems_io_initialize+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
4b8ac: 2600 movel %d0,%d3
4b8ae: 2400 movel %d0,%d2
4b8b0: e78b lsll #3,%d3
4b8b2: 2279 0005 f068 moveal 5f068 <_IO_Driver_address_table>,%a1
4b8b8: 93c3 subal %d3,%a1
4b8ba: eb8a lsll #5,%d2
4b8bc: 2271 2800 moveal %a1@(00000000,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4b8c0: 4a89 tstl %a1
4b8c2: 6712 beqs 4b8d6 <rtems_io_initialize+0x3e>
}
4b8c4: 241f movel %sp@+,%d2
4b8c6: 261f movel %sp@+,%d3
4b8c8: 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;
4b8ca: 4ed1 jmp %a1@
}
4b8cc: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4b8ce: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4b8d0: 261f movel %sp@+,%d3 <== NOT EXECUTED
4b8d2: 4e5e unlk %fp <== NOT EXECUTED
4b8d4: 4e75 rts <== NOT EXECUTED
4b8d6: 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;
4b8d8: 4280 clrl %d0
}
4b8da: 261f movel %sp@+,%d3
4b8dc: 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 ecb4 lea 4ecb4 <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
0004d5bc <rtems_io_open>:
rtems_status_code rtems_io_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d5bc: 4e56 0000 linkw %fp,#0
4d5c0: 202e 0008 movel %fp@(8),%d0
4d5c4: 2f03 movel %d3,%sp@-
4d5c6: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d5c8: b0b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d0
4d5ce: 6420 bccs 4d5f0 <rtems_io_open+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
4d5d0: 2600 movel %d0,%d3
4d5d2: 2400 movel %d0,%d2
4d5d4: e78b lsll #3,%d3
4d5d6: eb8a lsll #5,%d2
4d5d8: 2279 0005 f068 moveal 5f068 <_IO_Driver_address_table>,%a1
4d5de: 9483 subl %d3,%d2
4d5e0: 2271 2804 moveal %a1@(00000004,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d5e4: 4a89 tstl %a1
4d5e6: 6712 beqs 4d5fa <rtems_io_open+0x3e> <== NEVER TAKEN
}
4d5e8: 241f movel %sp@+,%d2
4d5ea: 261f movel %sp@+,%d3
4d5ec: 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;
4d5ee: 4ed1 jmp %a1@
}
4d5f0: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d5f2: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d5f4: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d5f6: 4e5e unlk %fp <== NOT EXECUTED
4d5f8: 4e75 rts <== NOT EXECUTED
4d5fa: 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;
4d5fc: 4280 clrl %d0 <== NOT EXECUTED
}
4d5fe: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d600: 4e5e unlk %fp <== NOT EXECUTED
0004d604 <rtems_io_read>:
rtems_status_code rtems_io_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d604: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d608: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4d60c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d60e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d610: b0b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
4d616: 6420 bccs 4d638 <rtems_io_read+0x34> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
4d618: 2600 movel %d0,%d3 <== NOT EXECUTED
4d61a: 2400 movel %d0,%d2 <== NOT EXECUTED
4d61c: e78b lsll #3,%d3 <== NOT EXECUTED
4d61e: eb8a lsll #5,%d2 <== NOT EXECUTED
4d620: 2279 0005 f068 moveal 5f068 <_IO_Driver_address_table>,%a1 <== NOT EXECUTED
4d626: 9483 subl %d3,%d2 <== NOT EXECUTED
4d628: 2271 280c moveal %a1@(0000000c,%d2:l),%a1 <== NOT EXECUTED
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d62c: 4a89 tstl %a1 <== NOT EXECUTED
4d62e: 6712 beqs 4d642 <rtems_io_read+0x3e> <== NOT EXECUTED
}
4d630: 241f movel %sp@+,%d2 <== NOT EXECUTED
4d632: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d634: 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;
4d636: 4ed1 jmp %a1@ <== NOT EXECUTED
}
4d638: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d63a: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d63c: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d63e: 4e5e unlk %fp <== NOT EXECUTED
4d640: 4e75 rts <== NOT EXECUTED
4d642: 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;
4d644: 4280 clrl %d0 <== NOT EXECUTED
}
4d646: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d648: 4e5e unlk %fp <== NOT EXECUTED
0004807c <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
)
{
4807c: 4e56 fff4 linkw %fp,#-12
48080: 226e 000c moveal %fp@(12),%a1
48084: 48d7 040c moveml %d2-%d3/%a2,%sp@
48088: 242e 0008 movel %fp@(8),%d2
4808c: 246e 0010 moveal %fp@(16),%a2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
48090: 2039 0006 32ac movel 632ac <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
48096: 4ab9 0006 3238 tstl 63238 <_Per_CPU_Information+0x8>
4809c: 6600 009c bnew 4813a <rtems_io_register_driver+0xbe>
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
480a0: 4a8a tstl %a2
480a2: 6700 00ea beqw 4818e <rtems_io_register_driver+0x112>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
480a6: 2480 movel %d0,%a2@
if ( driver_table == NULL )
480a8: 4a89 tstl %a1
480aa: 6700 00e2 beqw 4818e <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;
480ae: 4a91 tstl %a1@
480b0: 6700 00d4 beqw 48186 <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 )
480b4: b480 cmpl %d0,%d2
480b6: 6476 bccs 4812e <rtems_io_register_driver+0xb2> <== NEVER TAKEN
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
480b8: 2039 0006 3080 movel 63080 <_Thread_Dispatch_disable_level>,%d0
480be: 5280 addql #1,%d0
480c0: 23c0 0006 3080 movel %d0,63080 <_Thread_Dispatch_disable_level>
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
480c6: 4a82 tstl %d2
480c8: 667c bnes 48146 <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;
480ca: 2039 0006 32ac movel 632ac <_IO_Number_of_drivers>,%d0
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
480d0: 6700 0106 beqw 481d8 <rtems_io_register_driver+0x15c>
480d4: 2239 0006 32b0 movel 632b0 <_IO_Driver_address_table>,%d1
480da: 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;
480dc: 4a90 tstl %a0@
480de: 6700 008e beqw 4816e <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 ) {
480e2: 5282 addql #1,%d2
480e4: 41e8 0018 lea %a0@(24),%a0
480e8: b480 cmpl %d0,%d2
480ea: 65f0 bcss 480dc <rtems_io_register_driver+0x60> <== ALWAYS TAKEN
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
480ec: 2482 movel %d2,%a2@
if ( m != n )
480ee: b480 cmpl %d0,%d2
480f0: 6700 00e8 beqw 481da <rtems_io_register_driver+0x15e>
480f4: 2602 movel %d2,%d3
480f6: 2002 movel %d2,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
480f8: 2041 moveal %d1,%a0
}
/* Assigns invalid value in case of failure */
*major = m;
if ( m != n )
480fa: e78b lsll #3,%d3
480fc: eb88 lsll #5,%d0
480fe: 9083 subl %d3,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48100: d1c0 addal %d0,%a0
48102: 20d9 movel %a1@+,%a0@+
48104: 20d9 movel %a1@+,%a0@+
48106: 20d9 movel %a1@+,%a0@+
48108: 20d9 movel %a1@+,%a0@+
4810a: 20d9 movel %a1@+,%a0@+
4810c: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
4810e: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
48114: 2d42 0008 movel %d2,%fp@(8)
}
48118: 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 );
4811e: 42ae 0010 clrl %fp@(16)
48122: 42ae 000c clrl %fp@(12)
}
48126: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
48128: 4ef9 0004 fc48 jmp 4fc48 <rtems_io_initialize>
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
4812e: 700a moveq #10,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48130: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48136: 4e5e unlk %fp <== NOT EXECUTED
48138: 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;
4813a: 7012 moveq #18,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
4813c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48142: 4e5e unlk %fp <== NOT EXECUTED
48144: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
48146: 2202 movel %d2,%d1 <== NOT EXECUTED
48148: 2002 movel %d2,%d0 <== NOT EXECUTED
4814a: e789 lsll #3,%d1 <== NOT EXECUTED
4814c: eb88 lsll #5,%d0 <== NOT EXECUTED
4814e: 2079 0006 32b0 moveal 632b0 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
48154: 9081 subl %d1,%d0 <== NOT EXECUTED
48156: 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;
48158: 4a90 tstl %a0@ <== NOT EXECUTED
4815a: 673e beqs 4819a <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();
4815c: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
48162: 700c moveq #12,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48164: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4816a: 4e5e unlk %fp <== NOT EXECUTED
4816c: 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;
4816e: 4aa8 0004 tstl %a0@(4)
48172: 6700 ff78 beqw 480ec <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 ) {
48176: 5282 addql #1,%d2
48178: 41e8 0018 lea %a0@(24),%a0
4817c: b480 cmpl %d0,%d2
4817e: 6500 ff5c bcsw 480dc <rtems_io_register_driver+0x60>
48182: 6000 ff68 braw 480ec <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;
48186: 4aa9 0004 tstl %a1@(4)
4818a: 6600 ff28 bnew 480b4 <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;
4818e: 7009 moveq #9,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48190: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48196: 4e5e unlk %fp <== NOT EXECUTED
48198: 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;
4819a: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
4819e: 66bc bnes 4815c <rtems_io_register_driver+0xe0> <== NOT EXECUTED
481a0: 2239 0006 32b0 movel 632b0 <_IO_Driver_address_table>,%d1 <== NOT EXECUTED
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
481a6: 2041 moveal %d1,%a0 <== NOT EXECUTED
481a8: d1c0 addal %d0,%a0 <== NOT EXECUTED
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
*registered_major = major;
481aa: 2482 movel %d2,%a2@ <== NOT EXECUTED
}
_IO_Driver_address_table [major] = *driver_table;
481ac: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481ae: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b0: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481b6: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
481b8: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch> <== NOT EXECUTED
return rtems_io_initialize( major, 0, NULL );
481be: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
481c2: 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 );
481c8: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED
481cc: 42ae 000c clrl %fp@(12) <== NOT EXECUTED
}
481d0: 4e5e unlk %fp <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481d2: 4ef9 0004 fc48 jmp 4fc48 <rtems_io_initialize> <== NOT EXECUTED
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
481d8: 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();
481da: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
481e0: 7005 moveq #5,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
481e2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
481e8: 4e5e unlk %fp <== NOT EXECUTED
000481ec <rtems_io_unregister_driver>:
*/
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
481ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481f0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
481f4: 4ab9 0006 3238 tstl 63238 <_Per_CPU_Information+0x8> <== NOT EXECUTED
481fa: 6644 bnes 48240 <rtems_io_unregister_driver+0x54><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
481fc: b0b9 0006 32ac cmpl 632ac <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
48202: 6506 bcss 4820a <rtems_io_unregister_driver+0x1e><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
48204: 700d moveq #13,%d0 <== NOT EXECUTED
}
48206: 4e5e unlk %fp <== NOT EXECUTED
48208: 4e75 rts <== NOT EXECUTED
4820a: 2239 0006 3080 movel 63080 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
48210: 5281 addql #1,%d1 <== NOT EXECUTED
48212: 23c1 0006 3080 movel %d1,63080 <_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],
48218: 2200 movel %d0,%d1 <== NOT EXECUTED
4821a: eb88 lsll #5,%d0 <== NOT EXECUTED
4821c: 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(
4821e: 2079 0006 32b0 moveal 632b0 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
&_IO_Driver_address_table[major],
48224: 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(
48226: d1c0 addal %d0,%a0 <== NOT EXECUTED
48228: 4298 clrl %a0@+ <== NOT EXECUTED
4822a: 4298 clrl %a0@+ <== NOT EXECUTED
4822c: 4298 clrl %a0@+ <== NOT EXECUTED
4822e: 4298 clrl %a0@+ <== NOT EXECUTED
48230: 4298 clrl %a0@+ <== NOT EXECUTED
48232: 4290 clrl %a0@ <== NOT EXECUTED
&_IO_Driver_address_table[major],
0,
sizeof( rtems_driver_address_table )
);
_Thread_Enable_dispatch();
48234: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4823a: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_UNSATISFIED;
}
4823c: 4e5e unlk %fp <== NOT EXECUTED
4823e: 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;
48240: 7012 moveq #18,%d0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
}
48242: 4e5e unlk %fp <== NOT EXECUTED
...
0004d64c <rtems_io_write>:
rtems_status_code rtems_io_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d64c: 4e56 0000 linkw %fp,#0
4d650: 202e 0008 movel %fp@(8),%d0
4d654: 2f03 movel %d3,%sp@-
4d656: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d658: b0b9 0005 f064 cmpl 5f064 <_IO_Number_of_drivers>,%d0
4d65e: 6420 bccs 4d680 <rtems_io_write+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
4d660: 2600 movel %d0,%d3
4d662: 2400 movel %d0,%d2
4d664: e78b lsll #3,%d3
4d666: eb8a lsll #5,%d2
4d668: 2279 0005 f068 moveal 5f068 <_IO_Driver_address_table>,%a1
4d66e: 9483 subl %d3,%d2
4d670: 2271 2810 moveal %a1@(00000010,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d674: 4a89 tstl %a1
4d676: 6712 beqs 4d68a <rtems_io_write+0x3e> <== NEVER TAKEN
}
4d678: 241f movel %sp@+,%d2
4d67a: 261f movel %sp@+,%d3
4d67c: 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;
4d67e: 4ed1 jmp %a1@
}
4d680: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d682: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d684: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d686: 4e5e unlk %fp <== NOT EXECUTED
4d688: 4e75 rts <== NOT EXECUTED
4d68a: 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;
4d68c: 4280 clrl %d0 <== NOT EXECUTED
}
4d68e: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d690: 4e5e unlk %fp <== NOT EXECUTED
00049224 <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)
{
49224: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
49228: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
4922c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
49230: 4a8b tstl %a3 <== NOT EXECUTED
49232: 6742 beqs 49276 <rtems_iterate_over_all_threads+0x52><== NOT EXECUTED
49234: 49f9 0006 9398 lea 69398 <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
4923a: 205c moveal %a4@+,%a0 <== NOT EXECUTED
4923c: 4a88 tstl %a0 <== NOT EXECUTED
4923e: 672e beqs 4926e <rtems_iterate_over_all_threads+0x4a><== NOT EXECUTED
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
49240: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED
if ( !information )
49244: 4a8a tstl %a2 <== NOT EXECUTED
49246: 6726 beqs 4926e <rtems_iterate_over_all_threads+0x4a><== NOT EXECUTED
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49248: 4a6a 000e tstw %a2@(14) <== NOT EXECUTED
4924c: 6720 beqs 4926e <rtems_iterate_over_all_threads+0x4a><== NOT EXECUTED
4924e: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
49250: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED
49254: 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++ ) {
49258: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
4925a: 4a80 tstl %d0 <== NOT EXECUTED
4925c: 6706 beqs 49264 <rtems_iterate_over_all_threads+0x40><== NOT EXECUTED
continue;
(*routine)(the_thread);
4925e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49260: 4e93 jsr %a3@ <== NOT EXECUTED
49262: 588f addql #4,%sp <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
49264: 4280 clrl %d0 <== NOT EXECUTED
49266: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
4926a: b480 cmpl %d0,%d2 <== NOT EXECUTED
4926c: 63e2 blss 49250 <rtems_iterate_over_all_threads+0x2c><== NOT EXECUTED
Objects_Information *information;
if ( !routine )
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
4926e: b9fc 0006 93a4 cmpal #431012,%a4 <== NOT EXECUTED
49274: 66c4 bnes 4923a <rtems_iterate_over_all_threads+0x16><== NOT EXECUTED
(*routine)(the_thread);
}
}
}
49276: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
4927c: 4e5e unlk %fp <== NOT EXECUTED
0004af02 <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 )
{
4af02: 4e56 fffc linkw %fp,#-4
4af06: 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 );
4af08: 42a7 clrl %sp@-
4af0a: 42a7 clrl %sp@-
4af0c: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@-
4af12: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
rtems_status_code rc;
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
4af18: 2039 0005 ecec movel 5ecec <rtems_libio_iop_freelist>,%d0
4af1e: 4fef 000c lea %sp@(12),%sp
4af22: 6618 bnes 4af3c <rtems_libio_allocate+0x3a> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4af24: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@-
rtems_libio_iop_freelist = next;
goto done;
}
failed:
iop = 0;
4af2a: 95ca subal %a2,%a2
4af2c: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
done:
rtems_libio_unlock();
return iop;
}
4af32: 200a movel %a2,%d0
4af34: 246e fff8 moveal %fp@(-8),%a2
4af38: 4e5e unlk %fp
4af3a: 4e75 rts
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4af3c: 486e fffc pea %fp@(-4)
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4af40: 90b9 0005 ece8 subl 5ece8 <rtems_libio_iops>,%d0
4af46: 223c b6db 6db7 movel #-1227133513,%d1
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4af4c: 42a7 clrl %sp@-
4af4e: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
4af52: e680 asrl #3,%d0
4af54: 4c01 0800 mulsl %d1,%d0
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4af58: 4878 0001 pea 1 <ADD>
4af5c: 0080 4c42 4900 oril #1279412480,%d0
4af62: 2f00 movel %d0,%sp@-
4af64: 4eb9 0004 61bc jsr 461bc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
0,
&sema
);
if (rc != RTEMS_SUCCESSFUL)
4af6a: 4fef 0014 lea %sp@(20),%sp
4af6e: 4a80 tstl %d0
4af70: 66b2 bnes 4af24 <rtems_libio_allocate+0x22> <== NEVER TAKEN
goto failed;
iop = rtems_libio_iop_freelist;
4af72: 2479 0005 ecec moveal 5ecec <rtems_libio_iop_freelist>,%a2
next = iop->data1;
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4af78: 204a moveal %a2,%a0
iop->flags = LIBIO_FLAGS_OPEN;
4af7a: 223c 0000 0100 movel #256,%d1
&sema
);
if (rc != RTEMS_SUCCESSFUL)
goto failed;
iop = rtems_libio_iop_freelist;
next = iop->data1;
4af80: 202a 0034 movel %a2@(52),%d0
(void) memset( iop, 0, sizeof(rtems_libio_t) );
4af84: 4298 clrl %a0@+
4af86: 4298 clrl %a0@+
4af88: 4298 clrl %a0@+
4af8a: 4298 clrl %a0@+
4af8c: 4298 clrl %a0@+
4af8e: 4298 clrl %a0@+
4af90: 4298 clrl %a0@+
4af92: 4298 clrl %a0@+
4af94: 4298 clrl %a0@+
4af96: 4298 clrl %a0@+
4af98: 4298 clrl %a0@+
4af9a: 4298 clrl %a0@+
4af9c: 4298 clrl %a0@+
4af9e: 4290 clrl %a0@
iop->flags = LIBIO_FLAGS_OPEN;
iop->sem = sema;
4afa0: 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;
4afa6: 2541 0014 movel %d1,%a2@(20)
4afaa: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@-
iop->sem = sema;
rtems_libio_iop_freelist = next;
4afb0: 23c0 0005 ecec movel %d0,5ecec <rtems_libio_iop_freelist>
4afb6: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
iop = 0;
done:
rtems_libio_unlock();
return iop;
}
4afbc: 200a movel %a2,%d0
4afbe: 246e fff8 moveal %fp@(-8),%a2
4afc2: 4e5e unlk %fp <== NOT EXECUTED
0004afc6 <rtems_libio_free>:
*/
void rtems_libio_free(
rtems_libio_t *iop
)
{
4afc6: 4e56 0000 linkw %fp,#0
4afca: 2f0a movel %a2,%sp@-
4afcc: 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 );
4afd0: 42a7 clrl %sp@-
4afd2: 42a7 clrl %sp@-
4afd4: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@-
4afda: 4eb9 0004 6458 jsr 46458 <rtems_semaphore_obtain>
rtems_libio_lock();
if (iop->sem)
4afe0: 202a 002c movel %a2@(44),%d0
4afe4: 4fef 000c lea %sp@(12),%sp
4afe8: 6630 bnes 4b01a <rtems_libio_free+0x54> <== ALWAYS TAKEN
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4afea: 41f9 0005 ecec lea 5ecec <rtems_libio_iop_freelist>,%a0 <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4aff0: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
4aff6: 2550 0034 movel %a0@,%a2@(52) <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4affa: 41f9 0005 ecf0 lea 5ecf0 <rtems_libio_semaphore>,%a0 <== NOT EXECUTED
4b000: 2d50 0008 movel %a0@,%fp@(8) <== NOT EXECUTED
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b004: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b008: 23ca 0005 ecec movel %a2,5ecec <rtems_libio_iop_freelist> <== NOT EXECUTED
rtems_libio_unlock();
}
4b00e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b012: 4e5e unlk %fp <== NOT EXECUTED
4b014: 4ef9 0004 6598 jmp 46598 <rtems_semaphore_release> <== NOT EXECUTED
)
{
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
4b01a: 2f00 movel %d0,%sp@-
4b01c: 4eb9 0004 6380 jsr 46380 <rtems_semaphore_delete>
4b022: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
4b024: 41f9 0005 ecec lea 5ecec <rtems_libio_iop_freelist>,%a0
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b02a: 203c ffff feff movel #-257,%d0
iop->data1 = rtems_libio_iop_freelist;
4b030: 2550 0034 movel %a0@,%a2@(52)
4b034: 41f9 0005 ecf0 lea 5ecf0 <rtems_libio_semaphore>,%a0
4b03a: 2d50 0008 movel %a0@,%fp@(8)
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
4b03e: c1aa 0014 andl %d0,%a2@(20)
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
4b042: 23ca 0005 ecec movel %a2,5ecec <rtems_libio_iop_freelist>
rtems_libio_unlock();
}
4b048: 246e fffc moveal %fp@(-4),%a2
4b04c: 4e5e unlk %fp
4b04e: 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 d524 movel 5d524 <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 ece8 movel %d0,5ece8 <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 ecec movel %d0,5ecec <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 ecf0 pea 5ecf0 <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 d520 moveal 5d520 <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 6ba8 jsr 46ba8 <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 6ba8 jsr 46ba8 <rtems_fatal_error_occurred> <== NOT EXECUTED
0004b0d2 <rtems_libio_is_file_open>:
*/
int rtems_libio_is_file_open(
void *node_access
)
{
4b0d2: 4e56 0000 linkw %fp,#0
4b0d6: 2f02 movel %d2,%sp@-
4b0d8: 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 );
4b0dc: 42a7 clrl %sp@-
4b0de: 42a7 clrl %sp@-
4b0e0: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@-
4b0e6: 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++){
4b0ec: 2079 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a0
4b0f2: 4fef 000c lea %sp@(12),%sp
4b0f6: 2279 0005 d524 moveal 5d524 <rtems_libio_number_iops>,%a1
4b0fc: 4a89 tstl %a1
4b0fe: 6720 beqs 4b120 <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(
4b100: 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++){
4b104: 4280 clrl %d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b106: 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++){
4b108: 5280 addql #1,%d0
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b10a: 0281 0000 0100 andil #256,%d1
4b110: 6706 beqs 4b118 <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 ) {
4b112: b4a8 0004 cmpl %a0@(4),%d2
4b116: 6720 beqs 4b138 <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++){
4b118: 41e8 0038 lea %a0@(56),%a0
4b11c: b3c0 cmpal %d0,%a1
4b11e: 62e6 bhis 4b106 <rtems_libio_is_file_open+0x34> <== ALWAYS TAKEN
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b120: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
int rtems_libio_is_file_open(
void *node_access
)
{
rtems_libio_t *iop;
int result=0;
4b126: 4282 clrl %d2 <== NOT EXECUTED
4b128: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b12e: 2002 movel %d2,%d0 <== NOT EXECUTED
4b130: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4b134: 4e5e unlk %fp <== NOT EXECUTED
4b136: 4e75 rts <== NOT EXECUTED
4b138: 2f39 0005 ecf0 movel 5ecf0 <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;
4b13e: 7401 moveq #1,%d2
4b140: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release>
}
rtems_libio_unlock();
return result;
}
4b146: 2002 movel %d2,%d0
4b148: 242e fffc movel %fp@(-4),%d2
4b14c: 4e5e unlk %fp <== NOT EXECUTED
0004b054 <rtems_libio_is_open_files_in_fs>:
*/
int rtems_libio_is_open_files_in_fs(
rtems_filesystem_mount_table_entry_t * fs_mt_entry
)
{
4b054: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b058: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b05a: 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 );
4b05e: 42a7 clrl %sp@- <== NOT EXECUTED
4b060: 42a7 clrl %sp@- <== NOT EXECUTED
4b062: 2f39 0005 ecf0 movel 5ecf0 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b068: 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++){
4b06e: 2079 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a0 <== NOT EXECUTED
4b074: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b078: 2279 0005 d524 moveal 5d524 <rtems_libio_number_iops>,%a1 <== NOT EXECUTED
4b07e: 4a89 tstl %a1 <== NOT EXECUTED
4b080: 6720 beqs 4b0a2 <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(
4b082: 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++){
4b086: 4280 clrl %d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b088: 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++){
4b08a: 5280 addql #1,%d0 <== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
4b08c: 0281 0000 0100 andil #256,%d1 <== NOT EXECUTED
4b092: 6706 beqs 4b09a <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 ) {
4b094: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED
4b098: 6720 beqs 4b0ba <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++){
4b09a: 41e8 0038 lea %a0@(56),%a0 <== NOT EXECUTED
4b09e: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
4b0a0: 62e6 bhis 4b088 <rtems_libio_is_open_files_in_fs+0x34><== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b0a2: 2f39 0005 ecf0 movel 5ecf0 <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;
4b0a8: 4282 clrl %d2 <== NOT EXECUTED
4b0aa: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b0b0: 2002 movel %d2,%d0 <== NOT EXECUTED
4b0b2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4b0b6: 4e5e unlk %fp <== NOT EXECUTED
4b0b8: 4e75 rts <== NOT EXECUTED
4b0ba: 2f39 0005 ecf0 movel 5ecf0 <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;
4b0c0: 7401 moveq #1,%d2 <== NOT EXECUTED
4b0c2: 4eb9 0004 6598 jsr 46598 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
return result;
}
4b0c8: 2002 movel %d2,%d0 <== NOT EXECUTED
4b0ca: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4b0ce: 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 ccce pea 5ccce <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 ccce pea 5ccce <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 e108 moveal 5e108 <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 0005 f708 cmpal #390920,%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 e108 pea 5e108 <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 e108 movel %a3,5e108 <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 0005 f708 pea 5f708 <rtems_global_user_env> <== NOT EXECUTED
444fa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
444fc: 4eb9 0004 ea7c jsr 4ea7c <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 e108 pea 5e108 <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 e108 moveal 5e108 <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 e108 movel %a0@,5e108 <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 e108 movel %a0@,5e108 <rtems_current_user_env> <== NOT EXECUTED
445e8: 60ca bras 445b4 <rtems_libio_share_private_env+0x46><== NOT EXECUTED
...
0004aeb4 <rtems_libio_to_fcntl_flags>:
uint32_t flags
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4aeb4: 7006 moveq #6,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4aeb6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4aeba: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4aebe: c081 andl %d1,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
4aec0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
4aec2: 7406 moveq #6,%d2 <== NOT EXECUTED
4aec4: b480 cmpl %d0,%d2 <== NOT EXECUTED
4aec6: 6736 beqs 4aefe <rtems_libio_to_fcntl_flags+0x4a><== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
4aec8: 0801 0001 btst #1,%d1 <== NOT EXECUTED
4aecc: 6726 beqs 4aef4 <rtems_libio_to_fcntl_flags+0x40><== NOT EXECUTED
fcntl_flags |= O_RDONLY;
4aece: 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 ) {
4aed0: 0801 0000 btst #0,%d1 <== NOT EXECUTED
4aed4: 6704 beqs 4aeda <rtems_libio_to_fcntl_flags+0x26><== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
4aed6: 08c0 000e bset #14,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
4aeda: 0801 0009 btst #9,%d1 <== NOT EXECUTED
4aede: 6704 beqs 4aee4 <rtems_libio_to_fcntl_flags+0x30><== NOT EXECUTED
fcntl_flags |= O_APPEND;
4aee0: 7408 moveq #8,%d2 <== NOT EXECUTED
4aee2: 8082 orl %d2,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {
4aee4: 0801 000a btst #10,%d1 <== NOT EXECUTED
4aee8: 6704 beqs 4aeee <rtems_libio_to_fcntl_flags+0x3a><== NOT EXECUTED
fcntl_flags |= O_CREAT;
4aeea: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
}
return fcntl_flags;
}
4aeee: 241f movel %sp@+,%d2 <== NOT EXECUTED
4aef0: 4e5e unlk %fp <== NOT EXECUTED
4aef2: 4e75 rts <== NOT EXECUTED
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
4aef4: 44c1 movew %d1,%ccr <== NOT EXECUTED
4aef6: 57c0 seq %d0 <== NOT EXECUTED
4aef8: 49c0 extbl %d0 <== NOT EXECUTED
4aefa: 4480 negl %d0 <== NOT EXECUTED
4aefc: 60d2 bras 4aed0 <rtems_libio_to_fcntl_flags+0x1c><== NOT EXECUTED
4aefe: 7002 moveq #2,%d0 <== NOT EXECUTED
4af00: 60ce bras 4aed0 <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 3080 movel 63080 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46f1a: 4eb9 0004 cee0 jsr 4cee0 <_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 5154 addl %d3,65154 <rtems_malloc_statistics+0x28><== NOT EXECUTED
46f34: 2039 0006 5150 movel 65150 <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED
46f3a: d182 addxl %d2,%d0 <== NOT EXECUTED
46f3c: 23c0 0006 5150 movel %d0,65150 <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 3080 movel 63080 <RTEMS_Malloc_Heap>,%sp@-
46f70: 4eb9 0004 cee0 jsr 4cee0 <_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 5148 movel 65148 <rtems_malloc_statistics+0x1c>,%d0
46f84: d6b9 0006 514c addl 6514c <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 5154 subl 65154 <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 5148 movel %d2,65148 <rtems_malloc_statistics+0x1c>
46f9a: 23c3 0006 514c movel %d3,6514c <rtems_malloc_statistics+0x20>
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
46fa0: b0b9 0006 5144 cmpl 65144 <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 5144 movel %d0,65144 <rtems_malloc_statistics+0x18>
}
46fae: 242e fff4 movel %fp@(-12),%d2
46fb2: 262e fff8 movel %fp@(-8),%d3
46fb6: 4e5e unlk %fp <== NOT EXECUTED
0004f520 <rtems_memalign>:
int rtems_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
4f520: 4e56 0000 linkw %fp,#0
4f524: 2f0a movel %a2,%sp@-
4f526: 246e 0008 moveal %fp@(8),%a2
4f52a: 2f02 movel %d2,%sp@-
void *return_this;
/*
* Parameter error checks
*/
if ( !pointer )
4f52c: 4a8a tstl %a2
4f52e: 675e beqs 4f58e <rtems_memalign+0x6e> <== NEVER TAKEN
return EINVAL;
*pointer = NULL;
4f530: 4292 clrl %a2@
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
4f532: 7003 moveq #3,%d0
4f534: b0b9 0006 31e8 cmpl 631e8 <_System_state_Current>,%d0
4f53a: 6748 beqs 4f584 <rtems_memalign+0x64> <== ALWAYS TAKEN
return EINVAL;
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
4f53c: 4eb9 0004 4098 jsr 44098 <malloc_deferred_frees_process>
Heap_Control *heap,
uintptr_t size,
uintptr_t alignment
)
{
return
4f542: 42a7 clrl %sp@-
4f544: 2f2e 000c movel %fp@(12),%sp@-
4f548: 2f2e 0010 movel %fp@(16),%sp@-
4f54c: 2f39 0006 16c0 movel 616c0 <RTEMS_Malloc_Heap>,%sp@-
4f552: 4eb9 0004 9534 jsr 49534 <_Protected_heap_Allocate_aligned_with_boundary>
return_this = _Protected_heap_Allocate_aligned(
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
4f558: 4fef 0010 lea %sp@(16),%sp
4f55c: 2400 movel %d0,%d2
4f55e: 673c beqs 4f59c <rtems_memalign+0x7c> <== NEVER TAKEN
return ENOMEM;
/*
* If configured, update the more involved statistics
*/
if ( rtems_malloc_statistics_helpers )
4f560: 2079 0006 1e66 moveal 61e66 <rtems_malloc_statistics_helpers>,%a0
4f566: 4a88 tstl %a0
4f568: 670a beqs 4f574 <rtems_memalign+0x54> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
4f56a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4f56c: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4f570: 4e90 jsr %a0@ <== NOT EXECUTED
4f572: 588f addql #4,%sp <== NOT EXECUTED
*pointer = return_this;
4f574: 2482 movel %d2,%a2@
return 0;
}
4f576: 242e fff8 movel %fp@(-8),%d2
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
4f57a: 4280 clrl %d0
}
4f57c: 246e fffc moveal %fp@(-4),%a2
4f580: 4e5e unlk %fp
4f582: 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() )
4f584: 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()) &&
4f58a: 4a00 tstb %d0
4f58c: 66ae bnes 4f53c <rtems_memalign+0x1c> <== ALWAYS TAKEN
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f58e: 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;
4f592: 7016 moveq #22,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f594: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4f598: 4e5e unlk %fp <== NOT EXECUTED
4f59a: 4e75 rts <== NOT EXECUTED
4f59c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
return ENOMEM;
4f5a0: 700c moveq #12,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4f5a2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4f5a6: 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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
562e4: 4eb9 0005 b7bc jsr 5b7bc <_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 9ce4 jsr 59ce4 <_CORE_message_queue_Broadcast> <== NOT EXECUTED
5630c: 2400 movel %d0,%d2 <== NOT EXECUTED
NULL,
#endif
count
);
_Thread_Enable_dispatch();
5630e: 4eb9 0005 c34a jsr 5c34a <_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 8cd0 movel 68cd0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4ed94: 5280 addql #1,%d0 <== NOT EXECUTED
4ed96: 23c0 0006 8cd0 movel %d0,68cd0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#endif
#endif
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
4ed9c: 4eb9 0005 49cc jsr 549cc <_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 00fc jsr 500fc <_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 8ec4 pea 68ec4 <_Message_queue_Information> <== NOT EXECUTED
4ede2: 4eb9 0005 1014 jsr 51014 <_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 1d96 jsr 51d96 <_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 8edc moveal 68edc <_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 1d96 jsr 51d96 <_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 1d96 jsr 51d96 <_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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
5645c: 4eb9 0005 b7bc jsr 5b7bc <_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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
56476: 4eb9 0005 b350 jsr 5b350 <_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 9d70 jsr 59d70 <_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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
56494: 4eb9 0005 b614 jsr 5b614 <_Objects_Free> <== NOT EXECUTED
0, /* Not used */
0
);
}
#endif
_Thread_Enable_dispatch();
5649a: 4eb9 0005 c34a jsr 5c34a <_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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
564d4: 4eb9 0005 b7bc jsr 5b7bc <_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 9dc4 jsr 59dc4 <_CORE_message_queue_Flush> <== NOT EXECUTED
564f0: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
564f2: 4eb9 0005 c34a jsr 5c34a <_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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
56534: 4eb9 0005 b7bc jsr 5b7bc <_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 c34a jsr 5c34a <_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 8ec4 pea 68ec4 <_Message_queue_Information> <== NOT EXECUTED
4ee5a: 4eb9 0005 130c jsr 5130c <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
node,
id
);
return _Status_Object_name_errors_to_status[ status ];
4ee60: 41f9 0006 6602 lea 66602 <_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 8ec4 pea 68ec4 <_Message_queue_Information> <== NOT EXECUTED
4ee96: 4eb9 0005 1180 jsr 51180 <_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 01b4 jsr 501b4 <_CORE_message_queue_Seize> <== NOT EXECUTED
buffer,
size,
wait,
timeout
);
_Thread_Enable_dispatch();
4eeca: 4eb9 0005 1d96 jsr 51d96 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
4eed0: 2079 0006 8e8c moveal 68e8c <_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 8ec4 pea 68ec4 <_Message_queue_Information> <== NOT EXECUTED
4ef26: 4eb9 0005 1180 jsr 51180 <_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 0298 jsr 50298 <_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 1d96 jsr 51d96 <_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 dd30 pea 7dd30 <_Message_queue_Information> <== NOT EXECUTED
566f6: 4eb9 0005 b7bc jsr 5b7bc <_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 9fd8 jsr 59fd8 <_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 c34a jsr 5c34a <_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
0004d80c <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4d80c: 4e56 ff90 linkw %fp,#-112 <== NOT EXECUTED
4d810: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
4d814: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4d818: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
4d81c: 4eb9 0005 0110 jsr 50110 <strdup> <== NOT EXECUTED
if (dup_path != NULL) {
4d822: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_mkdir(const char *path, mode_t mode)
{
int success = 0;
char *dup_path = strdup(path);
4d824: 2640 moveal %d0,%a3 <== NOT EXECUTED
if (dup_path != NULL) {
4d826: 4a80 tstl %d0 <== NOT EXECUTED
4d828: 6700 0138 beqw 4d962 <rtems_mkdir+0x156> <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4d82c: 742f moveq #47,%d2 <== NOT EXECUTED
4d82e: 1013 moveb %a3@,%d0 <== NOT EXECUTED
4d830: 1200 moveb %d0,%d1 <== NOT EXECUTED
4d832: 49c1 extbl %d1 <== NOT EXECUTED
4d834: b481 cmpl %d1,%d2 <== NOT EXECUTED
4d836: 6700 014a beqw 4d982 <rtems_mkdir+0x176> <== NOT EXECUTED
4d83a: 244b moveal %a3,%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4d83c: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED
4d840: 4283 clrl %d3 <== NOT EXECUTED
4d842: 7201 moveq #1,%d1 <== NOT EXECUTED
4d844: 4bf9 0004 472c lea 4472c <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) {
4d84a: 2e3c 0004 f160 movel #323936,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4d850: 283c 0004 da70 movel #318064,%d4 <== NOT EXECUTED
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
4d856: 4a00 tstb %d0 <== NOT EXECUTED
4d858: 6710 beqs 4d86a <rtems_mkdir+0x5e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
4d85a: 49c0 extbl %d0 <== NOT EXECUTED
4d85c: 742f moveq #47,%d2 <== NOT EXECUTED
4d85e: b480 cmpl %d0,%d2 <== NOT EXECUTED
4d860: 6738 beqs 4d89a <rtems_mkdir+0x8e> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
4d862: 528a addql #1,%a2 <== NOT EXECUTED
4d864: 101c moveb %a4@+,%d0 <== NOT EXECUTED
if (p[0] == '\0')
4d866: 4a00 tstb %d0 <== NOT EXECUTED
4d868: 66f0 bnes 4d85a <rtems_mkdir+0x4e> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4d86a: 7401 moveq #1,%d2 <== NOT EXECUTED
4d86c: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
last = 1;
if (first) {
4d86e: 4a81 tstl %d1 <== NOT EXECUTED
4d870: 6650 bnes 4d8c2 <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) {
4d872: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4d878: 4a82 tstl %d2 <== NOT EXECUTED
4d87a: 662e bnes 4d8aa <rtems_mkdir+0x9e> <== NOT EXECUTED
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4d87c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d87e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d880: 4e95 jsr %a5@ <== NOT EXECUTED
4d882: 508f addql #8,%sp <== NOT EXECUTED
4d884: 4a80 tstl %d0 <== NOT EXECUTED
4d886: 6d5c blts 4d8e4 <rtems_mkdir+0xd8> <== NOT EXECUTED
} else {
retval = 0;
break;
}
}
if (!last)
4d888: 4a82 tstl %d2 <== NOT EXECUTED
4d88a: 6600 00c0 bnew 4d94c <rtems_mkdir+0x140> <== NOT EXECUTED
*p = '/';
4d88e: 4281 clrl %d1 <== NOT EXECUTED
4d890: 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) {
4d894: 528a addql #1,%a2 <== NOT EXECUTED
4d896: 101c moveb %a4@+,%d0 <== NOT EXECUTED
4d898: 60cc bras 4d866 <rtems_mkdir+0x5a> <== NOT EXECUTED
if (p[0] == '\0')
last = 1;
else if (p[0] != '/')
continue;
*p = '\0';
4d89a: 4212 clrb %a2@ <== NOT EXECUTED
if (!last && p[1] == '\0')
4d89c: 4a14 tstb %a4@ <== NOT EXECUTED
4d89e: 57c2 seq %d2 <== NOT EXECUTED
4d8a0: 49c2 extbl %d2 <== NOT EXECUTED
4d8a2: 4482 negl %d2 <== NOT EXECUTED
last = 1;
if (first) {
4d8a4: 4a81 tstl %d1 <== NOT EXECUTED
4d8a6: 67ca beqs 4d872 <rtems_mkdir+0x66> <== NOT EXECUTED
4d8a8: 6018 bras 4d8c2 <rtems_mkdir+0xb6> <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4d8aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d8ac: 2044 moveal %d4,%a0 <== NOT EXECUTED
4d8ae: 4e90 jsr %a0@ <== NOT EXECUTED
4d8b0: 588f addql #4,%sp <== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4d8b2: 2005 movel %d5,%d0 <== NOT EXECUTED
4d8b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d8b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d8b8: 4e95 jsr %a5@ <== NOT EXECUTED
4d8ba: 508f addql #8,%sp <== NOT EXECUTED
4d8bc: 4a80 tstl %d0 <== NOT EXECUTED
4d8be: 6cc8 bges 4d888 <rtems_mkdir+0x7c> <== NOT EXECUTED
4d8c0: 6022 bras 4d8e4 <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);
4d8c2: 42a7 clrl %sp@- <== NOT EXECUTED
4d8c4: 2044 moveal %d4,%a0 <== NOT EXECUTED
4d8c6: 4e90 jsr %a0@ <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4d8c8: 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);
4d8ca: 2600 movel %d0,%d3 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4d8cc: 0280 ffff ff3f andil #-193,%d0 <== NOT EXECUTED
4d8d2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4d8d4: 4e90 jsr %a0@ <== NOT EXECUTED
4d8d6: 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) {
4d8d8: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4d8de: 4a82 tstl %d2 <== NOT EXECUTED
4d8e0: 679a beqs 4d87c <rtems_mkdir+0x70> <== NOT EXECUTED
4d8e2: 60c6 bras 4d8aa <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) {
4d8e4: 2047 moveal %d7,%a0 <== NOT EXECUTED
4d8e6: 2c3c 0004 f160 movel #323936,%d6 <== NOT EXECUTED
4d8ec: 4e90 jsr %a0@ <== NOT EXECUTED
4d8ee: 7211 moveq #17,%d1 <== NOT EXECUTED
4d8f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d8f2: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d8f4: 670c beqs 4d902 <rtems_mkdir+0xf6> <== NOT EXECUTED
4d8f6: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d8f8: 4e90 jsr %a0@ <== NOT EXECUTED
4d8fa: 7215 moveq #21,%d1 <== NOT EXECUTED
4d8fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d8fe: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d900: 6664 bnes 4d966 <rtems_mkdir+0x15a> <== NOT EXECUTED
if (stat(path, &sb) < 0) {
4d902: 486e ffba pea %fp@(-70) <== NOT EXECUTED
4d906: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d908: 4eb9 0004 d9bc jsr 4d9bc <stat> <== NOT EXECUTED
4d90e: 508f addql #8,%sp <== NOT EXECUTED
4d910: 4a80 tstl %d0 <== NOT EXECUTED
4d912: 6d52 blts 4d966 <rtems_mkdir+0x15a> <== NOT EXECUTED
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
4d914: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
4d918: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
4d91e: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
4d924: 6700 ff62 beqw 4d888 <rtems_mkdir+0x7c> <== NOT EXECUTED
if (last)
4d928: 4a82 tstl %d2 <== NOT EXECUTED
4d92a: 677a beqs 4d9a6 <rtems_mkdir+0x19a> <== NOT EXECUTED
errno = EEXIST;
4d92c: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d92e: 4e90 jsr %a0@ <== NOT EXECUTED
4d930: 7211 moveq #17,%d1 <== NOT EXECUTED
4d932: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d934: 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);
4d936: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d938: 4eb9 0004 4034 jsr 44034 <free> <== NOT EXECUTED
4d93e: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4d940: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4d942: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d948: 4e5e unlk %fp <== NOT EXECUTED
4d94a: 4e75 rts <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4d94c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d94e: 4eb9 0004 4034 jsr 44034 <free> <== NOT EXECUTED
4d954: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4d956: 4280 clrl %d0 <== NOT EXECUTED
}
4d958: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4d95e: 4e5e unlk %fp <== NOT EXECUTED
4d960: 4e75 rts <== NOT EXECUTED
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
}
return success != 0 ? 0 : -1;
4d962: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d964: 60dc bras 4d942 <rtems_mkdir+0x136> <== NOT EXECUTED
}
}
if (!last)
*p = '/';
}
if (!first && !last)
4d966: 4a82 tstl %d2 <== NOT EXECUTED
4d968: 66cc bnes 4d936 <rtems_mkdir+0x12a> <== NOT EXECUTED
(void)umask(oumask);
4d96a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d96c: 4eb9 0004 da70 jsr 4da70 <umask> <== NOT EXECUTED
4d972: 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);
4d974: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4d976: 4eb9 0004 4034 jsr 44034 <free> <== NOT EXECUTED
4d97c: 588f addql #4,%sp <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4d97e: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d980: 60c0 bras 4d942 <rtems_mkdir+0x136> <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4d982: 45eb 0001 lea %a3@(1),%a2 <== NOT EXECUTED
(void)umask(oumask);
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
4d986: 49ea 0001 lea %a2@(1),%a4 <== NOT EXECUTED
4d98a: 4283 clrl %d3 <== NOT EXECUTED
4d98c: 7201 moveq #1,%d1 <== NOT EXECUTED
4d98e: 4bf9 0004 472c lea 4472c <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) {
4d994: 2e3c 0004 f160 movel #323936,%d7 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4d99a: 283c 0004 da70 movel #318064,%d4 <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4d9a0: 1012 moveb %a2@,%d0 <== NOT EXECUTED
4d9a2: 6000 feb2 braw 4d856 <rtems_mkdir+0x4a> <== NOT EXECUTED
break;
} else if (!S_ISDIR(sb.st_mode)) {
if (last)
errno = EEXIST;
else
errno = ENOTDIR;
4d9a6: 2046 moveal %d6,%a0 <== NOT EXECUTED
4d9a8: 4e90 jsr %a0@ <== NOT EXECUTED
4d9aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d9ac: 7014 moveq #20,%d0 <== NOT EXECUTED
4d9ae: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
if (!last)
*p = '/';
}
if (!first && !last)
(void)umask(oumask);
4d9b0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d9b2: 4eb9 0004 da70 jsr 4da70 <umask> <== NOT EXECUTED
4d9b8: 588f addql #4,%sp <== NOT EXECUTED
4d9ba: 60b8 bras 4d974 <rtems_mkdir+0x168> <== NOT EXECUTED
00047e60 <rtems_object_api_maximum_class>:
#include <rtems/rtems/types.h>
int rtems_object_api_maximum_class(
int api
)
{
47e60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_API_maximum_class(api);
}
47e64: 4e5e unlk %fp <== NOT EXECUTED
int rtems_object_api_maximum_class(
int api
)
{
return _Objects_API_maximum_class(api);
47e66: 4ef9 0004 9890 jmp 49890 <_Objects_API_maximum_class> <== NOT EXECUTED
00047e6c <rtems_object_api_minimum_class>:
uint32_t api
)
{
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
47e6c: 7203 moveq #3,%d1 <== NOT EXECUTED
#include <rtems/rtems/types.h>
uint32_t rtems_object_api_minimum_class(
uint32_t api
)
{
47e6e: 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 )
47e72: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
47e76: 5380 subql #1,%d0 <== NOT EXECUTED
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
47e78: b280 cmpl %d0,%d1 <== NOT EXECUTED
47e7a: 53c0 sls %d0 <== NOT EXECUTED
47e7c: 49c0 extbl %d0 <== NOT EXECUTED
}
47e7e: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
47e82: 4e5e unlk %fp <== NOT EXECUTED
47e84: 8081 orl %d1,%d0 <== NOT EXECUTED
00047e88 <rtems_object_get_api_class_name>:
)
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
47e88: 7001 moveq #1,%d0 <== NOT EXECUTED
const char *rtems_object_get_api_class_name(
int the_api,
int the_class
)
{
47e8a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47e8e: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
47e92: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
47e94: b081 cmpl %d1,%d0 <== NOT EXECUTED
47e96: 673e beqs 47ed6 <rtems_object_get_api_class_name+0x4e><== NOT EXECUTED
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
47e98: 7402 moveq #2,%d2 <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
47e9a: 203c 0005 f75e movel #391006,%d0 <== 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;
else if ( the_api == OBJECTS_CLASSIC_API )
47ea0: b481 cmpl %d1,%d2 <== NOT EXECUTED
47ea2: 6708 beqs 47eac <rtems_object_get_api_class_name+0x24><== 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";
}
47ea4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47ea8: 4e5e unlk %fp <== NOT EXECUTED
47eaa: 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;
47eac: 203c 0006 070c movel #395020,%d0 <== 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 );
47eb2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47eb6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47eb8: 4eb9 0004 cda4 jsr 4cda4 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( class_assoc )
47ebe: 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 );
47ec0: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
47ec2: 203c 0005 f766 movel #391014,%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 )
47ec8: 4a88 tstl %a0 <== NOT EXECUTED
47eca: 67d8 beqs 47ea4 <rtems_object_get_api_class_name+0x1c><== NOT EXECUTED
return class_assoc->name;
return "BAD CLASS";
}
47ecc: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47ed0: 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;
47ed2: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
47ed4: 4e75 rts <== 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;
47ed6: 203c 0006 06f4 movel #394996,%d0 <== NOT EXECUTED
47edc: 60d4 bras 47eb2 <rtems_object_get_api_class_name+0x2a><== NOT EXECUTED
...
00047ee0 <rtems_object_get_api_name>:
};
const char *rtems_object_get_api_name(
int api
)
{
47ee0: 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 );
47ee4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47ee8: 4879 0006 0784 pea 60784 <rtems_objects_api_assoc> <== NOT EXECUTED
47eee: 4eb9 0004 cda4 jsr 4cda4 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( api_assoc )
47ef4: 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 );
47ef6: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( api_assoc )
return api_assoc->name;
return "BAD CLASS";
47ef8: 203c 0005 f766 movel #391014,%d0 <== NOT EXECUTED
)
{
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
if ( api_assoc )
47efe: 4a88 tstl %a0 <== NOT EXECUTED
47f00: 6702 beqs 47f04 <rtems_object_get_api_name+0x24> <== NOT EXECUTED
return api_assoc->name;
47f02: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
47f04: 4e5e unlk %fp <== NOT EXECUTED
00047f48 <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
)
{
47f48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47f4c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47f4e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
47f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int i;
/*
* Validate parameters and look up information structure.
*/
if ( !info )
47f54: 4a8a tstl %a2 <== NOT EXECUTED
47f56: 6768 beqs 47fc0 <rtems_object_get_class_information+0x78><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
47f58: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED
47f5c: 4267 clrw %sp@- <== NOT EXECUTED
47f5e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47f62: 4eb9 0004 9c28 jsr 49c28 <_Objects_Get_information> <== NOT EXECUTED
if ( !obj_info )
47f68: 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 );
47f6a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !obj_info )
47f6c: 4a80 tstl %d0 <== NOT EXECUTED
47f6e: 675e beqs 47fce <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;
47f70: 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;
47f74: 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;
47f76: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
47f7c: 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;
47f80: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED
info->maximum = obj_info->maximum;
47f86: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47f8a: 6750 beqs 47fdc <rtems_object_get_class_information+0x94><== NOT EXECUTED
47f8c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
47f90: 7201 moveq #1,%d1 <== NOT EXECUTED
47f92: 7001 moveq #1,%d0 <== NOT EXECUTED
47f94: 93c9 subal %a1,%a1 <== NOT EXECUTED
47f96: 5280 addql #1,%d0 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
47f98: 4ab0 1c00 tstl %a0@(00000000,%d1:l:4) <== NOT EXECUTED
47f9c: 6718 beqs 47fb6 <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++ )
47f9e: 2200 movel %d0,%d1 <== NOT EXECUTED
47fa0: b082 cmpl %d2,%d0 <== NOT EXECUTED
47fa2: 63f2 blss 47f96 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
47fa4: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47fa8: 4280 clrl %d0 <== NOT EXECUTED
}
47faa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47fae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fb2: 4e5e unlk %fp <== NOT EXECUTED
47fb4: 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++;
47fb6: 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++ )
47fb8: 2200 movel %d0,%d1 <== NOT EXECUTED
47fba: b082 cmpl %d2,%d0 <== NOT EXECUTED
47fbc: 63d8 blss 47f96 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
47fbe: 60e4 bras 47fa4 <rtems_object_get_class_information+0x5c><== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fc0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
47fc4: 7009 moveq #9,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fc6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fca: 4e5e unlk %fp <== NOT EXECUTED
47fcc: 4e75 rts <== NOT EXECUTED
47fce: 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;
47fd2: 700a moveq #10,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fd4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fd8: 4e5e unlk %fp <== NOT EXECUTED
47fda: 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++ )
47fdc: 93c9 subal %a1,%a1 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
47fde: 4280 clrl %d0 <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
47fe0: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
47fe4: 60c4 bras 47faa <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 9490 jsr 49490 <_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 e590 lea 5e590 <_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
...
00047824 <rtems_object_get_name>:
char *rtems_object_get_name(
Objects_Id id,
size_t length,
char *name
)
{
47824: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_name_as_string( id, length, name );
}
47828: 4e5e unlk %fp <== NOT EXECUTED
Objects_Id id,
size_t length,
char *name
)
{
return _Objects_Get_name_as_string( id, length, name );
4782a: 4ef9 0004 9740 jmp 49740 <_Objects_Get_name_as_string> <== NOT EXECUTED
00047ff4 <rtems_object_id_api_maximum>:
#undef rtems_object_id_api_maximum
int rtems_object_id_api_maximum(void)
{
return OBJECTS_APIS_LAST;
}
47ff4: 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)
{
47ff6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_APIS_LAST;
}
47ffa: 4e5e unlk %fp <== NOT EXECUTED
...
00048000 <rtems_object_id_api_minimum>:
#undef rtems_object_id_api_minimum
int rtems_object_id_api_minimum(void)
{
return OBJECTS_INTERNAL_API;
}
48000: 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)
{
48002: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_INTERNAL_API;
}
48006: 4e5e unlk %fp <== NOT EXECUTED
...
0004800c <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);
4800c: 4280 clrl %d0 <== NOT EXECUTED
int rtems_object_id_get_api(
rtems_id id
)
{
return _Objects_Get_API( id );
}
4800e: 7207 moveq #7,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_api
int rtems_object_id_get_api(
rtems_id id
)
{
48010: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48014: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_API( id );
}
48018: 4e5e unlk %fp <== NOT EXECUTED
4801a: c081 andl %d1,%d0 <== NOT EXECUTED
...
00048020 <rtems_object_id_get_class>:
int rtems_object_id_get_class(
rtems_id id
)
{
return _Objects_Get_class( id );
}
48020: 721b moveq #27,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_class
int rtems_object_id_get_class(
rtems_id id
)
{
48022: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48026: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_class( id );
}
4802a: 4e5e unlk %fp <== NOT EXECUTED
4802c: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
00048030 <rtems_object_id_get_index>:
int rtems_object_id_get_index(
rtems_id id
)
{
return _Objects_Get_index( id );
}
48030: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_index
int rtems_object_id_get_index(
rtems_id id
)
{
48032: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_index( id );
}
48036: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
4803a: 4e5e unlk %fp <== NOT EXECUTED
...
00048040 <rtems_object_id_get_node>:
int rtems_object_id_get_node(
rtems_id id
)
{
return _Objects_Get_node( id );
}
48040: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_node
int rtems_object_id_get_node(
rtems_id id
)
{
48042: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_node( id );
}
48046: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED
4804a: 4e5e unlk %fp <== NOT EXECUTED
...
00048050 <rtems_object_set_name>:
*/
rtems_status_code rtems_object_set_name(
rtems_id id,
const char *name
)
{
48050: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
48054: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
48058: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4805c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
Objects_Information *information;
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
48060: 6764 beqs 480c6 <rtems_object_set_name+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
48062: 4a83 tstl %d3 <== NOT EXECUTED
48064: 6754 beqs 480ba <rtems_object_set_name+0x6a> <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
48066: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48068: 4eb9 0004 9bfc jsr 49bfc <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
4806e: 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 );
48070: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( !information )
48072: 673a beqs 480ae <rtems_object_set_name+0x5e> <== NOT EXECUTED
return RTEMS_INVALID_ID;
the_object = _Objects_Get( information, tmpId, &location );
48074: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48078: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4807a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4807c: 4eb9 0004 9dd4 jsr 49dd4 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
48082: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48086: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4808a: 6622 bnes 480ae <rtems_object_set_name+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
4808c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4808e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48090: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48092: 4eb9 0004 9fe4 jsr 49fe4 <_Objects_Set_name> <== NOT EXECUTED
_Thread_Enable_dispatch();
48098: 4eb9 0004 aa16 jsr 4aa16 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4809e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
480a2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
480a4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
480aa: 4e5e unlk %fp <== NOT EXECUTED
480ac: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
480ae: 7004 moveq #4,%d0 <== NOT EXECUTED
}
480b0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
480b6: 4e5e unlk %fp <== NOT EXECUTED
480b8: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
480ba: 2079 0006 206c moveal 6206c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
480c0: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
480c4: 60a0 bras 48066 <rtems_object_set_name+0x16> <== NOT EXECUTED
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
480c6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
480c8: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
480ce: 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 c31e pea 5c31e <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 d85c jsr 4d85c <__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 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
567d0: 5280 addql #1,%d0 <== NOT EXECUTED
567d2: 23c0 0007 db34 movel %d0,7db34 <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
567de: 4eb9 0005 b2c0 jsr 5b2c0 <_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 9c70 jsr 59c70 <_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 d9ec moveal 7d9ec <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
5686a: 4eb9 0005 b7bc jsr 5b7bc <_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 c34a jsr 5c34a <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
5689c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
568a0: 4eb9 0005 b350 jsr 5b350 <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
568b2: 4eb9 0005 b614 jsr 5b614 <_Objects_Free> <== NOT EXECUTED
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
568b8: 4eb9 0005 c34a jsr 5c34a <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
568e6: 4eb9 0005 b7bc jsr 5b7bc <_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 9c34 jsr 59c34 <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
56962: 4eb9 0005 b948 jsr 5b948 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
56968: 41f9 0007 7170 lea 77170 <_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 d9d4 pea 7d9d4 <_Partition_Information> <== NOT EXECUTED
5698e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
56992: 4eb9 0005 b7bc jsr 5b7bc <_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 9bd4 jsr 59bd4 <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
55ca8: 5280 addql #1,%d0 <== NOT EXECUTED
55caa: 23c0 0007 db34 movel %d0,7db34 <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55cb6: 4eb9 0005 b2c0 jsr 5b2c0 <_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 d9b4 moveal 7d9b4 <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d26: 4eb9 0005 b7bc jsr 5b7bc <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d3e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
55d42: 4eb9 0005 b350 jsr 5b350 <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d54: 4eb9 0005 b614 jsr 5b614 <_Objects_Free> <== NOT EXECUTED
_Dual_ported_memory_Free( the_port );
_Thread_Enable_dispatch();
55d5a: 4eb9 0005 c34a jsr 5c34a <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d92: 4eb9 0005 b7bc jsr 5b7bc <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55e08: 4eb9 0005 b948 jsr 5b948 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_ALL_NODES,
id
);
return _Status_Object_name_errors_to_status[ status ];
55e0e: 41f9 0007 7170 lea 77170 <_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 d99c pea 7d99c <_Dual_ported_memory_Information> <== NOT EXECUTED
55e3e: 4eb9 0005 b7bc jsr 5b7bc <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 e708 lea 4e708 <sprintf>,%a4 <== NOT EXECUTED
4214a: 4bf9 0004 ee24 lea 4ee24 <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 c3bc pea 5c3bc <IntUartPollCallbacks.6323+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 d918 moveal 5d918 <__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 c3c4 pea 5c3c4 <IntUartPollCallbacks.6323+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 e708 lea 4e708 <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 c3bc pea 5c3bc <IntUartPollCallbacks.6323+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 ee24 lea 4ee24 <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 e708 lea 4e708 <sprintf>,%a4 <== NOT EXECUTED
4226a: 4eb9 0004 ee24 jsr 4ee24 <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 d918 moveal 5d918 <__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 c3c4 pea 5c3c4 <IntUartPollCallbacks.6323+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 ee24 lea 4ee24 <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 ee24 lea 4ee24 <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 da0c pea 7da0c <_Rate_monotonic_Information> <== NOT EXECUTED
56a24: 4eb9 0005 b7bc jsr 5b7bc <_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 dcf8 movel 7dcf8 <_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 c34a jsr 5c34a <_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 d630 jsr 5d630 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56a66: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a6a: 4eb9 0005 c34a jsr 5c34a <_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 0fa0 movel 60fa0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
471a8: 5280 addql #1,%d0 <== NOT EXECUTED
471aa: 23c0 0006 0fa0 movel %d0,60fa0 <_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 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
471b6: 4eb9 0004 92ac jsr 492ac <_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 115c lea 6115c <_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 0ec8 moveal 60ec8 <_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 a3ea jsr 4a3ea <_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 a3ea jsr 4a3ea <_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 da0c pea 7da0c <_Rate_monotonic_Information> <== NOT EXECUTED
56b7c: 4eb9 0005 b7bc jsr 5b7bc <_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 da0c pea 7da0c <_Rate_monotonic_Information> <== NOT EXECUTED
56b96: 4eb9 0005 b350 jsr 5b350 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_period->Timer );
56b9c: 486a 0010 pea %a2@(16) <== NOT EXECUTED
56ba0: 4eb9 0005 d630 jsr 5d630 <_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 da0c pea 7da0c <_Rate_monotonic_Information> <== NOT EXECUTED
56bb2: 4eb9 0005 b614 jsr 5b614 <_Objects_Free> <== NOT EXECUTED
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
56bb8: 4eb9 0005 c34a jsr 5c34a <_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
...
0004d160 <rtems_rate_monotonic_get_statistics>:
rtems_status_code rtems_rate_monotonic_get_statistics(
rtems_id id,
rtems_rate_monotonic_period_statistics *statistics
)
{
4d160: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4d164: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d166: 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 )
4d16a: 4a8a tstl %a2 <== NOT EXECUTED
4d16c: 6700 00a6 beqw 4d214 <rtems_rate_monotonic_get_statistics+0xb4><== NOT EXECUTED
4d170: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d174: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d178: 4879 0006 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
4d17e: 4eb9 0004 985c jsr 4985c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4d184: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d188: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d18a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4d18e: 667a bnes 4d20a <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
case OBJECTS_LOCAL:
dst = statistics;
src = &the_period->Statistics;
dst->count = src->count;
4d190: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED
dst->missed_count = src->missed_count;
4d194: 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 );
4d19a: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
4d19e: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED
4d1a2: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4d1a6: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
4d1aa: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED
4d1ae: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED
4d1b2: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4d1b6: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
4d1ba: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED
4d1be: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED
4d1c2: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
4d1c6: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED
_Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
4d1ca: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED
4d1ce: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED
4d1d2: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
4d1d6: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
4d1da: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED
4d1de: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED
4d1e2: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
4d1e6: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
4d1ea: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
4d1ee: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED
4d1f2: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4d1f6: 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();
4d1fa: 4eb9 0004 a3ea jsr 4a3ea <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d200: 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;
4d204: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d206: 4e5e unlk %fp <== NOT EXECUTED
4d208: 4e75 rts <== NOT EXECUTED
4d20a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4d20e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4d210: 4e5e unlk %fp <== NOT EXECUTED
4d212: 4e75 rts <== NOT EXECUTED
4d214: 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;
4d218: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d21a: 4e5e unlk %fp <== NOT EXECUTED
...
0004d220 <rtems_rate_monotonic_get_status>:
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
)
{
4d220: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4d224: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d226: 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 )
4d22a: 4a8a tstl %a2 <== NOT EXECUTED
4d22c: 6700 00a0 beqw 4d2ce <rtems_rate_monotonic_get_status+0xae><== NOT EXECUTED
4d230: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d234: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d238: 4879 0006 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
4d23e: 4eb9 0004 985c jsr 4985c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4d244: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d248: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d24a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4d24e: 6632 bnes 4d282 <rtems_rate_monotonic_get_status+0x62><== NOT EXECUTED
case OBJECTS_LOCAL:
status->owner = the_period->owner->Object.id;
4d250: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED
4d254: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED
status->state = the_period->state;
4d258: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
4d25c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
/*
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
4d260: 662a bnes 4d28c <rtems_rate_monotonic_get_status+0x6c><== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timespec_Set_to_zero( &status->since_last_period );
4d262: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
4d266: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Timespec_Set_to_zero( &status->executed_since_last_period );
4d26a: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
4d26e: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
status->since_last_period = since_last_period;
status->executed_since_last_period = executed;
#endif
}
_Thread_Enable_dispatch();
4d272: 4eb9 0004 a3ea jsr 4a3ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4d278: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d27a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4d27e: 4e5e unlk %fp <== NOT EXECUTED
4d280: 4e75 rts <== NOT EXECUTED
4d282: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4d286: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4d288: 4e5e unlk %fp <== NOT EXECUTED
4d28a: 4e75 rts <== NOT EXECUTED
} else {
/*
* Grab the current status.
*/
valid_status =
4d28c: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
4d290: 486e ffec pea %fp@(-20) <== NOT EXECUTED
4d294: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d296: 4eb9 0004 72a0 jsr 472a0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
4d29c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d2a0: 4a00 tstb %d0 <== NOT EXECUTED
4d2a2: 6734 beqs 4d2d8 <rtems_rate_monotonic_get_status+0xb8><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec(
4d2a4: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
4d2a8: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
4d2ac: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4d2b0: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
&since_last_period, &status->since_last_period
);
_Timestamp_To_timespec(
4d2b4: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4d2b8: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
4d2bc: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4d2c0: 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();
4d2c4: 4eb9 0004 a3ea jsr 4a3ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4d2ca: 4280 clrl %d0 <== NOT EXECUTED
4d2cc: 60ac bras 4d27a <rtems_rate_monotonic_get_status+0x5a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d2ce: 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;
4d2d2: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d2d4: 4e5e unlk %fp <== NOT EXECUTED
4d2d6: 4e75 rts <== NOT EXECUTED
valid_status =
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
4d2d8: 4eb9 0004 a3ea jsr 4a3ea <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d2de: 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;
4d2e2: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d2e4: 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 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
4728c: 4eb9 0004 99e8 jsr 499e8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47292: 41f9 0005 e956 lea 5e956 <_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 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
47508: 4eb9 0004 985c jsr 4985c <_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 115c moveal 6115c <_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 a3ea jsr 4a3ea <_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 a3ea jsr 4a3ea <_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 1080 pea 61080 <_Watchdog_Ticks_chain> <== NOT EXECUTED
475ca: 4eb9 0004 b3cc jsr 4b3cc <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
475d0: 4eb9 0004 a3ea jsr 4a3ea <_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 e776 lea 5e776 <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 a3ea jsr 4a3ea <_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 1080 pea 61080 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47644: 4eb9 0004 b3cc jsr 4b3cc <_Watchdog_Insert> <== NOT EXECUTED
);
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
4764a: 4eb9 0004 a3ea jsr 4a3ea <_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 115c moveal 6115c <_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 accc jsr 4accc <_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 a3ea jsr 4a3ea <_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 115c movel 6115c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
476ec: 4eb9 0004 a034 jsr 4a034 <_Thread_Clear_state> <== NOT EXECUTED
476f2: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
476f4: 4eb9 0004 a3ea jsr 4a3ea <_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 d024 pea 4d024 <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 e78a pea 5e78a <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 e7a8 pea 5e7a8 <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 e7ca pea 5e7ca <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 e7ed pea 5e7ed <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 e838 movel #387128,%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 0eb6 movel 60eb6 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
4774e: 508f addql #8,%sp <== NOT EXECUTED
47750: b4b9 0006 0eba cmpl 60eba <_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 d160 lea 4d160 <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 d220 lea 4d220 <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 afcc movel #307148,%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 0eba cmpl 60eba <_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 e884 pea 5e884 <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 e6ae pea 5e6ae <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 0eba cmpl 60eba <_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 e89b pea 5e89b <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 e8ba pea 5e8ba <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 0eba cmpl 60eba <_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 0fa0 movel 60fa0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
478c2: 5280 addql #1,%d0 <== NOT EXECUTED
478c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
478c6: 23c0 0006 0fa0 movel %d0,60fa0 <_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 0eb6 movel 60eb6 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
478d4: b4b9 0006 0eba cmpl 60eba <_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 0eba cmpl 60eba <_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 a3ea jmp 4a3ea <_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 0eb0 pea 60eb0 <_Rate_monotonic_Information> <== NOT EXECUTED
47916: 4eb9 0004 985c jsr 4985c <_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 a3ea jsr 4a3ea <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
572fe: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
5730a: 4eb9 0005 b2c0 jsr 5b2c0 <_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 ae52 jsr 5ae52 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
5733c: 7408 moveq #8,%d2 <== NOT EXECUTED
5733e: 4eb9 0005 b614 jsr 5b614 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5734c: 4eb9 0005 9ba0 jsr 59ba0 <_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 cac0 jsr 5cac0 <_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 da5c moveal 7da5c <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
573c2: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
573fe: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
57412: 4eb9 0005 b780 jsr 5b780 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 da44 pea 7da44 <_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 b350 jsr 5b350 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
5747a: 4eb9 0005 b614 jsr 5b614 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5748a: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
574b6: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
574ca: 4eb9 0005 b780 jsr 5b780 <_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 a858 jsr 5a858 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5750c: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5756e: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
57582: 4eb9 0005 b780 jsr 5b780 <_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 ac2c jsr 5ac2c <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
575b6: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57602: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
57616: 4eb9 0005 b780 jsr 5b780 <_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 ac8c jsr 5ac8c <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5763e: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576a2: 4eb9 0005 9b40 jsr 59b40 <_API_Mutex_Lock> <== NOT EXECUTED
576a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
576ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
576ae: 4879 0007 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
executing = _Thread_Executing;
576b4: 2879 0007 dcf8 moveal 7dcf8 <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED
576ba: 4eb9 0005 b780 jsr 5b780 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576da: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
576de: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576fc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57700: 4eb9 0005 9ba0 jsr 59ba0 <_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 a6a8 jsr 5a6a8 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57734: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57738: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57764: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57768: 4eb9 0005 9ba0 jsr 59ba0 <_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 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5777e: 5280 addql #1,%d0 <== NOT EXECUTED
57780: 23c0 0007 db34 movel %d0,7db34 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5778c: 4eb9 0005 9ba0 jsr 59ba0 <_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 cbcc pea 5cbcc <_Thread_queue_Timeout> <== NOT EXECUTED
577b6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
577ba: 2f00 movel %d0,%sp@- <== NOT EXECUTED
577bc: 4eb9 0005 c808 jsr 5c808 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
577c2: 4eb9 0005 c34a jsr 5c34a <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
577fc: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
57810: 4eb9 0005 b780 jsr 5b780 <_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 b1a0 jsr 5b1a0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
578a8: 4eb9 0005 b948 jsr 5b948 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
578ae: 41f9 0007 7170 lea 77170 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
578d4: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
578e8: 4eb9 0005 b780 jsr 5b780 <_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 b0b4 jsr 5b0b4 <_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 f2cc jsr 5f2cc <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5793e: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5795a: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
5795e: 4eb9 0005 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5799a: 4eb9 0005 9b40 jsr 59b40 <_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 da44 pea 7da44 <_Region_Information> <== NOT EXECUTED
579ae: 4eb9 0005 b780 jsr 5b780 <_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 aab4 jsr 5aab4 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 dbf4 movel 7dbf4 <_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 9ba0 jsr 59ba0 <_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 f2cc jsr 5f2cc <_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 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0
46232: 5280 addql #1,%d0
46234: 23c0 0005 ee38 movel %d0,5ee38 <_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 ed80 pea 5ed80 <_Semaphore_Information>
46240: 4eb9 0004 7874 jsr 47874 <_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 6f20 jsr 46f20 <_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 ed80 pea 5ed80 <_Semaphore_Information> <== NOT EXECUTED
462a6: 4eb9 0004 7bc8 jsr 47bc8 <_Objects_Free> <== NOT EXECUTED
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
462ac: 4eb9 0004 88c2 jsr 488c2 <_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 7258 jsr 47258 <_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 ed98 moveal 5ed98 <_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 88c2 jsr 488c2 <_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 88c2 jsr 488c2 <_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 ed80 pea 5ed80 <_Semaphore_Information>
46394: 4eb9 0004 7d34 jsr 47d34 <_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 88c2 jsr 488c2 <_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 6f14 jsr 46f14 <_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 ed80 pea 5ed80 <_Semaphore_Information>
463f0: 4eb9 0004 7904 jsr 47904 <_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 ed80 pea 5ed80 <_Semaphore_Information>
463fe: 4eb9 0004 7bc8 jsr 47bc8 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46404: 4eb9 0004 88c2 jsr 488c2 <_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 724c jsr 4724c <_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 ed80 pea 5ed80 <_Semaphore_Information>
46434: 4eb9 0004 7904 jsr 47904 <_Objects_Close>
4643a: 2f0a movel %a2,%sp@-
4643c: 4879 0005 ed80 pea 5ed80 <_Semaphore_Information>
46442: 4eb9 0004 7bc8 jsr 47bc8 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46448: 4eb9 0004 88c2 jsr 488c2 <_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>
...
0004f768 <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
4f768: 4e56 fffc linkw %fp,#-4
4f76c: 486e fffc pea %fp@(-4)
4f770: 2f2e 0008 movel %fp@(8),%sp@-
4f774: 4879 0006 2fc8 pea 62fc8 <_Semaphore_Information>
4f77a: 4eb9 0004 92ec jsr 492ec <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
4f780: 4fef 000c lea %sp@(12),%sp
4f784: 4aae fffc tstl %fp@(-4)
4f788: 6706 beqs 4f790 <rtems_semaphore_flush+0x28> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f78a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f78c: 4e5e unlk %fp <== NOT EXECUTED
4f78e: 4e75 rts <== NOT EXECUTED
4f790: 7230 moveq #48,%d1
4f792: 2040 moveal %d0,%a0
4f794: 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) ) {
4f798: 6720 beqs 4f7ba <rtems_semaphore_flush+0x52> <== NEVER TAKEN
_CORE_mutex_Flush(
4f79a: 4878 0001 pea 1 <ADD>
4f79e: 42a7 clrl %sp@-
4f7a0: 4868 0014 pea %a0@(20)
4f7a4: 4eb9 0004 84cc jsr 484cc <_CORE_mutex_Flush>
4f7aa: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
4f7ae: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4f7b4: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f7b6: 4e5e unlk %fp
4f7b8: 4e75 rts
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
4f7ba: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4f7be: 2040 moveal %d0,%a0 <== NOT EXECUTED
4f7c0: 42a7 clrl %sp@- <== NOT EXECUTED
4f7c2: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4f7c6: 4eb9 0004 8804 jsr 48804 <_CORE_semaphore_Flush> <== NOT EXECUTED
4f7cc: 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();
4f7d0: 4eb9 0004 9e82 jsr 49e82 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4f7d6: 4280 clrl %d0 <== NOT EXECUTED
4f7d8: 60dc bras 4f7b6 <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 da7c pea 7da7c <_Semaphore_Information> <== NOT EXECUTED
57d4a: 4eb9 0005 b948 jsr 5b948 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
57d50: 41f9 0007 7170 lea 77170 <_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 ed80 pea 5ed80 <_Semaphore_Information>
46474: 262e 000c movel %fp@(12),%d3
46478: 282e 0010 movel %fp@(16),%d4
4647c: 4eb9 0004 7cd4 jsr 47cd4 <_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 709c jsr 4709c <_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 0005 eff4 moveal 5eff4 <_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 0005 eff4 moveal 5eff4 <_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 0005 eff4 moveal 5eff4 <_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 0005 eff4 moveal 5eff4 <_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 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
46542: 5281 addql #1,%d1 <== NOT EXECUTED
46544: 23c1 0005 ee38 movel %d1,5ee38 <_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 9144 pea 49144 <_Thread_queue_Timeout> <== NOT EXECUTED
4656c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4656e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46570: 4eb9 0004 8d80 jsr 48d80 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
46576: 4eb9 0004 88c2 jsr 488c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
_Thread_Executing->Wait.return_code );
4657c: 2079 0005 eff4 moveal 5eff4 <_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 ed80 pea 5ed80 <_Semaphore_Information>
465ae: 4eb9 0004 7d34 jsr 47d34 <_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 72a0 jsr 472a0 <_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 88c2 jsr 488c2 <_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 714c jsr 4714c <_CORE_mutex_Surrender>
4660c: 2400 movel %d0,%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
4660e: 4eb9 0004 88c2 jsr 488c2 <_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
00046b30 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b30: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
46b32: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b36: b0b9 0005 efa0 cmpl 5efa0 <_System_state_Current>,%d0
46b3c: 6710 beqs 46b4e <rtems_shutdown_executive+0x1e>
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
_Thread_Stop_multitasking();
}
_Internal_error_Occurred(
46b3e: 4878 0014 pea 14 <OPER2>
46b42: 4878 0001 pea 1 <ADD>
46b46: 42a7 clrl %sp@-
46b48: 4eb9 0004 77b8 jsr 477b8 <_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 );
46b4e: 4879 0005 ee04 pea 5ee04 <_Thread_BSP_context>
46b54: 103c 0004 moveb #4,%d0
46b58: 23c0 0005 efa0 movel %d0,5efa0 <_System_state_Current>
46b5e: 4eb9 0004 9b02 jsr 49b02 <_CPU_Context_Restart_self>
46b64: 588f addql #4,%sp <== NOT EXECUTED
46b66: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
46b6a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46b6e: 42a7 clrl %sp@- <== NOT EXECUTED
46b70: 4eb9 0004 77b8 jsr 477b8 <_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 05c0 movel 605c0 <_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 077c moveal 6077c <_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 00fc moveal %a0@(252),%a0 <== NOT EXECUTED
47722: 23c1 0006 05c0 movel %d1,605c0 <_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 9cce jsr 49cce <_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 9cce jsr 49cce <_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 c370 jsr 5c370 <_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 00fc moveal %a1@(252),%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 dcf4 tstl 7dcf4 <_Per_CPU_Information+0x8> <== NOT EXECUTED
57fc6: 6708 beqs 57fd0 <rtems_signal_send+0x74> <== NOT EXECUTED
57fc8: b0b9 0007 dcf8 cmpl 7dcf8 <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 dd04 moveb %d0,7dd04 <_Per_CPU_Information+0x18> <== NOT EXECUTED
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
58008: 4eb9 0005 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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
...
00042326 <rtems_stack_checker_begin_extension>:
* rtems_stack_checker_Begin_extension
*/
void rtems_stack_checker_begin_extension(
Thread_Control *the_thread
)
{
42326: 4e56 0000 linkw %fp,#0
4232a: 206e 0008 moveal %fp@(8),%a0
Stack_check_Control *the_pattern;
if ( the_thread->Object.id == 0 ) /* skip system tasks */
4232e: 4aa8 0008 tstl %a0@(8)
42332: 672c beqs 42360 <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;
42334: 2068 00b4 moveal %a0@(180),%a0
42338: 43f9 0005 f360 lea 5f360 <Stack_check_Pattern>,%a1
4233e: 2151 0008 movel %a1@,%a0@(8)
42342: 43f9 0005 f364 lea 5f364 <Stack_check_Pattern+0x4>,%a1
42348: 2151 000c movel %a1@,%a0@(12)
4234c: 43f9 0005 f368 lea 5f368 <Stack_check_Pattern+0x8>,%a1
42352: 2151 0010 movel %a1@,%a0@(16)
42356: 43f9 0005 f36c lea 5f36c <Stack_check_Pattern+0xc>,%a1
4235c: 2151 0014 movel %a1@,%a0@(20)
}
42360: 4e5e unlk %fp <== NOT EXECUTED
000422f2 <rtems_stack_checker_create_extension>:
*/
bool rtems_stack_checker_create_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *the_thread
)
{
422f2: 4e56 0000 linkw %fp,#0
422f6: 2f0a movel %a2,%sp@-
422f8: 246e 000c moveal %fp@(12),%a2
Stack_check_Initialize();
422fc: 4eb9 0004 2278 jsr 42278 <Stack_check_Initialize>
if (the_thread)
42302: 4a8a tstl %a2
42304: 6716 beqs 4231c <rtems_stack_checker_create_extension+0x2a><== NEVER TAKEN
Stack_check_Dope_stack(&the_thread->Start.Initial_stack);
42306: 2f2a 00b0 movel %a2@(176),%sp@-
4230a: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70>
4230e: 2f2a 00b4 movel %a2@(180),%sp@-
42312: 4eb9 0004 e714 jsr 4e714 <memset>
42318: 4fef 000c lea %sp@(12),%sp
return true;
}
4231c: 246e fffc moveal %fp@(-4),%a2
42320: 4e5e unlk %fp
42322: 7001 moveq #1,%d0 <== NOT EXECUTED
00042494 <rtems_stack_checker_is_blown>:
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
42494: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack;
42498: 2279 0005 f688 moveal 5f688 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
4249e: 2069 00b4 moveal %a1@(180),%a0 <== NOT EXECUTED
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
424a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
424a4: b1ce cmpal %fp,%a0 <== NOT EXECUTED
424a6: 6248 bhis 424f0 <rtems_stack_checker_is_blown+0x5c><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
424a8: 2008 movel %a0,%d0 <== NOT EXECUTED
424aa: d0a9 00b0 addl %a1@(176),%d0 <== NOT EXECUTED
}
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
424ae: b08e cmpl %fp,%d0 <== NOT EXECUTED
424b0: 54c2 scc %d2 <== NOT EXECUTED
424b2: 4482 negl %d2 <== NOT EXECUTED
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
424b4: 4ab9 0005 eb60 tstl 5eb60 <Stack_check_Initialized> <== NOT EXECUTED
424ba: 6730 beqs 424ec <rtems_stack_checker_is_blown+0x58><== NOT EXECUTED
pattern_ok = (!memcmp(
424bc: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
424c0: 4879 0005 f360 pea 5f360 <Stack_check_Pattern> <== NOT EXECUTED
424c6: 4868 0008 pea %a0@(8) <== NOT EXECUTED
424ca: 4eb9 0004 e624 jsr 4e624 <memcmp> <== NOT EXECUTED
424d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
424d4: 4a80 tstl %d0 <== NOT EXECUTED
424d6: 57c0 seq %d0 <== NOT EXECUTED
424d8: 4480 negl %d0 <== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
424da: 4a02 tstb %d2 <== NOT EXECUTED
424dc: 6716 beqs 424f4 <rtems_stack_checker_is_blown+0x60><== NOT EXECUTED
424de: 4a00 tstb %d0 <== NOT EXECUTED
424e0: 6712 beqs 424f4 <rtems_stack_checker_is_blown+0x60><== NOT EXECUTED
/*
* The Stack Pointer and the Pattern Area are OK so return false.
*/
return false;
}
424e2: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
424e6: 4e5e unlk %fp <== NOT EXECUTED
424e8: 4200 clrb %d0 <== NOT EXECUTED
424ea: 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;
424ec: 7001 moveq #1,%d0 <== NOT EXECUTED
424ee: 60ea bras 424da <rtems_stack_checker_is_blown+0x46><== NOT EXECUTED
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
return false;
424f0: 4202 clrb %d2 <== NOT EXECUTED
424f2: 60c0 bras 424b4 <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 );
424f4: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
424fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
424fc: 2f39 0005 f688 movel 5f688 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
42502: 4eb9 0004 2364 jsr 42364 <Stack_check_report_blown_task> <== NOT EXECUTED
0004256e <rtems_stack_checker_report_usage>:
void rtems_stack_checker_report_usage( void )
{
4256e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_stack_checker_report_usage_with_plugin( NULL, printk_plugin );
42572: 4879 0004 4034 pea 44034 <printk_plugin> <== NOT EXECUTED
42578: 42a7 clrl %sp@- <== NOT EXECUTED
4257a: 4eb9 0004 2508 jsr 42508 <rtems_stack_checker_report_usage_with_plugin><== NOT EXECUTED
42580: 508f addql #8,%sp <== NOT EXECUTED
}
42582: 4e5e unlk %fp <== NOT EXECUTED
...
00042508 <rtems_stack_checker_report_usage_with_plugin>:
void rtems_stack_checker_report_usage_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
42508: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4250c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4250e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
42512: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42514: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !print )
42518: 4a8a tstl %a2 <== NOT EXECUTED
4251a: 6746 beqs 42562 <rtems_stack_checker_report_usage_with_plugin+0x5a><== NOT EXECUTED
return;
print_context = context;
print_handler = print;
(*print)( context, "Stack usage by thread\n");
4251c: 4879 0005 c8a0 pea 5c8a0 <IntUartPollCallbacks.6323+0x13c> <== NOT EXECUTED
)
{
if ( !print )
return;
print_context = context;
42522: 23c2 0005 eb58 movel %d2,5eb58 <print_context> <== NOT EXECUTED
print_handler = print;
(*print)( context, "Stack usage by thread\n");
42528: 2f02 movel %d2,%sp@- <== NOT EXECUTED
{
if ( !print )
return;
print_context = context;
print_handler = print;
4252a: 23ca 0005 eb5c movel %a2,5eb5c <print_handler> <== NOT EXECUTED
(*print)( context, "Stack usage by thread\n");
42530: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context,
42532: 4879 0005 c8b7 pea 5c8b7 <IntUartPollCallbacks.6323+0x153> <== NOT EXECUTED
42538: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4253a: 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 );
4253c: 4879 0004 20e8 pea 420e8 <Stack_check_Dump_threads_usage> <== NOT EXECUTED
42542: 4eb9 0004 7cc4 jsr 47cc4 <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);
42548: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4254c: 4eb9 0004 20e8 jsr 420e8 <Stack_check_Dump_threads_usage> <== NOT EXECUTED
#endif
print_context = NULL;
print_handler = NULL;
42552: 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;
42556: 42b9 0005 eb58 clrl 5eb58 <print_context> <== NOT EXECUTED
print_handler = NULL;
4255c: 42b9 0005 eb5c clrl 5eb5c <print_handler> <== NOT EXECUTED
}
42562: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
42566: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4256a: 4e5e unlk %fp <== NOT EXECUTED
00042414 <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *heir __attribute__((unused))
)
{
42414: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42418: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4241a: 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);
4241e: 222a 00b4 movel %a2@(180),%d1 <== NOT EXECUTED
42422: 5081 addql #8,%d1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42424: 202a 00b4 movel %a2@(180),%d0 <== NOT EXECUTED
42428: b08e cmpl %fp,%d0 <== NOT EXECUTED
4242a: 622a bhis 42456 <rtems_stack_checker_switch_extension+0x42><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
4242c: d0aa 00b0 addl %a2@(176),%d0 <== NOT EXECUTED
42430: b08e cmpl %fp,%d0 <== NOT EXECUTED
42432: 6522 bcss 42456 <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,
42434: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
42438: 4879 0005 f360 pea 5f360 <Stack_check_Pattern> <== NOT EXECUTED
4243e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
42440: 4eb9 0004 e624 jsr 4e624 <memcmp> <== NOT EXECUTED
42446: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
4244a: 4a80 tstl %d0 <== NOT EXECUTED
4244c: 6634 bnes 42482 <rtems_stack_checker_switch_extension+0x6e><== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
}
}
4244e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
42452: 4e5e unlk %fp <== NOT EXECUTED
42454: 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,
42456: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
4245a: 4879 0005 f360 pea 5f360 <Stack_check_Pattern> <== NOT EXECUTED
42460: 2f01 movel %d1,%sp@- <== NOT EXECUTED
42462: 4eb9 0004 e624 jsr 4e624 <memcmp> <== NOT EXECUTED
42468: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4246c: 4a80 tstl %d0 <== NOT EXECUTED
4246e: 57c0 seq %d0 <== NOT EXECUTED
42470: 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 );
42472: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
42478: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4247a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4247c: 4eb9 0004 2364 jsr 42364 <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 ) {
42482: 4200 clrb %d0 <== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
42484: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
4248a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4248c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4248e: 4eb9 0004 2364 jsr 42364 <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 c5fc pea 5c5fc <rtems_status_assoc> <== NOT EXECUTED
4294a: 4eb9 0004 ac18 jsr 4ac18 <rtems_assoc_name_by_local> <== NOT EXECUTED
}
42950: 4e5e unlk %fp <== NOT EXECUTED
0004d564 <rtems_string_to_double>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d564: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4d568: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4d56c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d570: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d574: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d578: 4a8a tstl %a2 <== NOT EXECUTED
4d57a: 677a beqs 4d5f6 <rtems_string_to_double+0x92> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d57c: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d582: 4e94 jsr %a4@ <== NOT EXECUTED
*n = 0;
4d584: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d586: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d588: 4280 clrl %d0 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d58a: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d58c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d590: 2480 movel %d0,%a2@ <== NOT EXECUTED
4d592: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d596: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d598: 4eb9 0005 24b2 jsr 524b2 <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 )
4d59e: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d5a0: 2600 movel %d0,%d3 <== NOT EXECUTED
4d5a2: 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 )
4d5a4: 4a8b tstl %a3 <== NOT EXECUTED
4d5a6: 675a beqs 4d602 <rtems_string_to_double+0x9e> <== NOT EXECUTED
*endptr = end;
4d5a8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d5ac: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d5ae: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d5b0: 6756 beqs 4d608 <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))
4d5b2: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4d5b6: 2f3c 7fef ffff movel #2146435071,%sp@- <== NOT EXECUTED
4d5bc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d5be: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d5c0: 4eb9 0005 dfe4 jsr 5dfe4 <__gtdf2> <== NOT EXECUTED
4d5c6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4d5ca: 4a80 tstl %d0 <== NOT EXECUTED
4d5cc: 6e12 bgts 4d5e0 <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;
4d5ce: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d5d0: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d5d2: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
}
4d5d6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d5dc: 4e5e unlk %fp <== NOT EXECUTED
4d5de: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d5e0: 4e94 jsr %a4@ <== NOT EXECUTED
4d5e2: 7222 moveq #34,%d1 <== NOT EXECUTED
4d5e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d5e6: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d5e8: 66e4 bnes 4d5ce <rtems_string_to_double+0x6a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d5ea: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d5ec: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d5f2: 4e5e unlk %fp <== NOT EXECUTED
4d5f4: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d5f6: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d5f8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d5fe: 4e5e unlk %fp <== NOT EXECUTED
4d600: 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 )
4d602: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d606: 60a6 bras 4d5ae <rtems_string_to_double+0x4a> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d608: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d60a: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d610: 4e5e unlk %fp <== NOT EXECUTED
0004d614 <rtems_string_to_float>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d614: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d618: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d61c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d620: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d624: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d628: 4a8a tstl %a2 <== NOT EXECUTED
4d62a: 6768 beqs 4d694 <rtems_string_to_float+0x80> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d62c: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d632: 4e94 jsr %a4@ <== NOT EXECUTED
4d634: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d636: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d638: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d63c: 24bc 0000 0000 movel #0,%a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d642: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d644: 4eb9 0005 24d2 jsr 524d2 <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 )
4d64a: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4d64c: 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 )
4d64e: 4a8b tstl %a3 <== NOT EXECUTED
4d650: 674e beqs 4d6a0 <rtems_string_to_float+0x8c> <== NOT EXECUTED
*endptr = end;
4d652: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d656: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d658: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d65a: 674a beqs 4d6a6 <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))
4d65c: 2f3c 7f7f ffff movel #2139095039,%sp@- <== NOT EXECUTED
4d662: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d664: 4eb9 0005 e074 jsr 5e074 <__gtsf2> <== NOT EXECUTED
4d66a: 508f addql #8,%sp <== NOT EXECUTED
4d66c: 4a80 tstl %d0 <== NOT EXECUTED
4d66e: 6e0e bgts 4d67e <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;
4d670: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d672: 4280 clrl %d0 <== NOT EXECUTED
}
4d674: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d67a: 4e5e unlk %fp <== NOT EXECUTED
4d67c: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d67e: 4e94 jsr %a4@ <== NOT EXECUTED
4d680: 7222 moveq #34,%d1 <== NOT EXECUTED
4d682: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d684: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d686: 66e8 bnes 4d670 <rtems_string_to_float+0x5c> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d688: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d68a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d690: 4e5e unlk %fp <== NOT EXECUTED
4d692: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d694: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d696: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d69c: 4e5e unlk %fp <== NOT EXECUTED
4d69e: 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 )
4d6a0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d6a4: 60b2 bras 4d658 <rtems_string_to_float+0x44> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d6a6: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d6a8: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d6ae: 4e5e unlk %fp <== NOT EXECUTED
...
0004d6b4 <rtems_string_to_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d6b4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d6b8: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d6bc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d6c0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d6c4: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d6c8: 4a8a tstl %a2 <== NOT EXECUTED
4d6ca: 675e beqs 4d72a <rtems_string_to_int+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d6cc: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d6d2: 4e94 jsr %a4@ <== NOT EXECUTED
4d6d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d6d6: 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 );
4d6d8: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d6dc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d6e0: 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 );
4d6e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d6e4: 4eb9 0005 268e jsr 5268e <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d6ea: 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 );
4d6ee: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d6f0: 4a8b tstl %a3 <== NOT EXECUTED
4d6f2: 6742 beqs 4d736 <rtems_string_to_int+0x82> <== NOT EXECUTED
*endptr = end;
4d6f4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d6f8: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d6fa: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d6fc: 673e beqs 4d73c <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))
4d6fe: 0c83 7fff ffff cmpil #2147483647,%d3 <== NOT EXECUTED
4d704: 670e beqs 4d714 <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;
4d706: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d708: 4280 clrl %d0 <== NOT EXECUTED
}
4d70a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d710: 4e5e unlk %fp <== NOT EXECUTED
4d712: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d714: 4e94 jsr %a4@ <== NOT EXECUTED
4d716: 7222 moveq #34,%d1 <== NOT EXECUTED
4d718: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d71a: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d71c: 66e8 bnes 4d706 <rtems_string_to_int+0x52> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d71e: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d720: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d726: 4e5e unlk %fp <== NOT EXECUTED
4d728: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d72a: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d72c: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d732: 4e5e unlk %fp <== NOT EXECUTED
4d734: 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 )
4d736: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d73a: 60be bras 4d6fa <rtems_string_to_int+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d73c: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d73e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d744: 4e5e unlk %fp <== NOT EXECUTED
0004d800 <rtems_string_to_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d800: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d804: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d808: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4d80c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d810: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d814: 4a8a tstl %a2 <== NOT EXECUTED
4d816: 6766 beqs 4d87e <rtems_string_to_long+0x7e> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d818: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d81e: 4e94 jsr %a4@ <== NOT EXECUTED
4d820: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d822: 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 );
4d824: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d828: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d82c: 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 );
4d82e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d830: 4eb9 0005 268e jsr 5268e <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d836: 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 );
4d83a: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d83c: 4a8b tstl %a3 <== NOT EXECUTED
4d83e: 674a beqs 4d88a <rtems_string_to_long+0x8a> <== NOT EXECUTED
*endptr = end;
4d840: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d844: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d846: b083 cmpl %d3,%d0 <== NOT EXECUTED
4d848: 6746 beqs 4d890 <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))
4d84a: 0c82 7fff ffff cmpil #2147483647,%d2 <== NOT EXECUTED
4d850: 6716 beqs 4d868 <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))
4d852: 0c82 8000 0000 cmpil #-2147483648,%d2 <== NOT EXECUTED
4d858: 670e beqs 4d868 <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;
4d85a: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d85c: 4280 clrl %d0 <== NOT EXECUTED
}
4d85e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d864: 4e5e unlk %fp <== NOT EXECUTED
4d866: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d868: 4e94 jsr %a4@ <== NOT EXECUTED
4d86a: 7222 moveq #34,%d1 <== NOT EXECUTED
4d86c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d86e: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d870: 66e8 bnes 4d85a <rtems_string_to_long+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d872: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d874: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d87a: 4e5e unlk %fp <== NOT EXECUTED
4d87c: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d87e: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d880: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d886: 4e5e unlk %fp <== NOT EXECUTED
4d888: 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 )
4d88a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d88e: 60b6 bras 4d846 <rtems_string_to_long+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d890: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d892: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d898: 4e5e unlk %fp <== NOT EXECUTED
0004d748 <rtems_string_to_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d748: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4d74c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4d750: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
4d754: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d758: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d75c: 4a8a tstl %a2 <== NOT EXECUTED
4d75e: 6700 0082 beqw 4d7e2 <rtems_string_to_long_long+0x9a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d762: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d768: 4e94 jsr %a4@ <== NOT EXECUTED
4d76a: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4d76c: 4280 clrl %d0 <== NOT EXECUTED
4d76e: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d770: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4d772: 2480 movel %d0,%a2@ <== NOT EXECUTED
4d774: 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 );
4d778: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d77c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d780: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d782: 4eb9 0005 26b0 jsr 526b0 <strtoll> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d788: 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 );
4d78c: 2400 movel %d0,%d2 <== NOT EXECUTED
4d78e: 2601 movel %d1,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d790: 4a8b tstl %a3 <== NOT EXECUTED
4d792: 675a beqs 4d7ee <rtems_string_to_long_long+0xa6> <== NOT EXECUTED
*endptr = end;
4d794: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d798: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d79a: b084 cmpl %d4,%d0 <== NOT EXECUTED
4d79c: 6756 beqs 4d7f4 <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))
4d79e: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
4d7a4: 72ff moveq #-1,%d1 <== NOT EXECUTED
4d7a6: 9283 subl %d3,%d1 <== NOT EXECUTED
4d7a8: 9182 subxl %d2,%d0 <== NOT EXECUTED
4d7aa: 6720 beqs 4d7cc <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))
4d7ac: 203c 8000 0000 movel #-2147483648,%d0 <== NOT EXECUTED
4d7b2: 4281 clrl %d1 <== NOT EXECUTED
4d7b4: 9283 subl %d3,%d1 <== NOT EXECUTED
4d7b6: 9182 subxl %d2,%d0 <== NOT EXECUTED
4d7b8: 6712 beqs 4d7cc <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;
4d7ba: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4d7bc: 2482 movel %d2,%a2@ <== NOT EXECUTED
4d7be: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
}
4d7c2: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d7c8: 4e5e unlk %fp <== NOT EXECUTED
4d7ca: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4d7cc: 4e94 jsr %a4@ <== NOT EXECUTED
4d7ce: 7222 moveq #34,%d1 <== NOT EXECUTED
4d7d0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d7d2: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d7d4: 66e4 bnes 4d7ba <rtems_string_to_long_long+0x72> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d7d6: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d7d8: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d7de: 4e5e unlk %fp <== NOT EXECUTED
4d7e0: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d7e2: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d7e4: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d7ea: 4e5e unlk %fp <== NOT EXECUTED
4d7ec: 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 )
4d7ee: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d7f2: 60a6 bras 4d79a <rtems_string_to_long_long+0x52> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d7f4: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d7f6: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4d7fc: 4e5e unlk %fp <== NOT EXECUTED
0004d89c <rtems_string_to_pointer>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d89c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d8a0: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d8a4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d8a8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d8ac: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d8b0: 4a8a tstl %a2 <== NOT EXECUTED
4d8b2: 675c beqs 4d910 <rtems_string_to_pointer+0x74> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d8b4: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d8ba: 4e94 jsr %a4@ <== NOT EXECUTED
4d8bc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d8be: 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 );
4d8c0: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
4d8c4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d8c8: 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 );
4d8ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d8cc: 4eb9 0005 2ad2 jsr 52ad2 <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 )
4d8d2: 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 );
4d8d6: 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 )
4d8d8: 4a8b tstl %a3 <== NOT EXECUTED
4d8da: 6740 beqs 4d91c <rtems_string_to_pointer+0x80> <== NOT EXECUTED
*endptr = end;
4d8dc: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d8e0: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d8e2: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d8e4: 673c beqs 4d922 <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))
4d8e6: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d8e8: b083 cmpl %d3,%d0 <== NOT EXECUTED
4d8ea: 670e beqs 4d8fa <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;
4d8ec: 2483 movel %d3,%a2@ <== NOT EXECUTED
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4d8ee: 4280 clrl %d0 <== NOT EXECUTED
}
4d8f0: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d8f6: 4e5e unlk %fp <== NOT EXECUTED
4d8f8: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4d8fa: 4e94 jsr %a4@ <== NOT EXECUTED
4d8fc: 7222 moveq #34,%d1 <== NOT EXECUTED
4d8fe: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d900: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4d902: 66e8 bnes 4d8ec <rtems_string_to_pointer+0x50> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4d904: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d906: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d90c: 4e5e unlk %fp <== NOT EXECUTED
4d90e: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d910: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d912: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d918: 4e5e unlk %fp <== NOT EXECUTED
4d91a: 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 )
4d91c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d920: 60c0 bras 4d8e2 <rtems_string_to_pointer+0x46> <== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d922: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d924: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d92a: 4e5e unlk %fp <== NOT EXECUTED
...
0004d930 <rtems_string_to_unsigned_char>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d930: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4d934: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4d938: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d93c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d940: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d944: 4a8a tstl %a2 <== NOT EXECUTED
4d946: 673e beqs 4d986 <rtems_string_to_unsigned_char+0x56><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d948: 4eb9 0004 fb90 jsr 4fb90 <__errno> <== NOT EXECUTED
4d94e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d950: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4d952: 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 );
4d954: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d958: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d95c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d95e: 4eb9 0005 2ad2 jsr 52ad2 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d964: 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 );
4d968: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d96a: 4a8b tstl %a3 <== NOT EXECUTED
4d96c: 6724 beqs 4d992 <rtems_string_to_unsigned_char+0x62><== NOT EXECUTED
*endptr = end;
4d96e: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4d972: 2681 movel %d1,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d974: b282 cmpl %d2,%d1 <== NOT EXECUTED
4d976: 6720 beqs 4d998 <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;
4d978: 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 );
4d97a: 1483 moveb %d3,%a2@ <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d97c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4d982: 4e5e unlk %fp <== NOT EXECUTED
4d984: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4d986: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d988: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4d98e: 4e5e unlk %fp <== NOT EXECUTED
4d990: 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 )
4d992: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4d996: 60dc bras 4d974 <rtems_string_to_unsigned_char+0x44><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4d998: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4d99a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4d9a0: 4e5e unlk %fp <== NOT EXECUTED
0004d9a4 <rtems_string_to_unsigned_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4d9a4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4d9a8: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4d9ac: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d9b0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4d9b4: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4d9b8: 4a8a tstl %a2 <== NOT EXECUTED
4d9ba: 675c beqs 4da18 <rtems_string_to_unsigned_int+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4d9bc: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4d9c2: 4e94 jsr %a4@ <== NOT EXECUTED
4d9c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d9c6: 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 );
4d9c8: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4d9cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4d9d0: 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 );
4d9d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d9d4: 4eb9 0005 2ad2 jsr 52ad2 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d9da: 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 );
4d9de: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4d9e0: 4a8b tstl %a3 <== NOT EXECUTED
4d9e2: 6740 beqs 4da24 <rtems_string_to_unsigned_int+0x80><== NOT EXECUTED
*endptr = end;
4d9e4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4d9e8: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4d9ea: b082 cmpl %d2,%d0 <== NOT EXECUTED
4d9ec: 673c beqs 4da2a <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))
4d9ee: 70ff moveq #-1,%d0 <== NOT EXECUTED
4d9f0: b083 cmpl %d3,%d0 <== NOT EXECUTED
4d9f2: 670e beqs 4da02 <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;
4d9f4: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4d9f6: 4280 clrl %d0 <== NOT EXECUTED
}
4d9f8: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4d9fe: 4e5e unlk %fp <== NOT EXECUTED
4da00: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4da02: 4e94 jsr %a4@ <== NOT EXECUTED
4da04: 7222 moveq #34,%d1 <== NOT EXECUTED
4da06: 2040 moveal %d0,%a0 <== NOT EXECUTED
4da08: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4da0a: 66e8 bnes 4d9f4 <rtems_string_to_unsigned_int+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4da0c: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da0e: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4da14: 4e5e unlk %fp <== NOT EXECUTED
4da16: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4da18: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da1a: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4da20: 4e5e unlk %fp <== NOT EXECUTED
4da22: 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 )
4da24: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4da28: 60c0 bras 4d9ea <rtems_string_to_unsigned_int+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4da2a: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4da2c: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4da32: 4e5e unlk %fp <== NOT EXECUTED
...
0004dadc <rtems_string_to_unsigned_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4dadc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4dae0: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4dae4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4dae8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4daec: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4daf0: 4a8a tstl %a2 <== NOT EXECUTED
4daf2: 675c beqs 4db50 <rtems_string_to_unsigned_long+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4daf4: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4dafa: 4e94 jsr %a4@ <== NOT EXECUTED
4dafc: 2040 moveal %d0,%a0 <== NOT EXECUTED
4dafe: 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 );
4db00: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4db04: 486e fffc pea %fp@(-4) <== NOT EXECUTED
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
*n = 0;
4db08: 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 );
4db0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4db0c: 4eb9 0005 2ad2 jsr 52ad2 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db12: 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 );
4db16: 2600 movel %d0,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4db18: 4a8b tstl %a3 <== NOT EXECUTED
4db1a: 6740 beqs 4db5c <rtems_string_to_unsigned_long+0x80><== NOT EXECUTED
*endptr = end;
4db1c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4db20: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4db22: b082 cmpl %d2,%d0 <== NOT EXECUTED
4db24: 673c beqs 4db62 <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))
4db26: 70ff moveq #-1,%d0 <== NOT EXECUTED
4db28: b083 cmpl %d3,%d0 <== NOT EXECUTED
4db2a: 670e beqs 4db3a <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;
4db2c: 2483 movel %d3,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4db2e: 4280 clrl %d0 <== NOT EXECUTED
}
4db30: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4db36: 4e5e unlk %fp <== NOT EXECUTED
4db38: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4db3a: 4e94 jsr %a4@ <== NOT EXECUTED
4db3c: 7222 moveq #34,%d1 <== NOT EXECUTED
4db3e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4db40: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4db42: 66e8 bnes 4db2c <rtems_string_to_unsigned_long+0x50><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4db44: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db46: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4db4c: 4e5e unlk %fp <== NOT EXECUTED
4db4e: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4db50: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db52: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4db58: 4e5e unlk %fp <== NOT EXECUTED
4db5a: 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 )
4db5c: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4db60: 60c0 bras 4db22 <rtems_string_to_unsigned_long+0x46><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4db62: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4db64: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4db6a: 4e5e unlk %fp <== NOT EXECUTED
...
0004da38 <rtems_string_to_unsigned_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4da38: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4da3c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4da40: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4da44: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4da48: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4da4c: 4a8a tstl %a2 <== NOT EXECUTED
4da4e: 676e beqs 4dabe <rtems_string_to_unsigned_long_long+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4da50: 49f9 0004 fb90 lea 4fb90 <__errno>,%a4 <== NOT EXECUTED
4da56: 4e94 jsr %a4@ <== NOT EXECUTED
4da58: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4da5a: 4280 clrl %d0 <== NOT EXECUTED
4da5c: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4da5e: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4da60: 2480 movel %d0,%a2@ <== NOT EXECUTED
4da62: 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 );
4da66: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4da6a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4da6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4da70: 4eb9 0005 2af4 jsr 52af4 <strtoull> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da76: 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 );
4da7a: 2600 movel %d0,%d3 <== NOT EXECUTED
4da7c: 2801 movel %d1,%d4 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4da7e: 4a8b tstl %a3 <== NOT EXECUTED
4da80: 6748 beqs 4daca <rtems_string_to_unsigned_long_long+0x92><== NOT EXECUTED
*endptr = end;
4da82: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4da86: 2680 movel %d0,%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4da88: b082 cmpl %d2,%d0 <== NOT EXECUTED
4da8a: 6744 beqs 4dad0 <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))
4da8c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4da8e: 72ff moveq #-1,%d1 <== NOT EXECUTED
4da90: 9284 subl %d4,%d1 <== NOT EXECUTED
4da92: 9183 subxl %d3,%d0 <== NOT EXECUTED
4da94: 6712 beqs 4daa8 <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;
4da96: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4da98: 2483 movel %d3,%a2@ <== NOT EXECUTED
4da9a: 2544 0004 movel %d4,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
}
4da9e: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4daa4: 4e5e unlk %fp <== NOT EXECUTED
4daa6: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4daa8: 4e94 jsr %a4@ <== NOT EXECUTED
4daaa: 7222 moveq #34,%d1 <== NOT EXECUTED
4daac: 2040 moveal %d0,%a0 <== NOT EXECUTED
4daae: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4dab0: 66e4 bnes 4da96 <rtems_string_to_unsigned_long_long+0x5e><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
4dab2: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dab4: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4daba: 4e5e unlk %fp <== NOT EXECUTED
4dabc: 4e75 rts <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4dabe: 7009 moveq #9,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dac0: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4dac6: 4e5e unlk %fp <== NOT EXECUTED
4dac8: 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 )
4daca: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4dace: 60b8 bras 4da88 <rtems_string_to_unsigned_long_long+0x50><== NOT EXECUTED
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4dad0: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4dad2: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4dad8: 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 1f30 jsr 51f30 <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 162a cmpil #398890,%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 1672 pea 61672 <IMFS_ops+0x48> <== NOT EXECUTED
42916: 486a 0101 pea %a2@(257) <== NOT EXECUTED
4291a: 4eb9 0005 1f48 jsr 51f48 <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 a8e8 lea 4a8e8 <_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 2038 jsr 52038 <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 ad96 jsr 4ad96 <_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 b682 jsr 4b682 <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 1a84 jsr 51a84 <strcpy> <== NOT EXECUTED
if (full_filename[strlen(full_filename)-1] != '/')
42a02: 2f0d movel %a5,%sp@- <== NOT EXECUTED
42a04: 4eb9 0005 1f30 jsr 51f30 <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 196c jsr 5196c <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 af68 jsr 4af68 <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 1e7e cmpil #401022,%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 d5d2 moveb 5d5d2 <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 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@-
4669a: 4eb9 0004 6de4 jsr 46de4 <_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 edb8 pea 5edb8 <_RTEMS_tasks_Information>
466a6: 4eb9 0004 7874 jsr 47874 <_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 edb8 pea 5edb8 <_RTEMS_tasks_Information>
466ee: 4eb9 0004 8984 jsr 48984 <_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 00fc moveal %a3@(252),%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 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@-
46716: 4eb9 0004 6e44 jsr 46e44 <_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 7c4c jsr 47c4c <_Objects_Get_information_id>
4674c: 2f0b movel %a3,%sp@-
4674e: 2f00 movel %d0,%sp@-
46750: 4eb9 0004 7bc8 jsr 47bc8 <_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 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@-
4675c: 4eb9 0004 6e44 jsr 46e44 <_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 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46778: 4eb9 0004 6e44 jsr 46e44 <_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 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@-
467a6: 4eb9 0004 6de4 jsr 46de4 <_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 88e8 jsr 488e8 <_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 7c4c lea 47c4c <_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 856c jsr 4856c <_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 7bc8 jsr 47bc8 <_Objects_Free>
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
467ec: 2f39 0005 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@-
467f2: 4eb9 0004 6e44 jsr 46e44 <_API_Mutex_Unlock>
_Thread_Enable_dispatch();
467f8: 4eb9 0004 88c2 jsr 488c2 <_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 eef8 movel 5eef8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46816: 4eb9 0004 6e44 jsr 46e44 <_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 0ae4 tstb 60ae4 <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 27dc moveal 627dc <_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 b094 jsr 4b094 <_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 00fc moveal %a1@(252),%a0 <== NOT EXECUTED
48cc6: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48cca: 4eb9 0004 b06e jsr 4b06e <_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 27dc moveal 627dc <_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 00fc moveal %a0@(252),%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 0005 eff4 moveal 5eff4 <_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 edb8 pea 5edb8 <_RTEMS_tasks_Information> <== NOT EXECUTED
4685c: 4eb9 0004 7ec0 jsr 47ec0 <_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 c8de lea 5c8de <_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 c370 jsr 5c370 <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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
...
0004d3ac <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
4d3ac: 4e56 ffe4 linkw %fp,#-28
4d3b0: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
4d3b4: 2a2e 0008 movel %fp@(8),%d5
4d3b8: 242e 000c movel %fp@(12),%d2
4d3bc: 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 )
4d3c0: 4a8c tstl %a4
4d3c2: 6700 015a beqw 4d51e <rtems_task_mode+0x172>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
4d3c6: 2479 0005 eff4 moveal 5eff4 <_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;
4d3cc: 4a2a 0074 tstb %a2@(116)
4d3d0: 57c3 seq %d3
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4d3d2: 266a 00fc moveal %a2@(252),%a3
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4d3d6: 49c3 extbl %d3
4d3d8: 0283 0000 0100 andil #256,%d3
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
4d3de: 4aaa 007a tstl %a2@(122)
4d3e2: 6600 00cc bnew 4d4b0 <rtems_task_mode+0x104>
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4d3e6: 4a2b 0008 tstb %a3@(8)
4d3ea: 57c4 seq %d4
old_mode |= _ISR_Get_level();
4d3ec: 4eb9 0004 9ba8 jsr 49ba8 <_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;
4d3f2: 49c4 extbl %d4
4d3f4: 0284 0000 0400 andil #1024,%d4
4d3fa: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
4d3fc: 8083 orl %d3,%d0
4d3fe: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4d400: 0802 0008 btst #8,%d2
4d404: 670c beqs 4d412 <rtems_task_mode+0x66> <== NEVER TAKEN
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
4d406: 0805 0008 btst #8,%d5
4d40a: 57c0 seq %d0
4d40c: 4480 negl %d0
4d40e: 1540 0074 moveb %d0,%a2@(116)
if ( mask & RTEMS_TIMESLICE_MASK ) {
4d412: 0802 0009 btst #9,%d2
4d416: 6718 beqs 4d430 <rtems_task_mode+0x84>
if ( _Modes_Is_timeslice(mode_set) ) {
4d418: 0805 0009 btst #9,%d5
4d41c: 6700 00ee beqw 4d50c <rtems_task_mode+0x160>
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4d420: 7001 moveq #1,%d0 <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4d422: 41f9 0005 edf0 lea 5edf0 <_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;
4d428: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4d42c: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4d430: 7007 moveq #7,%d0
4d432: c082 andl %d2,%d0
4d434: 6712 beqs 4d448 <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 ) );
4d436: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
4d438: 7207 moveq #7,%d1
4d43a: 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 ) );
4d43c: 0280 0000 f8ff andil #63743,%d0
4d442: e189 lsll #8,%d1
4d444: 8081 orl %d1,%d0
4d446: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
4d448: 0802 000a btst #10,%d2
4d44c: 6754 beqs 4d4a2 <rtems_task_mode+0xf6>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4d44e: 4282 clrl %d2
4d450: 142b 0008 moveb %a3@(8),%d2
4d454: 4280 clrl %d0
* Output:
* *previous_mode_set - previous mode set
* always return RTEMS_SUCCESSFUL;
*/
rtems_status_code rtems_task_mode(
4d456: 0805 000a btst #10,%d5
4d45a: 57c1 seq %d1
4d45c: 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 ) {
4d45e: 1001 moveb %d1,%d0
4d460: b082 cmpl %d2,%d0
4d462: 673e beqs 4d4a2 <rtems_task_mode+0xf6> <== ALWAYS TAKEN
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
4d464: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
asr->is_enabled = is_asr_enabled;
4d46a: 1741 0008 moveb %d1,%a3@(8) <== NOT EXECUTED
4d46e: 40c1 movew %sr,%d1 <== NOT EXECUTED
4d470: 8081 orl %d1,%d0 <== NOT EXECUTED
4d472: 46c0 movew %d0,%sr <== NOT EXECUTED
_signals = information->signals_pending;
4d474: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED
information->signals_pending = information->signals_posted;
4d478: 276b 0012 0016 movel %a3@(18),%a3@(22) <== NOT EXECUTED
information->signals_posted = _signals;
4d47e: 2740 0012 movel %d0,%a3@(18) <== NOT EXECUTED
_ISR_Enable( _level );
4d482: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4d484: 4aab 0012 tstl %a3@(18) <== NOT EXECUTED
4d488: 56c0 sne %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d48a: 7203 moveq #3,%d1 <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4d48c: 4480 negl %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d48e: b2b9 0005 efa0 cmpl 5efa0 <_System_state_Current>,%d1 <== NOT EXECUTED
4d494: 6744 beqs 4d4da <rtems_task_mode+0x12e> <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4d496: 4280 clrl %d0
}
4d498: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
4d49e: 4e5e unlk %fp
4d4a0: 4e75 rts
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d4a2: 7203 moveq #3,%d1
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4d4a4: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d4a6: b2b9 0005 efa0 cmpl 5efa0 <_System_state_Current>,%d1
4d4ac: 66e8 bnes 4d496 <rtems_task_mode+0xea> <== NEVER TAKEN
4d4ae: 602a bras 4d4da <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;
4d4b0: 4a2b 0008 tstb %a3@(8) <== NOT EXECUTED
4d4b4: 57c4 seq %d4 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4d4b6: 4eb9 0004 9ba8 jsr 49ba8 <_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;
4d4bc: 49c4 extbl %d4 <== NOT EXECUTED
4d4be: 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;
4d4c4: 08c3 0009 bset #9,%d3 <== NOT EXECUTED
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4d4c8: 8084 orl %d4,%d0 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4d4ca: 8083 orl %d3,%d0 <== NOT EXECUTED
4d4cc: 2880 movel %d0,%a4@ <== NOT EXECUTED
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4d4ce: 0802 0008 btst #8,%d2 <== NOT EXECUTED
4d4d2: 6700 ff3e beqw 4d412 <rtems_task_mode+0x66> <== NOT EXECUTED
4d4d6: 6000 ff2e braw 4d406 <rtems_task_mode+0x5a> <== NOT EXECUTED
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
4d4da: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0
if ( are_signals_pending ||
4d4e0: 4a00 tstb %d0
4d4e2: 660e bnes 4d4f2 <rtems_task_mode+0x146> <== NEVER TAKEN
4d4e4: b1f9 0005 eff8 cmpal 5eff8 <_Per_CPU_Information+0x10>,%a0
4d4ea: 67aa beqs 4d496 <rtems_task_mode+0xea> <== ALWAYS TAKEN
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
4d4ec: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED
4d4f0: 67a4 beqs 4d496 <rtems_task_mode+0xea> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4d4f2: 7001 moveq #1,%d0 <== NOT EXECUTED
4d4f4: 13c0 0005 f000 moveb %d0,5f000 <_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();
4d4fa: 4eb9 0004 8758 jsr 48758 <_Thread_Dispatch> <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
4d500: 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;
4d506: 4280 clrl %d0 <== NOT EXECUTED
}
4d508: 4e5e unlk %fp <== NOT EXECUTED
4d50a: 4e75 rts <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4d50c: 7007 moveq #7,%d0
4d50e: 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;
4d510: 42aa 007a clrl %a2@(122)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4d514: 4a80 tstl %d0
4d516: 6700 ff30 beqw 4d448 <rtems_task_mode+0x9c>
4d51a: 6000 ff1a braw 4d436 <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;
4d51e: 7009 moveq #9,%d0 <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
}
4d520: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
4d526: 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 94fc jsr 494fc <_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 9d90 jsr 49d90 <_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 94d6 jsr 494d6 <_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 94d6 jsr 494d6 <_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 bf94 jsr 4bf94 <_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 bf6e jsr 4bf6e <_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 c828 jsr 4c828 <_Thread_Resume>
_Thread_Enable_dispatch();
49f56: 4eb9 0004 bf6e jsr 4bf6e <_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 0ae4 tstb 60ae4 <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 27dc moveal 627dc <_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 b094 jsr 4b094 <_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 00fc moveal %a1@(252),%a0 <== NOT EXECUTED
48e6a: 2180 2c1e movel %d0,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
48e6e: 4eb9 0004 b06e jsr 4b06e <_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 27dc moveal 627dc <_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 00fc moveal %a0@(252),%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 1a22 moveb 61a22 <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 cf28 jsr 4cf28 <_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
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 ca0c jsr 4ca0c <_Thread_Change_priority>
4ad5a: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4ad5e: 4eb9 0004 cf02 jsr 4cf02 <_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 88e8 jsr 488e8 <_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 9358 jsr 49358 <_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 88c2 jsr 488c2 <_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 88c2 jsr 488c2 <_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 88e8 jsr 488e8 <_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 88c2 jsr 488c2 <_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 93b4 jsr 493b4 <_Thread_Suspend>
_Thread_Enable_dispatch();
469b2: 4eb9 0004 88c2 jsr 488c2 <_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 9884 jsr 49884 <_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 0108 moveal %a3@(264),%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 aa1e jsr 4aa1e <_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 0108 movel %a3@(264),%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 0108 movel %d0,%a3@(264) <== NOT EXECUTED
_Thread_Enable_dispatch();
47810: 4eb9 0004 985e jsr 4985e <_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 985e jsr 4985e <_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 985e jsr 4985e <_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 9884 jsr 49884 <_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 0108 moveal %a0@(264),%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 985e jsr 4985e <_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 985e jsr 4985e <_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 0108 movel %a1@,%a0@(264) <== 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 985e jsr 4985e <_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
47920: 674e beqs 47970 <rtems_task_variable_get+0x64>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
47922: 486e fffc pea %fp@(-4)
47926: 2f2e 0008 movel %fp@(8),%sp@-
4792a: 4eb9 0004 9884 jsr 49884 <_Thread_Get>
switch (location) {
47930: 508f addql #8,%sp
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 0108 moveal %a1@(264),%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 985e jsr 4985e <_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 985e jsr 4985e <_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 ee38 movel 5ee38 <_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 ee38 movel %d0,5ee38 <_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 0005 eff4 movel 5eff4 <_Per_CPU_Information+0xc>,%sp@-
469e6: 4eb9 0004 91a4 jsr 491a4 <_Thread_Set_state>
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
469ec: 2079 0005 eff4 moveal 5eff4 <_Per_CPU_Information+0xc>,%a0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
469f2: 203c 0004 871c movel #296732,%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 ef18 pea 5ef18 <_Watchdog_Ticks_chain>
46a1a: 4eb9 0004 97ac jsr 497ac <_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 88c2 jsr 488c2 <_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 eebe pea 5eebe <_Scheduler> <== NOT EXECUTED
46a3a: 2079 0005 eec6 moveal 5eec6 <_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 88c2 jsr 488c2 <_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 07d0 tstb 607d0 <_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 086a cmpl 6086a <_TOD_Now>,%d0 <== NOT EXECUTED
4799e: 63e4 blss 47984 <rtems_task_wake_when+0x2c> <== NOT EXECUTED
479a0: 2239 0006 07c0 movel 607c0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
479a6: 5281 addql #1,%d1 <== NOT EXECUTED
479a8: 23c1 0006 07c0 movel %d1,607c0 <_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 097c movel 6097c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
479b8: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
479bc: 4eb9 0004 a190 jsr 4a190 <_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 086a subl 6086a <_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 097c moveal 6097c <_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 9708 movel #300808,%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 0894 pea 60894 <_Watchdog_Seconds_chain> <== NOT EXECUTED
479fa: 4eb9 0004 a82c jsr 4a82c <_Watchdog_Insert> <== NOT EXECUTED
);
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
47a00: 4eb9 0004 98ae jsr 498ae <_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 d630 pea 5d630 <termios_assoc_table> <== NOT EXECUTED
43c72: 4eb9 0004 abf0 jsr 4abf0 <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 d730 movel %a0@,5d730 <rtems_termios_cbufsize> <== NOT EXECUTED
rtems_termios_raw_input_size = raw_input;
44340: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED
44344: 23d0 0005 d734 movel %a0@,5d734 <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 d738 movel %a0@,5d738 <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 ed2c movel 5ed2c <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 e4f4 addil #386292,%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 ed2c movel 5ed2c <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>
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 6ba8 jsr 46ba8 <rtems_fatal_error_occurred> <== NOT EXECUTED
} else {
tty->forw->back = tty->back;
}
if (tty->back == NULL) {
rtems_termios_ttyHead = tty->forw;
442d6: 23c8 0005 ed34 movel %a0,5ed34 <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 ed30 movel %a1,5ed30 <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 e5a4 moveal 5e5a4 <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 6ba8 jsr 46ba8 <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 e500 addil #386304,%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 e500 addil #386304,%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 e508 addil #386312,%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 e4f4 addil #386292,%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 e4f0 lea 5e4f0 <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 0005 fb10 pea 5fb10 <termios_assoc_table> <== NOT EXECUTED
45976: 4eb9 0004 cb50 jsr 4cb50 <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 ed2c movel 5ed2c <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 ed34 moveal 5ed34 <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 d734 lea 5d734 <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 d738 lea 5d738 <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 d730 movel 5d730 <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 ed34 movel %a5,5ed34 <rtems_termios_ttyHead>
if (rtems_termios_ttyTail == NULL)
43e28: 4ab9 0005 ed30 tstl 5ed30 <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 d73c moveb 5d73c <c.6331>,%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 d73c moveb 5d73c <c.6331>,%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 d73c moveb 5d73c <c.6331>,%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 d73c moveb 5d73c <c.6331>,%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 d73c moveb %d5,5d73c <c.6331>
* 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 d73c moveb %d1,5d73c <c.6331> <== 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 ed2c movel 5ed2c <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 ed2c movel 5ed2c <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 d73c moveb 5d73c <c.6331>,%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 6ba8 jsr 46ba8 <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 d73c moveb 5d73c <c.6331>,%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 d73c moveb 5d73c <c.6331>,%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 ed30 movel %a5,5ed30 <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 ed2c movel 5ed2c <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 ed2c movel 5ed2c <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 ed2c movel 5ed2c <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 ed2c movel 5ed2c <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 6ba8 jsr 46ba8 <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 e4f8 addil #386296,%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 d730 movel 5d730 <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 d730 movel 5d730 <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 e504 addil #386308,%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 e4fc addil #386300,%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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58966: 4eb9 0005 b7bc jsr 5b7bc <_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 d630 jsr 5d630 <_Watchdog_Remove> <== NOT EXECUTED
58990: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
58992: 4eb9 0005 c34a jsr 5c34a <_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 f1aa movel 5f1aa <_Thread_Dispatch_disable_level>,%d0
46c8e: 5280 addql #1,%d0
46c90: 23c0 0005 f1aa movel %d0,5f1aa <_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 0005 f39c pea 5f39c <_Timer_Information>
46c9c: 4eb9 0004 7c0c jsr 47c0c <_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 0005 f3b4 moveal 5f3b4 <_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 8bda jsr 48bda <_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 8bda jsr 48bda <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58a58: 4eb9 0005 b7bc jsr 5b7bc <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58a72: 4eb9 0005 b350 jsr 5b350 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
58a78: 486a 0010 pea %a2@(16) <== NOT EXECUTED
58a7c: 4eb9 0005 d630 jsr 5d630 <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58a8a: 4eb9 0005 b614 jsr 5b614 <_Objects_Free> <== NOT EXECUTED
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
58a90: 4eb9 0005 c34a jsr 5c34a <_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 0005 f39c pea 5f39c <_Timer_Information> <== NOT EXECUTED
46d40: 4eb9 0004 80cc jsr 480cc <_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 9c18 jsr 49c18 <_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 0005 f28a pea 5f28a <_Watchdog_Ticks_chain> <== NOT EXECUTED
46d9a: 4eb9 0004 9ac4 jsr 49ac4 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_timer->Ticker, ticks );
_Thread_Enable_dispatch();
46da0: 4eb9 0004 8bda jsr 48bda <_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 8bda jsr 48bda <_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 db44 tstb 7db44 <_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 dbde cmpl 7dbde <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58bee: 4eb9 0005 b7bc jsr 5b7bc <_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 d630 jsr 5d630 <_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 dbde subl 7dbde <_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 dc08 pea 7dc08 <_Watchdog_Seconds_chain> <== NOT EXECUTED
58c3e: 4eb9 0005 d4dc jsr 5d4dc <_Watchdog_Insert> <== NOT EXECUTED
&the_timer->Ticker,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
58c44: 4eb9 0005 c34a jsr 5c34a <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58c90: 4eb9 0005 b7bc jsr 5b7bc <_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 c34a jsr 5c34a <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58cf8: 4eb9 0005 b948 jsr 5b948 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
58cfe: 41f9 0007 7170 lea 77170 <_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 7f22 moveb 77f22 <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 db34 movel 7db34 <_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 db34 movel %d1,7db34 <_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 901e moveb 7901e <initialized.3666>,%d2 <== NOT EXECUTED
initialized = true;
59430: 13c0 0007 901e moveb %d0,7901e <initialized.3666> <== NOT EXECUTED
_Thread_Enable_dispatch();
59436: 4eb9 0005 c34a jsr 5c34a <_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 db34 movel 7db34 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
59462: 5281 addql #1,%d1 <== NOT EXECUTED
59464: 2600 movel %d0,%d3 <== NOT EXECUTED
59466: 23c1 0007 db34 movel %d1,7db34 <_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 901e moveb 7901e <initialized.3666>,%d2 <== NOT EXECUTED
initialized = true;
59474: 13c0 0007 901e moveb %d0,7901e <initialized.3666> <== NOT EXECUTED
_Thread_Enable_dispatch();
5947a: 4eb9 0005 c34a jsr 5c34a <_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 901e moveb %d1,7901e <initialized.3666> <== 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 dacc moveal 7dacc <_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 dc5c movel 7dc5c <_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 8fa0 movel %a0@,78fa0 <_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 8fd4 lea 78fd4 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
594e8: 4879 0007 8fa0 pea 78fa0 <_Timer_server_Default> <== NOT EXECUTED
594ee: 487a fb80 pea %pc@(59070 <_Timer_server_Body>) <== NOT EXECUTED
594f2: 23c8 0007 8fd0 movel %a0,78fd0 <_Timer_server_Default+0x30><== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
594f8: 41f9 0007 8fd0 lea 78fd0 <_Timer_server_Default+0x30>,%a0 <== NOT EXECUTED
594fe: 23c8 0007 8fd8 movel %a0,78fd8 <_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 900c lea 7900c <_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 8fdc movel %d1,78fdc <_Timer_server_Default+0x3c><== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59510: 223c 0007 9008 movel #495624,%d1 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59516: 23c8 0007 9008 movel %a0,79008 <_Timer_server_Default+0x68><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5951c: 41f9 0007 dbde lea 7dbde <_TOD_Now>,%a0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59522: 23c1 0007 9010 movel %d1,79010 <_Timer_server_Default+0x70><== NOT EXECUTED
59528: 23d0 0007 9014 movel %a0@,79014 <_Timer_server_Default+0x74><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5952e: 223c 0005 c1a4 movel #377252,%d1 <== NOT EXECUTED
59534: 41f9 0005 c1a4 lea 5c1a4 <_Thread_Delay_ended>,%a0 <== NOT EXECUTED
5953a: 23c1 0007 8fc4 movel %d1,78fc4 <_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 9018 clrl 79018 <_Timer_server_Default+0x78> <== NOT EXECUTED
ts->active = false;
59548: 13c1 0007 901c moveb %d1,7901c <_Timer_server_Default+0x7c><== NOT EXECUTED
5954e: 23c8 0007 8ffc movel %a0,78ffc <_Timer_server_Default+0x5c><== NOT EXECUTED
/*
* The default timer server is now available.
*/
_Timer_server = ts;
59554: 41f9 0007 8fa0 lea 78fa0 <_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 8fd4 clrl 78fd4 <_Timer_server_Default+0x34> <== NOT EXECUTED
59568: 42b9 0007 900c clrl 7900c <_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 8fb0 clrl 78fb0 <_Timer_server_Default+0x10> <== NOT EXECUTED
59574: 23c1 0007 8fa4 movel %d1,78fa4 <_Timer_server_Default+0x4> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
5957a: 23c0 0007 8fc8 movel %d0,78fc8 <_Timer_server_Default+0x28><== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
59580: 23c8 0007 dda0 movel %a0,7dda0 <_Timer_server> <== NOT EXECUTED
the_watchdog->user_data = user_data;
59586: 42b9 0007 8fcc clrl 78fcc <_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 8fe8 clrl 78fe8 <_Timer_server_Default+0x48> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
59592: 23c0 0007 9000 movel %d0,79000 <_Timer_server_Default+0x60><== NOT EXECUTED
the_watchdog->user_data = user_data;
59598: 42b9 0007 9004 clrl 79004 <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58d22: 4eb9 0005 b7bc jsr 5b7bc <_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 c34a jsr 5c34a <_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 d630 jsr 5d630 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
58d70: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58d72: 4879 0007 dc14 pea 7dc14 <_Watchdog_Ticks_chain> <== NOT EXECUTED
58d78: 4eb9 0005 d4dc jsr 5d4dc <_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 c34a jsr 5c34a <_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 dda0 moveal 7dda0 <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58d96: 4eb9 0005 d630 jsr 5d630 <_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 c34a jsr 5c34a <_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 dda0 moveal 7dda0 <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58df6: 4eb9 0005 b7bc jsr 5b7bc <_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 d630 jsr 5d630 <_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 c34a jsr 5c34a <_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 c34a jsr 5c34a <_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 dda0 moveal 7dda0 <_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 db44 tstb 7db44 <_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 dbde cmpl 7dbde <_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 dd68 pea 7dd68 <_Timer_Information> <== NOT EXECUTED
58f04: 4eb9 0005 b7bc jsr 5b7bc <_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 d630 jsr 5d630 <_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 dbde subl 7dbde <_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 c34a jsr 5c34a <_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 ece4 movel 5ece4 <rtems_panic_in_progress>,%d1 <== NOT EXECUTED
4296c: 2001 movel %d1,%d0 <== NOT EXECUTED
4296e: 5280 addql #1,%d0 <== NOT EXECUTED
42970: 23c0 0005 ece4 movel %d0,5ece4 <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 ee38 movel 5ee38 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
42980: 5280 addql #1,%d0 <== NOT EXECUTED
42982: 23c0 0005 ee38 movel %d0,5ee38 <_Thread_Dispatch_disable_level><== NOT EXECUTED
RTEMS_COMPILER_MEMORY_BARRIER();
42988: 2039 0005 ece4 movel 5ece4 <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 d7c4 moveal 5d7c4 <_impure_ptr>,%a0 <== NOT EXECUTED
4299c: 45f9 0004 dbc6 lea 4dbc6 <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 dfee lea 4dfee <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 d7c4 moveal 5d7c4 <_impure_ptr>,%a0 <== NOT EXECUTED
429d0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
429d4: 4eb9 0005 4c66 jsr 54c66 <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 e884 lea 4e884 <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 c30a pea 5c30a <IMFS_ops+0x6a> <== NOT EXECUTED
42a08: 2079 0005 d7c4 moveal 5d7c4 <_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 c79a pea 5c79a <rtems_status_assoc+0x19e> <== NOT EXECUTED
42a20: 2079 0005 d7c4 moveal 5d7c4 <_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 d7c4 moveal 5d7c4 <_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 d7c4 moveal 5d7c4 <_impure_ptr>,%a0 <== NOT EXECUTED
42a66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a68: 4879 0005 c2ef pea 5c2ef <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 d85c jsr 4d85c <__errno> <== NOT EXECUTED
42a88: 47f9 0004 dfee lea 4dfee <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 d7c4 moveal 5d7c4 <_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 4c66 jsr 54c66 <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 d7c4 moveal 5d7c4 <_impure_ptr>,%a0 <== NOT EXECUTED
42ac2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42ac4: 4879 0005 c2fd pea 5c2fd <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 c79a pea 5c79a <rtems_status_assoc+0x19e> <== NOT EXECUTED
42adc: 2079 0005 d7c4 moveal 5d7c4 <_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 d7c4 moveal 5d7c4 <_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
470ea: 4e5e unlk %fp
/*
* 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 0005 f8e6 pea 5f8e6 <_Workspace_Area>
470fc: 4eb9 0004 8778 jsr 48778 <_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 0005 f8e6 pea 5f8e6 <_Workspace_Area> <== NOT EXECUTED
47124: 4eb9 0004 87b8 jsr 487b8 <_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 0005 f8e6 pea 5f8e6 <_Workspace_Area>
470be: 4eb9 0004 87f0 jsr 487f0 <_Protected_heap_Get_information>
470c4: 508f addql #8,%sp
}
470c6: 4e5e unlk %fp
470c8: 4e75 rts
470ca: 4e5e unlk %fp
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 0004 fdcc lea 4fdcc <__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 0005 f2a0 moveal 5f2a0 <__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 0005 f2a4 movel 5f2a4 <_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 0004 fdcc lea 4fdcc <__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 0005 f2a4 movel 5f2a4 <_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
00045da0 <seteuid>:
int seteuid( uid_t euid )
{
_POSIX_types_Euid = euid;
return 0;
}
45da0: 4280 clrl %d0 <== NOT EXECUTED
#include <unistd.h>
#include <rtems/userenv.h>
int seteuid( uid_t euid )
{
45da2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Euid = euid;
45da6: 2079 0006 0070 moveal 60070 <rtems_current_user_env>,%a0 <== NOT EXECUTED
45dac: 316e 000a 0036 movew %fp@(10),%a0@(54) <== NOT EXECUTED
return 0;
}
45db2: 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 f220 moveal 5f220 <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 0005 ffd4 movel 5ffd4 <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 e8c2 jsr 4e8c2 <fclose> <== NOT EXECUTED
43cba: 588f addql #4,%sp <== NOT EXECUTED
group_fp = fopen("/etc/group", "r");
43cbc: 4879 0005 e8f7 pea 5e8f7 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43cc2: 4879 0005 e248 pea 5e248 <rtems_status_assoc+0x21a> <== NOT EXECUTED
43cc8: 4eb9 0004 efc0 jsr 4efc0 <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 0005 ffd4 movel %d0,5ffd4 <group_fp> <== 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 e774 jsr 4e774 <__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 00ae movel 600ae <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 e8c2 jsr 4e8c2 <fclose> <== NOT EXECUTED
43b6e: 588f addql #4,%sp <== NOT EXECUTED
passwd_fp = fopen("/etc/passwd", "r");
43b70: 4879 0005 e8f7 pea 5e8f7 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43b76: 4879 0005 e1d3 pea 5e1d3 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
43b7c: 4eb9 0004 efc0 jsr 4efc0 <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 00ae movel %d0,600ae <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 e774 jsr 4e774 <__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 f220 moveal 5f220 <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
...
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
00043d8c <sleep>:
#if !defined(RTEMS_POSIX_API)
unsigned int sleep(
unsigned int seconds
)
{
43d8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code status;
rtems_interval ticks_per_second;
ticks_per_second = rtems_clock_get_ticks_per_second() * seconds;
43d90: 4eb9 0004 5f10 jsr 45f10 <rtems_clock_get_ticks_per_second><== NOT EXECUTED
status = rtems_task_wake_after( ticks_per_second );
43d96: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
43d9a: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
43d9e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
43da0: 4eb9 0004 6dac jsr 46dac <rtems_task_wake_after> <== NOT EXECUTED
* Returns the "unslept" amount of time. In RTEMS signals are not
* interruptable, so tasks really sleep all of the requested time.
*/
return 0;
}
43da6: 4280 clrl %d0 <== NOT EXECUTED
43da8: 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 cdf8 jsr 4cdf8 <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 c3ec jsr 4c3ec <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 bad0 jsr 4bad0 <__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 2764 jsr 52764 <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
...
00045eb4 <symlink>:
int symlink(
const char *actualpath,
const char *sympath
)
{
45eb4: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
45eb8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45eba: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
45ebe: 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 );
45ec0: 240e movel %fp,%d2 <== NOT EXECUTED
45ec2: 0682 ffff ffe4 addil #-28,%d2 <== NOT EXECUTED
45ec8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45eca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45ece: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45ed0: 4eb9 0004 5db8 jsr 45db8 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*loc.ops->evalformake_h)( &sympath[i], &loc, &name_start );
45ed6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45eda: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED
45ede: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45ee0: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45ee4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45ee6: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
45eea: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 )
45eec: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45ef0: 4a80 tstl %d0 <== NOT EXECUTED
45ef2: 670e beqs 45f02 <symlink+0x4e> <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45ef4: 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;
45ef8: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45efa: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED
45efe: 4e5e unlk %fp <== NOT EXECUTED
45f00: 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);
45f02: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
45f06: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45f0a: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45f0e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45f10: 2068 0038 moveal %a0@(56),%a0 <== NOT EXECUTED
45f14: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45f16: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45f18: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
45f1c: 4eb9 0004 49f0 jsr 449f0 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
45f22: 202e ffe0 movel %fp@(-32),%d0 <== NOT EXECUTED
45f26: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
45f2a: 242e ffd8 movel %fp@(-40),%d2 <== NOT EXECUTED
45f2e: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED
45f32: 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 eaa4 movel 5eaa4 <_global_impure_ptr>,%sp@- <== NOT EXECUTED
45200: 4eb9 0004 fa58 jsr 4fa58 <_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 8ee0 jsr 48ee0 <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 00f8 movel %a0@(248),%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 0d44 moveal 60d44 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4519c: 2429 00f8 movel %a1@(248),%d2 <== NOT EXECUTED
_Thread_Executing->libc_reent = this_reent;
451a0: 2340 00f8 movel %d0,%a1@(248) <== NOT EXECUTED
_fwalk (t->libc_reent, sync_wrapper);
451a4: 487a 0020 pea %pc@(451c6 <sync_wrapper>) <== NOT EXECUTED
451a8: 2f28 00f8 movel %a0@(248),%sp@- <== NOT EXECUTED
451ac: 4eb9 0004 fa58 jsr 4fa58 <_fwalk> <== NOT EXECUTED
_Thread_Executing->libc_reent = current_reent;
451b2: 2079 0006 0d44 moveal 60d44 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
451b8: 508f addql #8,%sp <== NOT EXECUTED
451ba: 2142 00f8 movel %d2,%a0@(248) <== 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 eee0 jsr 4eee0 <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
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 f0d4 jsr 4f0d4 <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 bd18 jsr 4bd18 <__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 bd18 jsr 4bd18 <__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 cc44 jsr 4cc44 <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 0004 f3c4 jsr 4f3c4 <__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 cc44 jsr 4cc44 <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 cc44 jmp 4cc44 <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
...
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 f008 jsr 4f008 <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
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 0005 f490 moveal 5f490 <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
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 2fb0 lea 52fb0 <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 1c0c jsr 51c0c <__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 1c0c jsr 51c0c <__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 00fc jsr 500fc <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 0005 fca4 moveal 5fca4 <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 12f0 movel 612f0 <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 85e4 jsr 485e4 <_Chain_Extract> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
470c0: 2f39 0006 12f0 movel 612f0 <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 ec08 jsr 4ec08 <__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 ec08 jsr 4ec08 <__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 82dc jsr 482dc <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 0be0 jsr 50be0 <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 3288 jsr 53288 <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
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 c851 lea 5c851 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 d620 moveal 5d620 <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 c850 lea 5c850 <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
...
0005b95c <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
5b95c: 4e56 fff4 linkw %fp,#-12
5b960: 202e 0008 movel %fp@(8),%d0
5b964: 222e 000c movel %fp@(12),%d1
5b968: 206e 0010 moveal %fp@(16),%a0
5b96c: 48d7 040c moveml %d2-%d3/%a2,%sp@
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5b970: b0b9 0005 d524 cmpl 5d524 <rtems_libio_number_iops>,%d0
5b976: 6468 bccs 5b9e0 <write+0x84> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
5b978: 2400 movel %d0,%d2
5b97a: ed88 lsll #6,%d0
5b97c: e78a lsll #3,%d2
5b97e: 2479 0005 ece8 moveal 5ece8 <rtems_libio_iops>,%a2
5b984: 9082 subl %d2,%d0
5b986: d5c0 addal %d0,%a2
rtems_libio_check_is_open( iop );
5b988: 202a 0014 movel %a2@(20),%d0
5b98c: 0800 0008 btst #8,%d0
5b990: 674e beqs 5b9e0 <write+0x84> <== NEVER TAKEN
rtems_libio_check_buffer( buffer );
5b992: 4a81 tstl %d1
5b994: 6762 beqs 5b9f8 <write+0x9c> <== NEVER TAKEN
rtems_libio_check_count( count );
5b996: 4a88 tstl %a0
5b998: 673a beqs 5b9d4 <write+0x78> <== NEVER TAKEN
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
5b99a: 44c0 movew %d0,%ccr
5b99c: 665a bnes 5b9f8 <write+0x9c> <== NEVER TAKEN
/*
* Now process the write() request.
*/
rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5b99e: 226a 0020 moveal %a2@(32),%a1
5b9a2: 2f08 movel %a0,%sp@-
5b9a4: 2f01 movel %d1,%sp@-
5b9a6: 2f0a movel %a2,%sp@-
5b9a8: 2069 000c moveal %a1@(12),%a0
5b9ac: 4e90 jsr %a0@
if ( rc > 0 )
5b9ae: 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 );
5b9b2: 2200 movel %d0,%d1 <== NOT EXECUTED
if ( rc > 0 )
5b9b4: 6f14 bles 5b9ca <write+0x6e> <== NOT EXECUTED
iop->offset += rc;
5b9b6: 2401 movel %d1,%d2 <== NOT EXECUTED
5b9b8: 5bc1 smi %d1 <== NOT EXECUTED
5b9ba: 49c1 extbl %d1 <== NOT EXECUTED
5b9bc: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED
5b9c0: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
5b9c4: d781 addxl %d1,%d3 <== NOT EXECUTED
5b9c6: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
return rc;
}
5b9ca: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5b9d0: 4e5e unlk %fp <== NOT EXECUTED
5b9d2: 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 );
5b9d4: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5b9d6: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5b9dc: 4e5e unlk %fp <== NOT EXECUTED
5b9de: 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 );
5b9e0: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
5b9e6: 7409 moveq #9,%d2 <== NOT EXECUTED
5b9e8: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b9ea: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b9ec: 2082 movel %d2,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5b9ee: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5b9f4: 4e5e unlk %fp <== NOT EXECUTED
5b9f6: 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 );
5b9f8: 4eb9 0004 d85c jsr 4d85c <__errno> <== NOT EXECUTED
5b9fe: 7216 moveq #22,%d1 <== NOT EXECUTED
5ba00: 2040 moveal %d0,%a0 <== NOT EXECUTED
5ba02: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5ba04: 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 );
5ba0a: 2081 movel %d1,%a0@ <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5ba0c: 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 e2f4 cmpl 5e2f4 <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 0005 fab8 moveal 5fab8 <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 e8e8 jsr 4e8e8 <__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 e8e8 jsr 4e8e8 <__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