RTEMS 4.11Annotated Report
Sun Jan 9 16:57:34 2011
00042ac4 <CPU_usage_Per_thread_handler>:
#include <rtems/cpuuse.h>
static void CPU_usage_Per_thread_handler(
Thread_Control *the_thread
)
{
42ac4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42ac8: 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
}
42acc: 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 );
42ace: 42a8 0082 clrl %a0@(130) <== NOT EXECUTED
42ad2: 42a8 0086 clrl %a0@(134) <== NOT EXECUTED
#else
the_thread->cpu_time_used = 0;
#endif
}
00041d60 <Dump_Line>:
static inline void Dump_Line(
const unsigned char *buffer,
int length
)
{
41d60: 4e56 ff70 linkw %fp,#-144 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
41d64: 4200 clrb %d0 <== NOT EXECUTED
static inline void Dump_Line(
const unsigned char *buffer,
int length
)
{
41d66: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
41d6a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
41d6e: 260e movel %fp,%d3 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
41d70: 264a moveal %a2,%a3 <== NOT EXECUTED
41d72: 4282 clrl %d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
41d74: 0683 ffff ff88 addil #-120,%d3 <== NOT EXECUTED
41d7a: 49f9 0004 d73c lea 4d73c <sprintf>,%a4 <== NOT EXECUTED
static inline void Dump_Line(
const unsigned char *buffer,
int length
)
{
41d80: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
41d84: 1d40 ff88 moveb %d0,%fp@(-120) <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
41d88: 6018 bras 41da2 <Dump_Line+0x42> <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
41d8a: 4280 clrl %d0 <== NOT EXECUTED
41d8c: 101b moveb %a3@+,%d0 <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
41d8e: 5282 addql #1,%d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
41d90: 2f00 movel %d0,%sp@- <== NOT EXECUTED
41d92: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41d94: 4879 0005 adec pea 5adec <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
41d9a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41d9c: 4e94 jsr %a4@ <== NOT EXECUTED
int i;
char line_buffer[120];
line_buffer[0] = '\0';
for( i=0 ; i<length ; i++ )
41d9e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
41da2: b882 cmpl %d2,%d4 <== NOT EXECUTED
41da4: 6ee4 bgts 41d8a <Dump_Line+0x2a> <== NOT EXECUTED
41da6: 6010 bras 41db8 <Dump_Line+0x58> <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
41da8: 4879 0005 b3a7 pea 5b3a7 <rtems_filesystem_default_pathconf+0xad><== 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++ )
41dae: 5282 addql #1,%d2 <== NOT EXECUTED
strcat( line_buffer, " " );
41db0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41db2: 4e93 jsr %a3@ <== 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++ )
41db4: 508f addql #8,%sp <== NOT EXECUTED
41db6: 600e bras 41dc6 <Dump_Line+0x66> <== NOT EXECUTED
41db8: 260e movel %fp,%d3 <== NOT EXECUTED
41dba: 0683 ffff ff88 addil #-120,%d3 <== NOT EXECUTED
41dc0: 47f9 0004 d900 lea 4d900 <strcat>,%a3 <== NOT EXECUTED
41dc6: 41f9 0004 d900 lea 4d900 <strcat>,%a0 <== NOT EXECUTED
41dcc: 700f moveq #15,%d0 <== NOT EXECUTED
41dce: b082 cmpl %d2,%d0 <== NOT EXECUTED
41dd0: 6cd6 bges 41da8 <Dump_Line+0x48> <== NOT EXECUTED
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
41dd2: 4879 0005 adf4 pea 5adf4 <IntUartPollCallbacks.6370+0x28> <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
41dd8: 4282 clrl %d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
41dda: 47f9 0004 d73c lea 4d73c <sprintf>,%a3 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
41de0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
sprintf( line_buffer, "%s%c", line_buffer,
41de2: 260e movel %fp,%d3 <== NOT EXECUTED
41de4: 0683 ffff ff88 addil #-120,%d3 <== NOT EXECUTED
sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
41dea: 4e90 jsr %a0@ <== NOT EXECUTED
for( i=0 ; i<length ; i++ )
41dec: 508f addql #8,%sp <== NOT EXECUTED
41dee: 6032 bras 41e22 <Dump_Line+0xc2> <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
41df0: 4281 clrl %d1 <== NOT EXECUTED
41df2: 121a moveb %a2@+,%d1 <== NOT EXECUTED
41df4: 2079 0005 c58c moveal 5c58c <__ctype_ptr__>,%a0 <== NOT EXECUTED
41dfa: 1030 1801 moveb %a0@(00000001,%d1:l),%d0 <== NOT EXECUTED
41dfe: 49c0 extbl %d0 <== NOT EXECUTED
41e00: 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,
41e06: 6704 beqs 41e0c <Dump_Line+0xac> <== NOT EXECUTED
41e08: 2001 movel %d1,%d0 <== NOT EXECUTED
41e0a: 6002 bras 41e0e <Dump_Line+0xae> <== NOT EXECUTED
41e0c: 702e moveq #46,%d0 <== NOT EXECUTED
41e0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
41e10: 5282 addql #1,%d2 <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
41e12: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e14: 4879 0005 adf6 pea 5adf6 <IntUartPollCallbacks.6370+0x2a> <== NOT EXECUTED
41e1a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e1c: 4e93 jsr %a3@ <== NOT EXECUTED
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
strcat( line_buffer, "|" );
for( i=0 ; i<length ; i++ )
41e1e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
41e22: b882 cmpl %d2,%d4 <== NOT EXECUTED
41e24: 6eca bgts 41df0 <Dump_Line+0x90> <== NOT EXECUTED
41e26: 6010 bras 41e38 <Dump_Line+0xd8> <== NOT EXECUTED
sprintf( line_buffer, "%s%c", line_buffer,
isprint( buffer[ i ] ) ? buffer[ i ] : '.' );
for( ; i<16 ; i++ )
strcat( line_buffer, " " );
41e28: 4879 0005 b3a9 pea 5b3a9 <rtems_filesystem_default_pathconf+0xaf><== 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++ )
41e2e: 5282 addql #1,%d2 <== NOT EXECUTED
strcat( line_buffer, " " );
41e30: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e32: 4e92 jsr %a2@ <== 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++ )
41e34: 508f addql #8,%sp <== NOT EXECUTED
41e36: 600e bras 41e46 <Dump_Line+0xe6> <== NOT EXECUTED
41e38: 260e movel %fp,%d3 <== NOT EXECUTED
41e3a: 0683 ffff ff88 addil #-120,%d3 <== NOT EXECUTED
41e40: 45f9 0004 d900 lea 4d900 <strcat>,%a2 <== NOT EXECUTED
41e46: 41f9 0004 d900 lea 4d900 <strcat>,%a0 <== NOT EXECUTED
41e4c: 700f moveq #15,%d0 <== NOT EXECUTED
41e4e: b082 cmpl %d2,%d0 <== NOT EXECUTED
41e50: 6cd6 bges 41e28 <Dump_Line+0xc8> <== NOT EXECUTED
strcat( line_buffer, " " );
strcat( line_buffer, "|\n" );
41e52: 4879 0005 adfb pea 5adfb <IntUartPollCallbacks.6370+0x2f> <== NOT EXECUTED
41e58: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e5a: 4e90 jsr %a0@ <== NOT EXECUTED
printk( line_buffer );
41e5c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e5e: 4eb9 0004 35d8 jsr 435d8 <printk> <== NOT EXECUTED
41e64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
41e68: 4cee 1c1c ff70 moveml %fp@(-144),%d2-%d4/%a2-%a4 <== NOT EXECUTED
41e6e: 4e5e unlk %fp <== NOT EXECUTED
00048c74 <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 ) {
48c74: 7206 moveq #6,%d1
#define MAXSYMLINK 5
int IMFS_Set_handlers(
rtems_filesystem_location_info_t *loc
)
{
48c76: 4e56 0000 linkw %fp,#0
48c7a: 206e 0008 moveal %fp@(8),%a0
48c7e: 2f0a movel %a2,%sp@-
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
switch( node->type ) {
48c80: 2450 moveal %a0@,%a2
)
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
48c82: 2268 0010 moveal %a0@(16),%a1
switch( node->type ) {
48c86: 202a 0048 movel %a2@(72),%d0
48c8a: 5380 subql #1,%d0
)
{
IMFS_jnode_t *node = loc->node_access;
IMFS_fs_info_t *fs_info;
fs_info = loc->mt_entry->fs_info;
48c8c: 2269 0034 moveal %a1@(52),%a1
switch( node->type ) {
48c90: b280 cmpl %d0,%d1
48c92: 6546 bcss 48cda <IMFS_Set_handlers+0x66> <== NEVER TAKEN
48c94: 303b 0a08 movew %pc@(48c9e <IMFS_Set_handlers+0x2a>,%d0:l:2),%d0
48c98: 48c0 extl %d0
48c9a: 4efb 0802 jmp %pc@(48c9e <IMFS_Set_handlers+0x2a>,%d0:l)
48c9e: 000e .short 0x000e <== NOT EXECUTED
48ca0: 0016 .short 0x0016 <== NOT EXECUTED
48ca2: 0022 .short 0x0022 <== NOT EXECUTED
48ca4: 0022 .short 0x0022 <== NOT EXECUTED
48ca6: 002e .short 0x002e <== NOT EXECUTED
48ca8: 002e .short 0x002e <== NOT EXECUTED
48caa: 0036 .short 0x0036 <== NOT EXECUTED
case IMFS_DIRECTORY:
loc->handlers = fs_info->directory_handlers;
48cac: 2169 000c 0008 movel %a1@(12),%a0@(8)
break;
48cb2: 6026 bras 48cda <IMFS_Set_handlers+0x66>
case IMFS_DEVICE:
loc->handlers = &IMFS_device_handlers;
48cb4: 203c 0005 b4f0 movel #374000,%d0
48cba: 2140 0008 movel %d0,%a0@(8)
break;
48cbe: 601a bras 48cda <IMFS_Set_handlers+0x66>
case IMFS_SYM_LINK:
case IMFS_HARD_LINK:
loc->handlers = &IMFS_link_handlers;
48cc0: 223c 0005 b560 movel #374112,%d1 <== NOT EXECUTED
48cc6: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
break;
48cca: 600e bras 48cda <IMFS_Set_handlers+0x66> <== NOT EXECUTED
case IMFS_LINEAR_FILE:
loc->handlers = fs_info->memfile_handlers;
break;
case IMFS_MEMORY_FILE:
loc->handlers = fs_info->memfile_handlers;
48ccc: 2169 0008 0008 movel %a1@(8),%a0@(8)
break;
48cd2: 6006 bras 48cda <IMFS_Set_handlers+0x66>
case IMFS_FIFO:
loc->handlers = fs_info->fifo_handlers;
48cd4: 2169 0010 0008 movel %a1@(16),%a0@(8) <== NOT EXECUTED
break;
}
return 0;
}
48cda: 245f moveal %sp@+,%a2
48cdc: 4280 clrl %d0
48cde: 4e5e unlk %fp <== NOT EXECUTED
00048aa8 <IMFS_allocate_node>:
IMFS_jnode_t *IMFS_allocate_node(
IMFS_jnode_types_t type,
const char *name,
mode_t mode
)
{
48aa8: 4e56 fff8 linkw %fp,#-8
48aac: 2f0a movel %a2,%sp@-
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
48aae: 4878 0060 pea 60 <DBL_MANT_DIG+0x2b>
48ab2: 4878 0001 pea 1 <ADD>
48ab6: 4eb9 0004 241c jsr 4241c <calloc>
if ( !node )
48abc: 508f addql #8,%sp
struct timeval tv;
/*
* Allocate an IMFS jnode
*/
node = calloc( 1, sizeof( IMFS_jnode_t ) );
48abe: 2440 moveal %d0,%a2
if ( !node )
48ac0: 4a80 tstl %d0
48ac2: 6758 beqs 48b1c <IMFS_allocate_node+0x74> <== NEVER TAKEN
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
strncpy( node->name, name, IMFS_NAME_MAX );
48ac4: 4878 0020 pea 20 <OPER2+0xc>
48ac8: 2f2e 000c movel %fp@(12),%sp@-
/*
* Fill in the basic information
*/
node->st_nlink = 1;
node->type = type;
48acc: 256e 0008 0048 movel %fp@(8),%a2@(72)
strncpy( node->name, name, IMFS_NAME_MAX );
48ad2: 486a 000c pea %a2@(12)
return NULL;
/*
* Fill in the basic information
*/
node->st_nlink = 1;
48ad6: 7001 moveq #1,%d0
48ad8: 3540 0032 movew %d0,%a2@(50)
node->type = type;
strncpy( node->name, name, IMFS_NAME_MAX );
48adc: 4eb9 0004 ddbc jsr 4ddbc <strncpy>
/*
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
48ae2: 256e 0010 002e movel %fp@(16),%a2@(46)
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
48ae8: 4eb9 0004 9858 jsr 49858 <geteuid>
48aee: 3540 0038 movew %d0,%a2@(56)
node->st_gid = getegid();
48af2: 4eb9 0004 9844 jsr 49844 <getegid>
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
48af8: 42a7 clrl %sp@-
48afa: 486e fff8 pea %fp@(-8)
* Fill in the mode and permission information for the jnode structure.
*/
node->st_mode = mode;
#if defined(RTEMS_POSIX_API)
node->st_uid = geteuid();
node->st_gid = getegid();
48afe: 3540 003a movew %d0,%a2@(58)
#endif
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
48b02: 4eb9 0004 283c jsr 4283c <gettimeofday>
node->stat_atime = (time_t) tv.tv_sec;
48b08: 202e fff8 movel %fp@(-8),%d0
node->stat_mtime = (time_t) tv.tv_sec;
node->stat_ctime = (time_t) tv.tv_sec;
return node;
48b0c: 4fef 0014 lea %sp@(20),%sp
/*
* Now set all the times.
*/
gettimeofday( &tv, 0 );
node->stat_atime = (time_t) tv.tv_sec;
48b10: 2540 003c movel %d0,%a2@(60)
node->stat_mtime = (time_t) tv.tv_sec;
48b14: 2540 0040 movel %d0,%a2@(64)
node->stat_ctime = (time_t) tv.tv_sec;
48b18: 2540 0044 movel %d0,%a2@(68)
return node;
}
48b1c: 200a movel %a2,%d0
48b1e: 246e fff4 moveal %fp@(-12),%a2
48b22: 4e5e unlk %fp <== NOT EXECUTED
000494b8 <IMFS_check_node_remove>:
void IMFS_check_node_remove( IMFS_jnode_t *jnode )
{
494b8: 4e56 0000 linkw %fp,#0
494bc: 2f0a movel %a2,%sp@-
494be: 246e 0008 moveal %fp@(8),%a2
if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
494c2: 2f0a movel %a2,%sp@-
494c4: 4eb9 0004 9a56 jsr 49a56 <rtems_libio_is_file_open>
494ca: 588f addql #4,%sp
494cc: 4a80 tstl %d0
494ce: 664e bnes 4951e <IMFS_check_node_remove+0x66> <== ALWAYS TAKEN
494d0: 4a6a 0032 tstw %a2@(50) <== NOT EXECUTED
494d4: 6648 bnes 4951e <IMFS_check_node_remove+0x66> <== NOT EXECUTED
if ( rtems_filesystem_current.node_access == jnode )
494d6: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
494dc: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED
494e0: 6604 bnes 494e6 <IMFS_check_node_remove+0x2e> <== NOT EXECUTED
rtems_filesystem_current.node_access = NULL;
494e2: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
switch ( jnode->type ) {
494e6: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
494ea: 7204 moveq #4,%d1 <== NOT EXECUTED
494ec: b280 cmpl %d0,%d1 <== NOT EXECUTED
494ee: 6712 beqs 49502 <IMFS_check_node_remove+0x4a> <== NOT EXECUTED
494f0: 123c 0005 moveb #5,%d1 <== NOT EXECUTED
494f4: b280 cmpl %d0,%d1 <== NOT EXECUTED
494f6: 6616 bnes 4950e <IMFS_check_node_remove+0x56> <== NOT EXECUTED
case IMFS_MEMORY_FILE:
IMFS_memfile_remove( jnode );
494f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
494fa: 4eb9 0004 b6a0 jsr 4b6a0 <IMFS_memfile_remove> <== NOT EXECUTED
49500: 600a bras 4950c <IMFS_check_node_remove+0x54> <== NOT EXECUTED
break;
case IMFS_SYM_LINK:
free( jnode->info.sym_link.name );
49502: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
49506: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
break;
4950c: 588f addql #4,%sp <== NOT EXECUTED
default:
break;
}
free( jnode );
4950e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
49512: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49516: 4e5e unlk %fp <== NOT EXECUTED
break;
default:
break;
}
free( jnode );
49518: 4ef9 0004 27b4 jmp 427b4 <free> <== NOT EXECUTED
}
}
4951e: 246e fffc moveal %fp@(-4),%a2
49522: 4e5e unlk %fp <== NOT EXECUTED
00048a40 <IMFS_chown>:
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
48a40: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = (IMFS_jnode_t *) pathloc->node_access;
48a44: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
48a48: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = (IMFS_jnode_t *) pathloc->node_access;
48a4c: 2450 moveal %a0@,%a2 <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
48a4e: 4284 clrl %d4 <== NOT EXECUTED
int IMFS_chown(
rtems_filesystem_location_info_t *pathloc, /* IN */
uid_t owner, /* IN */
gid_t group /* IN */
)
{
48a50: 362e 000e movew %fp@(14),%d3 <== NOT EXECUTED
48a54: 342e 0012 movew %fp@(18),%d2 <== NOT EXECUTED
/*
* Verify I am the owner of the node or the super user.
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
48a58: 4eb9 0004 9858 jsr 49858 <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
48a5e: 4281 clrl %d1 <== NOT EXECUTED
48a60: 3800 movew %d0,%d4 <== NOT EXECUTED
48a62: 322a 0038 movew %a2@(56),%d1 <== NOT EXECUTED
48a66: b284 cmpl %d4,%d1 <== NOT EXECUTED
48a68: 6714 beqs 48a7e <IMFS_chown+0x3e> <== NOT EXECUTED
48a6a: 4a40 tstw %d0 <== NOT EXECUTED
48a6c: 6710 beqs 48a7e <IMFS_chown+0x3e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
48a6e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48a74: 2040 moveal %d0,%a0 <== NOT EXECUTED
48a76: 7001 moveq #1,%d0 <== NOT EXECUTED
48a78: 2080 movel %d0,%a0@ <== NOT EXECUTED
48a7a: 70ff moveq #-1,%d0 <== NOT EXECUTED
48a7c: 601e bras 48a9c <IMFS_chown+0x5c> <== NOT EXECUTED
#endif
jnode->st_uid = owner;
48a7e: 3543 0038 movew %d3,%a2@(56) <== NOT EXECUTED
jnode->st_gid = group;
48a82: 3542 003a movew %d2,%a2@(58) <== NOT EXECUTED
IMFS_update_ctime( jnode );
48a86: 42a7 clrl %sp@- <== NOT EXECUTED
48a88: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
48a8c: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
48a92: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
48a98: 508f addql #8,%sp <== NOT EXECUTED
48a9a: 4280 clrl %d0 <== NOT EXECUTED
}
48a9c: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED
48aa2: 4e5e unlk %fp <== NOT EXECUTED
...
00048b26 <IMFS_create_node>:
IMFS_jnode_types_t type,
const char *name,
mode_t mode,
const IMFS_types_union *info
)
{
48b26: 4e56 ffec linkw %fp,#-20
48b2a: 206e 0008 moveal %fp@(8),%a0
48b2e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
48b32: 242e 000c movel %fp@(12),%d2
48b36: 246e 0018 moveal %fp@(24),%a2
IMFS_fs_info_t *fs_info;
/*
* MUST have a parent node to call this routine.
*/
if ( parent_loc == NULL )
48b3a: 4a88 tstl %a0
48b3c: 6700 00ee beqw 48c2c <IMFS_create_node+0x106>
return NULL;
parent = parent_loc->node_access;
48b40: 2850 moveal %a0@,%a4
fs_info = parent_loc->mt_entry->fs_info;
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
48b42: 7007 moveq #7,%d0
*/
if ( parent_loc == NULL )
return NULL;
parent = parent_loc->node_access;
fs_info = parent_loc->mt_entry->fs_info;
48b44: 2068 0010 moveal %a0@(16),%a0
48b48: 2668 0034 moveal %a0@(52),%a3
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
48b4c: b082 cmpl %d2,%d0
48b4e: 660e bnes 48b5e <IMFS_create_node+0x38> <== ALWAYS TAKEN
48b50: 223c 0005 b480 movel #373888,%d1 <== NOT EXECUTED
48b56: b2ab 0010 cmpl %a3@(16),%d1 <== NOT EXECUTED
48b5a: 6700 00d0 beqw 48c2c <IMFS_create_node+0x106> <== NOT EXECUTED
return NULL;
/*
* Allocate filesystem node and fill in basic information
*/
node = IMFS_allocate_node( type, name, mode & ~rtems_filesystem_umask );
48b5e: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0
48b64: 2028 002c movel %a0@(44),%d0
48b68: 4680 notl %d0
48b6a: c0ae 0014 andl %fp@(20),%d0
48b6e: 2f00 movel %d0,%sp@-
48b70: 2f2e 0010 movel %fp@(16),%sp@-
48b74: 2f02 movel %d2,%sp@-
48b76: 4eb9 0004 8aa8 jsr 48aa8 <IMFS_allocate_node>
if ( !node )
48b7c: 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 );
48b80: 2a40 moveal %d0,%a5
if ( !node )
48b82: 4a80 tstl %d0
48b84: 6700 00a8 beqw 48c2e <IMFS_create_node+0x108>
return NULL;
/*
* Set the type specific information
*/
if ( type == IMFS_DIRECTORY ) {
48b88: 7001 moveq #1,%d0
48b8a: b082 cmpl %d2,%d0
48b8c: 6616 bnes 48ba4 <IMFS_create_node+0x7e>
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 );
48b8e: 41ed 0050 lea %a5@(80),%a0
48b92: 2b48 004c movel %a0,%a5@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48b96: 41ed 004c lea %a5@(76),%a0
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48b9a: 42ad 0050 clrl %a5@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48b9e: 2b48 0054 movel %a0,%a5@(84)
48ba2: 6066 bras 48c0a <IMFS_create_node+0xe4>
rtems_chain_initialize_empty(&node->info.directory.Entries);
} else if ( type == IMFS_HARD_LINK ) {
48ba4: 7003 moveq #3,%d0
48ba6: b082 cmpl %d2,%d0
48ba8: 6706 beqs 48bb0 <IMFS_create_node+0x8a> <== NEVER TAKEN
node->info.hard_link.link_node = info->hard_link.link_node;
} else if ( type == IMFS_SYM_LINK ) {
48baa: 7204 moveq #4,%d1
48bac: b282 cmpl %d2,%d1
48bae: 6606 bnes 48bb6 <IMFS_create_node+0x90> <== ALWAYS TAKEN
node->info.sym_link.name = info->sym_link.name;
48bb0: 2b52 004c movel %a2@,%a5@(76) <== NOT EXECUTED
48bb4: 6054 bras 48c0a <IMFS_create_node+0xe4> <== NOT EXECUTED
} else if ( type == IMFS_DEVICE ) {
48bb6: 7002 moveq #2,%d0
48bb8: b082 cmpl %d2,%d0
48bba: 660c bnes 48bc8 <IMFS_create_node+0xa2>
node->info.device.major = info->device.major;
48bbc: 2b52 004c movel %a2@,%a5@(76)
node->info.device.minor = info->device.minor;
48bc0: 2b6a 0004 0050 movel %a2@(4),%a5@(80)
48bc6: 6042 bras 48c0a <IMFS_create_node+0xe4>
} else if ( type == IMFS_LINEAR_FILE ) {
48bc8: 7206 moveq #6,%d1
48bca: b282 cmpl %d2,%d1
48bcc: 6612 bnes 48be0 <IMFS_create_node+0xba> <== ALWAYS TAKEN
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
48bce: 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;
48bd2: 4280 clrl %d0 <== NOT EXECUTED
48bd4: 4281 clrl %d1 <== NOT EXECUTED
48bd6: 2b40 004c movel %d0,%a5@(76) <== NOT EXECUTED
48bda: 2b41 0050 movel %d1,%a5@(80) <== NOT EXECUTED
48bde: 602a bras 48c0a <IMFS_create_node+0xe4> <== NOT EXECUTED
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
48be0: 7205 moveq #5,%d1
48be2: b282 cmpl %d2,%d1
48be4: 661a bnes 48c00 <IMFS_create_node+0xda> <== NEVER TAKEN
node->info.file.size = 0;
node->info.file.indirect = 0;
48be6: 42ad 0054 clrl %a5@(84)
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
48bea: 4280 clrl %d0
48bec: 4281 clrl %d1
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
48bee: 42ad 0058 clrl %a5@(88)
node->info.device.minor = info->device.minor;
} else if ( type == IMFS_LINEAR_FILE ) {
node->info.linearfile.size = 0;
node->info.linearfile.direct = 0;
} else if ( type == IMFS_MEMORY_FILE ) {
node->info.file.size = 0;
48bf2: 2b40 004c movel %d0,%a5@(76)
48bf6: 2b41 0050 movel %d1,%a5@(80)
node->info.file.indirect = 0;
node->info.file.doubly_indirect = 0;
node->info.file.triply_indirect = 0;
48bfa: 42ad 005c clrl %a5@(92)
48bfe: 600a bras 48c0a <IMFS_create_node+0xe4>
} else if ( type == IMFS_FIFO ) {
48c00: 7207 moveq #7,%d1 <== NOT EXECUTED
48c02: b282 cmpl %d2,%d1 <== NOT EXECUTED
48c04: 6604 bnes 48c0a <IMFS_create_node+0xe4> <== NOT EXECUTED
node->info.fifo.pipe = NULL;
48c06: 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;
48c0a: 202b 0004 movel %a3@(4),%d0
48c0e: 5280 addql #1,%d0
}
/*
* This node MUST have a parent, so put it in that directory list.
*/
node->Parent = parent;
48c10: 2b4c 0008 movel %a4,%a5@(8)
node->st_ino = ++fs_info->ino_count;
48c14: 2740 0004 movel %d0,%a3@(4)
48c18: 2b40 0034 movel %d0,%a5@(52)
48c1c: 2f0d movel %a5,%sp@-
48c1e: 486c 004c pea %a4@(76)
48c22: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append>
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
48c28: 508f addql #8,%sp
48c2a: 6002 bras 48c2e <IMFS_create_node+0x108>
/*
* Reject creation of FIFOs if support is disabled.
*/
if ( type == IMFS_FIFO &&
fs_info->fifo_handlers == &rtems_filesystem_handlers_default )
return NULL;
48c2c: 9bcd subal %a5,%a5 <== NOT EXECUTED
node->st_ino = ++fs_info->ino_count;
rtems_chain_append( &parent->info.directory.Entries, &node->Node );
return node;
}
48c2e: 200d movel %a5,%d0
48c30: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
48c36: 4e5e unlk %fp <== NOT EXECUTED
00049474 <IMFS_create_orphan>:
#include <rtems/libio_.h>
#include "imfs.h"
void IMFS_create_orphan( IMFS_jnode_t *jnode )
{
49474: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
49478: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4947a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( jnode->Parent != NULL ) {
4947e: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
49482: 670e beqs 49492 <IMFS_create_orphan+0x1e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
49484: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49486: 4eb9 0004 5fec jsr 45fec <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract( &jnode->Node );
jnode->Parent = NULL;
4948c: 588f addql #4,%sp <== NOT EXECUTED
4948e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
}
--jnode->st_nlink;
49492: 302a 0032 movew %a2@(50),%d0 <== NOT EXECUTED
49496: 5380 subql #1,%d0 <== NOT EXECUTED
49498: 3540 0032 movew %d0,%a2@(50) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4949c: 42a7 clrl %sp@- <== NOT EXECUTED
4949e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
494a2: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
494a8: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
494ae: 508f addql #8,%sp <== NOT EXECUTED
}
494b0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
494b4: 4e5e unlk %fp <== NOT EXECUTED
00048c3a <IMFS_create_root_node>:
return node;
}
IMFS_jnode_t *IMFS_create_root_node(void)
{
48c3a: 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) );
48c3e: 4878 41ed pea 41ed <D_MAX_EXP+0x39ee>
48c42: 4879 0005 b2d0 pea 5b2d0 <rtems_filesystem_default_pathconf+0xb4>
48c48: 4878 0001 pea 1 <ADD>
48c4c: 4eb9 0004 8aa8 jsr 48aa8 <IMFS_allocate_node>
if ( !node )
48c52: 4fef 000c lea %sp@(12),%sp
48c56: 4a80 tstl %d0
48c58: 6716 beqs 48c70 <IMFS_create_root_node+0x36> <== NEVER TAKEN
Chain_Node *tail = _Chain_Tail( the_chain );
48c5a: 2240 moveal %d0,%a1
48c5c: 2040 moveal %d0,%a0
48c5e: 43e9 0050 lea %a1@(80),%a1
48c62: 2149 004c movel %a1,%a0@(76)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48c66: 5989 subql #4,%a1
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48c68: 42a8 0050 clrl %a0@(80)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48c6c: 2149 0054 movel %a1,%a0@(84)
* NOTE: Root node is always a directory.
*/
rtems_chain_initialize_empty(&node->info.directory.Entries);
return node;
}
48c70: 4e5e unlk %fp <== NOT EXECUTED
000447e8 <IMFS_dump>:
* NOTE: Assuming the "/" directory is bad.
* Not checking that the starting directory is in an IMFS is bad.
*/
void IMFS_dump( void )
{
447e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" );
447ec: 2079 0006 1f68 moveal 61f68 <_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 )
{
447f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
fprintf(stdout, "*************** Dump of Entire IMFS ***************\n" );
447f4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
447f8: 45f9 0005 0c70 lea 50c70 <fputs>,%a2 <== NOT EXECUTED
447fe: 4879 0006 0626 pea 60626 <IntUartPollCallbacks.6370+0x88> <== NOT EXECUTED
44804: 4e92 jsr %a2@ <== NOT EXECUTED
fprintf(stdout, "/\n" );
44806: 2079 0006 1f68 moveal 61f68 <_impure_ptr>,%a0 <== NOT EXECUTED
4480c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44810: 4879 0006 065b pea 6065b <IntUartPollCallbacks.6370+0xbd> <== NOT EXECUTED
44816: 4e92 jsr %a2@ <== NOT EXECUTED
IMFS_dump_directory( rtems_filesystem_root.node_access, 0 );
44818: 2079 0006 1ea0 moveal 61ea0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4481e: 42a7 clrl %sp@- <== NOT EXECUTED
44820: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED
44824: 4eb9 0004 4770 jsr 44770 <IMFS_dump_directory> <== NOT EXECUTED
fprintf(stdout, "*************** End of Dump ***************\n" );
4482a: 2079 0006 1f68 moveal 61f68 <_impure_ptr>,%a0 <== NOT EXECUTED
44830: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44834: 4879 0006 065e pea 6065e <IntUartPollCallbacks.6370+0xc0> <== NOT EXECUTED
4483a: 4e92 jsr %a2@ <== NOT EXECUTED
}
4483c: 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" );
44840: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
44844: 4e5e unlk %fp <== NOT EXECUTED
00044770 <IMFS_dump_directory>:
*/
void IMFS_dump_directory(
IMFS_jnode_t *the_directory,
int level
)
{
44770: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
44774: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
44778: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
4477c: 262e 000c movel %fp@(12),%d3 <== 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));
44780: 2a08 movel %a0,%d5 <== 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 );
44782: 2803 movel %d3,%d4 <== NOT EXECUTED
44784: 0685 0000 0050 addil #80,%d5 <== NOT EXECUTED
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
for ( i=0 ; i<=level ; i++ )
fprintf(stdout, "...." );
4478a: 4bf9 0005 0c70 lea 50c70 <fputs>,%a5 <== NOT EXECUTED
IMFS_print_jnode( the_jnode );
44790: 49f9 0004 4660 lea 44660 <IMFS_print_jnode>,%a4 <== NOT EXECUTED
if ( the_jnode->type == IMFS_DIRECTORY )
IMFS_dump_directory( the_jnode, level + 1 );
44796: 5284 addql #1,%d4 <== NOT EXECUTED
44798: 47f9 0004 4770 lea 44770 <IMFS_dump_directory>,%a3 <== NOT EXECUTED
*
*/
int IMFS_memfile_maximum_size( void )
{
return IMFS_MEMFILE_MAXIMUM_SIZE;
}
4479e: 2468 004c moveal %a0@(76),%a2 <== 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 );
447a2: 6036 bras 447da <IMFS_dump_directory+0x6a> <== 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++ )
447a4: 4282 clrl %d2 <== NOT EXECUTED
447a6: 6016 bras 447be <IMFS_dump_directory+0x4e> <== NOT EXECUTED
fprintf(stdout, "...." );
447a8: 2079 0006 1f68 moveal 61f68 <_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++ )
447ae: 5282 addql #1,%d2 <== NOT EXECUTED
fprintf(stdout, "...." );
447b0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
447b4: 4879 0006 0621 pea 60621 <IntUartPollCallbacks.6370+0x83> <== NOT EXECUTED
447ba: 4e95 jsr %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++ )
447bc: 508f addql #8,%sp <== NOT EXECUTED
447be: b682 cmpl %d2,%d3 <== NOT EXECUTED
447c0: 6ce6 bges 447a8 <IMFS_dump_directory+0x38> <== NOT EXECUTED
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
447c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
447c4: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_jnode->type == IMFS_DIRECTORY )
447c6: 588f addql #4,%sp <== NOT EXECUTED
447c8: 7001 moveq #1,%d0 <== NOT EXECUTED
447ca: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
447ce: 6608 bnes 447d8 <IMFS_dump_directory+0x68> <== NOT EXECUTED
IMFS_dump_directory( the_jnode, level + 1 );
447d0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
447d2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
447d4: 4e93 jsr %a3@ <== NOT EXECUTED
447d6: 508f addql #8,%sp <== 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 ) {
447d8: 2452 moveal %a2@,%a2 <== 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 );
447da: ba8a cmpl %a2,%d5 <== NOT EXECUTED
447dc: 66c6 bnes 447a4 <IMFS_dump_directory+0x34> <== NOT EXECUTED
fprintf(stdout, "...." );
IMFS_print_jnode( the_jnode );
if ( the_jnode->type == IMFS_DIRECTORY )
IMFS_dump_directory( the_jnode, level + 1 );
}
}
447de: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
447e4: 4e5e unlk %fp <== NOT EXECUTED
00048d9c <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 ) ) {
48d9c: 70f8 moveq #-8,%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
48d9e: 4e56 ff9c linkw %fp,#-100
48da2: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
48da6: 282e 0010 movel %fp@(16),%d4
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 ) ) {
48daa: c084 andl %d4,%d0
const char *pathname, /* IN */
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
48dac: 2a6e 0008 moveal %fp@(8),%a5
48db0: 286e 000c moveal %fp@(12),%a4
48db4: 246e 0014 moveal %fp@(20),%a2
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 ) ) {
48db8: 670e beqs 48dc8 <IMFS_eval_path+0x2c> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EIO );
48dba: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48dc0: 7c05 moveq #5,%d6 <== NOT EXECUTED
48dc2: 2040 moveal %d0,%a0 <== NOT EXECUTED
48dc4: 2086 movel %d6,%a0@ <== NOT EXECUTED
48dc6: 603e bras 48e06 <IMFS_eval_path+0x6a> <== NOT EXECUTED
* 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 );
48dc8: 2a0e movel %fp,%d5
size_t pathnamelen, /* IN */
int flags, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
int i = 0;
48dca: 4282 clrl %d2
* 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 );
48dcc: 0685 ffff ffc7 addil #-57,%d5
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
48dd2: 2e3c 0004 9354 movel #299860,%d7
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
48dd8: 2652 moveal %a2@,%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 );
48dda: 486e fffc pea %fp@(-4)
48dde: 2f05 movel %d5,%sp@-
48de0: 2f0c movel %a4,%sp@-
48de2: 4875 2800 pea %a5@(00000000,%d2:l)
48de6: 4eb9 0004 93c0 jsr 493c0 <IMFS_get_token>
pathnamelen -= len;
48dec: 2c2e fffc movel %fp@(-4),%d6
* 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 );
48df0: 2600 movel %d0,%d3
pathnamelen -= len;
i += len;
if ( !pathloc->node_access )
48df2: 4fef 0010 lea %sp@(16),%sp
48df6: 4a92 tstl %a2@
48df8: 6612 bnes 48e0c <IMFS_eval_path+0x70> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( ENOENT );
48dfa: 4eb9 0004 c94c jsr 4c94c <__errno>
48e00: 7a02 moveq #2,%d5
48e02: 2040 moveal %d0,%a0
48e04: 2085 movel %d5,%a0@
48e06: 76ff moveq #-1,%d3
48e08: 6000 017c braw 48f86 <IMFS_eval_path+0x1ea>
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
48e0c: 4a80 tstl %d0
48e0e: 671c beqs 48e2c <IMFS_eval_path+0x90>
if ( node->type == IMFS_DIRECTORY )
48e10: 7001 moveq #1,%d0
48e12: b0ab 0048 cmpl %a3@(72),%d0
48e16: 6614 bnes 48e2c <IMFS_eval_path+0x90> <== NEVER TAKEN
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
48e18: 4878 0001 pea 1 <ADD>
48e1c: 2f0a movel %a2,%sp@-
48e1e: 4eb9 0004 8ce2 jsr 48ce2 <IMFS_evaluate_permission>
48e24: 508f addql #8,%sp
48e26: 4a80 tstl %d0
48e28: 6700 014a beqw 48f74 <IMFS_eval_path+0x1d8>
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
48e2c: 2652 moveal %a2@,%a3
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
type = IMFS_get_token( &pathname[i], pathnamelen, token, &len );
pathnamelen -= len;
48e2e: 99c6 subal %d6,%a4
i += len;
48e30: d486 addl %d6,%d2
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
switch( type ) {
48e32: 7003 moveq #3,%d0
48e34: b083 cmpl %d3,%d0
48e36: 6742 beqs 48e7a <IMFS_eval_path+0xde>
48e38: 7204 moveq #4,%d1
48e3a: b283 cmpl %d3,%d1
48e3c: 6700 00aa beqw 48ee8 <IMFS_eval_path+0x14c>
48e40: 103c 0002 moveb #2,%d0
48e44: b083 cmpl %d3,%d0
48e46: 6600 00b0 bnew 48ef8 <IMFS_eval_path+0x15c>
case IMFS_UP_DIR:
/*
* Am I at the root of all filesystems? (chroot'ed?)
*/
if ( pathloc->node_access == rtems_filesystem_root.node_access )
48e4a: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
48e50: b7e8 0018 cmpal %a0@(24),%a3 <== NOT EXECUTED
48e54: 6784 beqs 48dda <IMFS_eval_path+0x3e> <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
pathloc->mt_entry->mt_fs_root.node_access) {
48e56: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
/*
* Am I at the root of this mounted filesystem?
*/
if (pathloc->node_access ==
48e5a: b7e8 001c cmpal %a0@(28),%a3 <== NOT EXECUTED
48e5e: 6614 bnes 48e74 <IMFS_eval_path+0xd8> <== 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;
48e60: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
48e64: 260e movel %fp,%d3 <== NOT EXECUTED
48e66: 4868 0008 pea %a0@(8) <== NOT EXECUTED
48e6a: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
48e70: 6000 00b2 braw 48f24 <IMFS_eval_path+0x188> <== NOT EXECUTED
pathnamelen+len,
flags,pathloc);
}
} else {
if ( !node->Parent )
48e74: 266b 0008 moveal %a3@(8),%a3 <== NOT EXECUTED
48e78: 6062 bras 48edc <IMFS_eval_path+0x140> <== NOT EXECUTED
case IMFS_NAME:
/*
* If we are at a link follow it.
*/
if ( node->type == IMFS_HARD_LINK ) {
48e7a: 202b 0048 movel %a3@(72),%d0
48e7e: 7203 moveq #3,%d1
48e80: b280 cmpl %d0,%d1
48e82: 6610 bnes 48e94 <IMFS_eval_path+0xf8> <== ALWAYS TAKEN
IMFS_evaluate_hard_link( pathloc, 0 );
48e84: 42a7 clrl %sp@- <== NOT EXECUTED
48e86: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48e88: 4eb9 0004 8d56 jsr 48d56 <IMFS_evaluate_hard_link> <== NOT EXECUTED
node = pathloc->node_access;
48e8e: 2652 moveal %a2@,%a3 <== NOT EXECUTED
48e90: 508f addql #8,%sp <== NOT EXECUTED
48e92: 601c bras 48eb0 <IMFS_eval_path+0x114> <== NOT EXECUTED
* It would be a design error if we evaluated the link and
* was broken.
*/
IMFS_assert( node );
} else if ( node->type == IMFS_SYM_LINK ) {
48e94: 7204 moveq #4,%d1
48e96: b280 cmpl %d0,%d1
48e98: 6616 bnes 48eb0 <IMFS_eval_path+0x114> <== ALWAYS TAKEN
result = IMFS_evaluate_sym_link( pathloc, 0 );
48e9a: 42a7 clrl %sp@- <== NOT EXECUTED
48e9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48e9e: 4eb9 0004 8f92 jsr 48f92 <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;
48ea4: 2652 moveal %a2@,%a3 <== NOT EXECUTED
if ( result == -1 )
48ea6: 508f addql #8,%sp <== NOT EXECUTED
48ea8: 72ff moveq #-1,%d1 <== NOT EXECUTED
48eaa: b280 cmpl %d0,%d1 <== NOT EXECUTED
48eac: 6700 00d6 beqw 48f84 <IMFS_eval_path+0x1e8> <== NOT EXECUTED
}
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
48eb0: 7001 moveq #1,%d0
48eb2: b0ab 0048 cmpl %a3@(72),%d0
48eb6: 6710 beqs 48ec8 <IMFS_eval_path+0x12c> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( ENOTDIR );
48eb8: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48ebe: 7814 moveq #20,%d4 <== NOT EXECUTED
48ec0: 2040 moveal %d0,%a0 <== NOT EXECUTED
48ec2: 2084 movel %d4,%a0@ <== NOT EXECUTED
48ec4: 6000 ff40 braw 48e06 <IMFS_eval_path+0x6a> <== 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 ) {
48ec8: 206b 0058 moveal %a3@(88),%a0
48ecc: 4a88 tstl %a0
48ece: 6644 bnes 48f14 <IMFS_eval_path+0x178> <== NEVER TAKEN
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
48ed0: 2f05 movel %d5,%sp@-
48ed2: 2047 moveal %d7,%a0
48ed4: 2f0b movel %a3,%sp@-
48ed6: 4e90 jsr %a0@
if ( !node )
48ed8: 508f addql #8,%sp
}
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
48eda: 2640 moveal %d0,%a3
if ( !node )
48edc: 4a8b tstl %a3
48ede: 6700 ff1a beqw 48dfa <IMFS_eval_path+0x5e>
/*
* Set the node access to the point we have found.
*/
pathloc->node_access = node;
48ee2: 248b movel %a3,%a2@
48ee4: 6000 fef4 braw 48dda <IMFS_eval_path+0x3e>
case IMFS_NO_MORE_PATH:
case IMFS_CURRENT_DIR:
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
48ee8: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48eee: 765b moveq #91,%d3 <== NOT EXECUTED
48ef0: 2040 moveal %d0,%a0 <== NOT EXECUTED
48ef2: 2083 movel %d3,%a0@ <== NOT EXECUTED
48ef4: 6000 ff10 braw 48e06 <IMFS_eval_path+0x6a> <== NOT EXECUTED
/*
* Evaluate all tokens until we are done or an error occurs.
*/
while( (type != IMFS_NO_MORE_PATH) && (type != IMFS_INVALID_TOKEN) ) {
48ef8: 4a83 tstl %d3
48efa: 6708 beqs 48f04 <IMFS_eval_path+0x168>
48efc: 7004 moveq #4,%d0
48efe: b083 cmpl %d3,%d0
48f00: 6600 fed8 bnew 48dda <IMFS_eval_path+0x3e>
* 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 ) {
48f04: 7201 moveq #1,%d1
48f06: b2ab 0048 cmpl %a3@(72),%d1
48f0a: 664e bnes 48f5a <IMFS_eval_path+0x1be>
if ( node->info.directory.mt_fs != NULL ) {
48f0c: 206b 0058 moveal %a3@(88),%a0
48f10: 4a88 tstl %a0
48f12: 6746 beqs 48f5a <IMFS_eval_path+0x1be> <== ALWAYS TAKEN
newloc = node->info.directory.mt_fs->mt_fs_root;
48f14: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
48f18: 260e movel %fp,%d3 <== NOT EXECUTED
48f1a: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
48f20: 4868 001c pea %a0@(28) <== NOT EXECUTED
48f24: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48f26: 47f9 0004 d1f8 lea 4d1f8 <memcpy>,%a3 <== NOT EXECUTED
48f2c: 4e93 jsr %a3@ <== NOT EXECUTED
*pathloc = newloc;
48f2e: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
48f32: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48f34: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48f36: 4e93 jsr %a3@ <== NOT EXECUTED
return (*pathloc->ops->evalpath_h)( &pathname[i-len],
48f38: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED
48f3c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48f3e: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
48f42: 9488 subl %a0,%d2 <== NOT EXECUTED
48f44: 2f04 movel %d4,%sp@- <== NOT EXECUTED
48f46: 4874 8800 pea %a4@(00000000,%a0:l) <== NOT EXECUTED
48f4a: 4875 2800 pea %a5@(00000000,%d2:l) <== NOT EXECUTED
48f4e: 2051 moveal %a1@,%a0 <== NOT EXECUTED
48f50: 4e90 jsr %a0@ <== NOT EXECUTED
48f52: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
48f56: 2600 movel %d0,%d3 <== NOT EXECUTED
48f58: 602c bras 48f86 <IMFS_eval_path+0x1ea> <== NOT EXECUTED
flags, pathloc );
} else {
result = IMFS_Set_handlers( pathloc );
}
} else {
result = IMFS_Set_handlers( pathloc );
48f5a: 2f0a movel %a2,%sp@-
48f5c: 4eb9 0004 8c74 jsr 48c74 <IMFS_Set_handlers>
48f62: 2600 movel %d0,%d3
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( pathloc, flags ) )
48f64: 2e84 movel %d4,%sp@
48f66: 2f0a movel %a2,%sp@-
48f68: 4eb9 0004 8ce2 jsr 48ce2 <IMFS_evaluate_permission>
48f6e: 508f addql #8,%sp
48f70: 4a80 tstl %d0
48f72: 6612 bnes 48f86 <IMFS_eval_path+0x1ea> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EACCES );
48f74: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48f7a: 740d moveq #13,%d2 <== NOT EXECUTED
48f7c: 2040 moveal %d0,%a0 <== NOT EXECUTED
48f7e: 2082 movel %d2,%a0@ <== NOT EXECUTED
48f80: 6000 fe84 braw 48e06 <IMFS_eval_path+0x6a> <== NOT EXECUTED
48f84: 2600 movel %d0,%d3 <== NOT EXECUTED
return result;
}
48f86: 2003 movel %d3,%d0
48f88: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5
48f8e: 4e5e unlk %fp <== NOT EXECUTED
000490a6 <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 */
)
{
490a6: 4e56 ff9c linkw %fp,#-100
490aa: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
490ae: 246e 000c moveal %fp@(12),%a2
* Evaluate all tokens until we are done or an error occurs.
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
490b2: 2c0e movel %fp,%d6
const char *path, /* IN */
rtems_filesystem_location_info_t *pathloc, /* IN/OUT */
const char **name /* OUT */
)
{
int i = 0;
490b4: 4282 clrl %d2
* Evaluate all tokens until we are done or an error occurs.
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
490b6: 0686 ffff ffc7 addil #-57,%d6
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
490bc: 2a3c 0004 900e movel #299022,%d5
int IMFS_evaluate_for_make(
const char *path, /* IN */
rtems_filesystem_location_info_t *pathloc, /* IN/OUT */
const char **name /* OUT */
)
{
490c2: 286e 0008 moveal %fp@(8),%a4
/*
* This was filled in by the caller and is valid in the
* mount table.
*/
node = pathloc->node_access;
490c6: 2652 moveal %a2@,%a3
/*
* Get the path length.
*/
pathlen = strlen( path );
490c8: 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 */
)
{
490ca: 2a6e 0010 moveal %fp@(16),%a5
node = pathloc->node_access;
/*
* Get the path length.
*/
pathlen = strlen( path );
490ce: 4eb9 0004 dda4 jsr 4dda4 <strlen>
490d4: 588f addql #4,%sp
490d6: 2800 movel %d0,%d4
* Evaluate all tokens until we are done or an error occurs.
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
490d8: 486e fffc pea %fp@(-4)
490dc: 2f06 movel %d6,%sp@-
490de: 2f04 movel %d4,%sp@-
490e0: 4874 2800 pea %a4@(00000000,%d2:l)
490e4: 4eb9 0004 93c0 jsr 493c0 <IMFS_get_token>
pathlen -= len;
490ea: 2e2e fffc movel %fp@(-4),%d7
* Evaluate all tokens until we are done or an error occurs.
*/
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
490ee: 2600 movel %d0,%d3
pathlen -= len;
490f0: 9887 subl %d7,%d4
i += len;
if ( !pathloc->node_access )
490f2: 4fef 0010 lea %sp@(16),%sp
490f6: 4a92 tstl %a2@
490f8: 6700 0154 beqw 4924e <IMFS_evaluate_for_make+0x1a8>
/*
* I cannot move out of this directory without execute permission.
*/
if ( type != IMFS_NO_MORE_PATH )
490fc: 4a80 tstl %d0
490fe: 671c beqs 4911c <IMFS_evaluate_for_make+0x76>
if ( node->type == IMFS_DIRECTORY )
49100: 7001 moveq #1,%d0
49102: b0ab 0048 cmpl %a3@(72),%d0
49106: 6614 bnes 4911c <IMFS_evaluate_for_make+0x76> <== NEVER TAKEN
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
49108: 4878 0001 pea 1 <ADD>
4910c: 2f0a movel %a2,%sp@-
4910e: 4eb9 0004 8ce2 jsr 48ce2 <IMFS_evaluate_permission>
49114: 508f addql #8,%sp
49116: 4a80 tstl %d0
49118: 6700 017c beqw 49296 <IMFS_evaluate_for_make+0x1f0>
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
4911c: 2652 moveal %a2@,%a3
while( !done ) {
type = IMFS_get_token( &path[i], pathlen, token, &len );
pathlen -= len;
i += len;
4911e: d487 addl %d7,%d2
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_SEARCH ) )
rtems_set_errno_and_return_minus_one( EACCES );
node = pathloc->node_access;
switch( type ) {
49120: 7002 moveq #2,%d0
49122: b083 cmpl %d3,%d0
49124: 671a beqs 49140 <IMFS_evaluate_for_make+0x9a> <== NEVER TAKEN
49126: 6508 bcss 49130 <IMFS_evaluate_for_make+0x8a>
49128: 4a83 tstl %d3
4912a: 6700 00e4 beqw 49210 <IMFS_evaluate_for_make+0x16a>
4912e: 60a8 bras 490d8 <IMFS_evaluate_for_make+0x32>
49130: 7203 moveq #3,%d1
49132: b283 cmpl %d3,%d1
49134: 6740 beqs 49176 <IMFS_evaluate_for_make+0xd0> <== ALWAYS TAKEN
49136: 7004 moveq #4,%d0 <== NOT EXECUTED
49138: b083 cmpl %d3,%d0 <== NOT EXECUTED
4913a: 669c bnes 490d8 <IMFS_evaluate_for_make+0x32> <== NOT EXECUTED
4913c: 6000 00e2 braw 49220 <IMFS_evaluate_for_make+0x17a> <== NOT EXECUTED
case IMFS_UP_DIR:
/*
* Am I at the root of all filesystems? (chroot'ed?)
*/
if ( pathloc->node_access == rtems_filesystem_root.node_access )
49140: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
49146: b7e8 0018 cmpal %a0@(24),%a3 <== NOT EXECUTED
4914a: 678c beqs 490d8 <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){
4914c: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
49150: b7e8 001c cmpal %a0@(28),%a3 <== NOT EXECUTED
49154: 6612 bnes 49168 <IMFS_evaluate_for_make+0xc2> <== NOT EXECUTED
if ( pathloc->node_access == rtems_filesystem_root.node_access ) {
break;
} else {
newloc = pathloc->mt_entry->mt_point_node;
49156: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
4915a: 260e movel %fp,%d3 <== NOT EXECUTED
4915c: 4868 0008 pea %a0@(8) <== NOT EXECUTED
49160: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
49166: 605c bras 491c4 <IMFS_evaluate_for_make+0x11e> <== NOT EXECUTED
*pathloc = newloc;
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
}
} else {
if ( !node->Parent )
49168: 266b 0008 moveal %a3@(8),%a3 <== NOT EXECUTED
4916c: 4a8b tstl %a3 <== NOT EXECUTED
4916e: 6600 009a bnew 4920a <IMFS_evaluate_for_make+0x164> <== NOT EXECUTED
49172: 6000 00da braw 4924e <IMFS_evaluate_for_make+0x1a8> <== NOT EXECUTED
pathloc->node_access = node;
break;
case IMFS_NAME:
if ( node->type == IMFS_HARD_LINK ) {
49176: 202b 0048 movel %a3@(72),%d0
4917a: 7203 moveq #3,%d1
4917c: b280 cmpl %d0,%d1
4917e: 6706 beqs 49186 <IMFS_evaluate_for_make+0xe0> <== NEVER TAKEN
result = IMFS_evaluate_link( pathloc, 0 );
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
49180: 7204 moveq #4,%d1
49182: b280 cmpl %d0,%d1
49184: 6614 bnes 4919a <IMFS_evaluate_for_make+0xf4> <== ALWAYS TAKEN
result = IMFS_evaluate_link( pathloc, 0 );
49186: 42a7 clrl %sp@- <== NOT EXECUTED
49188: 2045 moveal %d5,%a0 <== NOT EXECUTED
4918a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4918c: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result == -1 )
4918e: 508f addql #8,%sp <== NOT EXECUTED
if ( result == -1 )
return -1;
} else if ( node->type == IMFS_SYM_LINK ) {
result = IMFS_evaluate_link( pathloc, 0 );
49190: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( result == -1 )
49192: 70ff moveq #-1,%d0 <== NOT EXECUTED
49194: b083 cmpl %d3,%d0 <== NOT EXECUTED
49196: 6700 010c beqw 492a4 <IMFS_evaluate_for_make+0x1fe> <== NOT EXECUTED
return -1;
}
node = pathloc->node_access;
4919a: 2052 moveal %a2@,%a0
if ( !node )
4919c: 4a88 tstl %a0
4919e: 6700 00d6 beqw 49276 <IMFS_evaluate_for_make+0x1d0>
/*
* Only a directory can be decended into.
*/
if ( node->type != IMFS_DIRECTORY )
491a2: 7001 moveq #1,%d0
491a4: b0a8 0048 cmpl %a0@(72),%d0
491a8: 6600 00cc bnew 49276 <IMFS_evaluate_for_make+0x1d0>
/*
* 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 ) {
491ac: 2268 0058 moveal %a0@(88),%a1
491b0: 4a89 tstl %a1
491b2: 6744 beqs 491f8 <IMFS_evaluate_for_make+0x152> <== ALWAYS TAKEN
newloc = node->info.directory.mt_fs->mt_fs_root;
491b4: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
491b8: 260e movel %fp,%d3 <== NOT EXECUTED
491ba: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
491c0: 4869 001c pea %a1@(28) <== NOT EXECUTED
491c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
491c6: 47f9 0004 d1f8 lea 4d1f8 <memcpy>,%a3 <== NOT EXECUTED
491cc: 4e93 jsr %a3@ <== NOT EXECUTED
*pathloc = newloc;
491ce: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
491d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
491d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
491d6: 4e93 jsr %a3@ <== NOT EXECUTED
return (*pathloc->ops->evalformake_h)( &path[i-len], pathloc, name );
491d8: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED
491dc: 94ae fffc subl %fp@(-4),%d2 <== NOT EXECUTED
491e0: 2f0d movel %a5,%sp@- <== NOT EXECUTED
491e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
491e4: 4874 2800 pea %a4@(00000000,%d2:l) <== NOT EXECUTED
491e8: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
491ec: 4e90 jsr %a0@ <== NOT EXECUTED
491ee: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
491f2: 2600 movel %d0,%d3 <== NOT EXECUTED
491f4: 6000 00ae braw 492a4 <IMFS_evaluate_for_make+0x1fe> <== NOT EXECUTED
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
491f8: 2f06 movel %d6,%sp@-
491fa: 2f08 movel %a0,%sp@-
491fc: 4eb9 0004 9354 jsr 49354 <IMFS_find_match_in_dir>
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
49202: 508f addql #8,%sp
/*
* Otherwise find the token name in the present location.
*/
node = IMFS_find_match_in_dir( node, token );
49204: 2640 moveal %d0,%a3
/*
* If there is no node we have found the name of the node we
* wish to create.
*/
if ( ! node )
49206: 4a80 tstl %d0
49208: 6724 beqs 4922e <IMFS_evaluate_for_make+0x188>
done = true;
else
pathloc->node_access = node;
4920a: 248b movel %a3,%a2@
4920c: 6000 feca braw 490d8 <IMFS_evaluate_for_make+0x32>
break;
case IMFS_NO_MORE_PATH:
rtems_set_errno_and_return_minus_one( EEXIST );
49210: 4eb9 0004 c94c jsr 4c94c <__errno>
49216: 7c11 moveq #17,%d6
49218: 2040 moveal %d0,%a0
4921a: 2086 movel %d6,%a0@
4921c: 6000 0084 braw 492a2 <IMFS_evaluate_for_make+0x1fc>
break;
case IMFS_INVALID_TOKEN:
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
49220: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49226: 7a5b moveq #91,%d5 <== NOT EXECUTED
49228: 2040 moveal %d0,%a0 <== NOT EXECUTED
4922a: 2085 movel %d5,%a0@ <== NOT EXECUTED
4922c: 6074 bras 492a2 <IMFS_evaluate_for_make+0x1fc> <== NOT EXECUTED
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4922e: 2002 movel %d2,%d0
49230: 90ae fffc subl %fp@(-4),%d0
* 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 ] ) )
49234: 47f9 0004 34c8 lea 434c8 <rtems_filesystem_is_separator>,%a3
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4923a: d08c addl %a4,%d0
* 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(
4923c: d9c2 addal %d2,%a4
case IMFS_CURRENT_DIR:
break;
}
}
*name = &path[ i - len ];
4923e: 2a80 movel %d0,%a5@
/*
* 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++) {
49240: 601a bras 4925c <IMFS_evaluate_for_make+0x1b6>
if ( !IMFS_is_separator( path[ i ] ) )
49242: 49c0 extbl %d0 <== NOT EXECUTED
49244: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49246: 4e93 jsr %a3@ <== NOT EXECUTED
49248: 588f addql #4,%sp <== NOT EXECUTED
4924a: 4a80 tstl %d0 <== NOT EXECUTED
4924c: 660e bnes 4925c <IMFS_evaluate_for_make+0x1b6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOENT );
4924e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49254: 7802 moveq #2,%d4 <== NOT EXECUTED
49256: 2040 moveal %d0,%a0 <== NOT EXECUTED
49258: 2084 movel %d4,%a0@ <== NOT EXECUTED
4925a: 6046 bras 492a2 <IMFS_evaluate_for_make+0x1fc> <== 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++) {
4925c: 101c moveb %a4@+,%d0
4925e: 66e2 bnes 49242 <IMFS_evaluate_for_make+0x19c> <== NEVER TAKEN
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
49260: 2f0a movel %a2,%sp@-
49262: 4eb9 0004 8c74 jsr 48c74 <IMFS_Set_handlers>
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
49268: 2052 moveal %a2@,%a0
/*
* Verify we can execute and write to this directory.
*/
result = IMFS_Set_handlers( pathloc );
4926a: 2600 movel %d0,%d3
/*
* The returned node must be a directory
*/
node = pathloc->node_access;
if ( node->type != IMFS_DIRECTORY )
4926c: 588f addql #4,%sp
4926e: 7001 moveq #1,%d0
49270: b0a8 0048 cmpl %a0@(72),%d0
49274: 670e beqs 49284 <IMFS_evaluate_for_make+0x1de> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( ENOTDIR );
49276: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4927c: 7614 moveq #20,%d3 <== NOT EXECUTED
4927e: 2040 moveal %d0,%a0 <== NOT EXECUTED
49280: 2083 movel %d3,%a0@ <== NOT EXECUTED
49282: 601e bras 492a2 <IMFS_evaluate_for_make+0x1fc> <== NOT EXECUTED
/*
* We must have Write and execute permission on the returned node.
*/
if ( !IMFS_evaluate_permission( pathloc, RTEMS_LIBIO_PERMS_WX ) )
49284: 4878 0003 pea 3 <DIVIDE>
49288: 2f0a movel %a2,%sp@-
4928a: 4eb9 0004 8ce2 jsr 48ce2 <IMFS_evaluate_permission>
49290: 508f addql #8,%sp
49292: 4a80 tstl %d0
49294: 660e bnes 492a4 <IMFS_evaluate_for_make+0x1fe> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EACCES );
49296: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4929c: 740d moveq #13,%d2 <== NOT EXECUTED
4929e: 2040 moveal %d0,%a0 <== NOT EXECUTED
492a0: 2082 movel %d2,%a0@ <== NOT EXECUTED
492a2: 76ff moveq #-1,%d3
return result;
}
492a4: 2003 movel %d3,%d0
492a6: 4cee 3cfc ff9c moveml %fp@(-100),%d2-%d7/%a2-%a5
492ac: 4e5e unlk %fp <== NOT EXECUTED
00048d56 <IMFS_evaluate_hard_link>:
int IMFS_evaluate_hard_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
48d56: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48d5a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48d5c: 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;
48d60: 2052 moveal %a2@,%a0 <== NOT EXECUTED
48d62: 24a8 004c movel %a0@(76),%a2@ <== NOT EXECUTED
IMFS_Set_handlers( node );
48d66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48d68: 4eb9 0004 8c74 jsr 48c74 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
48d6e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
48d72: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48d74: 4eb9 0004 8ce2 jsr 48ce2 <IMFS_evaluate_permission> <== NOT EXECUTED
48d7a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48d7e: 4a80 tstl %d0 <== NOT EXECUTED
48d80: 6610 bnes 48d92 <IMFS_evaluate_hard_link+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
48d82: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48d88: 720d moveq #13,%d1 <== NOT EXECUTED
48d8a: 2040 moveal %d0,%a0 <== NOT EXECUTED
48d8c: 70ff moveq #-1,%d0 <== NOT EXECUTED
48d8e: 2081 movel %d1,%a0@ <== NOT EXECUTED
48d90: 6002 bras 48d94 <IMFS_evaluate_hard_link+0x3e> <== NOT EXECUTED
return result;
48d92: 4280 clrl %d0 <== NOT EXECUTED
}
48d94: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d98: 4e5e unlk %fp <== NOT EXECUTED
0004900e <IMFS_evaluate_link>:
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
4900e: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
49012: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
49016: 246e 0008 moveal %fp@(8),%a2 <== 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 );
4901a: 4bf9 0004 8f92 lea 48f92 <IMFS_evaluate_sym_link>,%a5 <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
result = IMFS_evaluate_hard_link( node, flags );
49020: 49f9 0004 8d56 lea 48d56 <IMFS_evaluate_hard_link>,%a4 <== NOT EXECUTED
*/
int IMFS_evaluate_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
49026: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
4902a: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
49030: 7205 moveq #5,%d1 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
49032: 3028 0030 movew %a0@(48),%d0 <== NOT EXECUTED
{
IMFS_jnode_t *jnode;
int result = 0;
do {
jnode = node->node_access;
49036: 2652 moveal %a2@,%a3 <== NOT EXECUTED
/*
* Increment and check the link counter.
*/
rtems_filesystem_link_counts ++;
49038: 5280 addql #1,%d0 <== NOT EXECUTED
4903a: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED
if ( rtems_filesystem_link_counts > MAXSYMLINK ) {
4903e: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
49044: b280 cmpl %d0,%d1 <== NOT EXECUTED
49046: 6416 bccs 4905e <IMFS_evaluate_link+0x50> <== NOT EXECUTED
rtems_filesystem_link_counts = 0;
49048: 4240 clrw %d0 <== NOT EXECUTED
4904a: 3140 0030 movew %d0,%a0@(48) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ELOOP );
4904e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49054: 725c moveq #92,%d1 <== NOT EXECUTED
49056: 2040 moveal %d0,%a0 <== NOT EXECUTED
49058: 70ff moveq #-1,%d0 <== NOT EXECUTED
4905a: 2081 movel %d1,%a0@ <== NOT EXECUTED
4905c: 603e bras 4909c <IMFS_evaluate_link+0x8e> <== NOT EXECUTED
/*
* Follow the Link node.
*/
if ( jnode->type == IMFS_HARD_LINK )
4905e: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED
49062: 7203 moveq #3,%d1 <== NOT EXECUTED
49064: b280 cmpl %d0,%d1 <== NOT EXECUTED
49066: 6608 bnes 49070 <IMFS_evaluate_link+0x62> <== NOT EXECUTED
result = IMFS_evaluate_hard_link( node, flags );
49068: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4906a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4906c: 4e94 jsr %a4@ <== NOT EXECUTED
4906e: 600c bras 4907c <IMFS_evaluate_link+0x6e> <== NOT EXECUTED
else if (jnode->type == IMFS_SYM_LINK )
49070: 7204 moveq #4,%d1 <== NOT EXECUTED
49072: b280 cmpl %d0,%d1 <== NOT EXECUTED
49074: 660c bnes 49082 <IMFS_evaluate_link+0x74> <== NOT EXECUTED
result = IMFS_evaluate_sym_link( node, flags );
49076: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49078: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4907a: 4e95 jsr %a5@ <== NOT EXECUTED
4907c: 508f addql #8,%sp <== NOT EXECUTED
} while ( ( result == 0 ) && ( ( jnode->type == IMFS_SYM_LINK ) ||
( jnode->type == IMFS_HARD_LINK ) ) );
4907e: 4a80 tstl %d0 <== NOT EXECUTED
49080: 660e bnes 49090 <IMFS_evaluate_link+0x82> <== 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 ) ||
49082: 202b 0048 movel %a3@(72),%d0 <== NOT EXECUTED
49086: 7201 moveq #1,%d1 <== NOT EXECUTED
49088: 5780 subql #3,%d0 <== NOT EXECUTED
4908a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4908c: 649c bccs 4902a <IMFS_evaluate_link+0x1c> <== NOT EXECUTED
4908e: 4280 clrl %d0 <== NOT EXECUTED
/*
* Clear link counter.
*/
rtems_filesystem_link_counts = 0;
49090: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
49096: 4241 clrw %d1 <== NOT EXECUTED
49098: 3141 0030 movew %d1,%a0@(48) <== NOT EXECUTED
return result;
}
4909c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
490a2: 4e5e unlk %fp <== NOT EXECUTED
00048ce2 <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 ) )
48ce2: 70f8 moveq #-8,%d0
*/
int IMFS_evaluate_permission(
rtems_filesystem_location_info_t *node,
int flags
)
{
48ce4: 4e56 fff4 linkw %fp,#-12
48ce8: 48d7 040c moveml %d2-%d3/%a2,%sp@
48cec: 242e 000c movel %fp@(12),%d2
uid_t st_uid;
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
48cf0: c082 andl %d2,%d0
48cf2: 6710 beqs 48d04 <IMFS_evaluate_permission+0x22> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EPERM );
48cf4: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48cfa: 2040 moveal %d0,%a0 <== NOT EXECUTED
48cfc: 7001 moveq #1,%d0 <== NOT EXECUTED
48cfe: 2080 movel %d0,%a0@ <== NOT EXECUTED
48d00: 70ff moveq #-1,%d0 <== NOT EXECUTED
48d02: 6048 bras 48d4c <IMFS_evaluate_permission+0x6a> <== NOT EXECUTED
jnode = node->node_access;
48d04: 206e 0008 moveal %fp@(8),%a0
48d08: 2450 moveal %a0@,%a2
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
48d0a: 4eb9 0004 9858 jsr 49858 <geteuid>
48d10: 3600 movew %d0,%d3
st_gid = getegid();
48d12: 4eb9 0004 9844 jsr 49844 <getegid>
* Check if I am owner or a group member or someone else.
*/
flags_to_test = flags;
if ( st_uid == jnode->st_uid )
48d18: 4281 clrl %d1
48d1a: 0283 0000 ffff andil #65535,%d3
48d20: 322a 0038 movew %a2@(56),%d1
48d24: b283 cmpl %d3,%d1
48d26: 6604 bnes 48d2c <IMFS_evaluate_permission+0x4a> <== NEVER TAKEN
flags_to_test <<= 6;
48d28: ed8a lsll #6,%d2
48d2a: 6012 bras 48d3e <IMFS_evaluate_permission+0x5c>
else if ( st_gid == jnode->st_gid )
48d2c: 4281 clrl %d1 <== NOT EXECUTED
48d2e: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
48d34: 322a 003a movew %a2@(58),%d1 <== NOT EXECUTED
48d38: b280 cmpl %d0,%d1 <== NOT EXECUTED
48d3a: 6602 bnes 48d3e <IMFS_evaluate_permission+0x5c> <== NOT EXECUTED
flags_to_test <<= 3;
48d3c: e78a lsll #3,%d2 <== NOT EXECUTED
/*
* If all of the flags are set we have permission
* to do this.
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
48d3e: 2002 movel %d2,%d0
48d40: c0aa 002e andl %a2@(46),%d0
gid_t st_gid;
IMFS_jnode_t *jnode;
int flags_to_test;
if ( !rtems_libio_is_valid_perms( flags ) )
rtems_set_errno_and_return_minus_one( EPERM );
48d44: b480 cmpl %d0,%d2
48d46: 57c0 seq %d0
48d48: 49c0 extbl %d0
48d4a: 4480 negl %d0
*/
if ( ( flags_to_test & jnode->st_mode) == flags_to_test )
return 1;
return 0;
}
48d4c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
48d52: 4e5e unlk %fp <== NOT EXECUTED
00048f92 <IMFS_evaluate_sym_link>:
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
48f92: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
48f96: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
48f9a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *jnode = node->node_access;
48f9e: 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;
48fa0: 24ab 0008 movel %a3@(8),%a2@ <== NOT EXECUTED
int IMFS_evaluate_sym_link(
rtems_filesystem_location_info_t *node, /* IN/OUT */
int flags /* IN */
)
{
48fa4: 262e 000c movel %fp@(12),%d3 <== 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(
48fa8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48faa: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48fae: 2f2b 004c movel %a3@(76),%sp@- <== NOT EXECUTED
48fb2: 4eb9 0004 9ccc jsr 49ccc <rtems_filesystem_get_sym_start_loc><== NOT EXECUTED
);
/*
* Use eval path to evaluate the path of the symbolic link.
*/
result = IMFS_eval_path(
48fb8: 242b 004c movel %a3@(76),%d2 <== NOT EXECUTED
48fbc: d4ae fffc addl %fp@(-4),%d2 <== NOT EXECUTED
48fc0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48fc2: 4eb9 0004 dda4 jsr 4dda4 <strlen> <== NOT EXECUTED
48fc8: 2e8a movel %a2,%sp@ <== NOT EXECUTED
48fca: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48fcc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48fce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48fd0: 4eb9 0004 8d9c jsr 48d9c <IMFS_eval_path> <== NOT EXECUTED
48fd6: 2400 movel %d0,%d2 <== NOT EXECUTED
strlen( &jnode->info.sym_link.name[i] ),
flags,
node
);
IMFS_Set_handlers( node );
48fd8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48fda: 4eb9 0004 8c74 jsr 48c74 <IMFS_Set_handlers> <== NOT EXECUTED
/*
* Verify we have the correct permissions for this node.
*/
if ( !IMFS_evaluate_permission( node, flags ) )
48fe0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
48fe4: 2e83 movel %d3,%sp@ <== NOT EXECUTED
48fe6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48fe8: 4eb9 0004 8ce2 jsr 48ce2 <IMFS_evaluate_permission> <== NOT EXECUTED
48fee: 508f addql #8,%sp <== NOT EXECUTED
48ff0: 4a80 tstl %d0 <== NOT EXECUTED
48ff2: 660e bnes 49002 <IMFS_evaluate_sym_link+0x70> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
48ff4: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
48ffa: 74ff moveq #-1,%d2 <== NOT EXECUTED
48ffc: 2040 moveal %d0,%a0 <== NOT EXECUTED
48ffe: 700d moveq #13,%d0 <== NOT EXECUTED
49000: 2080 movel %d0,%a0@ <== NOT EXECUTED
return result;
}
49002: 2002 movel %d2,%d0 <== NOT EXECUTED
49004: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4900a: 4e5e unlk %fp <== NOT EXECUTED
0004c0bc <IMFS_fchmod>:
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4c0bc: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = loc->node_access;
4c0c0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4c0c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode;
#if defined(RTEMS_POSIX_API)
uid_t st_uid;
#endif
jnode = loc->node_access;
4c0c6: 2450 moveal %a0@,%a2 <== NOT EXECUTED
int IMFS_fchmod(
rtems_filesystem_location_info_t *loc,
mode_t mode
)
{
4c0c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* Verify I am the owner of the node or the super user.
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
4c0ca: 4282 clrl %d2 <== NOT EXECUTED
/*
* Verify I am the owner of the node or the super user.
*/
#if defined(RTEMS_POSIX_API)
st_uid = geteuid();
4c0cc: 4eb9 0004 9858 jsr 49858 <geteuid> <== NOT EXECUTED
if ( ( st_uid != jnode->st_uid ) && ( st_uid != 0 ) )
4c0d2: 4281 clrl %d1 <== NOT EXECUTED
4c0d4: 3400 movew %d0,%d2 <== NOT EXECUTED
4c0d6: 322a 0038 movew %a2@(56),%d1 <== NOT EXECUTED
4c0da: b282 cmpl %d2,%d1 <== NOT EXECUTED
4c0dc: 6714 beqs 4c0f2 <IMFS_fchmod+0x36> <== NOT EXECUTED
4c0de: 4a40 tstw %d0 <== NOT EXECUTED
4c0e0: 6710 beqs 4c0f2 <IMFS_fchmod+0x36> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
4c0e2: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4c0e8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c0ea: 7001 moveq #1,%d0 <== NOT EXECUTED
4c0ec: 2080 movel %d0,%a0@ <== NOT EXECUTED
4c0ee: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c0f0: 6030 bras 4c122 <IMFS_fchmod+0x66> <== 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);
4c0f2: 202a 002e movel %a2@(46),%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4c0f6: 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);
4c0fa: 0280 ffff f000 andil #-4096,%d0 <== NOT EXECUTED
jnode->st_mode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
4c100: 0281 0000 0fff andil #4095,%d1 <== NOT EXECUTED
4c106: 8280 orl %d0,%d1 <== NOT EXECUTED
4c108: 2541 002e movel %d1,%a2@(46) <== NOT EXECUTED
IMFS_update_ctime( jnode );
4c10c: 42a7 clrl %sp@- <== NOT EXECUTED
4c10e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c112: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
4c118: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
4c11e: 508f addql #8,%sp <== NOT EXECUTED
4c120: 4280 clrl %d0 <== NOT EXECUTED
}
4c122: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4c126: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4c12a: 4e5e unlk %fp <== NOT EXECUTED
...
0004c130 <IMFS_fdatasync>:
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
return 0;
}
4c130: 4280 clrl %d0 <== NOT EXECUTED
#include "imfs.h"
int IMFS_fdatasync(
rtems_libio_t *iop
)
{
4c132: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4c136: 4e5e unlk %fp <== NOT EXECUTED
...
0004302a <IMFS_fifo_close>:
}
int IMFS_fifo_close(
rtems_libio_t *iop
)
{
4302a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4302e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43030: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43032: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int err = 0;
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
43036: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
pipe_release(&JNODE2PIPE(jnode), iop);
4303a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4303c: 486b 004c pea %a3@(76) <== NOT EXECUTED
43040: 4eb9 0004 b2b2 jsr 4b2b2 <pipe_release> <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
43046: 203c ffff feff movel #-257,%d0 <== NOT EXECUTED
4304c: c1aa 0014 andl %d0,%a2@(20) <== NOT EXECUTED
IMFS_check_node_remove(jnode);
43050: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43052: 4eb9 0004 35c4 jsr 435c4 <IMFS_check_node_remove> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
}
43058: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4305c: 4280 clrl %d0 <== NOT EXECUTED
4305e: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
43062: 4e5e unlk %fp <== NOT EXECUTED
00042eec <IMFS_fifo_ioctl>:
int IMFS_fifo_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
42eec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42ef0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
42ef4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
42ef8: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
42efc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int err;
if (command == FIONBIO) {
42efe: 0c80 8004 667e cmpil #-2147195266,%d0 <== NOT EXECUTED
42f04: 661a bnes 42f20 <IMFS_fifo_ioctl+0x34> <== NOT EXECUTED
if (buffer == NULL)
42f06: 4a89 tstl %a1 <== NOT EXECUTED
42f08: 6734 beqs 42f3e <IMFS_fifo_ioctl+0x52> <== NOT EXECUTED
err = -EFAULT;
else {
if (*(int *)buffer)
42f0a: 4a91 tstl %a1@ <== NOT EXECUTED
42f0c: 6708 beqs 42f16 <IMFS_fifo_ioctl+0x2a> <== NOT EXECUTED
iop->flags |= LIBIO_FLAGS_NO_DELAY;
42f0e: 7001 moveq #1,%d0 <== NOT EXECUTED
42f10: 81a8 0014 orl %d0,%a0@(20) <== NOT EXECUTED
42f14: 6006 bras 42f1c <IMFS_fifo_ioctl+0x30> <== NOT EXECUTED
else
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
42f16: 70fe moveq #-2,%d0 <== NOT EXECUTED
42f18: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED
return 0;
42f1c: 4282 clrl %d2 <== NOT EXECUTED
42f1e: 602e bras 42f4e <IMFS_fifo_ioctl+0x62> <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
42f20: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42f22: 2f09 movel %a1,%sp@- <== NOT EXECUTED
42f24: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42f26: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
42f2a: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED
42f2e: 4eb9 0004 ba02 jsr 4ba02 <pipe_ioctl> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
42f34: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
return 0;
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
42f38: 2400 movel %d0,%d2 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
42f3a: 6c12 bges 42f4e <IMFS_fifo_ioctl+0x62> <== NOT EXECUTED
42f3c: 6002 bras 42f40 <IMFS_fifo_ioctl+0x54> <== NOT EXECUTED
{
int err;
if (command == FIONBIO) {
if (buffer == NULL)
err = -EFAULT;
42f3e: 74f2 moveq #-14,%d2 <== NOT EXECUTED
}
}
else
err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);
IMFS_FIFO_RETURN(err);
42f40: 4eb9 0004 e8d4 jsr 4e8d4 <__errno> <== NOT EXECUTED
42f46: 4482 negl %d2 <== NOT EXECUTED
42f48: 2040 moveal %d0,%a0 <== NOT EXECUTED
42f4a: 2082 movel %d2,%a0@ <== NOT EXECUTED
42f4c: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
42f4e: 2002 movel %d2,%d0 <== NOT EXECUTED
42f50: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42f54: 4e5e unlk %fp <== NOT EXECUTED
00042e94 <IMFS_fifo_lseek>:
rtems_off64_t IMFS_fifo_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
42e94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42e98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
42e9c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42e9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
42ea0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42ea2: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
42ea6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
42eaa: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
42eae: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
42eb2: 2f28 004c movel %a0@(76),%sp@- <== NOT EXECUTED
42eb6: 4eb9 0004 ba62 jsr 4ba62 <pipe_lseek> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
42ebc: 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);
42ec0: 2600 movel %d0,%d3 <== NOT EXECUTED
42ec2: 2400 movel %d0,%d2 <== NOT EXECUTED
42ec4: 5bc1 smi %d1 <== NOT EXECUTED
42ec6: 49c1 extbl %d1 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
42ec8: 4a81 tstl %d1 <== NOT EXECUTED
42eca: 6a10 bpls 42edc <IMFS_fifo_lseek+0x48> <== NOT EXECUTED
42ecc: 4eb9 0004 e8d4 jsr 4e8d4 <__errno> <== NOT EXECUTED
42ed2: 4483 negl %d3 <== NOT EXECUTED
42ed4: 2040 moveal %d0,%a0 <== NOT EXECUTED
42ed6: 72ff moveq #-1,%d1 <== NOT EXECUTED
42ed8: 74ff moveq #-1,%d2 <== NOT EXECUTED
42eda: 2083 movel %d3,%a0@ <== NOT EXECUTED
}
42edc: 2001 movel %d1,%d0 <== NOT EXECUTED
42ede: 2202 movel %d2,%d1 <== NOT EXECUTED
42ee0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
42ee4: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
42ee8: 4e5e unlk %fp <== NOT EXECUTED
00043066 <IMFS_fifo_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
43066: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4306a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4306e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
43070: 2f08 movel %a0,%sp@- <== NOT EXECUTED
43072: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43076: 41e8 004c lea %a0@(76),%a0 <== NOT EXECUTED
4307a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4307c: 4eb9 0004 b33a jsr 4b33a <fifo_open> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43082: 508f addql #8,%sp <== NOT EXECUTED
uint32_t mode
)
{
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = fifo_open(&JNODE2PIPE(jnode), iop);
43084: 2400 movel %d0,%d2 <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43086: 6c0e bges 43096 <IMFS_fifo_open+0x30> <== NOT EXECUTED
43088: 4eb9 0004 e8d4 jsr 4e8d4 <__errno> <== NOT EXECUTED
4308e: 4482 negl %d2 <== NOT EXECUTED
43090: 2040 moveal %d0,%a0 <== NOT EXECUTED
43092: 2082 movel %d2,%a0@ <== NOT EXECUTED
43094: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
43096: 2002 movel %d2,%d0 <== NOT EXECUTED
43098: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4309c: 4e5e unlk %fp <== NOT EXECUTED
00042fc4 <IMFS_fifo_read>:
ssize_t IMFS_fifo_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
42fc4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
42fc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
42fcc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
42fce: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
ssize_t IMFS_fifo_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
42fd2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
42fd4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42fd6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
42fda: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
42fde: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
42fe2: 4eb9 0004 b716 jsr 4b716 <pipe_read> <== NOT EXECUTED
if (err > 0)
42fe8: 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);
42fec: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0)
42fee: 6f18 bles 43008 <IMFS_fifo_read+0x44> <== NOT EXECUTED
IMFS_update_atime(jnode);
42ff0: 42a7 clrl %sp@- <== NOT EXECUTED
42ff2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
42ff6: 4eb9 0004 4094 jsr 44094 <gettimeofday> <== NOT EXECUTED
42ffc: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
43002: 508f addql #8,%sp <== NOT EXECUTED
43004: 2002 movel %d2,%d0 <== NOT EXECUTED
43006: 6016 bras 4301e <IMFS_fifo_read+0x5a> <== NOT EXECUTED
IMFS_FIFO_RETURN(err);
43008: 4a80 tstl %d0 <== NOT EXECUTED
4300a: 6710 beqs 4301c <IMFS_fifo_read+0x58> <== NOT EXECUTED
4300c: 4eb9 0004 e8d4 jsr 4e8d4 <__errno> <== NOT EXECUTED
43012: 4482 negl %d2 <== NOT EXECUTED
43014: 2040 moveal %d0,%a0 <== NOT EXECUTED
43016: 70ff moveq #-1,%d0 <== NOT EXECUTED
43018: 2082 movel %d2,%a0@ <== NOT EXECUTED
4301a: 6002 bras 4301e <IMFS_fifo_read+0x5a> <== NOT EXECUTED
4301c: 4280 clrl %d0 <== NOT EXECUTED
}
4301e: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
43022: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
43026: 4e5e unlk %fp <== NOT EXECUTED
00042f58 <IMFS_fifo_write>:
ssize_t IMFS_fifo_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
42f58: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
42f5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
42f60: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
42f62: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
ssize_t IMFS_fifo_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
42f66: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = iop->pathinfo.node_access;
int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
42f68: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42f6a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
42f6e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
42f72: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
42f76: 4eb9 0004 b870 jsr 4b870 <pipe_write> <== NOT EXECUTED
if (err > 0) {
42f7c: 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);
42f80: 2400 movel %d0,%d2 <== NOT EXECUTED
if (err > 0) {
42f82: 6f1e bles 42fa2 <IMFS_fifo_write+0x4a> <== NOT EXECUTED
IMFS_mtime_ctime_update(jnode);
42f84: 42a7 clrl %sp@- <== NOT EXECUTED
42f86: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
42f8a: 4eb9 0004 4094 jsr 44094 <gettimeofday> <== NOT EXECUTED
42f90: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
42f94: 508f addql #8,%sp <== NOT EXECUTED
42f96: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED
42f9a: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
42f9e: 2002 movel %d2,%d0 <== NOT EXECUTED
42fa0: 6016 bras 42fb8 <IMFS_fifo_write+0x60> <== NOT EXECUTED
}
IMFS_FIFO_RETURN(err);
42fa2: 4a80 tstl %d0 <== NOT EXECUTED
42fa4: 6710 beqs 42fb6 <IMFS_fifo_write+0x5e> <== NOT EXECUTED
42fa6: 4eb9 0004 e8d4 jsr 4e8d4 <__errno> <== NOT EXECUTED
42fac: 4482 negl %d2 <== NOT EXECUTED
42fae: 2040 moveal %d0,%a0 <== NOT EXECUTED
42fb0: 70ff moveq #-1,%d0 <== NOT EXECUTED
42fb2: 2082 movel %d2,%a0@ <== NOT EXECUTED
42fb4: 6002 bras 42fb8 <IMFS_fifo_write+0x60> <== NOT EXECUTED
42fb6: 4280 clrl %d0 <== NOT EXECUTED
}
42fb8: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
42fbc: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
42fc0: 4e5e unlk %fp <== NOT EXECUTED
00049354 <IMFS_find_match_in_dir>:
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
49354: 4e56 fff0 linkw %fp,#-16
49358: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4935c: 4879 0005 b4e8 pea 5b4e8 <dotname>
49362: 49f9 0004 d84c lea 4d84c <strcmp>,%a4
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
49368: 242e 000c movel %fp@(12),%d2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
4936c: 2f02 movel %d2,%sp@-
IMFS_jnode_t *IMFS_find_match_in_dir(
IMFS_jnode_t *directory,
char *name
)
{
4936e: 246e 0008 moveal %fp@(8),%a2
/*
* Check for "." and ".."
*/
if ( !strcmp( name, dotname ) )
49372: 4e94 jsr %a4@
49374: 508f addql #8,%sp
49376: 4a80 tstl %d0
49378: 673a beqs 493b4 <IMFS_find_match_in_dir+0x60> <== NEVER TAKEN
return directory;
if ( !strcmp( name, dotdotname ) )
4937a: 4879 0005 b4ea pea 5b4ea <dotdotname>
49380: 2f02 movel %d2,%sp@-
49382: 4e94 jsr %a4@
49384: 508f addql #8,%sp
49386: 4a80 tstl %d0
49388: 6606 bnes 49390 <IMFS_find_match_in_dir+0x3c> <== ALWAYS TAKEN
return directory->Parent;
4938a: 246a 0008 moveal %a2@(8),%a2 <== NOT EXECUTED
4938e: 6024 bras 493b4 <IMFS_find_match_in_dir+0x60> <== NOT EXECUTED
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
49390: 266a 004c moveal %a2@(76),%a3
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
49394: 45ea 0050 lea %a2@(80),%a2
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
49398: 6010 bras 493aa <IMFS_find_match_in_dir+0x56>
!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 ) )
4939a: 486b 000c pea %a3@(12)
4939e: 2f02 movel %d2,%sp@-
493a0: 4e94 jsr %a4@
493a2: 508f addql #8,%sp
493a4: 4a80 tstl %d0
493a6: 670a beqs 493b2 <IMFS_find_match_in_dir+0x5e>
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 ) {
493a8: 2653 moveal %a3@,%a3
if ( !strcmp( name, dotdotname ) )
return directory->Parent;
the_chain = &directory->info.directory.Entries;
for ( the_node = rtems_chain_first( the_chain );
493aa: b5cb cmpal %a3,%a2
493ac: 66ec bnes 4939a <IMFS_find_match_in_dir+0x46>
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
493ae: 95ca subal %a2,%a2
493b0: 6002 bras 493b4 <IMFS_find_match_in_dir+0x60>
for ( the_node = rtems_chain_first( the_chain );
!rtems_chain_is_tail( the_chain, the_node );
the_node = the_node->next ) {
the_jnode = (IMFS_jnode_t *) the_node;
493b2: 244b moveal %a3,%a2
if ( !strcmp( name, the_jnode->name ) )
return the_jnode;
}
return 0;
}
493b4: 200a movel %a2,%d0
493b6: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
493bc: 4e5e unlk %fp <== NOT EXECUTED
000492b0 <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
)
{
492b0: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
492b4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
492b8: 266e 0008 moveal %fp@(8),%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;
loc = temp_mt_entry->mt_fs_root;
492bc: 240e movel %fp,%d2 <== NOT EXECUTED
492be: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
temp_mt_entry->mt_fs_root.node_access = NULL;
do {
next = jnode->Parent;
loc.node_access = (void *)jnode;
IMFS_Set_handlers( &loc );
492c4: 49f9 0004 8c74 lea 48c74 <IMFS_Set_handlers>,%a4 <== 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;
492ca: 246b 001c moveal %a3@(28),%a2 <== NOT EXECUTED
loc = temp_mt_entry->mt_fs_root;
492ce: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
492d2: 486b 001c pea %a3@(28) <== NOT EXECUTED
492d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
492d8: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
/*
* Set this to null to indicate that it is being unmounted.
*/
temp_mt_entry->mt_fs_root.node_access = NULL;
492de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
492e2: 42ab 001c clrl %a3@(28) <== NOT EXECUTED
next = jnode->Parent;
loc.node_access = (void *)jnode;
IMFS_Set_handlers( &loc );
if ( jnode->type != IMFS_DIRECTORY ) {
result = IMFS_unlink( NULL, &loc );
492e6: 47f9 0004 2138 lea 42138 <IMFS_unlink>,%a3 <== NOT EXECUTED
*/
temp_mt_entry->mt_fs_root.node_access = NULL;
do {
next = jnode->Parent;
492ec: 262a 0008 movel %a2@(8),%d3 <== NOT EXECUTED
loc.node_access = (void *)jnode;
492f0: 2d4a ffec movel %a2,%fp@(-20) <== NOT EXECUTED
IMFS_Set_handlers( &loc );
492f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
492f6: 4e94 jsr %a4@ <== NOT EXECUTED
if ( jnode->type != IMFS_DIRECTORY ) {
492f8: 588f addql #4,%sp <== NOT EXECUTED
492fa: 7001 moveq #1,%d0 <== NOT EXECUTED
492fc: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
49300: 660e bnes 49310 <IMFS_fsunmount+0x60> <== 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 );
49302: 200a movel %a2,%d0 <== NOT EXECUTED
49304: 0680 0000 0050 addil #80,%d0 <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
4930a: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED
4930e: 660e bnes 4931e <IMFS_fsunmount+0x6e> <== NOT EXECUTED
result = IMFS_unlink( NULL, &loc );
49310: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49312: 42a7 clrl %sp@- <== NOT EXECUTED
49314: 4e93 jsr %a3@ <== NOT EXECUTED
if (result != 0)
49316: 508f addql #8,%sp <== NOT EXECUTED
49318: 4a80 tstl %d0 <== NOT EXECUTED
4931a: 6626 bnes 49342 <IMFS_fsunmount+0x92> <== NOT EXECUTED
return -1;
jnode = next;
4931c: 2443 moveal %d3,%a2 <== NOT EXECUTED
}
if ( jnode != NULL ) {
4931e: 4a8a tstl %a2 <== NOT EXECUTED
49320: 6724 beqs 49346 <IMFS_fsunmount+0x96> <== NOT EXECUTED
if ( jnode->type == IMFS_DIRECTORY ) {
49322: 7001 moveq #1,%d0 <== NOT EXECUTED
49324: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
49328: 66c2 bnes 492ec <IMFS_fsunmount+0x3c> <== NOT EXECUTED
4932a: 220a movel %a2,%d1 <== NOT EXECUTED
4932c: 0681 0000 0050 addil #80,%d1 <== NOT EXECUTED
}
}
} while (jnode != NULL);
return 0;
}
49332: 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 ) )
49336: b280 cmpl %d0,%d1 <== NOT EXECUTED
49338: 67b2 beqs 492ec <IMFS_fsunmount+0x3c> <== NOT EXECUTED
jnode = jnode_get_first_child( jnode );
4933a: 2440 moveal %d0,%a2 <== NOT EXECUTED
}
}
} while (jnode != NULL);
4933c: 4a80 tstl %d0 <== NOT EXECUTED
4933e: 66ac bnes 492ec <IMFS_fsunmount+0x3c> <== NOT EXECUTED
49340: 6004 bras 49346 <IMFS_fsunmount+0x96> <== NOT EXECUTED
return -1;
jnode = next;
} else if ( jnode_has_no_children( jnode ) ) {
result = IMFS_unlink( NULL, &loc );
if (result != 0)
return -1;
49342: 70ff moveq #-1,%d0 <== NOT EXECUTED
49344: 6002 bras 49348 <IMFS_fsunmount+0x98> <== NOT EXECUTED
jnode = jnode_get_first_child( jnode );
}
}
} while (jnode != NULL);
return 0;
49346: 4280 clrl %d0 <== NOT EXECUTED
}
49348: 4cee 1c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4934e: 4e5e unlk %fp <== NOT EXECUTED
...
000493c0 <IMFS_get_token>:
const char *path,
int pathlen,
char *token,
int *token_len
)
{
493c0: 4e56 ffe4 linkw %fp,#-28
493c4: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
493c8: 246e 0010 moveal %fp@(16),%a2
register int i = 0;
493cc: 4283 clrl %d3
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
493ce: 284a moveal %a2,%a4
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
493d0: 4bf9 0004 34c8 lea 434c8 <rtems_filesystem_is_separator>,%a5
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
493d6: 266e 0008 moveal %fp@(8),%a3
const char *path,
int pathlen,
char *token,
int *token_len
)
{
493da: 282e 000c movel %fp@(12),%d4
register char c;
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
493de: 141b moveb %a3@+,%d2
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
493e0: 600c bras 493ee <IMFS_get_token+0x2e>
token[i] = c;
if ( i == IMFS_NAME_MAX )
493e2: 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;
493e4: 18c2 moveb %d2,%a4@+
if ( i == IMFS_NAME_MAX )
493e6: b083 cmpl %d3,%d0
493e8: 6772 beqs 4945c <IMFS_get_token+0x9c> <== NEVER TAKEN
return IMFS_INVALID_TOKEN;
if ( !IMFS_is_valid_name_char(c) )
type = IMFS_INVALID_TOKEN;
c = path [++i];
493ea: 5283 addql #1,%d3
493ec: 141b moveb %a3@+,%d2
/*
* Copy a name into token. (Remember NULL is a token.)
*/
c = path[i];
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
493ee: 1002 moveb %d2,%d0
493f0: 49c0 extbl %d0
493f2: 2f00 movel %d0,%sp@-
493f4: 4e95 jsr %a5@
493f6: 588f addql #4,%sp
493f8: 4a80 tstl %d0
493fa: 6604 bnes 49400 <IMFS_get_token+0x40>
493fc: b883 cmpl %d3,%d4
493fe: 6ee2 bgts 493e2 <IMFS_get_token+0x22> <== ALWAYS TAKEN
/*
* Copy a seperator into token.
*/
if ( i == 0 ) {
49400: 4a83 tstl %d3
49402: 660a bnes 4940e <IMFS_get_token+0x4e>
token[i] = c;
49404: 1482 moveb %d2,%a2@
if ( (token[i] != '\0') && pathlen ) {
49406: 6714 beqs 4941c <IMFS_get_token+0x5c>
49408: 4a84 tstl %d4
4940a: 6614 bnes 49420 <IMFS_get_token+0x60> <== ALWAYS TAKEN
4940c: 600e bras 4941c <IMFS_get_token+0x5c> <== NOT EXECUTED
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
}
} else if (token[ i-1 ] != '\0') {
4940e: 4a32 38ff tstb %a2@(ffffffff,%d3:l)
49412: 6712 beqs 49426 <IMFS_get_token+0x66> <== NEVER TAKEN
token[i] = '\0';
49414: 4200 clrb %d0
49416: 1580 3800 moveb %d0,%a2@(00000000,%d3:l)
4941a: 600a bras 49426 <IMFS_get_token+0x66>
if ( (token[i] != '\0') && pathlen ) {
i++;
type = IMFS_CURRENT_DIR;
} else {
type = IMFS_NO_MORE_PATH;
4941c: 4282 clrl %d2
4941e: 6008 bras 49428 <IMFS_get_token+0x68>
if ( i == 0 ) {
token[i] = c;
if ( (token[i] != '\0') && pathlen ) {
i++;
type = IMFS_CURRENT_DIR;
49420: 7401 moveq #1,%d2
if ( i == 0 ) {
token[i] = c;
if ( (token[i] != '\0') && pathlen ) {
i++;
49422: 7601 moveq #1,%d3
49424: 6002 bras 49428 <IMFS_get_token+0x68>
char *token,
int *token_len
)
{
register int i = 0;
IMFS_token_types type = IMFS_NAME;
49426: 7403 moveq #3,%d2
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
49428: 206e 0014 moveal %fp@(20),%a0
/*
* If we copied something that was not a seperator see if
* it was a special name.
*/
if ( type == IMFS_NAME ) {
4942c: 7003 moveq #3,%d0
/*
* Set token_len to the number of characters copied.
*/
*token_len = i;
4942e: 2083 movel %d3,%a0@
/*
* If we copied something that was not a seperator see if
* it was a special name.
*/
if ( type == IMFS_NAME ) {
49430: b082 cmpl %d2,%d0
49432: 6632 bnes 49466 <IMFS_get_token+0xa6>
if ( strcmp( token, "..") == 0 )
49434: 4879 0005 b4ed pea 5b4ed <dotdotname+0x3>
4943a: 47f9 0004 d84c lea 4d84c <strcmp>,%a3
49440: 2f0a movel %a2,%sp@-
49442: 4e93 jsr %a3@
49444: 508f addql #8,%sp
49446: 4a80 tstl %d0
49448: 6716 beqs 49460 <IMFS_get_token+0xa0> <== NEVER TAKEN
type = IMFS_UP_DIR;
else if ( strcmp( token, "." ) == 0 )
4944a: 4879 0005 b4ee pea 5b4ee <dotdotname+0x4>
49450: 2f0a movel %a2,%sp@-
49452: 4e93 jsr %a3@
49454: 508f addql #8,%sp
49456: 4a80 tstl %d0
49458: 670a beqs 49464 <IMFS_get_token+0xa4> <== NEVER TAKEN
4945a: 600a bras 49466 <IMFS_get_token+0xa6>
while ( (!IMFS_is_separator(c)) && (i < pathlen) && (i <= IMFS_NAME_MAX) ) {
token[i] = c;
if ( i == IMFS_NAME_MAX )
return IMFS_INVALID_TOKEN;
4945c: 7404 moveq #4,%d2 <== NOT EXECUTED
4945e: 6006 bras 49466 <IMFS_get_token+0xa6> <== NOT EXECUTED
* it was a special name.
*/
if ( type == IMFS_NAME ) {
if ( strcmp( token, "..") == 0 )
type = IMFS_UP_DIR;
49460: 7402 moveq #2,%d2 <== NOT EXECUTED
49462: 6002 bras 49466 <IMFS_get_token+0xa6> <== NOT EXECUTED
else if ( strcmp( token, "." ) == 0 )
type = IMFS_CURRENT_DIR;
49464: 7401 moveq #1,%d2 <== NOT EXECUTED
}
return type;
}
49466: 2002 movel %d2,%d0
49468: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
4946e: 4e5e unlk %fp
...
00041d80 <IMFS_initialize_support>:
IMFS_jnode_t *jnode;
/*
* determine/check value for imfs_memfile_bytes_per_block
*/
IMFS_determine_bytes_per_block(&imfs_memfile_bytes_per_block,
41d80: 307c 0006 moveaw #6,%a0
int bit_mask;
/*
* check, whether requested bytes per block is valid
*/
for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
41d84: 7210 moveq #16,%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
)
{
41d86: 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,
41d8a: 2039 0005 c1a8 movel 5c1a8 <imfs_rq_memfile_bytes_per_block>,%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
)
{
41d90: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
41d94: 246e 0008 moveal %fp@(8),%a2
41d98: 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) {
41d9c: b081 cmpl %d1,%d0
41d9e: 6710 beqs 41db0 <IMFS_initialize_support+0x30>
is_valid = true;
break;
}
if(bit_mask > requested_bytes_per_block)
41da0: 6d08 blts 41daa <IMFS_initialize_support+0x2a>
int bit_mask;
/*
* check, whether requested bytes per block is valid
*/
for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
41da2: 5388 subql #1,%a0
41da4: d281 addl %d1,%d1
41da6: 4a88 tstl %a0
41da8: 66f2 bnes 41d9c <IMFS_initialize_support+0x1c> <== ALWAYS TAKEN
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
? requested_bytes_per_block
: default_bytes_per_block);
41daa: 203c 0000 0080 movel #128,%d0
break;
}
if(bit_mask > requested_bytes_per_block)
break;
}
*dest_bytes_per_block = ((is_valid)
41db0: 23c0 0005 d1b4 movel %d0,5d1b4 <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();
41db6: 4eb9 0004 8c3a jsr 48c3a <IMFS_create_root_node>
temp_mt_entry->mt_fs_root.handlers = directory_handlers;
temp_mt_entry->mt_fs_root.ops = op_table;
41dbc: 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();
41dc2: 2640 moveal %d0,%a3
41dc4: 2540 001c movel %d0,%a2@(28)
temp_mt_entry->mt_fs_root.handlers = directory_handlers;
41dc8: 2542 0024 movel %d2,%a2@(36)
temp_mt_entry->mt_fs_root.ops = op_table;
temp_mt_entry->pathconf_limits_and_options = IMFS_LIMITS_AND_OPTIONS;
41dcc: 4878 0030 pea 30 <OPER2+0x1c>
41dd0: 4879 0005 b4b8 pea 5b4b8 <IMFS_LIMITS_AND_OPTIONS>
41dd6: 486a 0038 pea %a2@(56)
41dda: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy>
/*
* Create custom file system data.
*/
fs_info = calloc( 1, sizeof( IMFS_fs_info_t ) );
41de0: 4878 0014 pea 14 <OPER2>
41de4: 4878 0001 pea 1 <ADD>
41de8: 4eb9 0004 241c jsr 4241c <calloc>
if ( !fs_info ) {
41dee: 4fef 0014 lea %sp@(20),%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 ) );
41df2: 2040 moveal %d0,%a0
if ( !fs_info ) {
41df4: 4a80 tstl %d0
41df6: 661a bnes 41e12 <IMFS_initialize_support+0x92> <== ALWAYS TAKEN
free(temp_mt_entry->mt_fs_root.node_access);
41df8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
41dfa: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOMEM);
41e00: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
41e06: 588f addql #4,%sp <== NOT EXECUTED
41e08: 2040 moveal %d0,%a0 <== NOT EXECUTED
41e0a: 700c moveq #12,%d0 <== NOT EXECUTED
41e0c: 2080 movel %d0,%a0@ <== NOT EXECUTED
41e0e: 70ff moveq #-1,%d0 <== NOT EXECUTED
41e10: 6030 bras 41e42 <IMFS_initialize_support+0xc2> <== NOT EXECUTED
}
temp_mt_entry->fs_info = fs_info;
41e12: 2540 0034 movel %d0,%a2@(52)
/*
* Set st_ino for the root to 1.
*/
fs_info->instance = imfs_instance++;
41e16: 2039 0005 d1b8 movel 5d1b8 <imfs_instance.5969>,%d0
41e1c: 2080 movel %d0,%a0@
41e1e: 5280 addql #1,%d0
41e20: 23c0 0005 d1b8 movel %d0,5d1b8 <imfs_instance.5969>
fs_info->ino_count = 1;
41e26: 7001 moveq #1,%d0
fs_info->memfile_handlers = memfile_handlers;
41e28: 216e 0010 0008 movel %fp@(16),%a0@(8)
fs_info->directory_handlers = directory_handlers;
fs_info->fifo_handlers = fifo_handlers;
41e2e: 216e 0018 0010 movel %fp@(24),%a0@(16)
/*
* Set st_ino for the root to 1.
*/
fs_info->instance = imfs_instance++;
fs_info->ino_count = 1;
41e34: 2140 0004 movel %d0,%a0@(4)
fs_info->memfile_handlers = memfile_handlers;
fs_info->directory_handlers = directory_handlers;
41e38: 2142 000c movel %d2,%a0@(12)
fs_info->fifo_handlers = fifo_handlers;
jnode = temp_mt_entry->mt_fs_root.node_access;
jnode->st_ino = fs_info->ino_count;
41e3c: 2740 0034 movel %d0,%a3@(52)
return 0;
41e40: 4200 clrb %d0
}
41e42: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
41e48: 4e5e unlk %fp <== NOT EXECUTED
00041e4c <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 )
41e4c: 4280 clrl %d0 <== NOT EXECUTED
41e4e: 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 */
)
{
41e50: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED
int i;
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
41e54: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
41e58: 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 */
)
{
41e5a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e5c: 262e 0010 movel %fp@(16),%d3 <== 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 )
41e60: 3028 0032 movew %a0@(50),%d0 <== 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 */
)
{
41e64: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int i;
/*
* Verify this node can be linked to.
*/
info.hard_link.link_node = to_loc->node_access;
41e66: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED
if ( info.hard_link.link_node->st_nlink >= LINK_MAX )
41e6a: b280 cmpl %d0,%d1 <== NOT EXECUTED
41e6c: 640e bccs 41e7c <IMFS_link+0x30> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EMLINK );
41e6e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
41e74: 721f moveq #31,%d1 <== NOT EXECUTED
41e76: 2040 moveal %d0,%a0 <== NOT EXECUTED
41e78: 2081 movel %d1,%a0@ <== NOT EXECUTED
41e7a: 6050 bras 41ecc <IMFS_link+0x80> <== NOT EXECUTED
/*
* Remove any separators at the end of the string.
*/
IMFS_get_token( token, strlen( token ), new_name, &i );
41e7c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e7e: 240e movel %fp,%d2 <== NOT EXECUTED
41e80: 0682 ffff ffbf addil #-65,%d2 <== NOT EXECUTED
41e86: 4eb9 0004 dda4 jsr 4dda4 <strlen> <== NOT EXECUTED
41e8c: 588f addql #4,%sp <== NOT EXECUTED
41e8e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
41e92: 2f02 movel %d2,%sp@- <== NOT EXECUTED
41e94: 2f00 movel %d0,%sp@- <== NOT EXECUTED
41e96: 2f03 movel %d3,%sp@- <== NOT EXECUTED
41e98: 4eb9 0004 93c0 jsr 493c0 <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(
41e9e: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED
41ea2: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED
41ea8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
41eaa: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
41eae: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
41eb2: 4eb9 0004 8b26 jsr 48b26 <IMFS_create_node> <== NOT EXECUTED
new_name,
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if ( !new_node )
41eb8: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
41ebc: 4a80 tstl %d0 <== NOT EXECUTED
41ebe: 6610 bnes 41ed0 <IMFS_link+0x84> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
41ec0: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
41ec6: 2040 moveal %d0,%a0 <== NOT EXECUTED
41ec8: 700c moveq #12,%d0 <== NOT EXECUTED
41eca: 2080 movel %d0,%a0@ <== NOT EXECUTED
41ecc: 70ff moveq #-1,%d0 <== NOT EXECUTED
41ece: 6028 bras 41ef8 <IMFS_link+0xac> <== NOT EXECUTED
/*
* Increment the link count of the node being pointed to.
*/
info.hard_link.link_node->st_nlink++;
41ed0: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
41ed4: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
41ed8: 5280 addql #1,%d0 <== NOT EXECUTED
41eda: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED
IMFS_update_ctime( info.hard_link.link_node );
41ede: 42a7 clrl %sp@- <== NOT EXECUTED
41ee0: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
41ee4: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
41eea: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
return 0;
41eee: 508f addql #8,%sp <== NOT EXECUTED
41ef0: 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 );
41ef2: 216e fff4 0044 movel %fp@(-12),%a0@(68) <== NOT EXECUTED
return 0;
}
41ef8: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED
41efc: 262e ffb8 movel %fp@(-72),%d3 <== NOT EXECUTED
41f00: 4e5e unlk %fp <== NOT EXECUTED
0004b604 <IMFS_memfile_addblock>:
*/
MEMFILE_STATIC int IMFS_memfile_addblock(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4b604: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b608: 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 );
4b60a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b60e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b612: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4b616: 4eb9 0004 b2fc jsr 4b2fc <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( *block_entry_ptr )
4b61c: 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 );
4b620: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( *block_entry_ptr )
4b622: 4a92 tstl %a2@ <== NOT EXECUTED
4b624: 660c bnes 4b632 <IMFS_memfile_addblock+0x2e> <== NOT EXECUTED
return 0;
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
4b626: 4eb9 0004 b2d8 jsr 4b2d8 <memfile_alloc_block> <== NOT EXECUTED
if ( !memory )
4b62c: 4a80 tstl %d0 <== NOT EXECUTED
4b62e: 6706 beqs 4b636 <IMFS_memfile_addblock+0x32> <== NOT EXECUTED
return 1;
*block_entry_ptr = memory;
4b630: 2480 movel %d0,%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;
4b632: 4280 clrl %d0 <== NOT EXECUTED
4b634: 6002 bras 4b638 <IMFS_memfile_addblock+0x34> <== NOT EXECUTED
/*
* There is no memory for this block number so allocate it.
*/
memory = memfile_alloc_block();
if ( !memory )
return 1;
4b636: 7001 moveq #1,%d0 <== NOT EXECUTED
*block_entry_ptr = memory;
return 0;
}
4b638: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b63c: 4e5e unlk %fp <== NOT EXECUTED
0004b7a8 <IMFS_memfile_extend>:
IMFS_assert( the_jnode->type == IMFS_MEMORY_FILE );
/*
* Verify new file size is supported
*/
if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )
4b7a8: 4280 clrl %d0 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4b7aa: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
4b7ae: 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 )
4b7b2: 2c39 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4b7b8: 2a06 movel %d6,%d5 <== NOT EXECUTED
4b7ba: e48d lsrl #2,%d5 <== NOT EXECUTED
4b7bc: 2805 movel %d5,%d4 <== NOT EXECUTED
4b7be: 5284 addql #1,%d4 <== NOT EXECUTED
4b7c0: 4c05 4800 mulsl %d5,%d4 <== NOT EXECUTED
*/
MEMFILE_STATIC int IMFS_memfile_extend(
IMFS_jnode_t *the_jnode,
off_t new_length
)
{
4b7c4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4b7c8: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4b7cc: 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 )
4b7d0: 5284 addql #1,%d4 <== NOT EXECUTED
4b7d2: 4c05 4800 mulsl %d5,%d4 <== NOT EXECUTED
4b7d6: 5384 subql #1,%d4 <== NOT EXECUTED
4b7d8: 4c06 4800 mulsl %d6,%d4 <== NOT EXECUTED
4b7dc: 2204 movel %d4,%d1 <== NOT EXECUTED
4b7de: 2802 movel %d2,%d4 <== NOT EXECUTED
4b7e0: 2a03 movel %d3,%d5 <== NOT EXECUTED
4b7e2: 9a81 subl %d1,%d5 <== NOT EXECUTED
4b7e4: 9980 subxl %d0,%d4 <== NOT EXECUTED
4b7e6: 6d0e blts 4b7f6 <IMFS_memfile_extend+0x4e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4b7e8: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4b7ee: 7216 moveq #22,%d1 <== NOT EXECUTED
4b7f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b7f2: 2081 movel %d1,%a0@ <== NOT EXECUTED
4b7f4: 6078 bras 4b86e <IMFS_memfile_extend+0xc6> <== NOT EXECUTED
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
4b7f6: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4b7fa: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4b7fe: 2002 movel %d2,%d0 <== NOT EXECUTED
4b800: 2203 movel %d3,%d1 <== NOT EXECUTED
4b802: 9285 subl %d5,%d1 <== NOT EXECUTED
4b804: 9184 subxl %d4,%d0 <== NOT EXECUTED
4b806: 6f78 bles 4b880 <IMFS_memfile_extend+0xd8> <== NOT EXECUTED
return 0;
/*
* Calculate the number of range of blocks to allocate
*/
new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;
4b808: 47f9 0005 87e8 lea 587e8 <__divdi3>,%a3 <== NOT EXECUTED
4b80e: 2e06 movel %d6,%d7 <== NOT EXECUTED
4b810: 5bc6 smi %d6 <== NOT EXECUTED
4b812: 49c6 extbl %d6 <== NOT EXECUTED
4b814: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b816: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4b818: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b81a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b81c: 4e93 jsr %a3@ <== NOT EXECUTED
4b81e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b822: 2841 moveal %d1,%a4 <== NOT EXECUTED
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4b824: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b826: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4b828: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b82a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b82c: 4e93 jsr %a3@ <== NOT EXECUTED
4b82e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
4b832: 47f9 0004 b604 lea 4b604 <IMFS_memfile_addblock>,%a3 <== NOT EXECUTED
/*
* Calculate the number of range of blocks to allocate
*/
new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;
old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
4b838: 2c01 movel %d1,%d6 <== NOT EXECUTED
/*
* Now allocate each of those blocks.
*/
for ( block=old_blocks ; block<=new_blocks ; block++ ) {
4b83a: 2801 movel %d1,%d4 <== NOT EXECUTED
4b83c: 6036 bras 4b874 <IMFS_memfile_extend+0xcc> <== NOT EXECUTED
if ( IMFS_memfile_addblock( the_jnode, block ) ) {
4b83e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b840: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b842: 4e93 jsr %a3@ <== NOT EXECUTED
4b844: 508f addql #8,%sp <== NOT EXECUTED
4b846: 4a80 tstl %d0 <== NOT EXECUTED
4b848: 6728 beqs 4b872 <IMFS_memfile_extend+0xca> <== NOT EXECUTED
4b84a: 600c bras 4b858 <IMFS_memfile_extend+0xb0> <== NOT EXECUTED
for ( ; block>=old_blocks ; block-- ) {
IMFS_memfile_remove_block( the_jnode, block );
4b84c: 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-- ) {
4b84e: 5384 subql #1,%d4 <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4b850: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b852: 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-- ) {
4b854: 508f addql #8,%sp <== NOT EXECUTED
4b856: 6006 bras 4b85e <IMFS_memfile_extend+0xb6> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
4b858: 47f9 0004 b780 lea 4b780 <IMFS_memfile_remove_block>,%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-- ) {
4b85e: bc84 cmpl %d4,%d6 <== NOT EXECUTED
4b860: 63ea blss 4b84c <IMFS_memfile_extend+0xa4> <== NOT EXECUTED
IMFS_memfile_remove_block( the_jnode, block );
}
rtems_set_errno_and_return_minus_one( ENOSPC );
4b862: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4b868: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b86a: 701c moveq #28,%d0 <== NOT EXECUTED
4b86c: 2080 movel %d0,%a0@ <== NOT EXECUTED
4b86e: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b870: 6010 bras 4b882 <IMFS_memfile_extend+0xda> <== 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++ ) {
4b872: 5284 addql #1,%d4 <== NOT EXECUTED
4b874: b9c4 cmpal %d4,%a4 <== NOT EXECUTED
4b876: 64c6 bccs 4b83e <IMFS_memfile_extend+0x96> <== NOT EXECUTED
}
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
4b878: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED
4b87c: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED
/*
* Verify new file size is actually larger than current size
*/
if ( new_length <= the_jnode->info.file.size )
return 0;
4b880: 4280 clrl %d0 <== NOT EXECUTED
/*
* Set the new length of the file.
*/
the_jnode->info.file.size = new_length;
return 0;
}
4b882: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
4b888: 4e5e unlk %fp <== NOT EXECUTED
0004b2fc <IMFS_memfile_get_block_pointer>:
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4b2fc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
my_block = block;
/*
* Is the block number in the simple indirect portion?
*/
if ( my_block <= LAST_INDIRECT ) {
4b300: 2039 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d0<== NOT EXECUTED
4b306: e488 lsrl #2,%d0 <== NOT EXECUTED
4b308: 2200 movel %d0,%d1 <== NOT EXECUTED
4b30a: 5381 subql #1,%d1 <== NOT EXECUTED
#endif
IMFS_jnode_t *the_jnode,
unsigned int block,
int malloc_it
)
{
4b30c: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
4b310: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4b314: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4b318: 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 ) {
4b31c: b282 cmpl %d2,%d1 <== NOT EXECUTED
4b31e: 6536 bcss 4b356 <IMFS_memfile_get_block_pointer+0x5a><== NOT EXECUTED
p = info->indirect;
4b320: 226a 0054 moveal %a2@(84),%a1 <== NOT EXECUTED
if ( malloc_it ) {
4b324: 4a88 tstl %a0 <== NOT EXECUTED
4b326: 6720 beqs 4b348 <IMFS_memfile_get_block_pointer+0x4c><== NOT EXECUTED
if ( !p ) {
4b328: 4a89 tstl %a1 <== NOT EXECUTED
4b32a: 6610 bnes 4b33c <IMFS_memfile_get_block_pointer+0x40><== NOT EXECUTED
p = memfile_alloc_block();
4b32c: 4eb9 0004 b2d8 jsr 4b2d8 <memfile_alloc_block> <== NOT EXECUTED
if ( !p )
4b332: 4a80 tstl %d0 <== NOT EXECUTED
4b334: 6700 00f8 beqw 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
info->indirect = p;
4b338: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
}
return &info->indirect[ my_block ];
4b33c: 206a 0054 moveal %a2@(84),%a0 <== NOT EXECUTED
4b340: e58a lsll #2,%d2 <== NOT EXECUTED
4b342: d1c2 addal %d2,%a0 <== NOT EXECUTED
4b344: 6000 00ea braw 4b430 <IMFS_memfile_get_block_pointer+0x134><== NOT EXECUTED
}
if ( !p )
4b348: 4a89 tstl %a1 <== NOT EXECUTED
4b34a: 6700 00e2 beqw 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
return &info->indirect[ my_block ];
4b34e: 41f1 2c00 lea %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
4b352: 6000 00dc braw 4b430 <IMFS_memfile_get_block_pointer+0x134><== NOT EXECUTED
/*
* Is the block number in the doubly indirect portion?
*/
if ( my_block <= LAST_DOUBLY_INDIRECT ) {
4b356: 2200 movel %d0,%d1 <== NOT EXECUTED
4b358: 5281 addql #1,%d1 <== NOT EXECUTED
4b35a: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
4b35e: 2241 moveal %d1,%a1 <== NOT EXECUTED
4b360: 5389 subql #1,%a1 <== NOT EXECUTED
4b362: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
4b364: 653e bcss 4b3a4 <IMFS_memfile_get_block_pointer+0xa8><== NOT EXECUTED
my_block -= FIRST_DOUBLY_INDIRECT;
4b366: 9480 subl %d0,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4b368: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED
4b36c: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
p = info->doubly_indirect;
4b370: 202a 0058 movel %a2@(88),%d0 <== NOT EXECUTED
if ( malloc_it ) {
4b374: 4a88 tstl %a0 <== NOT EXECUTED
4b376: 671c beqs 4b394 <IMFS_memfile_get_block_pointer+0x98><== NOT EXECUTED
if ( !p ) {
4b378: 4a80 tstl %d0 <== NOT EXECUTED
4b37a: 6610 bnes 4b38c <IMFS_memfile_get_block_pointer+0x90><== NOT EXECUTED
p = memfile_alloc_block();
4b37c: 4eb9 0004 b2d8 jsr 4b2d8 <memfile_alloc_block> <== NOT EXECUTED
if ( !p )
4b382: 4a80 tstl %d0 <== NOT EXECUTED
4b384: 6700 00a8 beqw 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
info->doubly_indirect = p;
4b388: 2540 0058 movel %d0,%a2@(88) <== NOT EXECUTED
}
p1 = (block_p *)p[ doubly ];
4b38c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b38e: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4b392: 6066 bras 4b3fa <IMFS_memfile_get_block_pointer+0xfe><== NOT EXECUTED
}
return (block_p *)&p1[ singly ];
}
if ( !p )
4b394: 4a80 tstl %d0 <== NOT EXECUTED
4b396: 6700 0096 beqw 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
p = (block_p *)p[ doubly ];
4b39a: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b39c: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
4b3a0: 6000 0082 braw 4b424 <IMFS_memfile_get_block_pointer+0x128><== NOT EXECUTED
}
/*
* Is the block number in the triply indirect portion?
*/
if ( my_block <= LAST_TRIPLY_INDIRECT ) {
4b3a4: 2601 movel %d1,%d3 <== NOT EXECUTED
4b3a6: 5283 addql #1,%d3 <== NOT EXECUTED
4b3a8: 4c00 3800 mulsl %d0,%d3 <== NOT EXECUTED
4b3ac: 5383 subql #1,%d3 <== NOT EXECUTED
4b3ae: b682 cmpl %d2,%d3 <== NOT EXECUTED
4b3b0: 657c bcss 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
my_block -= FIRST_TRIPLY_INDIRECT;
4b3b2: 9481 subl %d1,%d2 <== NOT EXECUTED
singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;
4b3b4: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED
4b3b8: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;
triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;
4b3bc: 4c40 2004 remul %d0,%d4,%d2 <== NOT EXECUTED
4b3c0: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
doubly %= IMFS_MEMFILE_BLOCK_SLOTS;
p = info->triply_indirect;
4b3c4: 202a 005c movel %a2@(92),%d0 <== NOT EXECUTED
if ( malloc_it ) {
4b3c8: 4a88 tstl %a0 <== NOT EXECUTED
4b3ca: 6746 beqs 4b412 <IMFS_memfile_get_block_pointer+0x116><== NOT EXECUTED
if ( !p ) {
4b3cc: 4a80 tstl %d0 <== NOT EXECUTED
4b3ce: 660e bnes 4b3de <IMFS_memfile_get_block_pointer+0xe2><== NOT EXECUTED
p = memfile_alloc_block();
4b3d0: 4eb9 0004 b2d8 jsr 4b2d8 <memfile_alloc_block> <== NOT EXECUTED
if ( !p )
4b3d6: 4a80 tstl %d0 <== NOT EXECUTED
4b3d8: 6754 beqs 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
info->triply_indirect = p;
4b3da: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
}
p1 = (block_p *) p[ triply ];
4b3de: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b3e0: 45f0 2c00 lea %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
4b3e4: 2012 movel %a2@,%d0 <== NOT EXECUTED
if ( !p1 ) {
4b3e6: 660c bnes 4b3f4 <IMFS_memfile_get_block_pointer+0xf8><== NOT EXECUTED
p1 = memfile_alloc_block();
4b3e8: 4eb9 0004 b2d8 jsr 4b2d8 <memfile_alloc_block> <== NOT EXECUTED
if ( !p1 )
4b3ee: 4a80 tstl %d0 <== NOT EXECUTED
4b3f0: 673c beqs 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
p[ triply ] = (block_p) p1;
4b3f2: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
p2 = (block_p *)p1[ doubly ];
4b3f4: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b3f6: 45f1 4c00 lea %a1@(00000000,%d4:l:4),%a2 <== NOT EXECUTED
4b3fa: 2012 movel %a2@,%d0 <== NOT EXECUTED
if ( !p2 ) {
4b3fc: 660c bnes 4b40a <IMFS_memfile_get_block_pointer+0x10e><== NOT EXECUTED
p2 = memfile_alloc_block();
4b3fe: 4eb9 0004 b2d8 jsr 4b2d8 <memfile_alloc_block> <== NOT EXECUTED
if ( !p2 )
4b404: 4a80 tstl %d0 <== NOT EXECUTED
4b406: 6726 beqs 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
p1[ doubly ] = (block_p) p2;
4b408: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
return (block_p *)&p2[ singly ];
4b40a: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b40c: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4b410: 601e bras 4b430 <IMFS_memfile_get_block_pointer+0x134><== NOT EXECUTED
}
if ( !p )
4b412: 4a80 tstl %d0 <== NOT EXECUTED
4b414: 6718 beqs 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
p1 = (block_p *) p[ triply ];
4b416: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b418: 2071 2c00 moveal %a1@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
if ( !p1 )
4b41c: 4a88 tstl %a0 <== NOT EXECUTED
4b41e: 670e beqs 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
p2 = (block_p *)p1[ doubly ];
4b420: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED
if ( !p2 )
4b424: 4a88 tstl %a0 <== NOT EXECUTED
4b426: 6706 beqs 4b42e <IMFS_memfile_get_block_pointer+0x132><== NOT EXECUTED
return 0;
return (block_p *)&p2[ singly ];
4b428: 41f0 3c00 lea %a0@(00000000,%d3:l:4),%a0 <== NOT EXECUTED
4b42c: 6002 bras 4b430 <IMFS_memfile_get_block_pointer+0x134><== NOT EXECUTED
if ( !p1 )
return 0;
p2 = (block_p *)p1[ doubly ];
if ( !p2 )
return 0;
4b42e: 91c8 subal %a0,%a0 <== NOT EXECUTED
/*
* This means the requested block number is out of range.
*/
return 0;
}
4b430: 2008 movel %a0,%d0 <== NOT EXECUTED
4b432: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4b438: 4e5e unlk %fp <== NOT EXECUTED
00044848 <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 )
{
44848: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return IMFS_MEMFILE_MAXIMUM_SIZE;
4484c: 2039 0006 2cd4 movel 62cd4 <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 )
{
44852: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return IMFS_MEMFILE_MAXIMUM_SIZE;
44854: 2400 movel %d0,%d2 <== NOT EXECUTED
44856: e48a lsrl #2,%d2 <== NOT EXECUTED
44858: 2202 movel %d2,%d1 <== NOT EXECUTED
4485a: 5281 addql #1,%d1 <== NOT EXECUTED
4485c: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
44860: 5281 addql #1,%d1 <== NOT EXECUTED
44862: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
}
44866: 241f movel %sp@+,%d2 <== NOT EXECUTED
* using the IMFS memory file type.
*
*/
int IMFS_memfile_maximum_size( void )
{
return IMFS_MEMFILE_MAXIMUM_SIZE;
44868: 5381 subql #1,%d1 <== NOT EXECUTED
}
4486a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
4486e: 4e5e unlk %fp <== NOT EXECUTED
...
0004b43c <IMFS_memfile_read>:
* 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) {
4b43c: 7006 moveq #6,%d0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
unsigned char *destination,
unsigned int length
)
{
4b43e: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
4b442: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4b446: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4b44a: 2e2e 0014 movel %fp@(20),%d7 <== NOT EXECUTED
4b44e: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
4b452: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4b456: 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) {
4b45a: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
4b45e: 6656 bnes 4b4b6 <IMFS_memfile_read+0x7a> <== NOT EXECUTED
unsigned char *file_ptr;
file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;
if (my_length > (the_jnode->info.linearfile.size - start))
4b460: 2246 moveal %d6,%a1 <== NOT EXECUTED
4b462: 91c8 subal %a0,%a0 <== NOT EXECUTED
4b464: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4b468: 2a2a 0050 movel %a2@(80),%d5 <== 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;
4b46c: 266a 0054 moveal %a2@(84),%a3 <== NOT EXECUTED
if (my_length > (the_jnode->info.linearfile.size - start))
4b470: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
4b474: 2d45 fff4 movel %d5,%fp@(-12) <== NOT EXECUTED
4b478: 9a83 subl %d3,%d5 <== NOT EXECUTED
4b47a: 9982 subxl %d2,%d4 <== NOT EXECUTED
4b47c: 2008 movel %a0,%d0 <== NOT EXECUTED
4b47e: 2209 movel %a1,%d1 <== NOT EXECUTED
4b480: 9285 subl %d5,%d1 <== NOT EXECUTED
4b482: 9184 subxl %d4,%d0 <== NOT EXECUTED
4b484: 6f06 bles 4b48c <IMFS_memfile_read+0x50> <== NOT EXECUTED
my_length = the_jnode->info.linearfile.size - start;
4b486: 2c2e fff4 movel %fp@(-12),%d6 <== NOT EXECUTED
4b48a: 9c83 subl %d3,%d6 <== NOT EXECUTED
memcpy(dest, &file_ptr[start], my_length);
4b48c: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4b48e: 4873 3800 pea %a3@(00000000,%d3:l) <== NOT EXECUTED
IMFS_update_atime( the_jnode );
return my_length;
4b492: 2406 movel %d6,%d2 <== 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);
4b494: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b496: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4b49c: 42a7 clrl %sp@- <== NOT EXECUTED
4b49e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4b4a2: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
4b4a8: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return my_length;
4b4ae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4b4b2: 6000 011e braw 4b5d2 <IMFS_memfile_read+0x196> <== 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;
4b4b6: 2043 moveal %d3,%a0 <== NOT EXECUTED
4b4b8: 43f0 6800 lea %a0@(00000000,%d6:l),%a1 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size )
4b4bc: 97cb subal %a3,%a3 <== NOT EXECUTED
4b4be: 2849 moveal %a1,%a4 <== NOT EXECUTED
4b4c0: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED
4b4c4: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED
4b4c8: 280b movel %a3,%d4 <== NOT EXECUTED
4b4ca: 2a0c movel %a4,%d5 <== NOT EXECUTED
4b4cc: 9a81 subl %d1,%d5 <== NOT EXECUTED
4b4ce: 9980 subxl %d0,%d4 <== NOT EXECUTED
4b4d0: 6f04 bles 4b4d6 <IMFS_memfile_read+0x9a> <== NOT EXECUTED
my_length = the_jnode->info.file.size - start;
4b4d2: 2c01 movel %d1,%d6 <== NOT EXECUTED
4b4d4: 9c83 subl %d3,%d6 <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4b4d6: 2879 0005 d1b4 moveal 5d1b4 <imfs_memfile_bytes_per_block>,%a4<== NOT EXECUTED
4b4dc: 2a0c movel %a4,%d5 <== NOT EXECUTED
4b4de: 5bc4 smi %d4 <== NOT EXECUTED
4b4e0: 49c4 extbl %d4 <== NOT EXECUTED
4b4e2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b4e4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b4e6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b4e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b4ea: 4eb9 0005 8b9c jsr 58b9c <__moddi3> <== NOT EXECUTED
4b4f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b4f4: 2641 moveal %d1,%a3 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4b4f6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b4f8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b4fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b4fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b4fe: 4eb9 0005 87e8 jsr 587e8 <__divdi3> <== NOT EXECUTED
4b504: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b508: 2801 movel %d1,%d4 <== NOT EXECUTED
if ( start_offset ) {
4b50a: 4a8b tstl %a3 <== NOT EXECUTED
4b50c: 673c beqs 4b54a <IMFS_memfile_read+0x10e> <== 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 );
4b50e: 42a7 clrl %sp@- <== NOT EXECUTED
4b510: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b512: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b514: 4eb9 0004 b2fc jsr 4b2fc <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4b51a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b51e: 4a80 tstl %d0 <== NOT EXECUTED
4b520: 6700 00ae beqw 4b5d0 <IMFS_memfile_read+0x194> <== 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;
4b524: 99cb subal %a3,%a4 <== NOT EXECUTED
4b526: 2406 movel %d6,%d2 <== NOT EXECUTED
4b528: b9c6 cmpal %d6,%a4 <== NOT EXECUTED
4b52a: 6402 bccs 4b52e <IMFS_memfile_read+0xf2> <== NOT EXECUTED
4b52c: 240c movel %a4,%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 );
4b52e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b530: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b532: d7d0 addal %a0@,%a3 <== NOT EXECUTED
dest += to_copy;
block++;
4b534: 5284 addql #1,%d4 <== NOT EXECUTED
my_length -= to_copy;
4b536: 9c82 subl %d2,%d6 <== 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 );
4b538: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b53a: 2f07 movel %d7,%sp@- <== NOT EXECUTED
dest += to_copy;
4b53c: de82 addl %d2,%d7 <== 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 );
4b53e: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
4b544: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b548: 6002 bras 4b54c <IMFS_memfile_read+0x110> <== NOT EXECUTED
*/
last_byte = start + length;
if ( last_byte > the_jnode->info.file.size )
my_length = the_jnode->info.file.size - start;
copied = 0;
4b54a: 4282 clrl %d2 <== NOT EXECUTED
}
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
4b54c: 2679 0005 d1b4 moveal 5d1b4 <imfs_memfile_bytes_per_block>,%a3<== NOT EXECUTED
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4b552: 4bf9 0004 b2fc lea 4b2fc <IMFS_memfile_get_block_pointer>,%a5<== NOT EXECUTED
if ( !block_ptr )
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4b558: 49f9 0004 d1f8 lea 4d1f8 <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 ) {
4b55e: 6026 bras 4b586 <IMFS_memfile_read+0x14a> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4b560: 42a7 clrl %sp@- <== NOT EXECUTED
4b562: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b564: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b566: 4e95 jsr %a5@ <== NOT EXECUTED
if ( !block_ptr )
4b568: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b56c: 4a80 tstl %d0 <== NOT EXECUTED
4b56e: 6762 beqs 4b5d2 <IMFS_memfile_read+0x196> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], to_copy );
4b570: 2040 moveal %d0,%a0 <== NOT EXECUTED
dest += to_copy;
block++;
4b572: 5284 addql #1,%d4 <== NOT EXECUTED
my_length -= to_copy;
4b574: 9c8b subl %a3,%d6 <== NOT EXECUTED
copied += to_copy;
4b576: d48b addl %a3,%d2 <== 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 );
4b578: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b57a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4b57c: 2f07 movel %d7,%sp@- <== NOT EXECUTED
dest += to_copy;
4b57e: de8b addl %a3,%d7 <== 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 );
4b580: 4e94 jsr %a4@ <== NOT EXECUTED
dest += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4b582: 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 ) {
4b586: bcb9 0005 d1b4 cmpl 5d1b4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4b58c: 64d2 bccs 4b560 <IMFS_memfile_read+0x124> <== NOT EXECUTED
/*
* Phase 3: possibly the first part of one block
*/
IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );
if ( my_length ) {
4b58e: 4a86 tstl %d6 <== NOT EXECUTED
4b590: 6728 beqs 4b5ba <IMFS_memfile_read+0x17e> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4b592: 42a7 clrl %sp@- <== NOT EXECUTED
4b594: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b596: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b598: 4eb9 0004 b2fc jsr 4b2fc <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4b59e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b5a2: 4a80 tstl %d0 <== NOT EXECUTED
4b5a4: 672c beqs 4b5d2 <IMFS_memfile_read+0x196> <== NOT EXECUTED
return copied;
memcpy( dest, &(*block_ptr)[ 0 ], my_length );
4b5a6: 2040 moveal %d0,%a0 <== NOT EXECUTED
copied += my_length;
4b5a8: d486 addl %d6,%d2 <== 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 );
4b5aa: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4b5ac: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4b5ae: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b5b0: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
copied += my_length;
4b5b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
4b5ba: 42a7 clrl %sp@- <== NOT EXECUTED
4b5bc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4b5c0: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
4b5c6: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return copied;
4b5cc: 508f addql #8,%sp <== NOT EXECUTED
4b5ce: 6002 bras 4b5d2 <IMFS_memfile_read+0x196> <== 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;
4b5d0: 4282 clrl %d2 <== NOT EXECUTED
}
IMFS_update_atime( the_jnode );
return copied;
}
4b5d2: 2002 movel %d2,%d0 <== NOT EXECUTED
4b5d4: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4b5da: 4e5e unlk %fp <== NOT EXECUTED
0004b6a0 <IMFS_memfile_remove>:
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4b6a0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4b6a4: 48d7 1c3c moveml %d2-%d5/%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;
4b6a8: 2439 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d2<== NOT EXECUTED
4b6ae: e48a lsrl #2,%d2 <== NOT EXECUTED
* is better to stick to simple, easy to understand algorithms.
*/
int IMFS_memfile_remove(
IMFS_jnode_t *the_jnode
)
{
4b6b0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* + doubly indirect
* + triply indirect
*/
info = &the_jnode->info.file;
if ( info->indirect ) {
4b6b4: 4aaa 0054 tstl %a2@(84) <== NOT EXECUTED
4b6b8: 670e beqs 4b6c8 <IMFS_memfile_remove+0x28> <== NOT EXECUTED
memfile_free_blocks_in_table( &info->indirect, to_free );
4b6ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b6bc: 486a 0054 pea %a2@(84) <== NOT EXECUTED
4b6c0: 4eb9 0004 b65a jsr 4b65a <memfile_free_blocks_in_table> <== NOT EXECUTED
4b6c6: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->doubly_indirect ) {
4b6c8: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED
4b6cc: 673e beqs 4b70c <IMFS_memfile_remove+0x6c> <== NOT EXECUTED
4b6ce: 4283 clrl %d3 <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
if ( info->doubly_indirect[i] ) {
memfile_free_blocks_in_table(
4b6d0: 47f9 0004 b65a lea 4b65a <memfile_free_blocks_in_table>,%a3<== NOT EXECUTED
4b6d6: 601a bras 4b6f2 <IMFS_memfile_remove+0x52> <== NOT EXECUTED
memfile_free_blocks_in_table( &info->indirect, to_free );
}
if ( info->doubly_indirect ) {
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
if ( info->doubly_indirect[i] ) {
4b6d8: 2003 movel %d3,%d0 <== NOT EXECUTED
4b6da: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED
4b6de: e588 lsll #2,%d0 <== NOT EXECUTED
4b6e0: 4ab0 0800 tstl %a0@(00000000,%d0:l) <== NOT EXECUTED
4b6e4: 670a beqs 4b6f0 <IMFS_memfile_remove+0x50> <== NOT EXECUTED
memfile_free_blocks_in_table(
4b6e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b6e8: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
4b6ec: 4e93 jsr %a3@ <== NOT EXECUTED
4b6ee: 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++ ) {
4b6f0: 5283 addql #1,%d3 <== NOT EXECUTED
4b6f2: 2039 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d0<== NOT EXECUTED
4b6f8: e488 lsrl #2,%d0 <== NOT EXECUTED
4b6fa: b083 cmpl %d3,%d0 <== NOT EXECUTED
4b6fc: 62da bhis 4b6d8 <IMFS_memfile_remove+0x38> <== 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 );
4b6fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b700: 486a 0058 pea %a2@(88) <== NOT EXECUTED
4b704: 4eb9 0004 b65a jsr 4b65a <memfile_free_blocks_in_table> <== NOT EXECUTED
4b70a: 508f addql #8,%sp <== NOT EXECUTED
}
if ( info->triply_indirect ) {
4b70c: 4aaa 005c tstl %a2@(92) <== NOT EXECUTED
4b710: 6762 beqs 4b774 <IMFS_memfile_remove+0xd4> <== NOT EXECUTED
4b712: 4283 clrl %d3 <== NOT EXECUTED
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++ ) {
if ( p[j] ) {
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4b714: 49f9 0004 b65a lea 4b65a <memfile_free_blocks_in_table>,%a4<== NOT EXECUTED
4b71a: 603e bras 4b75a <IMFS_memfile_remove+0xba> <== NOT EXECUTED
}
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
}
if ( info->triply_indirect ) {
4b71c: 2a03 movel %d3,%d5 <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4b71e: 206a 005c moveal %a2@(92),%a0 <== NOT EXECUTED
}
memfile_free_blocks_in_table( &info->doubly_indirect, to_free );
}
if ( info->triply_indirect ) {
4b722: e58d lsll #2,%d5 <== NOT EXECUTED
for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {
p = (block_p *) info->triply_indirect[i];
4b724: 2670 5800 moveal %a0@(00000000,%d5:l),%a3 <== NOT EXECUTED
if ( !p ) /* ensure we have a valid pointer */
4b728: 4a8b tstl %a3 <== NOT EXECUTED
4b72a: 673a beqs 4b766 <IMFS_memfile_remove+0xc6> <== NOT EXECUTED
4b72c: 4284 clrl %d4 <== NOT EXECUTED
4b72e: 6010 bras 4b740 <IMFS_memfile_remove+0xa0> <== NOT EXECUTED
break;
for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {
if ( p[j] ) {
4b730: 4a93 tstl %a3@ <== NOT EXECUTED
4b732: 6708 beqs 4b73c <IMFS_memfile_remove+0x9c> <== NOT EXECUTED
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
4b734: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b736: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b738: 4e94 jsr %a4@ <== NOT EXECUTED
4b73a: 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++ ) {
4b73c: 5284 addql #1,%d4 <== NOT EXECUTED
4b73e: 588b addql #4,%a3 <== NOT EXECUTED
4b740: 2039 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d0<== NOT EXECUTED
4b746: e488 lsrl #2,%d0 <== NOT EXECUTED
4b748: b084 cmpl %d4,%d0 <== NOT EXECUTED
4b74a: 62e4 bhis 4b730 <IMFS_memfile_remove+0x90> <== NOT EXECUTED
if ( p[j] ) {
memfile_free_blocks_in_table( (block_p **)&p[j], to_free);
}
}
memfile_free_blocks_in_table(
4b74c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b74e: daaa 005c addl %a2@(92),%d5 <== 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++ ) {
4b752: 5283 addql #1,%d3 <== 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(
4b754: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b756: 4e94 jsr %a4@ <== 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++ ) {
4b758: 508f addql #8,%sp <== NOT EXECUTED
4b75a: 2039 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d0<== NOT EXECUTED
4b760: e488 lsrl #2,%d0 <== NOT EXECUTED
4b762: b083 cmpl %d3,%d0 <== NOT EXECUTED
4b764: 62b6 bhis 4b71c <IMFS_memfile_remove+0x7c> <== NOT EXECUTED
}
}
memfile_free_blocks_in_table(
(block_p **)&info->triply_indirect[i], to_free );
}
memfile_free_blocks_in_table(
4b766: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b768: 486a 005c pea %a2@(92) <== NOT EXECUTED
4b76c: 4eb9 0004 b65a jsr 4b65a <memfile_free_blocks_in_table> <== NOT EXECUTED
4b772: 508f addql #8,%sp <== NOT EXECUTED
(block_p **)&info->triply_indirect, to_free );
}
return 0;
}
4b774: 4280 clrl %d0 <== NOT EXECUTED
4b776: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
4b77c: 4e5e unlk %fp <== NOT EXECUTED
0004b780 <IMFS_memfile_remove_block>:
*/
MEMFILE_STATIC int IMFS_memfile_remove_block(
IMFS_jnode_t *the_jnode,
unsigned int block
)
{
4b780: 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 );
4b784: 42a7 clrl %sp@- <== NOT EXECUTED
4b786: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b78a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4b78e: 4eb9 0004 b2fc jsr 4b2fc <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
IMFS_assert( block_ptr );
ptr = *block_ptr;
4b794: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b796: 2210 movel %a0@,%d1 <== NOT EXECUTED
*block_ptr = 0;
4b798: 4290 clrl %a0@ <== NOT EXECUTED
memfile_free_block( ptr );
4b79a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b79c: 4eb9 0004 b640 jsr 4b640 <memfile_free_block> <== NOT EXECUTED
return 1;
}
4b7a2: 7001 moveq #1,%d0 <== NOT EXECUTED
4b7a4: 4e5e unlk %fp <== NOT EXECUTED
0004b88c <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 ) {
4b88c: 4280 clrl %d0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4b88e: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
4b892: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4b896: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4b89a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4b89e: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4b8a2: 2c2e 0018 movel %fp@(24),%d6 <== 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;
4b8a6: 2046 moveal %d6,%a0 <== NOT EXECUTED
4b8a8: d1c3 addal %d3,%a0 <== NOT EXECUTED
if ( last_byte > the_jnode->info.file.size ) {
4b8aa: 2208 movel %a0,%d1 <== NOT EXECUTED
IMFS_jnode_t *the_jnode,
off_t start,
const unsigned char *source,
unsigned int length
)
{
4b8ac: 2e2e 0014 movel %fp@(20),%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;
if ( last_byte > the_jnode->info.file.size ) {
4b8b0: 282a 004c movel %a2@(76),%d4 <== NOT EXECUTED
4b8b4: 2a2a 0050 movel %a2@(80),%d5 <== NOT EXECUTED
4b8b8: 9a81 subl %d1,%d5 <== NOT EXECUTED
4b8ba: 9980 subxl %d0,%d4 <== NOT EXECUTED
4b8bc: 6c28 bges 4b8e6 <IMFS_memfile_write+0x5a> <== NOT EXECUTED
status = IMFS_memfile_extend( the_jnode, last_byte );
4b8be: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b8c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b8c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b8c4: 4eb9 0004 b7a8 jsr 4b7a8 <IMFS_memfile_extend> <== NOT EXECUTED
if ( status )
4b8ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b8ce: 4a80 tstl %d0 <== NOT EXECUTED
4b8d0: 6714 beqs 4b8e6 <IMFS_memfile_write+0x5a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4b8d2: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4b8d8: 741c moveq #28,%d2 <== NOT EXECUTED
4b8da: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b8dc: 387c ffff moveaw #-1,%a4 <== NOT EXECUTED
4b8e0: 2082 movel %d2,%a0@ <== NOT EXECUTED
4b8e2: 6000 0102 braw 4b9e6 <IMFS_memfile_write+0x15a> <== NOT EXECUTED
*/
/*
* Phase 1: possibly the last part of one block
*/
start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
4b8e6: 2879 0005 d1b4 moveal 5d1b4 <imfs_memfile_bytes_per_block>,%a4<== NOT EXECUTED
4b8ec: 2a0c movel %a4,%d5 <== NOT EXECUTED
4b8ee: 5bc4 smi %d4 <== NOT EXECUTED
4b8f0: 49c4 extbl %d4 <== NOT EXECUTED
4b8f2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b8f4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b8f6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b8f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b8fa: 4eb9 0005 8b9c jsr 58b9c <__moddi3> <== NOT EXECUTED
4b900: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b904: 2641 moveal %d1,%a3 <== NOT EXECUTED
block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
4b906: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b908: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b90a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b90c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b90e: 4eb9 0005 87e8 jsr 587e8 <__divdi3> <== NOT EXECUTED
4b914: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b918: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( start_offset ) {
4b91a: 4a8b tstl %a3 <== NOT EXECUTED
4b91c: 673a beqs 4b958 <IMFS_memfile_write+0xcc> <== 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 );
4b91e: 42a7 clrl %sp@- <== NOT EXECUTED
4b920: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b922: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b924: 4eb9 0004 b2fc jsr 4b2fc <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4b92a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b92e: 4a80 tstl %d0 <== NOT EXECUTED
4b930: 6700 00b2 beqw 4b9e4 <IMFS_memfile_write+0x158> <== 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;
4b934: 99cb subal %a3,%a4 <== NOT EXECUTED
4b936: bc8c cmpl %a4,%d6 <== NOT EXECUTED
4b938: 6402 bccs 4b93c <IMFS_memfile_write+0xb0> <== NOT EXECUTED
4b93a: 2846 moveal %d6,%a4 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4b93c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4b93e: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
block++;
4b940: 5282 addql #1,%d2 <== NOT EXECUTED
my_length -= to_copy;
4b942: 9c8c subl %a4,%d6 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4b944: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b946: d7d0 addal %a0@,%a3 <== NOT EXECUTED
src += to_copy;
4b948: de8c addl %a4,%d7 <== NOT EXECUTED
block,
to_copy,
src
);
#endif
memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
4b94a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b94c: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
src += to_copy;
block++;
my_length -= to_copy;
copied += to_copy;
4b952: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b956: 6002 bras 4b95a <IMFS_memfile_write+0xce> <== NOT EXECUTED
status = IMFS_memfile_extend( the_jnode, last_byte );
if ( status )
rtems_set_errno_and_return_minus_one( ENOSPC );
}
copied = 0;
4b958: 99cc subal %a4,%a4 <== NOT EXECUTED
/*
* Phase 2: all of zero of more blocks
*/
to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;
4b95a: 2839 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%d4<== NOT EXECUTED
while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4b960: 4bf9 0004 b2fc lea 4b2fc <IMFS_memfile_get_block_pointer>,%a5<== 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 );
4b966: 47f9 0004 d1f8 lea 4d1f8 <memcpy>,%a3 <== 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 ) {
4b96c: 6026 bras 4b994 <IMFS_memfile_write+0x108> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4b96e: 42a7 clrl %sp@- <== NOT EXECUTED
4b970: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b972: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b974: 4e95 jsr %a5@ <== NOT EXECUTED
if ( !block_ptr )
4b976: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b97a: 4a80 tstl %d0 <== NOT EXECUTED
4b97c: 6768 beqs 4b9e6 <IMFS_memfile_write+0x15a> <== 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 );
4b97e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b980: 2040 moveal %d0,%a0 <== NOT EXECUTED
src += to_copy;
block++;
4b982: 5282 addql #1,%d2 <== NOT EXECUTED
my_length -= to_copy;
4b984: 9c84 subl %d4,%d6 <== 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(
4b986: d9c4 addal %d4,%a4 <== 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 );
4b988: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b98a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
src += to_copy;
4b98c: de84 addl %d4,%d7 <== 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 );
4b98e: 4e93 jsr %a3@ <== 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(
4b990: 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 ) {
4b994: bcb9 0005 d1b4 cmpl 5d1b4 <imfs_memfile_bytes_per_block>,%d6<== NOT EXECUTED
4b99a: 64d2 bccs 4b96e <IMFS_memfile_write+0xe2> <== 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 ) {
4b99c: 4a86 tstl %d6 <== NOT EXECUTED
4b99e: 6728 beqs 4b9c8 <IMFS_memfile_write+0x13c> <== NOT EXECUTED
block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
4b9a0: 42a7 clrl %sp@- <== NOT EXECUTED
4b9a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b9a4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b9a6: 4eb9 0004 b2fc jsr 4b2fc <IMFS_memfile_get_block_pointer> <== NOT EXECUTED
if ( !block_ptr )
4b9ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b9b0: 4a80 tstl %d0 <== NOT EXECUTED
4b9b2: 6732 beqs 4b9e6 <IMFS_memfile_write+0x15a> <== 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 );
4b9b4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4b9b6: 2040 moveal %d0,%a0 <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4b9b8: d9c6 addal %d6,%a4 <== 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 );
4b9ba: 2f07 movel %d7,%sp@- <== NOT EXECUTED
4b9bc: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4b9be: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
my_length = 0;
copied += to_copy;
4b9c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
4b9c8: 42a7 clrl %sp@- <== NOT EXECUTED
4b9ca: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4b9ce: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
4b9d4: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
return copied;
4b9d8: 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 );
4b9da: 2540 0040 movel %d0,%a2@(64) <== NOT EXECUTED
4b9de: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
return copied;
4b9e2: 6002 bras 4b9e6 <IMFS_memfile_write+0x15a> <== 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;
4b9e4: 99cc subal %a4,%a4 <== NOT EXECUTED
}
IMFS_mtime_ctime_update( the_jnode );
return copied;
}
4b9e6: 200c movel %a4,%d0 <== NOT EXECUTED
4b9e8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4b9ee: 4e5e unlk %fp <== NOT EXECUTED
00041f04 <IMFS_mknod>:
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
41f04: 4e56 ffb4 linkw %fp,#-76
41f08: 48d7 003c moveml %d2-%d5,%sp@
41f0c: 262e 0008 movel %fp@(8),%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 );
41f10: 2f03 movel %d3,%sp@-
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
41f12: 242e 000c movel %fp@(12),%d2
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 );
41f16: 4eb9 0004 dda4 jsr 4dda4 <strlen>
41f1c: 588f addql #4,%sp
41f1e: 486e fffc pea %fp@(-4)
41f22: 486e ffc7 pea %fp@(-57)
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
41f26: 2a2e 0010 movel %fp@(16),%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 );
41f2a: 2f00 movel %d0,%sp@-
const char *token, /* IN */
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
41f2c: 282e 0014 movel %fp@(20),%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 );
41f30: 2f03 movel %d3,%sp@-
41f32: 4eb9 0004 93c0 jsr 493c0 <IMFS_get_token>
/*
* Figure out what type of IMFS node this is.
*/
if ( S_ISDIR(mode) )
41f38: 4fef 0010 lea %sp@(16),%sp
41f3c: 2002 movel %d2,%d0
41f3e: 0280 0000 f000 andil #61440,%d0
41f44: 0c80 0000 4000 cmpil #16384,%d0
41f4a: 6730 beqs 41f7c <IMFS_mknod+0x78>
type = IMFS_DIRECTORY;
else if ( S_ISREG(mode) )
41f4c: 0c80 0000 8000 cmpil #32768,%d0
41f52: 672c beqs 41f80 <IMFS_mknod+0x7c>
type = IMFS_MEMORY_FILE;
else if ( S_ISBLK(mode) || S_ISCHR(mode) ) {
41f54: 0c80 0000 6000 cmpil #24576,%d0
41f5a: 6708 beqs 41f64 <IMFS_mknod+0x60>
41f5c: 0c80 0000 2000 cmpil #8192,%d0
41f62: 660c bnes 41f70 <IMFS_mknod+0x6c> <== NEVER TAKEN
type = IMFS_DEVICE;
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
41f64: 2d45 ffe8 movel %d5,%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;
41f68: 7002 moveq #2,%d0
rtems_filesystem_split_dev_t( dev, info.device.major, info.device.minor );
41f6a: 2d44 ffec movel %d4,%fp@(-20)
41f6e: 6016 bras 41f86 <IMFS_mknod+0x82>
} else if (S_ISFIFO(mode))
41f70: 0c80 0000 1000 cmpil #4096,%d0 <== NOT EXECUTED
41f76: 670c beqs 41f84 <IMFS_mknod+0x80> <== NOT EXECUTED
mode_t mode, /* IN */
dev_t dev, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN/OUT */
)
{
IMFS_token_types type = 0;
41f78: 4280 clrl %d0 <== NOT EXECUTED
41f7a: 600a bras 41f86 <IMFS_mknod+0x82> <== NOT EXECUTED
/*
* Figure out what type of IMFS node this is.
*/
if ( S_ISDIR(mode) )
type = IMFS_DIRECTORY;
41f7c: 7001 moveq #1,%d0
41f7e: 6006 bras 41f86 <IMFS_mknod+0x82>
else if ( S_ISREG(mode) )
type = IMFS_MEMORY_FILE;
41f80: 7005 moveq #5,%d0
41f82: 6002 bras 41f86 <IMFS_mknod+0x82>
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;
41f84: 7007 moveq #7,%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 );
41f86: 486e ffe8 pea %fp@(-24)
41f8a: 2f02 movel %d2,%sp@-
41f8c: 486e ffc7 pea %fp@(-57)
41f90: 2f00 movel %d0,%sp@-
41f92: 2f2e 0018 movel %fp@(24),%sp@-
41f96: 4eb9 0004 8b26 jsr 48b26 <IMFS_create_node>
if ( !new_node )
41f9c: 4fef 0014 lea %sp@(20),%sp
41fa0: 4a80 tstl %d0
41fa2: 6610 bnes 41fb4 <IMFS_mknod+0xb0> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( ENOMEM );
41fa4: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
41faa: 2040 moveal %d0,%a0 <== NOT EXECUTED
41fac: 700c moveq #12,%d0 <== NOT EXECUTED
41fae: 2080 movel %d0,%a0@ <== NOT EXECUTED
41fb0: 70ff moveq #-1,%d0 <== NOT EXECUTED
41fb2: 6002 bras 41fb6 <IMFS_mknod+0xb2> <== NOT EXECUTED
return 0;
41fb4: 4280 clrl %d0
}
41fb6: 4cee 003c ffb4 moveml %fp@(-76),%d2-%d5
41fbc: 4e5e unlk %fp <== NOT EXECUTED
00041fc0 <IMFS_mount>:
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
41fc0: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <rtems/seterr.h>
int IMFS_mount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
41fc2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
41fc6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
IMFS_jnode_t *node;
node = mt_entry->mt_point_node.node_access;
41fca: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
41fce: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED
41fd2: 6710 beqs 41fe4 <IMFS_mount+0x24> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
41fd4: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
41fda: 2040 moveal %d0,%a0 <== NOT EXECUTED
41fdc: 7014 moveq #20,%d0 <== NOT EXECUTED
41fde: 2080 movel %d0,%a0@ <== NOT EXECUTED
41fe0: 70ff moveq #-1,%d0 <== NOT EXECUTED
41fe2: 6006 bras 41fea <IMFS_mount+0x2a> <== 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;
41fe4: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
return 0;
41fe8: 4280 clrl %d0 <== NOT EXECUTED
}
41fea: 4e5e unlk %fp <== NOT EXECUTED
...
00044660 <IMFS_print_jnode>:
* This routine prints the contents of the specified jnode.
*/
void IMFS_print_jnode(
IMFS_jnode_t *the_jnode
)
{
44660: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
44664: 2079 0006 1f68 moveal 61f68 <_impure_ptr>,%a0 <== NOT EXECUTED
* This routine prints the contents of the specified jnode.
*/
void IMFS_print_jnode(
IMFS_jnode_t *the_jnode
)
{
4466a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4466c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
44670: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
44672: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
switch( the_jnode->type ) {
44676: 7406 moveq #6,%d2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode
)
{
IMFS_assert( the_jnode );
fprintf(stdout, "%s", the_jnode->name );
44678: 486a 000c pea %a2@(12) <== NOT EXECUTED
4467c: 4eb9 0005 0c70 jsr 50c70 <fputs> <== NOT EXECUTED
switch( the_jnode->type ) {
44682: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
44686: 2200 movel %d0,%d1 <== NOT EXECUTED
44688: 508f addql #8,%sp <== NOT EXECUTED
4468a: 5381 subql #1,%d1 <== NOT EXECUTED
4468c: b481 cmpl %d1,%d2 <== NOT EXECUTED
4468e: 6500 009c bcsw 4472c <IMFS_print_jnode+0xcc> <== NOT EXECUTED
44692: 2079 0006 1f68 moveal 61f68 <_impure_ptr>,%a0 <== NOT EXECUTED
44698: 303b 1a08 movew %pc@(446a2 <IMFS_print_jnode+0x42>,%d1:l:2),%d0<== NOT EXECUTED
4469c: 48c0 extl %d0 <== NOT EXECUTED
4469e: 4efb 0802 jmp %pc@(446a2 <IMFS_print_jnode+0x42>,%d0:l)<== NOT EXECUTED
446a2: 000e .short 0x000e <== NOT EXECUTED
446a4: 0022 .short 0x0022 <== NOT EXECUTED
446a6: 006a .short 0x006a <== NOT EXECUTED
446a8: 006a .short 0x006a <== NOT EXECUTED
446aa: 0050 .short 0x0050 <== NOT EXECUTED
446ac: 0032 .short 0x0032 <== NOT EXECUTED
446ae: 0076 .short 0x0076 <== NOT EXECUTED
case IMFS_DIRECTORY:
fprintf(stdout, "/" );
446b0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
446b4: 4878 002f pea 2f <OPER2+0x1b> <== NOT EXECUTED
446b8: 4eb9 0005 0ba0 jsr 50ba0 <fputc> <== NOT EXECUTED
break;
446be: 508f addql #8,%sp <== NOT EXECUTED
446c0: 6000 0088 braw 4474a <IMFS_print_jnode+0xea> <== NOT EXECUTED
case IMFS_DEVICE:
fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",
446c4: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED
446c8: 2f2a 004c movel %a2@(76),%sp@- <== NOT EXECUTED
446cc: 4879 0006 05be pea 605be <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
446d2: 600e bras 446e2 <IMFS_print_jnode+0x82> <== NOT EXECUTED
the_jnode->info.device.major, the_jnode->info.device.minor );
break;
case IMFS_LINEAR_FILE:
fprintf(stdout, " (file %" PRId32 " %p)",
446d4: 2f2a 0054 movel %a2@(84),%sp@- <== NOT EXECUTED
446d8: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED
446dc: 4879 0006 05d1 pea 605d1 <IntUartPollCallbacks.6370+0x33> <== NOT EXECUTED
446e2: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
446e6: 4eb9 0005 0b22 jsr 50b22 <fprintf> <== NOT EXECUTED
(uint32_t)the_jnode->info.linearfile.size,
the_jnode->info.linearfile.direct
);
break;
446ec: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
446f0: 6058 bras 4474a <IMFS_print_jnode+0xea> <== NOT EXECUTED
the_jnode->info.file.indirect,
the_jnode->info.file.doubly_indirect,
the_jnode->info.file.triply_indirect
);
#else
fprintf(stdout, " (file %" PRId32 ")",
446f2: 2f2a 0050 movel %a2@(80),%sp@- <== NOT EXECUTED
446f6: 4879 0006 05e0 pea 605e0 <IntUartPollCallbacks.6370+0x42> <== NOT EXECUTED
446fc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44700: 4eb9 0005 0b22 jsr 50b22 <fprintf> <== NOT EXECUTED
(uint32_t)the_jnode->info.file.size );
#endif
break;
44706: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4470a: 603e bras 4474a <IMFS_print_jnode+0xea> <== NOT EXECUTED
case IMFS_HARD_LINK:
fprintf(stdout, " links not printed\n" );
return;
case IMFS_SYM_LINK:
fprintf(stdout, " links not printed\n" );
4470c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
44710: 4879 0006 05ec pea 605ec <IntUartPollCallbacks.6370+0x4e> <== NOT EXECUTED
44716: 600a bras 44722 <IMFS_print_jnode+0xc2> <== NOT EXECUTED
return;
case IMFS_FIFO:
fprintf(stdout, " FIFO not printed\n" );
44718: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4471c: 4879 0006 0600 pea 60600 <IntUartPollCallbacks.6370+0x62> <== NOT EXECUTED
44722: 4eb9 0005 0c70 jsr 50c70 <fputs> <== NOT EXECUTED
return;
44728: 508f addql #8,%sp <== NOT EXECUTED
4472a: 6038 bras 44764 <IMFS_print_jnode+0x104> <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
4472c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4472e: 4879 0006 0613 pea 60613 <IntUartPollCallbacks.6370+0x75> <== NOT EXECUTED
44734: 2079 0006 1f68 moveal 61f68 <_impure_ptr>,%a0 <== NOT EXECUTED
4473a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4473e: 4eb9 0005 0b22 jsr 50b22 <fprintf> <== NOT EXECUTED
return;
44744: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44748: 601a bras 44764 <IMFS_print_jnode+0x104> <== NOT EXECUTED
}
puts("");
}
4474a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
4474e: 203c 0006 0cc6 movel #396486,%d0 <== NOT EXECUTED
}
44754: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
44758: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4475c: 4e5e unlk %fp <== NOT EXECUTED
default:
fprintf(stdout, " bad type %d\n", the_jnode->type );
return;
}
puts("");
4475e: 4ef9 0005 243e jmp 5243e <puts> <== NOT EXECUTED
}
44764: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44768: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4476c: 4e5e unlk %fp <== NOT EXECUTED
00042004 <IMFS_readlink>:
node = loc->node_access;
IMFS_assert( node->type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
42004: 4280 clrl %d0 <== NOT EXECUTED
ssize_t IMFS_readlink(
rtems_filesystem_location_info_t *loc,
char *buf, /* OUT */
size_t bufsize
)
{
42006: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *node;
ssize_t i;
node = loc->node_access;
4200a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
ssize_t IMFS_readlink(
rtems_filesystem_location_info_t *loc,
char *buf, /* OUT */
size_t bufsize
)
{
4200e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *node;
ssize_t i;
node = loc->node_access;
42010: 2250 moveal %a0@,%a1 <== NOT EXECUTED
ssize_t IMFS_readlink(
rtems_filesystem_location_info_t *loc,
char *buf, /* OUT */
size_t bufsize
)
{
42012: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42014: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
IMFS_jnode_t *node;
ssize_t i;
node = loc->node_access;
42018: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
IMFS_assert( node->type == IMFS_SYM_LINK );
for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
4201c: 6004 bras 42022 <IMFS_readlink+0x1e> <== NOT EXECUTED
4201e: 5280 addql #1,%d0 <== NOT EXECUTED
buf[i] = node->info.sym_link.name[i];
42020: 10c1 moveb %d1,%a0@+ <== 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++ )
42022: b480 cmpl %d0,%d2 <== NOT EXECUTED
42024: 630a blss 42030 <IMFS_readlink+0x2c> <== NOT EXECUTED
42026: 2469 004c moveal %a1@(76),%a2 <== NOT EXECUTED
4202a: 1232 0800 moveb %a2@(00000000,%d0:l),%d1 <== NOT EXECUTED
4202e: 66ee bnes 4201e <IMFS_readlink+0x1a> <== NOT EXECUTED
buf[i] = node->info.sym_link.name[i];
return i;
}
42030: 241f movel %sp@+,%d2 <== NOT EXECUTED
42032: 245f moveal %sp@+,%a2 <== NOT EXECUTED
42034: 4e5e unlk %fp <== NOT EXECUTED
00042038 <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 */
)
{
42038: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
IMFS_jnode_t *new_parent;
the_jnode = old_loc->node_access;
4203c: 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 */
)
{
42040: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
IMFS_jnode_t *new_parent;
the_jnode = old_loc->node_access;
42042: 2450 moveal %a0@,%a2 <== NOT EXECUTED
strncpy( the_jnode->name, new_name, IMFS_NAME_MAX );
42044: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
42048: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4204c: 486a 000c pea %a2@(12) <== NOT EXECUTED
42050: 4eb9 0004 ddbc jsr 4ddbc <strncpy> <== NOT EXECUTED
if ( the_jnode->Parent != NULL )
42056: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4205a: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4205e: 670a beqs 4206a <IMFS_rename+0x32> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
42060: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42062: 4eb9 0004 5fec jsr 45fec <_Chain_Extract> <== NOT EXECUTED
42068: 588f addql #4,%sp <== NOT EXECUTED
rtems_chain_extract( (rtems_chain_node *) the_jnode );
new_parent = new_parent_loc->node_access;
4206a: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
4206e: 2050 moveal %a0@,%a0 <== NOT EXECUTED
the_jnode->Parent = new_parent;
42070: 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 );
42074: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42076: 4868 004c pea %a0@(76) <== NOT EXECUTED
4207a: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append> <== NOT EXECUTED
rtems_chain_append( &new_parent->info.directory.Entries, &the_jnode->Node );
/*
* Update the time.
*/
IMFS_update_ctime( the_jnode );
42080: 42a7 clrl %sp@- <== NOT EXECUTED
42082: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
42086: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
4208c: 256e fff8 0044 movel %fp@(-8),%a2@(68) <== NOT EXECUTED
return 0;
}
42092: 4280 clrl %d0 <== NOT EXECUTED
42094: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
42098: 4e5e unlk %fp <== NOT EXECUTED
00049526 <IMFS_rmnod>:
int IMFS_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
49526: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
4952a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
int IMFS_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4952e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
49530: 2410 movel %a0@,%d2 <== NOT EXECUTED
IMFS_create_orphan( jnode );
49532: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49534: 4eb9 0004 9474 jsr 49474 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( jnode );
4953a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4953c: 4eb9 0004 94b8 jsr 494b8 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
49542: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
49546: 4280 clrl %d0 <== NOT EXECUTED
49548: 4e5e unlk %fp <== NOT EXECUTED
0004954c <IMFS_stat>:
IMFS_device_t *io;
the_jnode = loc->node_access;
switch ( the_jnode->type ) {
4954c: 7205 moveq #5,%d1
int IMFS_stat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4954e: 4e56 0000 linkw %fp,#0
49552: 206e 000c moveal %fp@(12),%a0
49556: 2f0a movel %a2,%sp@-
49558: 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;
4955c: 2252 moveal %a2@,%a1
switch ( the_jnode->type ) {
4955e: 2029 0048 movel %a1@(72),%d0
49562: 5580 subql #2,%d0
49564: b280 cmpl %d0,%d1
49566: 653e bcss 495a6 <IMFS_stat+0x5a> <== NEVER TAKEN
49568: 303b 0a08 movew %pc@(49572 <IMFS_stat+0x26>,%d0:l:2),%d0
4956c: 48c0 extl %d0
4956e: 4efb 0802 jmp %pc@(49572 <IMFS_stat+0x26>,%d0:l)
49572: 000c .short 0x000c <== NOT EXECUTED
49574: 0034 .short 0x0034 <== NOT EXECUTED
49576: 0026 .short 0x0026 <== NOT EXECUTED
49578: 001c .short 0x001c <== NOT EXECUTED
4957a: 001c .short 0x001c <== NOT EXECUTED
4957c: 0026 .short 0x0026 <== NOT EXECUTED
case IMFS_DEVICE:
io = &the_jnode->info.device;
buf->st_rdev = rtems_filesystem_make_dev_t( io->major, io->minor );
4957e: 2029 0050 movel %a1@(80),%d0
49582: 2169 004c 0016 movel %a1@(76),%a0@(22)
49588: 2140 001a movel %d0,%a0@(26)
break;
4958c: 602a bras 495b8 <IMFS_stat+0x6c>
case IMFS_LINEAR_FILE:
case IMFS_MEMORY_FILE:
buf->st_size = the_jnode->info.file.size;
4958e: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED
49592: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED
49596: 6004 bras 4959c <IMFS_stat+0x50> <== NOT EXECUTED
case IMFS_SYM_LINK:
buf->st_size = 0;
break;
case IMFS_FIFO:
buf->st_size = 0;
49598: 4280 clrl %d0 <== NOT EXECUTED
4959a: 4281 clrl %d1 <== NOT EXECUTED
4959c: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED
495a0: 2141 0022 movel %d1,%a0@(34) <== NOT EXECUTED
break;
495a4: 6012 bras 495b8 <IMFS_stat+0x6c> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
495a6: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
495ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
495ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
495b0: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
495b6: 6046 bras 495fe <IMFS_stat+0xb2> <== 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;
495b8: 246a 0010 moveal %a2@(16),%a2
buf->st_dev =
rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance );
495bc: 246a 0034 moveal %a2@(52),%a2
495c0: 2012 movel %a2@,%d0
buf->st_mode = the_jnode->st_mode;
495c2: 2169 002e 000c movel %a1@(46),%a0@(12)
buf->st_nlink = the_jnode->st_nlink;
495c8: 3169 0032 0010 movew %a1@(50),%a0@(16)
buf->st_ino = the_jnode->st_ino;
495ce: 2169 0034 0008 movel %a1@(52),%a0@(8)
buf->st_uid = the_jnode->st_uid;
495d4: 3169 0038 0012 movew %a1@(56),%a0@(18)
buf->st_gid = the_jnode->st_gid;
495da: 3169 003a 0014 movew %a1@(58),%a0@(20)
buf->st_atime = the_jnode->stat_atime;
495e0: 2169 003c 0026 movel %a1@(60),%a0@(38)
buf->st_mtime = the_jnode->stat_mtime;
495e6: 2169 0040 002e movel %a1@(64),%a0@(46)
buf->st_ctime = the_jnode->stat_ctime;
495ec: 2169 0044 0036 movel %a1@(68),%a0@(54)
/*
* 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 =
495f2: 2140 0004 movel %d0,%a0@(4)
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
495f6: 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 =
495f8: 20bc 0000 fffe movel #65534,%a0@
buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->stat_ctime;
return 0;
}
495fe: 246e fffc moveal %fp@(-4),%a2
49602: 4e5e unlk %fp
...
0004209c <IMFS_symlink>:
int IMFS_symlink(
rtems_filesystem_location_info_t *parent_loc,
const char *link_name,
const char *node_name
)
{
4209c: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
420a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
420a2: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
420a6: 2f02 movel %d2,%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 );
420a8: 240e movel %fp,%d2 <== NOT EXECUTED
420aa: 0682 ffff ffc7 addil #-57,%d2 <== NOT EXECUTED
420b0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
420b2: 4eb9 0004 dda4 jsr 4dda4 <strlen> <== NOT EXECUTED
420b8: 588f addql #4,%sp <== NOT EXECUTED
420ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED
420be: 2f02 movel %d2,%sp@- <== NOT EXECUTED
420c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
420c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
420c4: 4eb9 0004 93c0 jsr 493c0 <IMFS_get_token> <== NOT EXECUTED
/*
* Duplicate link name
*/
info.sym_link.name = strdup(link_name);
420ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
420ce: 4eb9 0004 d914 jsr 4d914 <strdup> <== NOT EXECUTED
if (info.sym_link.name == NULL) {
420d4: 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);
420d8: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
if (info.sym_link.name == NULL) {
420dc: 660e bnes 420ec <IMFS_symlink+0x50> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOMEM);
420de: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
420e4: 720c moveq #12,%d1 <== NOT EXECUTED
420e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
420e8: 2081 movel %d1,%a0@ <== NOT EXECUTED
420ea: 603a bras 42126 <IMFS_symlink+0x8a> <== 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(
420ec: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED
420f0: 2f3c 0000 a1ff movel #41471,%sp@- <== NOT EXECUTED
420f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
420f8: 4878 0004 pea 4 <CONTEXT_ARG> <== NOT EXECUTED
420fc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42100: 4eb9 0004 8b26 jsr 48b26 <IMFS_create_node> <== NOT EXECUTED
new_name,
( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
&info
);
if (new_node == NULL) {
42106: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4210a: 4a80 tstl %d0 <== NOT EXECUTED
4210c: 661c bnes 4212a <IMFS_symlink+0x8e> <== NOT EXECUTED
free(info.sym_link.name);
4210e: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
42112: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(ENOMEM);
42118: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4211e: 588f addql #4,%sp <== NOT EXECUTED
42120: 2040 moveal %d0,%a0 <== NOT EXECUTED
42122: 700c moveq #12,%d0 <== NOT EXECUTED
42124: 2080 movel %d0,%a0@ <== NOT EXECUTED
42126: 70ff moveq #-1,%d0 <== NOT EXECUTED
42128: 6002 bras 4212c <IMFS_symlink+0x90> <== NOT EXECUTED
}
return 0;
4212a: 4280 clrl %d0 <== NOT EXECUTED
}
4212c: 242e ffbc movel %fp@(-68),%d2 <== NOT EXECUTED
42130: 262e ffc0 movel %fp@(-64),%d3 <== NOT EXECUTED
42134: 4e5e unlk %fp <== NOT EXECUTED
00042138 <IMFS_unlink>:
/*
* If this is the last last pointer to the node
* free the node.
*/
if ( node->type == IMFS_HARD_LINK ) {
42138: 7003 moveq #3,%d0 <== NOT EXECUTED
int IMFS_unlink(
rtems_filesystem_location_info_t *parentloc, /* IN */
rtems_filesystem_location_info_t *loc /* IN */
)
{
4213a: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
4213e: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
42142: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
42146: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
IMFS_jnode_t *node;
rtems_filesystem_location_info_t the_link;
int result = 0;
node = loc->node_access;
4214a: 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 ) {
4214c: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED
42150: 6600 0082 bnew 421d4 <IMFS_unlink+0x9c> <== NOT EXECUTED
if ( !node->info.hard_link.link_node )
42154: 282b 004c movel %a3@(76),%d4 <== NOT EXECUTED
42158: 660e bnes 42168 <IMFS_unlink+0x30> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4215a: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42160: 2040 moveal %d0,%a0 <== NOT EXECUTED
42162: 7016 moveq #22,%d0 <== NOT EXECUTED
42164: 2080 movel %d0,%a0@ <== NOT EXECUTED
42166: 607e bras 421e6 <IMFS_unlink+0xae> <== NOT EXECUTED
the_link = *loc;
42168: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
4216c: 240e movel %fp,%d2 <== NOT EXECUTED
4216e: 0682 ffff ffe4 addil #-28,%d2 <== NOT EXECUTED
42174: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42176: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42178: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
the_link.node_access = node->info.hard_link.link_node;
4217e: 2d44 ffe4 movel %d4,%fp@(-28) <== 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)
42182: 7801 moveq #1,%d4 <== 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;
IMFS_Set_handlers( &the_link );
42184: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42186: 4eb9 0004 8c74 jsr 48c74 <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)
4218c: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED
42190: 4281 clrl %d1 <== NOT EXECUTED
42192: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42196: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
4219a: 3200 movew %d0,%d1 <== NOT EXECUTED
4219c: b881 cmpl %d1,%d4 <== NOT EXECUTED
4219e: 6616 bnes 421b6 <IMFS_unlink+0x7e> <== NOT EXECUTED
{
result = (*the_link.handlers->rmnod_h)( parentloc, &the_link );
421a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
421a2: 206e ffec moveal %fp@(-20),%a0 <== NOT EXECUTED
421a6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
421a8: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED
421ac: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 )
421ae: 508f addql #8,%sp <== NOT EXECUTED
421b0: 4a80 tstl %d0 <== NOT EXECUTED
421b2: 6720 beqs 421d4 <IMFS_unlink+0x9c> <== NOT EXECUTED
421b4: 6030 bras 421e6 <IMFS_unlink+0xae> <== NOT EXECUTED
return -1;
}
else
{
node->info.hard_link.link_node->st_nlink --;
421b6: 5380 subql #1,%d0 <== NOT EXECUTED
421b8: 3140 0032 movew %d0,%a0@(50) <== NOT EXECUTED
IMFS_update_ctime( node->info.hard_link.link_node );
421bc: 42a7 clrl %sp@- <== NOT EXECUTED
421be: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
421c2: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
421c8: 206b 004c moveal %a3@(76),%a0 <== NOT EXECUTED
421cc: 508f addql #8,%sp <== NOT EXECUTED
421ce: 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 );
421d4: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED
421d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
421da: 2f03 movel %d3,%sp@- <== NOT EXECUTED
421dc: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED
421e0: 4e90 jsr %a0@ <== NOT EXECUTED
return result;
421e2: 508f addql #8,%sp <== NOT EXECUTED
421e4: 6002 bras 421e8 <IMFS_unlink+0xb0> <== NOT EXECUTED
if ( node->info.hard_link.link_node->st_nlink == 1)
{
result = (*the_link.handlers->rmnod_h)( parentloc, &the_link );
if ( result != 0 )
return -1;
421e6: 70ff moveq #-1,%d0 <== NOT EXECUTED
*/
result = (*loc->handlers->rmnod_h)( parentloc, loc );
return result;
}
421e8: 4cee 0c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a3 <== NOT EXECUTED
421ee: 4e5e unlk %fp <== NOT EXECUTED
...
000421f4 <IMFS_unmount>:
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
421f4: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <rtems/seterr.h>
int IMFS_unmount(
rtems_filesystem_mount_table_entry_t *mt_entry
)
{
421f6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *node;
node = mt_entry->mt_point_node.node_access;
421fa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
421fe: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
/*
* Is the node that we are mounting onto a directory node ?
*/
if ( node->type != IMFS_DIRECTORY )
42202: b0a8 0048 cmpl %a0@(72),%d0 <== NOT EXECUTED
42206: 670e beqs 42216 <IMFS_unmount+0x22> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
42208: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4220e: 7214 moveq #20,%d1 <== NOT EXECUTED
42210: 2040 moveal %d0,%a0 <== NOT EXECUTED
42212: 2081 movel %d1,%a0@ <== NOT EXECUTED
42214: 6012 bras 42228 <IMFS_unmount+0x34> <== NOT EXECUTED
/*
* Did the node indicate that there was a directory mounted here?
*/
if ( node->info.directory.mt_fs == NULL )
42216: 4aa8 0058 tstl %a0@(88) <== NOT EXECUTED
4221a: 6610 bnes 4222c <IMFS_unmount+0x38> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL ); /* XXX */
4221c: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42222: 2040 moveal %d0,%a0 <== NOT EXECUTED
42224: 7016 moveq #22,%d0 <== NOT EXECUTED
42226: 2080 movel %d0,%a0@ <== NOT EXECUTED
42228: 70ff moveq #-1,%d0 <== NOT EXECUTED
4222a: 6006 bras 42232 <IMFS_unmount+0x3e> <== 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;
4222c: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
return 0;
42230: 4280 clrl %d0 <== NOT EXECUTED
}
42232: 4e5e unlk %fp <== NOT EXECUTED
...
00042238 <IMFS_utime>:
int IMFS_utime(
rtems_filesystem_location_info_t *pathloc, /* IN */
time_t actime, /* IN */
time_t modtime /* IN */
)
{
42238: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
4223c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
int IMFS_utime(
rtems_filesystem_location_info_t *pathloc, /* IN */
time_t actime, /* IN */
time_t modtime /* IN */
)
{
42240: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
42242: 2450 moveal %a0@,%a2 <== NOT EXECUTED
the_jnode->stat_atime = actime;
42244: 256e 000c 003c movel %fp@(12),%a2@(60) <== NOT EXECUTED
the_jnode->stat_mtime = modtime;
4224a: 256e 0010 0040 movel %fp@(16),%a2@(64) <== NOT EXECUTED
the_jnode->stat_ctime = time( NULL );
42250: 42a7 clrl %sp@- <== NOT EXECUTED
42252: 4eb9 0005 006c jsr 5006c <time> <== NOT EXECUTED
42258: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
return 0;
}
4225c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
42260: 4280 clrl %d0 <== NOT EXECUTED
42262: 4e5e unlk %fp <== NOT EXECUTED
...
000429e8 <RTEMS_Malloc_Initialize>:
void RTEMS_Malloc_Initialize(
void *heap_begin,
uintptr_t heap_size,
size_t sbrk_amount
)
{
429e8: 4e56 fff4 linkw %fp,#-12
/*
* If configured, initialize the statistics support
*/
if ( rtems_malloc_statistics_helpers != NULL ) {
429ec: 2079 0005 c946 moveal 5c946 <rtems_malloc_statistics_helpers>,%a0
void RTEMS_Malloc_Initialize(
void *heap_begin,
uintptr_t heap_size,
size_t sbrk_amount
)
{
429f2: 48d7 001c moveml %d2-%d4,%sp@
429f6: 242e 0008 movel %fp@(8),%d2
429fa: 262e 000c movel %fp@(12),%d3
429fe: 282e 0010 movel %fp@(16),%d4
/*
* If configured, initialize the statistics support
*/
if ( rtems_malloc_statistics_helpers != NULL ) {
42a02: 4a88 tstl %a0
42a04: 6704 beqs 42a0a <RTEMS_Malloc_Initialize+0x22>
(*rtems_malloc_statistics_helpers->initialize)();
42a06: 2050 moveal %a0@,%a0
42a08: 4e90 jsr %a0@
}
/*
* Initialize the garbage collection list to start with nothing on it.
*/
malloc_deferred_frees_initialize();
42a0a: 4eb9 0004 2976 jsr 42976 <malloc_deferred_frees_initialize>
/*
* Initialize the optional sbrk support for extending the heap
*/
if ( rtems_malloc_sbrk_helpers != NULL ) {
42a10: 2079 0005 c94a moveal 5c94a <rtems_malloc_sbrk_helpers>,%a0
42a16: 4a88 tstl %a0
42a18: 670e beqs 42a28 <RTEMS_Malloc_Initialize+0x40>
heap_begin = (*rtems_malloc_sbrk_helpers->initialize)(
42a1a: 2f04 movel %d4,%sp@-
heap_begin,
sbrk_amount
);
heap_size = (uintptr_t) sbrk_amount;
42a1c: 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)(
42a1e: 2f02 movel %d2,%sp@-
42a20: 2050 moveal %a0@,%a0
42a22: 4e90 jsr %a0@
42a24: 508f addql #8,%sp <== NOT EXECUTED
42a26: 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 (
42a28: 4a39 0005 c944 tstb 5c944 <rtems_unified_work_area>
42a2e: 6618 bnes 42a48 <RTEMS_Malloc_Initialize+0x60>
!rtems_unified_work_area
&& rtems_configuration_get_do_zero_of_workspace()
42a30: 4a39 0005 c280 tstb 5c280 <Configuration+0x2c>
42a36: 6710 beqs 42a48 <RTEMS_Malloc_Initialize+0x60>
) {
memset( heap_begin, 0, heap_size );
42a38: 2f03 movel %d3,%sp@-
42a3a: 42a7 clrl %sp@-
42a3c: 2f02 movel %d2,%sp@-
42a3e: 4eb9 0004 d268 jsr 4d268 <memset>
42a44: 4fef 000c lea %sp@(12),%sp
* 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 ) {
42a48: 4a39 0005 c944 tstb 5c944 <rtems_unified_work_area>
42a4e: 6626 bnes 42a76 <RTEMS_Malloc_Initialize+0x8e>
void *area_begin,
uintptr_t area_size,
uintptr_t page_size
)
{
return _Heap_Initialize( heap, area_begin, area_size, page_size );
42a50: 4878 0004 pea 4 <CONTEXT_ARG>
42a54: 2f03 movel %d3,%sp@-
42a56: 2f02 movel %d2,%sp@-
42a58: 2f39 0005 c1b0 movel 5c1b0 <RTEMS_Malloc_Heap>,%sp@-
42a5e: 4eb9 0004 65c4 jsr 465c4 <_Heap_Initialize>
RTEMS_Malloc_Heap,
heap_begin,
heap_size,
CPU_HEAP_ALIGNMENT
);
if ( status == 0 ) {
42a64: 4fef 0010 lea %sp@(16),%sp
42a68: 4a80 tstl %d0
42a6a: 660a bnes 42a76 <RTEMS_Malloc_Initialize+0x8e>
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
42a6c: 4878 001a pea 1a <OPER2+0x6>
42a70: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred>
}
}
MSBUMP( space_available, _Protected_heap_Get_size(RTEMS_Malloc_Heap) );
42a76: 2f39 0005 c1b0 movel 5c1b0 <RTEMS_Malloc_Heap>,%sp@-
42a7c: 2439 0005 d9cc movel 5d9cc <rtems_malloc_statistics>,%d2
42a82: 4eb9 0004 6fe0 jsr 46fe0 <_Protected_heap_Get_size>
42a88: 588f addql #4,%sp
42a8a: d082 addl %d2,%d0
}
42a8c: 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) );
42a92: 23c0 0005 d9cc movel %d0,5d9cc <rtems_malloc_statistics>
}
42a98: 4e5e unlk %fp <== NOT EXECUTED
0004231c <Stack_check_Dump_threads_usage>:
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
4231c: 70ff moveq #-1,%d0 <== NOT EXECUTED
static rtems_printk_plugin_t print_handler;
void Stack_check_Dump_threads_usage(
Thread_Control *the_thread
)
{
4231e: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
42322: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
42326: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Obtain interrupt stack information
*/
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if (the_thread == (Thread_Control *) -1) {
4232a: b08a cmpl %a2,%d0 <== NOT EXECUTED
4232c: 6616 bnes 42344 <Stack_check_Dump_threads_usage+0x28><== NOT EXECUTED
if (!Stack_check_Interrupt_stack.area)
4232e: 4ab9 0006 03e8 tstl 603e8 <Stack_check_Interrupt_stack+0x4><== NOT EXECUTED
42334: 6700 00fe beqw 42434 <Stack_check_Dump_threads_usage+0x118><== NOT EXECUTED
return;
stack = &Stack_check_Interrupt_stack;
42338: 49f9 0006 03e4 lea 603e4 <Stack_check_Interrupt_stack>,%a4 <== NOT EXECUTED
the_thread = 0;
current = 0;
4233e: 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;
42340: 95ca subal %a2,%a2 <== NOT EXECUTED
42342: 6008 bras 4234c <Stack_check_Dump_threads_usage+0x30><== NOT EXECUTED
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
42344: 282a 00f2 movel %a2@(242),%d4 <== NOT EXECUTED
the_thread = 0;
current = 0;
} else
#endif
{
stack = &the_thread->Start.Initial_stack;
42348: 49ea 00b2 lea %a2@(178),%a4 <== NOT EXECUTED
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
}
low = Stack_check_usable_stack_start(stack);
size = Stack_check_usable_stack_size(stack);
4234c: 2614 movel %a4@,%d3 <== 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++)
4234e: 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);
42350: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED
{
stack = &the_thread->Start.Initial_stack;
current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
}
low = Stack_check_usable_stack_start(stack);
42356: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED
4235a: 43e8 0010 lea %a0@(16),%a1 <== 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(
4235e: 41e8 0020 lea %a0@(32),%a0 <== 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++)
42362: c083 andl %d3,%d0 <== NOT EXECUTED
42364: 47f1 0810 lea %a1@(00000010,%d0:l),%a3 <== NOT EXECUTED
42368: 600a bras 42374 <Stack_check_Dump_threads_usage+0x58><== NOT EXECUTED
if (*base != U32_PATTERN)
4236a: 223c a5a5 a5a5 movel #-1515870811,%d1 <== NOT EXECUTED
42370: b298 cmpl %a0@+,%d1 <== NOT EXECUTED
42372: 6608 bnes 4237c <Stack_check_Dump_threads_usage+0x60><== NOT EXECUTED
42374: 2008 movel %a0,%d0 <== 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++)
42376: b7c8 cmpal %a0,%a3 <== NOT EXECUTED
42378: 62f0 bhis 4236a <Stack_check_Dump_threads_usage+0x4e><== NOT EXECUTED
4237a: 600c bras 42388 <Stack_check_Dump_threads_usage+0x6c><== 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 )
4237c: 4a80 tstl %d0 <== NOT EXECUTED
4237e: 6708 beqs 42388 <Stack_check_Dump_threads_usage+0x6c><== NOT EXECUTED
used = Stack_check_Calculate_used( low, size, high_water_mark );
42380: 2409 movel %a1,%d2 <== NOT EXECUTED
42382: d483 addl %d3,%d2 <== NOT EXECUTED
42384: 9480 subl %d0,%d2 <== NOT EXECUTED
42386: 6002 bras 4238a <Stack_check_Dump_threads_usage+0x6e><== NOT EXECUTED
else
used = 0;
42388: 4282 clrl %d2 <== NOT EXECUTED
4238a: 2679 0005 fbcc moveal 5fbcc <print_handler>,%a3 <== NOT EXECUTED
#if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)
if ( the_thread )
42390: 4a8a tstl %a2 <== NOT EXECUTED
42392: 672c beqs 423c0 <Stack_check_Dump_threads_usage+0xa4><== NOT EXECUTED
#endif
{
(*print_handler)(
42394: 486e fffb pea %fp@(-5) <== NOT EXECUTED
42398: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4239c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
423a0: 4eb9 0004 7acc jsr 47acc <rtems_object_get_name> <== NOT EXECUTED
423a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
423a8: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
423ac: 4879 0005 d57a pea 5d57a <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
423b2: 2f39 0005 fbc8 movel 5fbc8 <print_context>,%sp@- <== NOT EXECUTED
423b8: 4e93 jsr %a3@ <== NOT EXECUTED
423ba: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
423be: 6016 bras 423d6 <Stack_check_Dump_threads_usage+0xba><== 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 );
423c0: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
423c4: 4879 0005 d587 pea 5d587 <IntUartPollCallbacks.6370+0x2d> <== NOT EXECUTED
423ca: 2f39 0005 fbc8 movel 5fbc8 <print_context>,%sp@- <== NOT EXECUTED
423d0: 4e93 jsr %a3@ <== NOT EXECUTED
423d2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
(*print_handler)(
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
423d6: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
423da: 2f03 movel %d3,%sp@- <== NOT EXECUTED
423dc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
print_context,
" %010p - %010p %010p %8" PRId32 " ",
stack->area,
stack->area + stack->size - 1,
423de: 2014 movel %a4@,%d0 <== NOT EXECUTED
423e0: 5380 subql #1,%d0 <== NOT EXECUTED
else {
(*print_handler)( print_context, "0x%08" PRIx32 " INTR", ~0 );
}
#endif
(*print_handler)(
423e2: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
423e6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
423e8: 4879 0005 d595 pea 5d595 <IntUartPollCallbacks.6370+0x3b> <== NOT EXECUTED
423ee: 2f39 0005 fbc8 movel 5fbc8 <print_context>,%sp@- <== NOT EXECUTED
423f4: 2079 0005 fbcc moveal 5fbcc <print_handler>,%a0 <== NOT EXECUTED
423fa: 4e90 jsr %a0@ <== NOT EXECUTED
423fc: 2679 0005 fbcc moveal 5fbcc <print_handler>,%a3 <== NOT EXECUTED
stack->area + stack->size - 1,
current,
size
);
if (Stack_check_Initialized == 0) {
42402: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
42406: 4ab9 0005 fbd0 tstl 5fbd0 <Stack_check_Initialized> <== NOT EXECUTED
4240c: 6612 bnes 42420 <Stack_check_Dump_threads_usage+0x104><== NOT EXECUTED
(*print_handler)( print_context, "Unavailable\n" );
4240e: 4879 0005 d5b3 pea 5d5b3 <IntUartPollCallbacks.6370+0x59> <== NOT EXECUTED
42414: 2f39 0005 fbc8 movel 5fbc8 <print_context>,%sp@- <== NOT EXECUTED
4241a: 4e93 jsr %a3@ <== NOT EXECUTED
4241c: 508f addql #8,%sp <== NOT EXECUTED
4241e: 6014 bras 42434 <Stack_check_Dump_threads_usage+0x118><== NOT EXECUTED
} else {
(*print_handler)( print_context, "%8" PRId32 "\n", used );
42420: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42422: 4879 0005 d5c0 pea 5d5c0 <IntUartPollCallbacks.6370+0x66> <== NOT EXECUTED
42428: 2f39 0005 fbc8 movel 5fbc8 <print_context>,%sp@- <== NOT EXECUTED
4242e: 4e93 jsr %a3@ <== NOT EXECUTED
42430: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
42434: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4243a: 4e5e unlk %fp <== NOT EXECUTED
0004243e <Stack_check_Initialize>:
/*
* Stack_check_Initialize
*/
void Stack_check_Initialize( void )
{
4243e: 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 )
42442: 4ab9 0005 fbd0 tstl 5fbd0 <Stack_check_Initialized>
42448: 6668 bnes 424b2 <Stack_check_Initialize+0x74>
/*
* Dope the pattern and fill areas
*/
p = Stack_check_Pattern.pattern;
for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {
p[i] = pattern[ i%4 ];
4244a: 203c feed f00d movel #-17960947,%d0
42450: 23c0 0006 03d4 movel %d0,603d4 <Stack_check_Pattern>
42456: 203c 0bad 0d06 movel #195890438,%d0
4245c: 23c0 0006 03d8 movel %d0,603d8 <Stack_check_Pattern+0x4>
42462: 203c dead f00d movel #-559026163,%d0
42468: 23c0 0006 03dc movel %d0,603dc <Stack_check_Pattern+0x8>
4246e: 203c 600d 0d06 movel #1611468038,%d0
42474: 23c0 0006 03e0 movel %d0,603e0 <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) {
4247a: 2039 0006 0a2e movel 60a2e <_Per_CPU_Information>,%d0
42480: 6728 beqs 424aa <Stack_check_Initialize+0x6c> <== NEVER TAKEN
42482: 2239 0006 0a32 movel 60a32 <_Per_CPU_Information+0x4>,%d1
42488: 6720 beqs 424aa <Stack_check_Initialize+0x6c> <== ALWAYS TAKEN
Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;
Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
4248a: 9280 subl %d0,%d1 <== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
4248c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4248e: 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;
42492: 23c0 0006 03e8 movel %d0,603e8 <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);
42498: 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 -
4249a: 23c1 0006 03e4 movel %d1,603e4 <Stack_check_Interrupt_stack><== NOT EXECUTED
(char *) _CPU_Interrupt_stack_low;
Stack_check_Dope_stack(&Stack_check_Interrupt_stack);
424a0: 4eb9 0004 f93c jsr 4f93c <memset> <== NOT EXECUTED
424a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
#endif
Stack_check_Initialized = 1;
424aa: 7001 moveq #1,%d0
424ac: 23c0 0005 fbd0 movel %d0,5fbd0 <Stack_check_Initialized>
}
424b2: 4e5e unlk %fp <== NOT EXECUTED
00042518 <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)
{
42518: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
4251c: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
42520: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
char name[32];
printk("BLOWN STACK!!!\n");
42524: 45f9 0004 41a8 lea 441a8 <printk>,%a2 <== NOT EXECUTED
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;
void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok)
{
Stack_Control *stack = &running->Start.Initial_stack;
void *pattern_area = Stack_check_Get_pattern(stack);
4252a: 286b 00b6 moveal %a3@(182),%a4 <== NOT EXECUTED
char name[32];
printk("BLOWN STACK!!!\n");
4252e: 4879 0005 d5c6 pea 5d5c6 <IntUartPollCallbacks.6370+0x6c> <== 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)
{
42534: 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");
42538: 4e92 jsr %a2@ <== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", running);
4253a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4253c: 4879 0005 d5d6 pea 5d5d6 <IntUartPollCallbacks.6370+0x7c> <== NOT EXECUTED
42542: 4e92 jsr %a2@ <== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
42544: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
42548: 4879 0005 d5f3 pea 5d5f3 <IntUartPollCallbacks.6370+0x99> <== NOT EXECUTED
4254e: 4e92 jsr %a2@ <== NOT EXECUTED
printk(
42550: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
42554: 4879 0005 d605 pea 5d605 <IntUartPollCallbacks.6370+0xab> <== NOT EXECUTED
4255a: 4e92 jsr %a2@ <== NOT EXECUTED
"task name: 0x%08" PRIx32 "\n",
running->Object.name.name_u32
);
printk(
4255c: 486e ffe0 pea %fp@(-32) <== NOT EXECUTED
42560: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
42564: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
42568: 4eb9 0004 7acc jsr 47acc <rtems_object_get_name> <== NOT EXECUTED
4256e: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
42572: 2e80 movel %d0,%sp@ <== NOT EXECUTED
42574: 4879 0005 d619 pea 5d619 <IntUartPollCallbacks.6370+0xbf> <== NOT EXECUTED
4257a: 4e92 jsr %a2@ <== 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)
4257c: 206b 00b6 moveal %a3@(182),%a0 <== NOT EXECUTED
42580: 202b 00b2 movel %a3@(178),%d0 <== NOT EXECUTED
);
printk(
"task name string: %s\n",
rtems_object_get_name(running->Object.id, sizeof(name), name)
);
printk(
42584: 4870 0800 pea %a0@(00000000,%d0:l) <== NOT EXECUTED
42588: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4258a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4258c: 4879 0005 d62f pea 5d62f <IntUartPollCallbacks.6370+0xd5> <== NOT EXECUTED
42592: 4e92 jsr %a2@ <== 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) {
42594: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
42598: 4a02 tstb %d2 <== NOT EXECUTED
4259a: 6618 bnes 425b4 <Stack_check_report_blown_task+0x9c><== NOT EXECUTED
printk(
4259c: 486c 0018 pea %a4@(24) <== NOT EXECUTED
425a0: 486c 0008 pea %a4@(8) <== NOT EXECUTED
425a4: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
425a8: 4879 0005 d660 pea 5d660 <IntUartPollCallbacks.6370+0x106> <== NOT EXECUTED
425ae: 4e92 jsr %a2@ <== NOT EXECUTED
425b0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
rtems_configuration_get_user_multiprocessing_table()->node
);
}
#endif
rtems_fatal_error_occurred(0x81);
425b4: 4878 0081 pea 81 <DBL_MANT_DIG+0x4c> <== NOT EXECUTED
425b8: 4eb9 0004 82ec jsr 482ec <rtems_fatal_error_occurred> <== NOT EXECUTED
0004acec <TOD_MICROSECONDS_TO_TICKS>:
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4acec: 41f9 0006 10f0 lea 610f0 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4acf2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4acf6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4acfa: 4e5e unlk %fp <== NOT EXECUTED
4acfc: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
...
00046c1c <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
46c1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
46c20: 2039 0005 d400 movel 5d400 <Configuration+0xc>,%d0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
46c26: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
46c28: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
46c2e: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
46c32: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
46c36: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
46c3a: 2002 movel %d2,%d0 <== NOT EXECUTED
46c3c: 241f movel %sp@+,%d2 <== NOT EXECUTED
46c3e: 4e5e unlk %fp <== NOT EXECUTED
...
0004c74c <TOD_TICKS_PER_SECOND_method>:
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4c74c: 41f9 0005 c260 lea 5c260 <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)
{
4c752: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4c756: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
4c75c: 4e5e unlk %fp <== NOT EXECUTED
4c75e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00045f80 <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
45f80: 4e56 0000 linkw %fp,#0
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45f84: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
45f8a: 5280 addql #1,%d0
45f8c: 206e 0008 moveal %fp@(8),%a0
45f90: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_CORE_mutex_Surrender(
45f96: 42a7 clrl %sp@-
45f98: 2f28 0008 movel %a0@(8),%sp@-
45f9c: 4868 0010 pea %a0@(16)
45fa0: 4eb9 0004 6204 jsr 46204 <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
45fa6: 4fef 000c lea %sp@(12),%sp
}
45faa: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
45fac: 4ef9 0004 779a jmp 4779a <_Thread_Enable_dispatch>
...
0004e5b4 <_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];
}
4e5b4: 41f9 0005 e818 lea 5e818 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Barrier_Translate_core_barrier_return_code (
CORE_barrier_Status the_barrier_status
)
{
4e5ba: 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];
}
4e5be: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4e5c2: 4e5e unlk %fp <== NOT EXECUTED
4e5c4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00048128 <_CORE_RWLock_Initialize>:
void _CORE_RWLock_Initialize(
CORE_RWLock_Control *the_rwlock,
CORE_RWLock_Attributes *the_rwlock_attributes
)
{
48128: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4812c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
the_rwlock->Attributes = *the_rwlock_attributes;
48130: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
48134: 2151 0040 movel %a1@,%a0@(64) <== NOT EXECUTED
/*
the_rwlock->number_of_waiting_threads = 0;
*/
the_rwlock->number_of_readers = 0;
48138: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
4813c: 42a8 0044 clrl %a0@(68) <== NOT EXECUTED
_Thread_queue_Initialize(
48140: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
48144: 2f3c 0002 0000 movel #131072,%sp@- <== NOT EXECUTED
4814a: 42a7 clrl %sp@- <== NOT EXECUTED
4814c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4814e: 4eb9 0004 9ff4 jsr 49ff4 <_Thread_queue_Initialize> <== NOT EXECUTED
48154: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&the_rwlock->Wait_queue,
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_RWLOCK,
CORE_RWLOCK_TIMEOUT
);
}
48158: 4e5e unlk %fp <== NOT EXECUTED
0004815c <_CORE_RWLock_Obtain_for_reading>:
* If unlocked, then OK to read.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
4815c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_RWLock_API_mp_support_callout api_rwlock_mp_support
)
{
48162: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
48166: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
4816a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4816e: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
48172: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
48176: 1a2e 0013 moveb %fp@(19),%d5 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing = _Thread_Executing;
4817a: 2679 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
* If unlocked, then OK to read.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
48180: 40c2 movew %sr,%d2 <== NOT EXECUTED
48182: 8082 orl %d2,%d0 <== NOT EXECUTED
48184: 46c0 movew %d0,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
48186: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED
4818a: 6708 beqs 48194 <_CORE_RWLock_Obtain_for_reading+0x38><== NOT EXECUTED
4818c: 7201 moveq #1,%d1 <== NOT EXECUTED
4818e: b280 cmpl %d0,%d1 <== NOT EXECUTED
48190: 662a bnes 481bc <_CORE_RWLock_Obtain_for_reading+0x60><== NOT EXECUTED
48192: 600e bras 481a2 <_CORE_RWLock_Obtain_for_reading+0x46><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
48194: 7001 moveq #1,%d0 <== NOT EXECUTED
the_rwlock->number_of_readers += 1;
48196: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
*/
_ISR_Disable( level );
switch ( the_rwlock->current_state ) {
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
4819a: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
the_rwlock->number_of_readers += 1;
_ISR_Enable( level );
4819e: 46c2 movew %d2,%sr <== NOT EXECUTED
481a0: 6014 bras 481b6 <_CORE_RWLock_Obtain_for_reading+0x5a><== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
return;
case CORE_RWLOCK_LOCKED_FOR_READING: {
Thread_Control *waiter;
waiter = _Thread_queue_First( &the_rwlock->Wait_queue );
481a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
481a4: 4eb9 0004 9f60 jsr 49f60 <_Thread_queue_First> <== NOT EXECUTED
if ( !waiter ) {
481aa: 588f addql #4,%sp <== NOT EXECUTED
481ac: 4a80 tstl %d0 <== NOT EXECUTED
481ae: 660c bnes 481bc <_CORE_RWLock_Obtain_for_reading+0x60><== NOT EXECUTED
the_rwlock->number_of_readers += 1;
481b0: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_ISR_Enable( level );
481b4: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
481b6: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
return;
481ba: 6046 bras 48202 <_CORE_RWLock_Obtain_for_reading+0xa6><== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
481bc: 4a05 tstb %d5 <== NOT EXECUTED
481be: 660a bnes 481ca <_CORE_RWLock_Obtain_for_reading+0x6e><== NOT EXECUTED
_ISR_Enable( level );
481c0: 46c2 movew %d2,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
481c2: 7202 moveq #2,%d1 <== NOT EXECUTED
481c4: 2741 0034 movel %d1,%a3@(52) <== NOT EXECUTED
481c8: 6038 bras 48202 <_CORE_RWLock_Obtain_for_reading+0xa6><== NOT EXECUTED
481ca: 7001 moveq #1,%d0 <== NOT EXECUTED
481cc: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
/*
* We need to wait to enter this critical section
*/
_Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue );
executing->Wait.queue = &the_rwlock->Wait_queue;
481d0: 274a 0044 movel %a2,%a3@(68) <== NOT EXECUTED
executing->Wait.id = id;
481d4: 2744 0020 movel %d4,%a3@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
481d8: 42ab 0030 clrl %a3@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
481dc: 42ab 0034 clrl %a3@(52) <== NOT EXECUTED
_ISR_Enable( level );
481e0: 46c2 movew %d2,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
481e2: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
481e6: 223c 0004 834c movel #295756,%d1 <== NOT EXECUTED
481ec: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
481f0: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
481f6: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
481fa: 4e5e unlk %fp <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_READ;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
481fc: 4ef9 0004 9c4c jmp 49c4c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
timeout,
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
48202: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
48208: 4e5e unlk %fp <== NOT EXECUTED
0004820c <_CORE_RWLock_Obtain_for_writing>:
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
4820c: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_RWLock_API_mp_support_callout api_rwlock_mp_support
)
{
48212: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
48216: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4821a: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4821e: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
48222: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing = _Thread_Executing;
48226: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
Objects_Id id,
bool wait,
Watchdog_Interval timeout,
CORE_RWLock_API_mp_support_callout api_rwlock_mp_support
)
{
4822c: 182e 0013 moveb %fp@(19),%d4 <== NOT EXECUTED
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
48230: 40c0 movew %sr,%d0 <== NOT EXECUTED
48232: 8280 orl %d0,%d1 <== NOT EXECUTED
48234: 46c1 movew %d1,%sr <== NOT EXECUTED
switch ( the_rwlock->current_state ) {
48236: 4aa9 0044 tstl %a1@(68) <== NOT EXECUTED
4823a: 660e bnes 4824a <_CORE_RWLock_Obtain_for_writing+0x3e><== NOT EXECUTED
case CORE_RWLOCK_UNLOCKED:
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
4823c: 7202 moveq #2,%d1 <== NOT EXECUTED
4823e: 2341 0044 movel %d1,%a1@(68) <== NOT EXECUTED
_ISR_Enable( level );
48242: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
48244: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
return;
48248: 6044 bras 4828e <_CORE_RWLock_Obtain_for_writing+0x82><== NOT EXECUTED
/*
* If the thread is not willing to wait, then return immediately.
*/
if ( !wait ) {
4824a: 4a04 tstb %d4 <== NOT EXECUTED
4824c: 660a bnes 48258 <_CORE_RWLock_Obtain_for_writing+0x4c><== NOT EXECUTED
_ISR_Enable( level );
4824e: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
48250: 7002 moveq #2,%d0 <== NOT EXECUTED
48252: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
48256: 6036 bras 4828e <_CORE_RWLock_Obtain_for_writing+0x82><== NOT EXECUTED
48258: 7201 moveq #1,%d1 <== NOT EXECUTED
4825a: 2341 0030 movel %d1,%a1@(48) <== NOT EXECUTED
/*
* We need to wait to enter this critical section
*/
_Thread_queue_Enter_critical_section( &the_rwlock->Wait_queue );
executing->Wait.queue = &the_rwlock->Wait_queue;
4825e: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
48262: 2143 0020 movel %d3,%a0@(32) <== NOT EXECUTED
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
48266: 2141 0030 movel %d1,%a0@(48) <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
4826a: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_ISR_Enable( level );
4826e: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_queue_Enqueue_with_handler(
48270: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
48274: 203c 0004 834c movel #295756,%d0 <== NOT EXECUTED
4827a: 2d49 0008 movel %a1,%fp@(8) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4827e: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
48282: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
48286: 4e5e unlk %fp <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.option = CORE_RWLOCK_THREAD_WAITING_FOR_WRITE;
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
_ISR_Enable( level );
_Thread_queue_Enqueue_with_handler(
48288: 4ef9 0004 9c4c jmp 49c4c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_CORE_RWLock_Timeout
);
/* return to API level so it can dispatch and we block */
}
4828e: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
48292: 4e5e unlk %fp <== NOT EXECUTED
...
00048298 <_CORE_RWLock_Release>:
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
48298: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
4829e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing = _Thread_Executing;
482a2: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
CORE_RWLock_Status _CORE_RWLock_Release(
CORE_RWLock_Control *the_rwlock
)
{
482a8: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
482ac: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* Otherwise, we have to block.
* If locked for reading and no waiters, then OK to read.
* If any thread is waiting, then we wait.
*/
_ISR_Disable( level );
482b0: 40c0 movew %sr,%d0 <== NOT EXECUTED
482b2: 8280 orl %d0,%d1 <== NOT EXECUTED
482b4: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){
482b6: 222a 0044 movel %a2@(68),%d1 <== NOT EXECUTED
482ba: 660a bnes 482c6 <_CORE_RWLock_Release+0x2e> <== NOT EXECUTED
_ISR_Enable( level );
482bc: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;
482be: 7002 moveq #2,%d0 <== NOT EXECUTED
482c0: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
return CORE_RWLOCK_SUCCESSFUL;
482c4: 6078 bras 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED
}
if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
482c6: 7401 moveq #1,%d2 <== NOT EXECUTED
482c8: b481 cmpl %d1,%d2 <== NOT EXECUTED
482ca: 6610 bnes 482dc <_CORE_RWLock_Release+0x44> <== NOT EXECUTED
the_rwlock->number_of_readers -= 1;
482cc: 222a 0048 movel %a2@(72),%d1 <== NOT EXECUTED
482d0: 5381 subql #1,%d1 <== NOT EXECUTED
482d2: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED
if ( the_rwlock->number_of_readers != 0 ) {
482d6: 6704 beqs 482dc <_CORE_RWLock_Release+0x44> <== NOT EXECUTED
/* must be unlocked again */
_ISR_Enable( level );
482d8: 46c0 movew %d0,%sr <== NOT EXECUTED
return CORE_RWLOCK_SUCCESSFUL;
482da: 6062 bras 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED
}
}
/* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */
executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;
482dc: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
/*
* Implicitly transition to "unlocked" and find another thread interested
* in obtaining this rwlock.
*/
the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;
482e0: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
482e4: 46c0 movew %d0,%sr <== NOT EXECUTED
next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );
482e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
482e8: 4eb9 0004 9b0c jsr 49b0c <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( next ) {
482ee: 588f addql #4,%sp <== NOT EXECUTED
482f0: 4a80 tstl %d0 <== NOT EXECUTED
482f2: 674a beqs 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED
if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
482f4: 7201 moveq #1,%d1 <== NOT EXECUTED
482f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
482f8: b2a8 0030 cmpl %a0@(48),%d1 <== NOT EXECUTED
482fc: 6608 bnes 48306 <_CORE_RWLock_Release+0x6e> <== NOT EXECUTED
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;
482fe: 7002 moveq #2,%d0 <== NOT EXECUTED
48300: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
return CORE_RWLOCK_SUCCESSFUL;
48304: 6038 bras 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
48306: 7201 moveq #1,%d1 <== NOT EXECUTED
}
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
48308: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
/*
* Now see if more readers can be let go.
*/
while ( 1 ) {
next = _Thread_queue_First( &the_rwlock->Wait_queue );
4830c: 49f9 0004 9f60 lea 49f60 <_Thread_queue_First>,%a4 <== NOT EXECUTED
if ( !next ||
next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
return CORE_RWLOCK_SUCCESSFUL;
the_rwlock->number_of_readers += 1;
_Thread_queue_Extract( &the_rwlock->Wait_queue, next );
48312: 47f9 0004 9e30 lea 49e30 <_Thread_queue_Extract>,%a3 <== NOT EXECUTED
/*
* Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING
*/
the_rwlock->number_of_readers += 1;
the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;
48318: 2541 0044 movel %d1,%a2@(68) <== NOT EXECUTED
/*
* Now see if more readers can be let go.
*/
while ( 1 ) {
next = _Thread_queue_First( &the_rwlock->Wait_queue );
4831c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4831e: 4e94 jsr %a4@ <== NOT EXECUTED
if ( !next ||
48320: 588f addql #4,%sp <== NOT EXECUTED
48322: 4a80 tstl %d0 <== NOT EXECUTED
48324: 6718 beqs 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED
48326: 7401 moveq #1,%d2 <== NOT EXECUTED
48328: 2040 moveal %d0,%a0 <== NOT EXECUTED
4832a: b4a8 0030 cmpl %a0@(48),%d2 <== NOT EXECUTED
4832e: 670e beqs 4833e <_CORE_RWLock_Release+0xa6> <== NOT EXECUTED
next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
return CORE_RWLOCK_SUCCESSFUL;
the_rwlock->number_of_readers += 1;
48330: 52aa 0048 addql #1,%a2@(72) <== NOT EXECUTED
_Thread_queue_Extract( &the_rwlock->Wait_queue, next );
48334: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48336: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48338: 4e93 jsr %a3@ <== NOT EXECUTED
}
4833a: 508f addql #8,%sp <== NOT EXECUTED
4833c: 60de bras 4831c <_CORE_RWLock_Release+0x84> <== NOT EXECUTED
}
/* indentation is to match _ISR_Disable at top */
return CORE_RWLOCK_SUCCESSFUL;
}
4833e: 4280 clrl %d0 <== NOT EXECUTED
48340: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
48346: 4e5e unlk %fp <== NOT EXECUTED
...
0004834c <_CORE_RWLock_Timeout>:
void _CORE_RWLock_Timeout(
Objects_Id id,
void *ignored
)
{
4834c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
48350: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48354: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48358: 4eb9 0004 9810 jsr 49810 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4835e: 508f addql #8,%sp <== NOT EXECUTED
48360: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48364: 6618 bnes 4837e <_CORE_RWLock_Timeout+0x32> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_queue_Process_timeout( the_thread );
48366: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48368: 4eb9 0004 a060 jsr 4a060 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4836e: 588f addql #4,%sp <== NOT EXECUTED
48370: 2039 0006 076c movel 6076c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
48376: 5380 subql #1,%d0 <== NOT EXECUTED
48378: 23c0 0006 076c movel %d0,6076c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
4837e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ba10 <_CORE_barrier_Release>:
#else
Objects_Id id __attribute__((unused)),
CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused))
#endif
)
{
4ba10: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4ba14: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4ba18: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t count;
count = 0;
4ba1c: 4282 clrl %d2 <== NOT EXECUTED
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4ba1e: 47f9 0004 8aac lea 48aac <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
4ba24: 6002 bras 4ba28 <_CORE_barrier_Release+0x18> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_barrier_mp_support) ( the_thread, id );
#endif
count++;
4ba26: 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)) ) {
4ba28: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ba2a: 4e93 jsr %a3@ <== NOT EXECUTED
4ba2c: 588f addql #4,%sp <== NOT EXECUTED
4ba2e: 4a80 tstl %d0 <== NOT EXECUTED
4ba30: 66f4 bnes 4ba26 <_CORE_barrier_Release+0x16> <== NOT EXECUTED
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
return count;
}
4ba32: 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;
4ba34: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
return count;
}
4ba38: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4ba3e: 4e5e unlk %fp <== NOT EXECUTED
...
00047018 <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
47018: 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
)
{
4701e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
47022: 2279 0005 f576 moveal 5f576 <_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
)
{
47028: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4702c: 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;
47030: 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
)
{
47034: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
47038: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
4703c: 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 );
47040: 40c1 movew %sr,%d1 <== NOT EXECUTED
47042: 8081 orl %d1,%d0 <== NOT EXECUTED
47044: 46c0 movew %d0,%sr <== NOT EXECUTED
the_barrier->number_of_waiting_threads++;
47046: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
4704a: 5280 addql #1,%d0 <== NOT EXECUTED
4704c: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
47050: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED
47054: 6626 bnes 4707c <_CORE_barrier_Wait+0x64> <== NOT EXECUTED
if ( the_barrier->number_of_waiting_threads ==
47056: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED
4705a: 6620 bnes 4707c <_CORE_barrier_Wait+0x64> <== NOT EXECUTED
the_barrier->Attributes.maximum_count) {
executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
4705c: 7001 moveq #1,%d0 <== NOT EXECUTED
4705e: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
47062: 46c1 movew %d1,%sr <== NOT EXECUTED
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
47064: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED
47068: 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 );
}
4706c: 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 );
47070: 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 );
}
47074: 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 );
47076: 4ef9 0004 ba10 jmp 4ba10 <_CORE_barrier_Release> <== 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;
4707c: 7001 moveq #1,%d0 <== NOT EXECUTED
4707e: 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;
47082: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
47086: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
4708a: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
4708c: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
47090: 203c 0004 8f00 movel #298752,%d0 <== NOT EXECUTED
47096: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4709a: 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 );
4709e: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
470a2: 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 );
470a4: 4ef9 0004 8bec jmp 48bec <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
00052b1c <_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
)
{
52b1c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
52b20: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
52b24: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
52b28: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
52b2c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
52b30: 286e 001c moveal %fp@(28),%a4 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t number_broadcasted;
Thread_Wait_information *waitp;
if ( size > the_message_queue->maximum_message_size ) {
52b34: b6aa 004c cmpl %a2@(76),%d3 <== NOT EXECUTED
52b38: 6244 bhis 52b7e <_CORE_message_queue_Broadcast+0x62><== 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 ) {
52b3a: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED
52b3e: 6610 bnes 52b50 <_CORE_message_queue_Broadcast+0x34><== NOT EXECUTED
52b40: 4282 clrl %d2 <== NOT EXECUTED
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
52b42: 283c 0005 51d8 movel #348632,%d4 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
52b48: 4bf9 0005 a7e8 lea 5a7e8 <memcpy>,%a5 <== NOT EXECUTED
52b4e: 601a bras 52b6a <_CORE_message_queue_Broadcast+0x4e><== 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;
52b50: 4294 clrl %a4@ <== NOT EXECUTED
52b52: 6026 bras 52b7a <_CORE_message_queue_Broadcast+0x5e><== NOT EXECUTED
52b54: 2f03 movel %d3,%sp@- <== NOT EXECUTED
*/
number_broadcasted = 0;
while ((the_thread =
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
52b56: 5282 addql #1,%d2 <== NOT EXECUTED
52b58: 2f05 movel %d5,%sp@- <== NOT EXECUTED
52b5a: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED
52b5e: 4e95 jsr %a5@ <== NOT EXECUTED
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
52b60: 206b 0028 moveal %a3@(40),%a0 <== NOT EXECUTED
52b64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
52b68: 2083 movel %d3,%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 =
52b6a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52b6c: 2044 moveal %d4,%a0 <== NOT EXECUTED
52b6e: 4e90 jsr %a0@ <== NOT EXECUTED
52b70: 588f addql #4,%sp <== NOT EXECUTED
52b72: 2640 moveal %d0,%a3 <== NOT EXECUTED
52b74: 4a80 tstl %d0 <== NOT EXECUTED
52b76: 66dc bnes 52b54 <_CORE_message_queue_Broadcast+0x38><== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
52b78: 2882 movel %d2,%a4@ <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
52b7a: 4280 clrl %d0 <== NOT EXECUTED
52b7c: 6002 bras 52b80 <_CORE_message_queue_Broadcast+0x64><== 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;
52b7e: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
52b80: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
52b86: 4e5e unlk %fp <== NOT EXECUTED
...
0004baa8 <_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
)
{
4baa8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4baac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
4baae: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4bab2: 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
)
{
4bab6: 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(
4baba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4babc: 4eb9 0004 db7c jsr 4db7c <_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 )
4bac2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bac6: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED
4baca: 670a beqs 4bad6 <_CORE_message_queue_Close+0x2e> <== NOT EXECUTED
(void) _CORE_message_queue_Flush_support( the_message_queue );
4bacc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bace: 4eb9 0004 bae8 jsr 4bae8 <_CORE_message_queue_Flush_support><== NOT EXECUTED
4bad4: 588f addql #4,%sp <== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
4bad6: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
}
4badc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4bae0: 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 );
4bae2: 4ef9 0004 e60c jmp 4e60c <_Workspace_Free> <== NOT EXECUTED
00052bcc <_CORE_message_queue_Flush>:
*/
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
52bcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
52bd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( the_message_queue->number_of_pending_messages != 0 )
52bd4: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED
52bd8: 6708 beqs 52be2 <_CORE_message_queue_Flush+0x16> <== NOT EXECUTED
return _CORE_message_queue_Flush_support( the_message_queue );
else
return 0;
}
52bda: 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 );
52bdc: 4ef9 0005 2be8 jmp 52be8 <_CORE_message_queue_Flush_support><== NOT EXECUTED
else
return 0;
}
52be2: 4280 clrl %d0 <== NOT EXECUTED
52be4: 4e5e unlk %fp <== NOT EXECUTED
0004bae8 <_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 );
4bae8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
uint32_t _CORE_message_queue_Flush_support(
CORE_message_queue_Control *the_message_queue
)
{
4baee: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4baf2: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4baf6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4baf8: 2f0a movel %a2,%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 );
4bafa: 40c1 movew %sr,%d1 <== NOT EXECUTED
4bafc: 8081 orl %d1,%d0 <== NOT EXECUTED
4bafe: 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;
}
4bb00: 2268 0050 moveal %a0@(80),%a1 <== 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;;
4bb04: 2468 0068 moveal %a0@(104),%a2 <== NOT EXECUTED
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
_ISR_Enable( level );
return count;
}
4bb08: 2668 0058 moveal %a0@(88),%a3 <== NOT EXECUTED
inactive_head = _Chain_Head( &the_message_queue->Inactive_messages );
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;
4bb0c: 2149 0068 movel %a1,%a0@(104) <== 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;
4bb10: 2028 0048 movel %a0@(72),%d0 <== 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;
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
4bb14: 254b 0004 movel %a3,%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;
4bb18: 268a movel %a2,%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 );
4bb1a: 45e8 0068 lea %a0@(104),%a2 <== NOT EXECUTED
4bb1e: 234a 0004 movel %a2,%a1@(4) <== 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 );
4bb22: 43e8 0054 lea %a0@(84),%a1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4bb26: 45e8 0050 lea %a0@(80),%a2 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
4bb2a: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
4bb2e: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4bb32: 214a 0058 movel %a2,%a0@(88) <== 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;
4bb36: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
4bb3a: 46c1 movew %d1,%sr <== NOT EXECUTED
return count;
}
4bb3c: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4bb3e: 265f moveal %sp@+,%a3 <== NOT EXECUTED
4bb40: 4e5e unlk %fp <== NOT EXECUTED
0004de30 <_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)) {
4de30: 7003 moveq #3,%d0 <== 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
)
{
4de32: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4de36: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
4de3a: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4de3e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4de42: 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)) {
4de46: c081 andl %d1,%d0 <== NOT EXECUTED
)
{
size_t message_buffering_required;
size_t allocated_message_size;
the_message_queue->maximum_pending_messages = maximum_pending_messages;
4de48: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED
the_message_queue->number_of_pending_messages = 0;
4de4c: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
the_message_queue->maximum_message_size = maximum_message_size;
4de50: 2541 004c movel %d1,%a2@(76) <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
4de54: 42aa 0060 clrl %a2@(96) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
4de58: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
4de5c: 4a80 tstl %d0 <== NOT EXECUTED
4de5e: 670e beqs 4de6e <_CORE_message_queue_Initialize+0x3e><== NOT EXECUTED
allocated_message_size += sizeof(uint32_t);
4de60: 2001 movel %d1,%d0 <== NOT EXECUTED
4de62: 5880 addql #4,%d0 <== NOT EXECUTED
allocated_message_size &= ~(sizeof(uint32_t) - 1);
4de64: 76fc moveq #-4,%d3 <== NOT EXECUTED
4de66: c083 andl %d3,%d0 <== NOT EXECUTED
}
if (allocated_message_size < maximum_message_size)
4de68: b280 cmpl %d0,%d1 <== NOT EXECUTED
4de6a: 6272 bhis 4dede <_CORE_message_queue_Initialize+0xae><== NOT EXECUTED
4de6c: 6002 bras 4de70 <_CORE_message_queue_Initialize+0x40><== 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)) {
4de6e: 2001 movel %d1,%d0 <== 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));
4de70: 2600 movel %d0,%d3 <== NOT EXECUTED
4de72: 0683 0000 0014 addil #20,%d3 <== NOT EXECUTED
/*
* Calculate how much total memory is required for message buffering and
* check for overflow on the multiplication.
*/
message_buffering_required = (size_t) maximum_pending_messages *
4de78: 2203 movel %d3,%d1 <== NOT EXECUTED
4de7a: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
if (message_buffering_required < allocated_message_size)
4de7e: b081 cmpl %d1,%d0 <== NOT EXECUTED
4de80: 625c bhis 4dede <_CORE_message_queue_Initialize+0xae><== NOT EXECUTED
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
4de82: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4de84: 4eb9 0005 0900 jsr 50900 <_Workspace_Allocate> <== NOT EXECUTED
if (the_message_queue->message_buffers == 0)
4de8a: 588f addql #4,%sp <== NOT EXECUTED
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
4de8c: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
4de90: 674c beqs 4dede <_CORE_message_queue_Initialize+0xae><== NOT EXECUTED
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
4de92: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4de94: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4de96: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4de98: 486a 0068 pea %a2@(104) <== NOT EXECUTED
4de9c: 4eb9 0005 2b44 jsr 52b44 <_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 );
4dea2: 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(
4dea6: 7001 moveq #1,%d0 <== NOT EXECUTED
4dea8: 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 );
4deac: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4deb0: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4deb4: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED
4deb8: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
4debc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4dec0: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED
4dec4: b090 cmpl %a0@,%d0 <== NOT EXECUTED
4dec6: 57c0 seq %d0 <== NOT EXECUTED
4dec8: 49c0 extbl %d0 <== NOT EXECUTED
4deca: 4480 negl %d0 <== NOT EXECUTED
4decc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4dece: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ded0: 4eb9 0004 ffac jsr 4ffac <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
4ded6: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4deda: 7001 moveq #1,%d0 <== NOT EXECUTED
4dedc: 6002 bras 4dee0 <_CORE_message_queue_Initialize+0xb0><== 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;
4dede: 4200 clrb %d0 <== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
4dee0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4dee6: 4e5e unlk %fp <== NOT EXECUTED
...
00052b88 <_CORE_message_queue_Insert_message>:
void _CORE_message_queue_Insert_message(
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message,
CORE_message_queue_Submit_types submit_type
)
{
52b88: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
52b8c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
52b90: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
52b94: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
52b98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
52b9c: 2340 0008 movel %d0,%a1@(8) <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
else
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
#else
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
52ba0: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED
52ba6: 6634 bnes 52bdc <_CORE_message_queue_Insert_message+0x54><== NOT EXECUTED
_ISR_Disable( level );
52ba8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
52bae: 40c2 movew %sr,%d2 <== NOT EXECUTED
52bb0: 8082 orl %d2,%d0 <== NOT EXECUTED
52bb2: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
52bb4: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
52bb8: 57c0 seq %d0 <== NOT EXECUTED
_ISR_Enable( level );
#else
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
52bba: 5281 addql #1,%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
52bbc: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
52bc0: 4480 negl %d0 <== NOT EXECUTED
_ISR_Enable( level );
#else
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
52bc2: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
52bc6: 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 );
52bca: 228b movel %a3,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
52bcc: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
old_last->next = the_node;
52bd0: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
52bd2: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
52bd6: 46c2 movew %d2,%sr <== NOT EXECUTED
52bd8: 6000 0086 braw 52c60 <_CORE_message_queue_Insert_message+0xd8><== NOT EXECUTED
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
52bdc: 0c80 8000 0000 cmpil #-2147483648,%d0 <== NOT EXECUTED
52be2: 6634 bnes 52c18 <_CORE_message_queue_Insert_message+0x90><== NOT EXECUTED
_ISR_Disable( level );
52be4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
52bea: 40c2 movew %sr,%d2 <== NOT EXECUTED
52bec: 8082 orl %d2,%d0 <== NOT EXECUTED
52bee: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
52bf0: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
52bf4: 57c0 seq %d0 <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
52bf6: 5281 addql #1,%d1 <== 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);
52bf8: 45e8 0050 lea %a0@(80),%a2 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
52bfc: 4480 negl %d0 <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
} else if ( submit_type == CORE_MESSAGE_QUEUE_URGENT_REQUEST ) {
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
52bfe: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED
52c02: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
52c06: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
after_node->next = the_node;
52c0a: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
52c0e: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
52c12: 228a movel %a2,%a1@ <== NOT EXECUTED
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
52c14: 46c2 movew %d2,%sr <== NOT EXECUTED
52c16: 6048 bras 52c60 <_CORE_message_queue_Insert_message+0xd8><== 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));
52c18: 2208 movel %a0,%d1 <== NOT EXECUTED
52c1a: 0681 0000 0054 addil #84,%d1 <== NOT EXECUTED
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
#endif
}
52c20: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
int the_priority;
the_priority = _CORE_message_queue_Get_message_priority(the_message);
the_header = &the_message_queue->Pending_messages;
the_node = _Chain_First( the_header );
while ( !_Chain_Is_tail( the_header, the_node ) ) {
52c24: 6008 bras 52c2e <_CORE_message_queue_Insert_message+0xa6><== NOT EXECUTED
this_message = (CORE_message_queue_Buffer_control *) the_node;
this_priority = _CORE_message_queue_Get_message_priority(this_message);
if ( this_priority <= the_priority ) {
52c26: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED
52c2a: 6d06 blts 52c32 <_CORE_message_queue_Insert_message+0xaa><== NOT EXECUTED
the_node = the_node->next;
52c2c: 2452 moveal %a2@,%a2 <== NOT EXECUTED
int the_priority;
the_priority = _CORE_message_queue_Get_message_priority(the_message);
the_header = &the_message_queue->Pending_messages;
the_node = _Chain_First( the_header );
while ( !_Chain_Is_tail( the_header, the_node ) ) {
52c2e: b28a cmpl %a2,%d1 <== NOT EXECUTED
52c30: 66f4 bnes 52c26 <_CORE_message_queue_Insert_message+0x9e><== NOT EXECUTED
the_node = the_node->next;
continue;
}
break;
}
_ISR_Disable( level );
52c32: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
52c38: 40c2 movew %sr,%d2 <== NOT EXECUTED
52c3a: 8082 orl %d2,%d0 <== NOT EXECUTED
52c3c: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
52c3e: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
52c42: 57c0 seq %d0 <== NOT EXECUTED
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
_Chain_Insert_unprotected( the_node->previous, &the_message->Node );
52c44: 246a 0004 moveal %a2@(4),%a2 <== NOT EXECUTED
}
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
52c48: 5281 addql #1,%d1 <== NOT EXECUTED
*
* INTERRUPT LATENCY:
* insert
*/
void _CORE_message_queue_Insert_message(
52c4a: 4480 negl %d0 <== NOT EXECUTED
}
break;
}
_ISR_Disable( level );
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
52c4c: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
52c50: 2652 moveal %a2@,%a3 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
52c52: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
52c56: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
52c58: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
52c5c: 228b movel %a3,%a1@ <== NOT EXECUTED
_Chain_Insert_unprotected( the_node->previous, &the_message->Node );
_ISR_Enable( level );
52c5e: 46c2 movew %d2,%sr <== NOT EXECUTED
/*
* According to POSIX, does this happen before or after the message
* is actually enqueued. It is logical to think afterwards, because
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
52c60: 4a00 tstb %d0 <== NOT EXECUTED
52c62: 6716 beqs 52c7a <_CORE_message_queue_Insert_message+0xf2><== NOT EXECUTED
52c64: 2268 0060 moveal %a0@(96),%a1 <== NOT EXECUTED
52c68: 4a89 tstl %a1 <== NOT EXECUTED
52c6a: 670e beqs 52c7a <_CORE_message_queue_Insert_message+0xf2><== NOT EXECUTED
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
52c6c: 2d68 0064 0008 movel %a0@(100),%fp@(8) <== NOT EXECUTED
#endif
}
52c72: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED
52c76: 4e5e unlk %fp <== NOT EXECUTED
* According to POSIX, does this happen before or after the message
* is actually enqueued. It is logical to think afterwards, because
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
52c78: 4ed1 jmp %a1@ <== NOT EXECUTED
#endif
}
52c7a: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED
52c7e: 4e5e unlk %fp <== NOT EXECUTED
...
0004deec <_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 );
4deec: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
4def2: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
4def6: 2079 0006 6bfa moveal 66bfa <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
4defc: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
4df00: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4df04: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
4df08: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
4df0c: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
4df10: 242e 001c movel %fp@(28),%d2 <== NOT EXECUTED
4df14: 182e 001b moveb %fp@(27),%d4 <== 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;
4df18: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_ISR_Disable( level );
4df1c: 40c0 movew %sr,%d0 <== NOT EXECUTED
4df1e: 8280 orl %d0,%d1 <== NOT EXECUTED
4df20: 46c1 movew %d1,%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 );
4df22: 220a movel %a2,%d1 <== NOT EXECUTED
4df24: 0681 0000 0054 addil #84,%d1 <== 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 );
}
4df2a: 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))
4df2e: b28b cmpl %a3,%d1 <== NOT EXECUTED
4df30: 6700 00a6 beqw 4dfd8 <_CORE_message_queue_Seize+0xec> <== 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;
4df34: 2a53 moveal %a3@,%a5 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4df36: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
4df3a: 254d 0050 movel %a5,%a2@(80) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4df3e: 2b4c 0004 movel %a4,%a5@(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 ) {
4df42: 4a8b tstl %a3 <== NOT EXECUTED
4df44: 6700 0092 beqw 4dfd8 <_CORE_message_queue_Seize+0xec> <== NOT EXECUTED
the_message_queue->number_of_pending_messages -= 1;
4df48: 53aa 0048 subql #1,%a2@(72) <== NOT EXECUTED
_ISR_Enable( level );
4df4c: 46c0 movew %d0,%sr <== NOT EXECUTED
*size_p = the_message->Contents.size;
_Thread_Executing->Wait.count =
4df4e: 2079 0006 6bfa moveal 66bfa <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
_ISR_Enable( level );
*size_p = the_message->Contents.size;
4df54: 22ab 000c movel %a3@(12),%a1@ <== NOT EXECUTED
_Thread_Executing->Wait.count =
_CORE_message_queue_Get_message_priority( the_message );
_CORE_message_queue_Copy_buffer(
the_message->Contents.buffer,
4df58: 240b movel %a3,%d2 <== NOT EXECUTED
4df5a: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
_ISR_Enable( level );
*size_p = the_message->Contents.size;
_Thread_Executing->Wait.count =
4df60: 216b 0008 0024 movel %a3@(8),%a0@(36) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
4df66: 49f9 0005 5458 lea 55458 <memcpy>,%a4 <== NOT EXECUTED
4df6c: 2f11 movel %a1@,%sp@- <== NOT EXECUTED
4df6e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4df70: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4df72: 4e94 jsr %a4@ <== NOT EXECUTED
* is not, then we can go ahead and free the buffer.
*
* NOTE: If we note that the queue was not full before this receive,
* then we can avoid this dequeue.
*/
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
4df74: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4df76: 4eb9 0004 fc28 jsr 4fc28 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( !the_thread ) {
4df7c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
* is not, then we can go ahead and free the buffer.
*
* NOTE: If we note that the queue was not full before this receive,
* then we can avoid this dequeue.
*/
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
4df80: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !the_thread ) {
4df82: 4a80 tstl %d0 <== NOT EXECUTED
4df84: 661a bnes 4dfa0 <_CORE_message_queue_Seize+0xb4> <== 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 );
4df86: 45ea 0068 lea %a2@(104),%a2 <== NOT EXECUTED
4df8a: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
4df8e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
4df92: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4df98: 4e5e unlk %fp <== NOT EXECUTED
4df9a: 4ef9 0004 dd6c jmp 4dd6c <_Chain_Append> <== NOT EXECUTED
*/
_CORE_message_queue_Set_message_priority(
the_message,
the_thread->Wait.count
);
the_message->Contents.size = (size_t) the_thread->Wait.option;
4dfa0: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message,
int priority
)
{
#if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
the_message->priority = priority;
4dfa4: 2768 0024 0008 movel %a0@(36),%a3@(8) <== NOT EXECUTED
4dfaa: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
4dfae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4dfb0: 2f28 002c movel %a0@(44),%sp@- <== NOT EXECUTED
4dfb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4dfb6: 4e94 jsr %a4@ <== NOT EXECUTED
the_thread->Wait.return_argument_second.immutable_object,
the_message->Contents.buffer,
the_message->Contents.size
);
_CORE_message_queue_Insert_message(
4dfb8: 2d6b 0008 0010 movel %a3@(8),%fp@(16) <== NOT EXECUTED
4dfbe: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4dfc2: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
4dfc6: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
4dfca: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4dfd0: 4e5e unlk %fp <== NOT EXECUTED
the_thread->Wait.return_argument_second.immutable_object,
the_message->Contents.buffer,
the_message->Contents.size
);
_CORE_message_queue_Insert_message(
4dfd2: 4ef9 0005 2b88 jmp 52b88 <_CORE_message_queue_Insert_message><== NOT EXECUTED
return;
}
#endif
}
if ( !wait ) {
4dfd8: 4a04 tstb %d4 <== NOT EXECUTED
4dfda: 6612 bnes 4dfee <_CORE_message_queue_Seize+0x102><== NOT EXECUTED
_ISR_Enable( level );
4dfdc: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
4dfde: 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 );
}
4dfe0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
#endif
}
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
4dfe6: 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 );
}
4dfea: 4e5e unlk %fp <== NOT EXECUTED
4dfec: 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;
4dfee: 7201 moveq #1,%d1 <== NOT EXECUTED
4dff0: 2541 0030 movel %d1,%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;
4dff4: 2145 002c movel %d5,%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;
4dff8: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
4dffc: 2143 0020 movel %d3,%a0@(32) <== NOT EXECUTED
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
4e000: 2149 0028 movel %a1,%a0@(40) <== NOT EXECUTED
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
4e004: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
4e006: 49f9 0005 007c lea 5007c <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED
4e00c: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
4e010: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED
4e014: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4e018: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4e01e: 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 );
4e020: 4ef9 0004 fd68 jmp 4fd68 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
0004e028 <_CORE_message_queue_Submit>:
#endif
CORE_message_queue_Submit_types submit_type,
bool wait,
Watchdog_Interval timeout
)
{
4e028: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4e02c: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
4e030: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4e034: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4e038: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
4e03c: 262e 001c movel %fp@(28),%d3 <== NOT EXECUTED
4e040: 1a2e 0023 moveb %fp@(35),%d5 <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message;
Thread_Control *the_thread;
if ( size > the_message_queue->maximum_message_size ) {
4e044: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED
4e048: 6200 00cc bhiw 4e116 <_CORE_message_queue_Submit+0xee><== NOT EXECUTED
}
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
4e04c: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED
4e050: 662e bnes 4e080 <_CORE_message_queue_Submit+0x58><== NOT EXECUTED
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
4e052: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e054: 4eb9 0004 fc28 jsr 4fc28 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( the_thread ) {
4e05a: 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 );
4e05c: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( the_thread ) {
4e05e: 4a80 tstl %d0 <== NOT EXECUTED
4e060: 671e beqs 4e080 <_CORE_message_queue_Submit+0x58><== NOT EXECUTED
4e062: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e064: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4e066: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED
4e06a: 4eb9 0005 5458 jsr 55458 <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;
4e070: 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;
4e074: 4fef 000c lea %sp@(12),%sp <== 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;
4e078: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_thread->Wait.count = (uint32_t) submit_type;
4e07a: 2743 0024 movel %d3,%a3@(36) <== NOT EXECUTED
4e07e: 603c bras 4e0bc <_CORE_message_queue_Submit+0x94><== 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 <
4e080: 202a 0044 movel %a2@(68),%d0 <== NOT EXECUTED
4e084: b0aa 0048 cmpl %a2@(72),%d0 <== NOT EXECUTED
4e088: 6336 blss 4e0c0 <_CORE_message_queue_Submit+0x98><== 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 );
4e08a: 486a 0068 pea %a2@(104) <== NOT EXECUTED
4e08e: 4eb9 0004 ddcc jsr 4ddcc <_Chain_Get> <== NOT EXECUTED
4e094: 2640 moveal %d0,%a3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
4e096: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e098: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4e09a: 486b 0010 pea %a3@(16) <== NOT EXECUTED
4e09e: 4eb9 0005 5458 jsr 55458 <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_message->Contents.buffer,
size
);
the_message->Contents.size = size;
4e0a4: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message,
int priority
)
{
#if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
the_message->priority = priority;
4e0a8: 2743 0008 movel %d3,%a3@(8) <== NOT EXECUTED
_CORE_message_queue_Set_message_priority( the_message, submit_type );
_CORE_message_queue_Insert_message(
4e0ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4e0ae: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4e0b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e0b2: 4eb9 0005 2b88 jsr 52b88 <_CORE_message_queue_Insert_message><== NOT EXECUTED
the_message_queue,
the_message,
submit_type
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
4e0b8: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4e0bc: 4280 clrl %d0 <== NOT EXECUTED
4e0be: 6060 bras 4e120 <_CORE_message_queue_Submit+0xf8><== NOT EXECUTED
/*
* No message buffers were available so we may need to return an
* overflow error or block the sender until the message is placed
* on the queue.
*/
if ( !wait ) {
4e0c0: 4a05 tstb %d5 <== NOT EXECUTED
4e0c2: 6756 beqs 4e11a <_CORE_message_queue_Submit+0xf2><== NOT EXECUTED
/*
* Do NOT block on a send if the caller is in an ISR. It is
* deadly to block in an ISR.
*/
if ( _ISR_Is_in_progress() ) {
4e0c4: 4ab9 0006 6bf6 tstl 66bf6 <_Per_CPU_Information+0x8> <== NOT EXECUTED
4e0ca: 6652 bnes 4e11e <_CORE_message_queue_Submit+0xf6><== NOT EXECUTED
* Thus the unusual choice to open a new scope and declare
* it as a variable. Doing this emphasizes how dangerous it
* would be to use this variable prior to here.
*/
{
Thread_Control *executing = _Thread_Executing;
4e0cc: 2079 0006 6bfa moveal 66bfa <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4e0d2: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4e0d8: 40c1 movew %sr,%d1 <== NOT EXECUTED
4e0da: 8081 orl %d1,%d0 <== NOT EXECUTED
4e0dc: 46c0 movew %d0,%sr <== NOT EXECUTED
4e0de: 7001 moveq #1,%d0 <== NOT EXECUTED
4e0e0: 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;
4e0e4: 216e 0014 0020 movel %fp@(20),%a0@(32) <== NOT EXECUTED
Thread_Control *executing = _Thread_Executing;
ISR_Level level;
_ISR_Disable( level );
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
4e0ea: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.return_argument_second.immutable_object = buffer;
4e0ee: 2144 002c movel %d4,%a0@(44) <== NOT EXECUTED
executing->Wait.option = (uint32_t) size;
4e0f2: 2142 0030 movel %d2,%a0@(48) <== NOT EXECUTED
executing->Wait.count = submit_type;
4e0f6: 2143 0024 movel %d3,%a0@(36) <== NOT EXECUTED
_ISR_Enable( level );
4e0fa: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
4e0fc: 4879 0005 007c pea 5007c <_Thread_queue_Timeout> <== NOT EXECUTED
4e102: 2f2e 0024 movel %fp@(36),%sp@- <== NOT EXECUTED
4e106: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e108: 4eb9 0004 fd68 jsr 4fd68 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
4e10e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e112: 7007 moveq #7,%d0 <== NOT EXECUTED
4e114: 600a bras 4e120 <_CORE_message_queue_Submit+0xf8><== 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;
4e116: 7001 moveq #1,%d0 <== NOT EXECUTED
4e118: 6006 bras 4e120 <_CORE_message_queue_Submit+0xf8><== NOT EXECUTED
* No message buffers were available so we may need to return an
* overflow error or block the sender until the message is placed
* on the queue.
*/
if ( !wait ) {
return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
4e11a: 7002 moveq #2,%d0 <== NOT EXECUTED
4e11c: 6002 bras 4e120 <_CORE_message_queue_Submit+0xf8><== NOT EXECUTED
/*
* Do NOT block on a send if the caller is in an ISR. It is
* deadly to block in an ISR.
*/
if ( _ISR_Is_in_progress() ) {
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED;
4e11e: 7003 moveq #3,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
4e120: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4e126: 4e5e unlk %fp <== NOT EXECUTED
...
00046054 <_CORE_mutex_Initialize>:
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46054: 4e56 fff4 linkw %fp,#-12
46058: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
/* 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;
4605c: 4878 000e pea e <OPER1+0x2>
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46060: 266e 000c moveal %fp@(12),%a3
46064: 246e 0008 moveal %fp@(8),%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;
46068: 2f0b movel %a3,%sp@-
4606a: 486a 0040 pea %a2@(64)
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
4606e: 242e 0010 movel %fp@(16),%d2
/* 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;
46072: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy>
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46078: 4fef 000c lea %sp@(12),%sp
rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||
initial_lock == CORE_MUTEX_UNLOCKED );
*/
the_mutex->Attributes = *the_mutex_attributes;
the_mutex->lock = initial_lock;
4607c: 2542 004e movel %d2,%a2@(78)
the_mutex->blocked_count = 0;
46080: 42aa 0056 clrl %a2@(86)
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46084: 4a82 tstl %d2
46086: 6638 bnes 460c0 <_CORE_mutex_Initialize+0x6c>
the_mutex->nest_count = 1;
46088: 7001 moveq #1,%d0
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4608a: 7202 moveq #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;
4608c: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
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;
46092: 2540 0052 movel %d0,%a2@(82)
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
46096: 2568 0008 005e movel %a0@(8),%a2@(94)
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4609c: 202a 0046 movel %a2@(70),%d0
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;
460a0: 2548 005a movel %a0,%a2@(90)
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
460a4: b280 cmpl %d0,%d1
460a6: 6708 beqs 460b0 <_CORE_mutex_Initialize+0x5c> <== NEVER TAKEN
460a8: 123c 0003 moveb #3,%d1
460ac: b280 cmpl %d0,%d1
460ae: 661c bnes 460cc <_CORE_mutex_Initialize+0x78> <== ALWAYS TAKEN
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
if ( _Thread_Executing->current_priority <
460b0: 202a 004a movel %a2@(74),%d0 <== NOT EXECUTED
460b4: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
460b8: 6236 bhis 460f0 <_CORE_mutex_Initialize+0x9c> <== 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++;
460ba: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
460be: 600c bras 460cc <_CORE_mutex_Initialize+0x78> <== NOT EXECUTED
}
} else {
the_mutex->nest_count = 0;
460c0: 42aa 0052 clrl %a2@(82)
the_mutex->holder = NULL;
460c4: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
460c8: 42aa 005e clrl %a2@(94)
}
_Thread_queue_Initialize(
460cc: 4878 0005 pea 5 <COMPARE>
460d0: 4878 0400 pea 400 <D_BIAS+0x2>
460d4: 4aab 0006 tstl %a3@(6)
460d8: 56c0 sne %d0
460da: 49c0 extbl %d0
460dc: 4480 negl %d0
460de: 2f00 movel %d0,%sp@-
460e0: 2f0a movel %a2,%sp@-
460e2: 4eb9 0004 7e40 jsr 47e40 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
460e8: 4fef 0010 lea %sp@(16),%sp
460ec: 4280 clrl %d0
460ee: 6002 bras 460f2 <_CORE_mutex_Initialize+0x9e>
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;
460f0: 7006 moveq #6,%d0 <== NOT EXECUTED
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
460f2: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
460f8: 4e5e unlk %fp <== NOT EXECUTED
00046160 <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
46160: 4e56 0000 linkw %fp,#0
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
46164: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
4616a: 2f0a movel %a2,%sp@-
4616c: 246e 0008 moveal %fp@(8),%a2
46170: 2f02 movel %d2,%sp@-
46172: 142e 0013 moveb %fp@(19),%d2
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
46176: 4a80 tstl %d0
46178: 671c beqs 46196 <_CORE_mutex_Seize+0x36>
4617a: 4a02 tstb %d2
4617c: 6718 beqs 46196 <_CORE_mutex_Seize+0x36> <== NEVER TAKEN
4617e: 7001 moveq #1,%d0
46180: b0b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d0
46186: 640e bccs 46196 <_CORE_mutex_Seize+0x36>
46188: 4878 0012 pea 12 <INVALID_OPERATION+0x2>
4618c: 42a7 clrl %sp@-
4618e: 42a7 clrl %sp@-
46190: 4eb9 0004 67b4 jsr 467b4 <_Internal_error_Occurred>
46196: 486e 0018 pea %fp@(24)
4619a: 2f0a movel %a2,%sp@-
4619c: 4eb9 0004 aa08 jsr 4aa08 <_CORE_mutex_Seize_interrupt_trylock>
461a2: 508f addql #8,%sp
461a4: 4a80 tstl %d0
461a6: 6750 beqs 461f8 <_CORE_mutex_Seize+0x98>
461a8: 4a02 tstb %d2
461aa: 6614 bnes 461c0 <_CORE_mutex_Seize+0x60> <== ALWAYS TAKEN
461ac: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED
461b0: 46c0 movew %d0,%sr <== NOT EXECUTED
461b2: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
461b8: 7001 moveq #1,%d0 <== NOT EXECUTED
461ba: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
461be: 6038 bras 461f8 <_CORE_mutex_Seize+0x98> <== 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;
461c0: 7001 moveq #1,%d0
461c2: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
461c8: 2540 0030 movel %d0,%a2@(48)
461cc: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
461d2: 5280 addql #1,%d0
461d4: 216e 000c 0020 movel %fp@(12),%a0@(32)
461da: 214a 0044 movel %a2,%a0@(68)
461de: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level>
461e4: 202e 0018 movel %fp@(24),%d0
461e8: 46c0 movew %d0,%sr
461ea: 2f2e 0014 movel %fp@(20),%sp@-
461ee: 2f0a movel %a2,%sp@-
461f0: 4eb9 0004 60fc jsr 460fc <_CORE_mutex_Seize_interrupt_blocking>
461f6: 508f addql #8,%sp
}
461f8: 242e fff8 movel %fp@(-8),%d2
461fc: 246e fffc moveal %fp@(-4),%a2
46200: 4e5e unlk %fp <== NOT EXECUTED
000460fc <_CORE_mutex_Seize_interrupt_blocking>:
)
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
460fc: 7002 moveq #2,%d0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
460fe: 4e56 0000 linkw %fp,#0
Thread_Control *executing;
executing = _Thread_Executing;
46102: 2279 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a1
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
46108: 2f0a movel %a2,%sp@-
4610a: 246e 0008 moveal %fp@(8),%a2
4610e: 2f02 movel %d2,%sp@-
46110: 242e 000c movel %fp@(12),%d2
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
46114: b0aa 0046 cmpl %a2@(70),%d0
46118: 661e bnes 46138 <_CORE_mutex_Seize_interrupt_blocking+0x3c>
if ( the_mutex->holder->current_priority > executing->current_priority ) {
4611a: 206a 005a moveal %a2@(90),%a0
4611e: 2029 0014 movel %a1@(20),%d0
46122: b0a8 0014 cmpl %a0@(20),%d0
46126: 6410 bccs 46138 <_CORE_mutex_Seize_interrupt_blocking+0x3c><== NEVER TAKEN
_Thread_Change_priority(
46128: 42a7 clrl %sp@-
4612a: 2f00 movel %d0,%sp@-
4612c: 2f08 movel %a0,%sp@-
4612e: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority>
46134: 4fef 000c lea %sp@(12),%sp
false
);
}
}
the_mutex->blocked_count++;
46138: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
4613c: 4879 0004 7f10 pea 47f10 <_Thread_queue_Timeout>
46142: 2f02 movel %d2,%sp@-
46144: 2f0a movel %a2,%sp@-
46146: 4eb9 0004 7bfc jsr 47bfc <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
4614c: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
46150: 4fef 000c lea %sp@(12),%sp
}
46154: 246e fffc moveal %fp@(-4),%a2
46158: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
4615a: 4ef9 0004 779a jmp 4779a <_Thread_Enable_dispatch>
0004aa08 <_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
)
{
4aa08: 4e56 fff4 linkw %fp,#-12
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4aa0c: 2279 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a1
4aa12: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4aa16: 206e 0008 moveal %fp@(8),%a0
4aa1a: 246e 000c moveal %fp@(12),%a2
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
4aa1e: 42a9 0034 clrl %a1@(52)
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
4aa22: 4aa8 004e tstl %a0@(78)
4aa26: 6700 009e beqw 4aac6 <_CORE_mutex_Seize_interrupt_trylock+0xbe>
the_mutex->lock = CORE_MUTEX_LOCKED;
the_mutex->holder = executing;
the_mutex->holder_id = executing->Object.id;
the_mutex->nest_count = 1;
4aa2a: 7001 moveq #1,%d0
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4aa2c: 7202 moveq #2,%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;
4aa2e: 2169 0008 005e movel %a1@(8),%a0@(94)
the_mutex->nest_count = 1;
4aa34: 2140 0052 movel %d0,%a0@(82)
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p );
}
4aa38: 2028 0046 movel %a0@(70),%d0
/* 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;
4aa3c: 42a8 004e clrl %a0@(78)
the_mutex->holder = executing;
4aa40: 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 ) ||
4aa44: b280 cmpl %d0,%d1
4aa46: 6706 beqs 4aa4e <_CORE_mutex_Seize_interrupt_trylock+0x46>
4aa48: 7403 moveq #3,%d2
4aa4a: b480 cmpl %d0,%d2
4aa4c: 6612 bnes 4aa60 <_CORE_mutex_Seize_interrupt_trylock+0x58><== ALWAYS TAKEN
_Chain_Prepend_unprotected( &executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = executing->current_priority;
#endif
executing->resource_count++;
4aa4e: 2229 001c movel %a1@(28),%d1
4aa52: 2401 movel %d1,%d2
4aa54: 5282 addql #1,%d2
4aa56: 2342 001c movel %d2,%a1@(28)
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
4aa5a: 7403 moveq #3,%d2
4aa5c: b480 cmpl %d0,%d2
4aa5e: 6708 beqs 4aa68 <_CORE_mutex_Seize_interrupt_trylock+0x60><== NEVER TAKEN
_ISR_Enable( *level_p );
4aa60: 2012 movel %a2@,%d0
4aa62: 46c0 movew %d0,%sr
4aa64: 6000 008a braw 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8>
*/
{
Priority_Control ceiling;
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
4aa68: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED
current = executing->current_priority;
4aa6c: 2669 0014 moveal %a1@(20),%a3 <== NOT EXECUTED
if ( current == ceiling ) {
4aa70: b08b cmpl %a3,%d0 <== NOT EXECUTED
4aa72: 6606 bnes 4aa7a <_CORE_mutex_Seize_interrupt_trylock+0x72><== NOT EXECUTED
_ISR_Enable( *level_p );
4aa74: 2012 movel %a2@,%d0 <== NOT EXECUTED
4aa76: 46c0 movew %d0,%sr <== NOT EXECUTED
4aa78: 6076 bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== NOT EXECUTED
return 0;
}
if ( current > ceiling ) {
4aa7a: b08b cmpl %a3,%d0 <== NOT EXECUTED
4aa7c: 642e bccs 4aaac <_CORE_mutex_Seize_interrupt_trylock+0xa4><== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4aa7e: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4aa84: 5280 addql #1,%d0 <== NOT EXECUTED
4aa86: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
_ISR_Enable( *level_p );
4aa8c: 2012 movel %a2@,%d0 <== NOT EXECUTED
4aa8e: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_Change_priority(
4aa90: 42a7 clrl %sp@- <== NOT EXECUTED
4aa92: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED
4aa96: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED
4aa9a: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED
the_mutex->holder,
the_mutex->Attributes.priority_ceiling,
false
);
_Thread_Enable_dispatch();
4aaa0: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
4aaa6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4aaaa: 6044 bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== NOT EXECUTED
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4aaac: 7006 moveq #6,%d0 <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4aaae: 7401 moveq #1,%d2 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4aab0: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4aab4: 2142 004e movel %d2,%a0@(78) <== NOT EXECUTED
the_mutex->nest_count = 0; /* undo locking above */
4aab8: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
executing->resource_count--; /* undo locking above */
4aabc: 2341 001c movel %d1,%a1@(28) <== NOT EXECUTED
_ISR_Enable( *level_p );
4aac0: 2012 movel %a2@,%d0 <== NOT EXECUTED
4aac2: 46c0 movew %d0,%sr <== NOT EXECUTED
4aac4: 602a bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== 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 ) ) {
4aac6: 2668 005a moveal %a0@(90),%a3
4aaca: b3cb cmpal %a3,%a1
4aacc: 6626 bnes 4aaf4 <_CORE_mutex_Seize_interrupt_trylock+0xec>
switch ( the_mutex->Attributes.lock_nesting_behavior ) {
4aace: 2028 0040 movel %a0@(64),%d0
4aad2: 6708 beqs 4aadc <_CORE_mutex_Seize_interrupt_trylock+0xd4><== NEVER TAKEN
4aad4: 7201 moveq #1,%d1
4aad6: b280 cmpl %d0,%d1
4aad8: 661a bnes 4aaf4 <_CORE_mutex_Seize_interrupt_trylock+0xec><== ALWAYS TAKEN
4aada: 600a bras 4aae6 <_CORE_mutex_Seize_interrupt_trylock+0xde><== NOT EXECUTED
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
4aadc: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED
_ISR_Enable( *level_p );
4aae0: 2012 movel %a2@,%d0 <== NOT EXECUTED
4aae2: 46c0 movew %d0,%sr <== NOT EXECUTED
4aae4: 600a bras 4aaf0 <_CORE_mutex_Seize_interrupt_trylock+0xe8><== NOT EXECUTED
return 0;
case CORE_MUTEX_NESTING_IS_ERROR:
executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
4aae6: 7402 moveq #2,%d2 <== NOT EXECUTED
4aae8: 2742 0034 movel %d2,%a3@(52) <== NOT EXECUTED
_ISR_Enable( *level_p );
4aaec: 2012 movel %a2@,%d0 <== NOT EXECUTED
4aaee: 46c0 movew %d0,%sr <== NOT EXECUTED
return 0;
4aaf0: 4280 clrl %d0
4aaf2: 6002 bras 4aaf6 <_CORE_mutex_Seize_interrupt_trylock+0xee>
/*
* The mutex is not available and the caller must deal with the possibility
* of blocking.
*/
return 1;
4aaf4: 7001 moveq #1,%d0
4aaf6: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4aafc: 4e5e unlk %fp <== NOT EXECUTED
00046204 <_CORE_mutex_Surrender>:
#else
Objects_Id id __attribute__((unused)),
CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused))
#endif
)
{
46204: 4e56 0000 linkw %fp,#0
46208: 2f0a movel %a2,%sp@-
4620a: 246e 0008 moveal %fp@(8),%a2
Thread_Control *the_thread;
Thread_Control *holder;
holder = the_mutex->holder;
4620e: 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 ) {
46212: 4a2a 0044 tstb %a2@(68)
46216: 670a beqs 46222 <_CORE_mutex_Surrender+0x1e>
if ( !_Thread_Is_executing( holder ) )
46218: b1f9 0005 df92 cmpal 5df92 <_Per_CPU_Information+0xc>,%a0
4621e: 6600 00ba bnew 462da <_CORE_mutex_Surrender+0xd6>
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
}
/* XXX already unlocked -- not right status */
if ( !the_mutex->nest_count )
46222: 202a 0052 movel %a2@(82),%d0
46226: 6700 00b6 beqw 462de <_CORE_mutex_Surrender+0xda>
return CORE_MUTEX_STATUS_SUCCESSFUL;
the_mutex->nest_count--;
4622a: 5380 subql #1,%d0
4622c: 2540 0052 movel %d0,%a2@(82)
if ( the_mutex->nest_count != 0 ) {
46230: 6600 00ac bnew 462de <_CORE_mutex_Surrender+0xda>
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
46234: 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 ) ||
46238: 7202 moveq #2,%d1
4623a: b280 cmpl %d0,%d1
4623c: 6708 beqs 46246 <_CORE_mutex_Surrender+0x42>
4623e: 123c 0003 moveb #3,%d1
46242: b280 cmpl %d0,%d1
46244: 6628 bnes 4626e <_CORE_mutex_Surrender+0x6a> <== ALWAYS TAKEN
_CORE_mutex_Pop_priority( the_mutex, holder );
if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL )
return pop_status;
holder->resource_count--;
46246: 2028 001c movel %a0@(28),%d0
4624a: 5380 subql #1,%d0
4624c: 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 &&
46250: 661c bnes 4626e <_CORE_mutex_Surrender+0x6a>
holder->real_priority != holder->current_priority ) {
46252: 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 &&
46256: b0a8 0014 cmpl %a0@(20),%d0
4625a: 6712 beqs 4626e <_CORE_mutex_Surrender+0x6a>
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
4625c: 4878 0001 pea 1 <ADD>
46260: 2f00 movel %d0,%sp@-
46262: 2f08 movel %a0,%sp@-
46264: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority>
4626a: 4fef 000c lea %sp@(12),%sp
}
}
the_mutex->holder = NULL;
4626e: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
46272: 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 ) ) ) {
46276: 2f0a movel %a2,%sp@-
46278: 4eb9 0004 7abc jsr 47abc <_Thread_queue_Dequeue>
4627e: 588f addql #4,%sp
46280: 2040 moveal %d0,%a0
46282: 4a80 tstl %d0
46284: 674a beqs 462d0 <_CORE_mutex_Surrender+0xcc>
} else
#endif
{
the_mutex->holder = the_thread;
46286: 2540 005a movel %d0,%a2@(90)
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
4628a: 7001 moveq #1,%d0
switch ( the_mutex->Attributes.discipline ) {
4628c: 7202 moveq #2,%d1
} else
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
4628e: 2568 0008 005e movel %a0@(8),%a2@(94)
the_mutex->nest_count = 1;
46294: 2540 0052 movel %d0,%a2@(82)
switch ( the_mutex->Attributes.discipline ) {
46298: 202a 0046 movel %a2@(70),%d0
4629c: b280 cmpl %d0,%d1
4629e: 670a beqs 462aa <_CORE_mutex_Surrender+0xa6> <== ALWAYS TAKEN
462a0: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
462a4: b280 cmpl %d0,%d1 <== NOT EXECUTED
462a6: 6636 bnes 462de <_CORE_mutex_Surrender+0xda> <== NOT EXECUTED
462a8: 6006 bras 462b0 <_CORE_mutex_Surrender+0xac> <== NOT EXECUTED
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++;
462aa: 52a8 001c addql #1,%a0@(28)
462ae: 602e bras 462de <_CORE_mutex_Surrender+0xda>
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 <
462b0: 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++;
462b4: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
if (the_mutex->Attributes.priority_ceiling <
462b8: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
462bc: 6420 bccs 462de <_CORE_mutex_Surrender+0xda> <== NOT EXECUTED
the_thread->current_priority){
_Thread_Change_priority(
462be: 42a7 clrl %sp@- <== NOT EXECUTED
462c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
462c2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
462c4: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED
462ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
462ce: 600e bras 462de <_CORE_mutex_Surrender+0xda> <== NOT EXECUTED
}
break;
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
462d0: 7001 moveq #1,%d0
462d2: 2540 004e movel %d0,%a2@(78)
return CORE_MUTEX_STATUS_SUCCESSFUL;
462d6: 4200 clrb %d0
462d8: 6006 bras 462e0 <_CORE_mutex_Surrender+0xdc>
* 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;
462da: 7003 moveq #3,%d0 <== NOT EXECUTED
462dc: 6002 bras 462e0 <_CORE_mutex_Surrender+0xdc> <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
462de: 4280 clrl %d0
}
462e0: 246e fffc moveal %fp@(-4),%a2
462e4: 4e5e unlk %fp <== NOT EXECUTED
0004e684 <_CORE_semaphore_Seize>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
4e684: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
4e68a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4e68e: 2279 0006 2efe moveal 62efe <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
CORE_semaphore_Control *the_semaphore,
Objects_Id id,
bool wait,
Watchdog_Interval timeout
)
{
4e694: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4e698: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4e69c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
4e6a0: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
4e6a4: 182e 0013 moveb %fp@(19),%d4 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
4e6a8: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
_ISR_Disable( level );
4e6ac: 40c0 movew %sr,%d0 <== NOT EXECUTED
4e6ae: 8280 orl %d0,%d1 <== NOT EXECUTED
4e6b0: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
4e6b2: 2228 0048 movel %a0@(72),%d1 <== NOT EXECUTED
4e6b6: 670a beqs 4e6c2 <_CORE_semaphore_Seize+0x3e> <== NOT EXECUTED
the_semaphore->count -= 1;
4e6b8: 5381 subql #1,%d1 <== NOT EXECUTED
4e6ba: 2141 0048 movel %d1,%a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
4e6be: 46c0 movew %d0,%sr <== NOT EXECUTED
return;
4e6c0: 603c bras 4e6fe <_CORE_semaphore_Seize+0x7a> <== NOT EXECUTED
/*
* If the semaphore was not available and the caller was not willing
* to block, then return immediately with a status indicating that
* the semaphore was not available and the caller never blocked.
*/
if ( !wait ) {
4e6c2: 4a04 tstb %d4 <== NOT EXECUTED
4e6c4: 660a bnes 4e6d0 <_CORE_semaphore_Seize+0x4c> <== NOT EXECUTED
_ISR_Enable( level );
4e6c6: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
4e6c8: 7001 moveq #1,%d0 <== NOT EXECUTED
4e6ca: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
4e6ce: 602e bras 4e6fe <_CORE_semaphore_Seize+0x7a> <== NOT EXECUTED
4e6d0: 7201 moveq #1,%d1 <== NOT EXECUTED
4e6d2: 2141 0030 movel %d1,%a0@(48) <== NOT EXECUTED
/*
* If the semaphore is not available and the caller is willing to
* block, then we now block the caller with optional timeout.
*/
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
4e6d6: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
4e6da: 2343 0020 movel %d3,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
4e6de: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
4e6e0: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
4e6e4: 203c 0004 b558 movel #308568,%d0 <== NOT EXECUTED
4e6ea: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4e6ee: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
*/
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
4e6f2: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
4e6f6: 4e5e unlk %fp <== NOT EXECUTED
*/
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
executing->Wait.id = id;
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
4e6f8: 4ef9 0004 b244 jmp 4b244 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
}
4e6fe: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
4e702: 4e5e unlk %fp <== NOT EXECUTED
...
0004633c <_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
)
{
4633c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46340: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46342: 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)) ) {
46346: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46348: 4eb9 0004 7abc jsr 47abc <_Thread_queue_Dequeue> <== NOT EXECUTED
4634e: 588f addql #4,%sp <== NOT EXECUTED
46350: 4a80 tstl %d0 <== NOT EXECUTED
46352: 6624 bnes 46378 <_CORE_semaphore_Surrender+0x3c> <== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_semaphore_mp_support) ( the_thread, id );
#endif
} else {
_ISR_Disable( level );
46354: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
46358: 40c1 movew %sr,%d1 <== NOT EXECUTED
4635a: 8081 orl %d1,%d0 <== NOT EXECUTED
4635c: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
4635e: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
46362: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
46366: 640a bccs 46372 <_CORE_semaphore_Surrender+0x36> <== NOT EXECUTED
the_semaphore->count += 1;
46368: 5280 addql #1,%d0 <== NOT EXECUTED
4636a: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
4636e: 4280 clrl %d0 <== NOT EXECUTED
46370: 6002 bras 46374 <_CORE_semaphore_Surrender+0x38> <== 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;
46372: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
46374: 46c1 movew %d1,%sr <== NOT EXECUTED
46376: 6002 bras 4637a <_CORE_semaphore_Surrender+0x3e> <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
46378: 4280 clrl %d0 <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
4637a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4637e: 4e5e unlk %fp <== NOT EXECUTED
...
00046c80 <_CORE_spinlock_Initialize>:
void _CORE_spinlock_Initialize(
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
46c80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46c84: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
the_spinlock->Attributes = *the_spinlock_attributes;
46c88: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
the_spinlock->lock = 0;
the_spinlock->users = 0;
the_spinlock->holder = 0;
}
46c8c: 4e5e unlk %fp <== NOT EXECUTED
CORE_spinlock_Control *the_spinlock,
CORE_spinlock_Attributes *the_spinlock_attributes
)
{
the_spinlock->Attributes = *the_spinlock_attributes;
46c8e: 2091 movel %a1@,%a0@ <== NOT EXECUTED
the_spinlock->lock = 0;
46c90: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->users = 0;
46c94: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
the_spinlock->holder = 0;
46c98: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
}
...
00046ca0 <_CORE_spinlock_Release>:
CORE_spinlock_Control *the_spinlock
)
{
ISR_Level level;
_ISR_Disable( level );
46ca0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
*/
CORE_spinlock_Status _CORE_spinlock_Release(
CORE_spinlock_Control *the_spinlock
)
{
46ca6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46caa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
46cae: 40c0 movew %sr,%d0 <== NOT EXECUTED
46cb0: 8280 orl %d0,%d1 <== NOT EXECUTED
46cb2: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* It must locked before it can be unlocked.
*/
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
46cb4: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
46cb8: 6606 bnes 46cc0 <_CORE_spinlock_Release+0x20> <== NOT EXECUTED
_ISR_Enable( level );
46cba: 46c0 movew %d0,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_LOCKED;
46cbc: 7006 moveq #6,%d0 <== NOT EXECUTED
46cbe: 602c bras 46cec <_CORE_spinlock_Release+0x4c> <== NOT EXECUTED
}
/*
* It must locked by the current thread before it can be unlocked.
*/
if ( the_spinlock->holder != _Thread_Executing->Object.id ) {
46cc0: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
46cc4: 2279 0005 ef62 moveal 5ef62 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
46cca: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED
46cce: 6706 beqs 46cd6 <_CORE_spinlock_Release+0x36> <== NOT EXECUTED
_ISR_Enable( level );
46cd0: 46c0 movew %d0,%sr <== NOT EXECUTED
return CORE_SPINLOCK_NOT_HOLDER;
46cd2: 7002 moveq #2,%d0 <== NOT EXECUTED
46cd4: 6016 bras 46cec <_CORE_spinlock_Release+0x4c> <== NOT EXECUTED
}
/*
* Let it be unlocked.
*/
the_spinlock->users -= 1;
46cd6: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
46cda: 5381 subql #1,%d1 <== NOT EXECUTED
46cdc: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_UNLOCKED;
46ce0: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
the_spinlock->holder = 0;
46ce4: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
_ISR_Enable( level );
46ce8: 46c0 movew %d0,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
46cea: 4280 clrl %d0 <== NOT EXECUTED
}
46cec: 4e5e unlk %fp <== NOT EXECUTED
00046cf0 <_CORE_spinlock_Wait>:
ISR_Level level;
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
46cf0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
CORE_spinlock_Status _CORE_spinlock_Wait(
CORE_spinlock_Control *the_spinlock,
bool wait,
Watchdog_Interval timeout
)
{
46cf6: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
46cfa: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
46cfe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
46d02: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED
ISR_Level level;
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
46d06: 40c1 movew %sr,%d1 <== NOT EXECUTED
46d08: 8081 orl %d1,%d0 <== NOT EXECUTED
46d0a: 46c0 movew %d0,%sr <== NOT EXECUTED
46d0c: 2001 movel %d1,%d0 <== NOT EXECUTED
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
46d0e: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
46d12: 7401 moveq #1,%d2 <== NOT EXECUTED
46d14: b488 cmpl %a0,%d2 <== NOT EXECUTED
46d16: 6616 bnes 46d2e <_CORE_spinlock_Wait+0x3e> <== NOT EXECUTED
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
46d18: 226a 000c moveal %a2@(12),%a1 <== NOT EXECUTED
46d1c: 2079 0005 ef62 moveal 5ef62 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
Watchdog_Interval limit = _Watchdog_Ticks_since_boot + timeout;
#endif
_ISR_Disable( level );
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
46d22: b3e8 0008 cmpal %a0@(8),%a1 <== NOT EXECUTED
46d26: 6606 bnes 46d2e <_CORE_spinlock_Wait+0x3e> <== NOT EXECUTED
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
_ISR_Enable( level );
46d28: 46c1 movew %d1,%sr <== NOT EXECUTED
return CORE_SPINLOCK_HOLDER_RELOCKING;
46d2a: 7001 moveq #1,%d0 <== NOT EXECUTED
46d2c: 6068 bras 46d96 <_CORE_spinlock_Wait+0xa6> <== NOT EXECUTED
}
the_spinlock->users += 1;
46d2e: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED
46d32: 5281 addql #1,%d1 <== NOT EXECUTED
*/
_ISR_Enable( level );
/* An ISR could occur here */
_Thread_Enable_dispatch();
46d34: 47f9 0004 8142 lea 48142 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
/* Another thread could get dispatched here */
/* Reenter the critical sections so we can attempt the lock again. */
_Thread_Disable_dispatch();
_ISR_Disable( level );
46d3a: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
if ( (the_spinlock->lock == CORE_SPINLOCK_LOCKED) &&
(the_spinlock->holder == _Thread_Executing->Object.id) ) {
_ISR_Enable( level );
return CORE_SPINLOCK_HOLDER_RELOCKING;
}
the_spinlock->users += 1;
46d40: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
46d44: 222a 0004 movel %a2@(4),%d1 <== NOT EXECUTED
46d48: 661c bnes 46d66 <_CORE_spinlock_Wait+0x76> <== NOT EXECUTED
the_spinlock->lock = CORE_SPINLOCK_LOCKED;
the_spinlock->holder = _Thread_Executing->Object.id;
46d4a: 2079 0005 ef62 moveal 5ef62 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
return CORE_SPINLOCK_HOLDER_RELOCKING;
}
the_spinlock->users += 1;
for ( ;; ) {
if ( the_spinlock->lock == CORE_SPINLOCK_UNLOCKED ) {
the_spinlock->lock = CORE_SPINLOCK_LOCKED;
46d50: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
46d54: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
the_spinlock->holder = _Thread_Executing->Object.id;
46d58: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
46d5c: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_ISR_Enable( level );
46d60: 46c0 movew %d0,%sr <== NOT EXECUTED
return CORE_SPINLOCK_SUCCESSFUL;
46d62: 4280 clrl %d0 <== NOT EXECUTED
46d64: 6030 bras 46d96 <_CORE_spinlock_Wait+0xa6> <== NOT EXECUTED
}
/*
* Spinlock is unavailable. If not willing to wait, return.
*/
if ( !wait ) {
46d66: 4a03 tstb %d3 <== NOT EXECUTED
46d68: 6610 bnes 46d7a <_CORE_spinlock_Wait+0x8a> <== NOT EXECUTED
the_spinlock->users -= 1;
46d6a: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED
46d6e: 5381 subql #1,%d1 <== NOT EXECUTED
46d70: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
_ISR_Enable( level );
46d74: 46c0 movew %d0,%sr <== NOT EXECUTED
return CORE_SPINLOCK_UNAVAILABLE;
46d76: 7005 moveq #5,%d0 <== NOT EXECUTED
46d78: 601c bras 46d96 <_CORE_spinlock_Wait+0xa6> <== NOT EXECUTED
*
* A spinlock cannot be deleted while it is being used so we are
* safe from deletion.
*/
_ISR_Enable( level );
46d7a: 46c0 movew %d0,%sr <== NOT EXECUTED
/* An ISR could occur here */
_Thread_Enable_dispatch();
46d7c: 4e93 jsr %a3@ <== NOT EXECUTED
46d7e: 2039 0005 ead8 movel 5ead8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46d84: 5280 addql #1,%d0 <== NOT EXECUTED
46d86: 23c0 0005 ead8 movel %d0,5ead8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/* Another thread could get dispatched here */
/* Reenter the critical sections so we can attempt the lock again. */
_Thread_Disable_dispatch();
_ISR_Disable( level );
46d8c: 2202 movel %d2,%d1 <== NOT EXECUTED
46d8e: 40c0 movew %sr,%d0 <== NOT EXECUTED
46d90: 8280 orl %d0,%d1 <== NOT EXECUTED
46d92: 46c1 movew %d1,%sr <== NOT EXECUTED
}
46d94: 60ae bras 46d44 <_CORE_spinlock_Wait+0x54> <== NOT EXECUTED
}
46d96: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46d9c: 4e5e unlk %fp <== NOT EXECUTED
00046670 <_Chain_Append_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
46670: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Append_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
46676: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4667a: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4667e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46680: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
46684: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
46686: 40c2 movew %sr,%d2 <== NOT EXECUTED
46688: 8082 orl %d2,%d0 <== NOT EXECUTED
4668a: 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 );
4668c: 2209 movel %a1,%d1 <== NOT EXECUTED
4668e: 5881 addql #4,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
46690: b291 cmpl %a1@,%d1 <== NOT EXECUTED
46692: 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;
46694: 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 )
46698: 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;
4669a: 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;
4669e: 2081 movel %d1,%a0@ <== NOT EXECUTED
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
466a0: 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;
466a4: 2488 movel %a0,%a2@ <== NOT EXECUTED
was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
466a6: 46c2 movew %d2,%sr <== NOT EXECUTED
return was_empty;
}
466a8: 241f movel %sp@+,%d2 <== NOT EXECUTED
466aa: 245f moveal %sp@+,%a2 <== NOT EXECUTED
466ac: 4e5e unlk %fp <== NOT EXECUTED
00046710 <_Chain_Get_with_empty_check>:
)
{
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
46710: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Get_with_empty_check(
Chain_Control *chain,
Chain_Node **node
)
{
46716: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4671a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4671e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46720: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
46724: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
46726: 40c1 movew %sr,%d1 <== NOT EXECUTED
46728: 8081 orl %d1,%d0 <== NOT EXECUTED
4672a: 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 );
4672c: 2008 movel %a0,%d0 <== NOT EXECUTED
4672e: 5880 addql #4,%d0 <== NOT EXECUTED
Chain_Node *old_first = head->next;
46730: 2450 moveal %a0@,%a2 <== NOT EXECUTED
if ( old_first != tail ) {
46732: b08a cmpl %a2,%d0 <== NOT EXECUTED
46734: 6712 beqs 46748 <_Chain_Get_with_empty_check+0x38><== NOT EXECUTED
Chain_Node *new_first = old_first->next;
46736: 2252 moveal %a2@,%a1 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
46738: b089 cmpl %a1,%d0 <== NOT EXECUTED
4673a: 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;
4673c: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
4673e: 4480 negl %d0 <== NOT EXECUTED
if ( old_first != tail ) {
Chain_Node *new_first = old_first->next;
head->next = new_first;
new_first->previous = head;
46740: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
*the_node = old_first;
46744: 268a movel %a2,%a3@ <== NOT EXECUTED
46746: 6004 bras 4674c <_Chain_Get_with_empty_check+0x3c><== NOT EXECUTED
is_empty_now = new_first == tail;
} else
*the_node = NULL;
46748: 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;
4674a: 7001 moveq #1,%d0 <== NOT EXECUTED
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
4674c: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
4674e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
46750: 265f moveal %sp@+,%a3 <== NOT EXECUTED
46752: 4e5e unlk %fp <== NOT EXECUTED
...
000467bc <_Chain_Prepend_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
467bc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Prepend_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
467c2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
467c6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
467ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
467cc: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
467d0: 40c1 movew %sr,%d1 <== NOT EXECUTED
467d2: 8081 orl %d1,%d0 <== NOT EXECUTED
467d4: 46c0 movew %d0,%sr <== NOT EXECUTED
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
return was_empty;
}
467d6: 2451 moveal %a1@,%a2 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
467d8: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
467dc: 22c8 movel %a0,%a1@+ <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
467de: 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;
467e2: 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 );
467e4: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
467e6: b3ca cmpal %a2,%a1 <== NOT EXECUTED
467e8: 57c0 seq %d0 <== NOT EXECUTED
return was_empty;
}
467ea: 245f moveal %sp@+,%a2 <== NOT EXECUTED
467ec: 4480 negl %d0 <== NOT EXECUTED
467ee: 4e5e unlk %fp <== NOT EXECUTED
...
000450a0 <_Event_Seize>:
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
_ISR_Disable( level );
450a0: 203c 0000 0700 movel #1792,%d0
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
450a6: 4e56 ffec linkw %fp,#-20
450aa: 226e 0010 moveal %fp@(16),%a1
450ae: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
rtems_event_set pending_events;
ISR_Level level;
RTEMS_API_Control *api;
Thread_blocking_operation_States sync_state;
executing = _Thread_Executing;
450b2: 2479 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a2
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
450b8: 242e 0008 movel %fp@(8),%d2
450bc: 262e 000c movel %fp@(12),%d3
450c0: 206e 0014 moveal %fp@(20),%a0
ISR_Level level;
RTEMS_API_Control *api;
Thread_blocking_operation_States sync_state;
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
450c4: 42aa 0034 clrl %a2@(52)
api = executing->API_Extensions[ THREAD_API_RTEMS ];
450c8: 266a 00fe moveal %a2@(254),%a3
_ISR_Disable( level );
450cc: 40c1 movew %sr,%d1
450ce: 8081 orl %d1,%d0
450d0: 46c0 movew %d0,%sr
pending_events = api->pending_events;
450d2: 2813 movel %a3@,%d4
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 );
450d4: 2002 movel %d2,%d0
450d6: c084 andl %d4,%d0
seized_events = _Event_sets_Get( pending_events, event_in );
if ( !_Event_sets_Is_empty( seized_events ) &&
450d8: 6716 beqs 450f0 <_Event_Seize+0x50>
450da: b480 cmpl %d0,%d2
450dc: 6706 beqs 450e4 <_Event_Seize+0x44> <== ALWAYS TAKEN
(seized_events == event_in || _Options_Is_any( option_set )) ) {
450de: 0803 0001 btst #1,%d3 <== NOT EXECUTED
450e2: 670c beqs 450f0 <_Event_Seize+0x50> <== 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) );
450e4: 2400 movel %d0,%d2
450e6: 4682 notl %d2
450e8: c484 andl %d4,%d2
450ea: 2682 movel %d2,%a3@
api->pending_events =
_Event_sets_Clear( pending_events, seized_events );
_ISR_Enable( level );
450ec: 46c1 movew %d1,%sr
450ee: 600e bras 450fe <_Event_Seize+0x5e>
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
450f0: 0803 0000 btst #0,%d3
450f4: 670e beqs 45104 <_Event_Seize+0x64> <== ALWAYS TAKEN
_ISR_Enable( level );
450f6: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = RTEMS_UNSATISFIED;
450f8: 720d moveq #13,%d1 <== NOT EXECUTED
450fa: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
*event_out = seized_events;
450fe: 2080 movel %d0,%a0@
return;
45100: 6000 0096 braw 45198 <_Event_Seize+0xf8>
*
* 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;
45104: 2542 0024 movel %d2,%a2@(36)
executing->Wait.return_argument = event_out;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45108: 7401 moveq #1,%d2
* 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;
4510a: 2543 0030 movel %d3,%a2@(48)
executing->Wait.count = (uint32_t) event_in;
executing->Wait.return_argument = event_out;
4510e: 2548 0028 movel %a0,%a2@(40)
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45112: 23c2 0005 e364 movel %d2,5e364 <_Event_Sync_state>
_ISR_Enable( level );
45118: 46c1 movew %d1,%sr
if ( ticks ) {
4511a: 4a89 tstl %a1
4511c: 6730 beqs 4514e <_Event_Seize+0xae>
_Watchdog_Initialize(
4511e: 202a 0008 movel %a2@(8),%d0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45122: 223c 0004 52fc movel #283388,%d1
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
45128: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
4512c: 2541 0064 movel %d1,%a2@(100)
the_watchdog->id = id;
45130: 2540 0068 movel %d0,%a2@(104)
the_watchdog->user_data = user_data;
45134: 42aa 006c clrl %a2@(108)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45138: 2549 0054 movel %a1,%a2@(84)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4513c: 486a 0048 pea %a2@(72)
45140: 4879 0005 dbe8 pea 5dbe8 <_Watchdog_Ticks_chain>
45146: 4eb9 0004 8514 jsr 48514 <_Watchdog_Insert>
4514c: 508f addql #8,%sp
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
4514e: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
45152: 2f0a movel %a2,%sp@-
45154: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state>
_ISR_Disable( level );
4515a: 203c 0000 0700 movel #1792,%d0
45160: 40c1 movew %sr,%d1
45162: 8081 orl %d1,%d0
45164: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45166: 7401 moveq #1,%d2
45168: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
4516a: 2039 0005 e364 movel 5e364 <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45170: 42b9 0005 e364 clrl 5e364 <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45176: b480 cmpl %d0,%d2
45178: 6604 bnes 4517e <_Event_Seize+0xde> <== NEVER TAKEN
_ISR_Enable( level );
4517a: 46c1 movew %d1,%sr
4517c: 601a bras 45198 <_Event_Seize+0xf8>
* 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 );
4517e: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
45182: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
}
45186: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== 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 );
4518c: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45190: 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 );
45192: 4ef9 0004 72b0 jmp 472b0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
}
45198: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4519e: 4e5e unlk %fp
...
000451f8 <_Event_Surrender>:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
option_set = (rtems_option) the_thread->Wait.option;
_ISR_Disable( level );
451f8: 203c 0000 0700 movel #1792,%d0
*/
void _Event_Surrender(
Thread_Control *the_thread
)
{
451fe: 4e56 ffe8 linkw %fp,#-24
45202: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
45206: 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 ];
4520a: 206a 00fe moveal %a2@(254),%a0
option_set = (rtems_option) the_thread->Wait.option;
4520e: 282a 0030 movel %a2@(48),%d4
_ISR_Disable( level );
45212: 40c1 movew %sr,%d1
45214: 8081 orl %d1,%d0
45216: 46c0 movew %d0,%sr
pending_events = api->pending_events;
event_condition = (rtems_event_set) the_thread->Wait.count;
45218: 262a 0024 movel %a2@(36),%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 );
4521c: 2003 movel %d3,%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;
4521e: 2410 movel %a0@,%d2
45220: 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 ) ) {
45222: 6606 bnes 4522a <_Event_Surrender+0x32>
_ISR_Enable( level );
45224: 46c1 movew %d1,%sr
return;
45226: 6000 00ca braw 452f2 <_Event_Surrender+0xfa>
/*
* 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() &&
4522a: 4ab9 0005 df8e tstl 5df8e <_Per_CPU_Information+0x8>
45230: 674a beqs 4527c <_Event_Surrender+0x84> <== ALWAYS TAKEN
45232: b5f9 0005 df92 cmpal 5df92 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
45238: 6642 bnes 4527c <_Event_Surrender+0x84> <== NOT EXECUTED
_Thread_Is_executing( the_thread ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
4523a: 2279 0005 e364 moveal 5e364 <_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 ) &&
45240: 7a02 moveq #2,%d5 <== NOT EXECUTED
45242: ba89 cmpl %a1,%d5 <== NOT EXECUTED
45244: 670e beqs 45254 <_Event_Surrender+0x5c> <== NOT EXECUTED
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
45246: 2279 0005 e364 moveal 5e364 <_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) ||
4524c: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED
45250: ba89 cmpl %a1,%d5 <== NOT EXECUTED
45252: 6628 bnes 4527c <_Event_Surrender+0x84> <== NOT EXECUTED
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
45254: b680 cmpl %d0,%d3 <== NOT EXECUTED
45256: 6706 beqs 4525e <_Event_Surrender+0x66> <== NOT EXECUTED
45258: 0804 0001 btst #1,%d4 <== NOT EXECUTED
4525c: 671a beqs 45278 <_Event_Surrender+0x80> <== 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) );
4525e: 2600 movel %d0,%d3 <== NOT EXECUTED
45260: 4683 notl %d3 <== NOT EXECUTED
45262: c682 andl %d2,%d3 <== NOT EXECUTED
45264: 2083 movel %d3,%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;
45266: 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;
4526a: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
4526e: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
45270: 7003 moveq #3,%d0 <== NOT EXECUTED
45272: 23c0 0005 e364 movel %d0,5e364 <_Event_Sync_state> <== NOT EXECUTED
}
_ISR_Enable( level );
45278: 46c1 movew %d1,%sr <== NOT EXECUTED
return;
4527a: 6076 bras 452f2 <_Event_Surrender+0xfa> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_EVENT);
4527c: 2a2a 0010 movel %a2@(16),%d5
45280: 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 ) ) {
45286: 6768 beqs 452f0 <_Event_Surrender+0xf8> <== NEVER TAKEN
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
45288: b680 cmpl %d0,%d3
4528a: 6706 beqs 45292 <_Event_Surrender+0x9a> <== ALWAYS TAKEN
4528c: 0804 0001 btst #1,%d4 <== NOT EXECUTED
45290: 675e beqs 452f0 <_Event_Surrender+0xf8> <== NOT EXECUTED
45292: 2600 movel %d0,%d3
45294: 4683 notl %d3
45296: c682 andl %d2,%d3
45298: 2083 movel %d3,%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;
4529a: 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;
4529e: 42aa 0024 clrl %a2@(36)
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
452a2: 2080 movel %d0,%a0@
_ISR_Flash( level );
452a4: 203c 0000 0700 movel #1792,%d0
452aa: 46c1 movew %d1,%sr
452ac: 8081 orl %d1,%d0
452ae: 46c0 movew %d0,%sr
452b0: 47f9 0004 743c lea 4743c <_Thread_Clear_state>,%a3
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
452b6: 7a02 moveq #2,%d5
452b8: baaa 0050 cmpl %a2@(80),%d5
452bc: 6710 beqs 452ce <_Event_Surrender+0xd6>
_ISR_Enable( level );
452be: 46c1 movew %d1,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
452c0: 2f3c 1003 fff8 movel #268697592,%sp@-
452c6: 2f0a movel %a2,%sp@-
452c8: 4e93 jsr %a3@
452ca: 508f addql #8,%sp
452cc: 6024 bras 452f2 <_Event_Surrender+0xfa>
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
452ce: 7003 moveq #3,%d0
452d0: 2540 0050 movel %d0,%a2@(80)
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
452d4: 46c1 movew %d1,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
452d6: 486a 0048 pea %a2@(72)
452da: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove>
452e0: 2f3c 1003 fff8 movel #268697592,%sp@-
452e6: 2f0a movel %a2,%sp@-
452e8: 4e93 jsr %a3@
452ea: 4fef 000c lea %sp@(12),%sp
452ee: 6002 bras 452f2 <_Event_Surrender+0xfa>
_Thread_Unblock( the_thread );
}
return;
}
}
_ISR_Enable( level );
452f0: 46c1 movew %d1,%sr <== NOT EXECUTED
}
452f2: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
452f8: 4e5e unlk %fp <== NOT EXECUTED
000452fc <_Event_Timeout>:
void _Event_Timeout(
Objects_Id id,
void *ignored
)
{
452fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
45300: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45302: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
ISR_Level level;
the_thread = _Thread_Get( id, &location );
45304: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45308: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4530c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
45312: 508f addql #8,%sp <== NOT EXECUTED
45314: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45318: 6656 bnes 45370 <_Event_Timeout+0x74> <== 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 );
4531a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
45320: 40c2 movew %sr,%d2 <== NOT EXECUTED
45322: 8282 orl %d2,%d1 <== NOT EXECUTED
45324: 46c1 movew %d1,%sr <== NOT EXECUTED
_ISR_Enable( level );
return;
}
#endif
the_thread->Wait.count = 0;
45326: 2040 moveal %d0,%a0 <== NOT EXECUTED
45328: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED
if ( _Thread_Is_executing( the_thread ) ) {
4532c: b0b9 0005 df92 cmpl 5df92 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
45332: 6614 bnes 45348 <_Event_Timeout+0x4c> <== NOT EXECUTED
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
45334: 2239 0005 e364 movel 5e364 <_Event_Sync_state>,%d1 <== NOT EXECUTED
4533a: 7601 moveq #1,%d3 <== NOT EXECUTED
4533c: b681 cmpl %d1,%d3 <== NOT EXECUTED
4533e: 6608 bnes 45348 <_Event_Timeout+0x4c> <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
45340: 7202 moveq #2,%d1 <== NOT EXECUTED
45342: 23c1 0005 e364 movel %d1,5e364 <_Event_Sync_state> <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
45348: 7606 moveq #6,%d3 <== NOT EXECUTED
4534a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4534c: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED
_ISR_Enable( level );
45350: 46c2 movew %d2,%sr <== NOT EXECUTED
45352: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
45358: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4535a: 4eb9 0004 743c jsr 4743c <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
45360: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
45362: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45368: 5380 subql #1,%d0 <== NOT EXECUTED
4536a: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
45370: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
45374: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
45378: 4e5e unlk %fp <== NOT EXECUTED
0004ab64 <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4ab64: 4e56 ffbc linkw %fp,#-68
4ab68: 202e 000c movel %fp@(12),%d0
4ab6c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4ab70: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4ab74: 2e00 movel %d0,%d7
4ab76: 5887 addql #4,%d7
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4ab78: 222e 0010 movel %fp@(16),%d1
4ab7c: 2a2e 0014 movel %fp@(20),%d5
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4ab80: 2c2a 0010 movel %a2@(16),%d6
Heap_Block *block = NULL;
uintptr_t alloc_begin = 0;
uint32_t search_count = 0;
bool search_again = false;
if ( block_size_floor < alloc_size ) {
4ab84: b087 cmpl %d7,%d0
4ab86: 6200 014e bhiw 4acd6 <_Heap_Allocate_aligned_with_boundary+0x172>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4ab8a: 4a85 tstl %d5
4ab8c: 670c beqs 4ab9a <_Heap_Allocate_aligned_with_boundary+0x36><== ALWAYS TAKEN
if ( boundary < alloc_size ) {
4ab8e: b085 cmpl %d5,%d0 <== NOT EXECUTED
4ab90: 6200 0144 bhiw 4acd6 <_Heap_Allocate_aligned_with_boundary+0x172><== NOT EXECUTED
return NULL;
}
if ( alignment == 0 ) {
4ab94: 4a81 tstl %d1 <== NOT EXECUTED
4ab96: 6602 bnes 4ab9a <_Heap_Allocate_aligned_with_boundary+0x36><== NOT EXECUTED
alignment = page_size;
4ab98: 2206 movel %d6,%d1 <== NOT EXECUTED
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
4ab9a: 2406 movel %d6,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4ab9c: 7804 moveq #4,%d4
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
4ab9e: 5e82 addql #7,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4aba0: 9880 subl %d0,%d4
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4aba2: 4283 clrl %d3
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4aba4: 206a 0008 moveal %a2@(8),%a0
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
4aba8: 2d42 fff8 movel %d2,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4abac: 2d44 fff4 movel %d4,%fp@(-12)
4abb0: 2d47 ffe4 movel %d7,%fp@(-28)
4abb4: 2d46 ffec movel %d6,%fp@(-20)
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4abb8: 6000 00ea braw 4aca4 <_Heap_Allocate_aligned_with_boundary+0x140>
/*
* 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 ) {
4abbc: 2428 0004 movel %a0@(4),%d2
4abc0: b4ae ffe4 cmpl %fp@(-28),%d2
4abc4: 6300 00d2 blsw 4ac98 <_Heap_Allocate_aligned_with_boundary+0x134>
4abc8: 43e8 0008 lea %a0@(8),%a1
if ( alignment == 0 ) {
4abcc: 4a81 tstl %d1
4abce: 6606 bnes 4abd6 <_Heap_Allocate_aligned_with_boundary+0x72>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4abd0: 2409 movel %a1,%d2
4abd2: 6000 00c6 braw 4ac9a <_Heap_Allocate_aligned_with_boundary+0x136>
- 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;
4abd6: 7cfe moveq #-2,%d6
uintptr_t alignment,
uintptr_t boundary
)
{
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
4abd8: 266a 0014 moveal %a2@(20),%a3
4abdc: c486 andl %d6,%d2
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
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
4abde: 282e fff8 movel %fp@(-8),%d4
4abe2: 988b subl %a3,%d4
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;
4abe4: d488 addl %a0,%d2
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4abe6: 2c04 movel %d4,%d6
4abe8: dc82 addl %d2,%d6
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4abea: d4ae fff4 addl %fp@(-12),%d2
4abee: 2d42 fffc movel %d2,%fp@(-4)
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4abf2: 4c41 2007 remul %d1,%d7,%d2
4abf6: 242e fffc movel %fp@(-4),%d2
4abfa: 9487 subl %d7,%d2
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 ) {
4abfc: bc82 cmpl %d2,%d6
4abfe: 640a bccs 4ac0a <_Heap_Allocate_aligned_with_boundary+0xa6><== ALWAYS TAKEN
4ac00: 2806 movel %d6,%d4 <== NOT EXECUTED
4ac02: 4c41 4002 remul %d1,%d2,%d4 <== NOT EXECUTED
4ac06: 9c82 subl %d2,%d6 <== NOT EXECUTED
4ac08: 2406 movel %d6,%d2 <== NOT EXECUTED
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4ac0a: 4a85 tstl %d5
4ac0c: 675c beqs 4ac6a <_Heap_Allocate_aligned_with_boundary+0x106><== 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;
4ac0e: 2c02 movel %d2,%d6 <== NOT EXECUTED
4ac10: dc80 addl %d0,%d6 <== NOT EXECUTED
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
4ac12: 49f1 0800 lea %a1@(00000000,%d0:l),%a4 <== NOT EXECUTED
/* 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;
4ac16: 2d46 fff0 movel %d6,%fp@(-16) <== NOT EXECUTED
4ac1a: 2a6e fff0 moveal %fp@(-16),%a5 <== NOT EXECUTED
4ac1e: 4c45 6004 remul %d5,%d4,%d6 <== NOT EXECUTED
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
4ac22: 2d4c fffc movel %a4,%fp@(-4) <== NOT EXECUTED
4ac26: 2e2e ffe4 movel %fp@(-28),%d7 <== NOT EXECUTED
4ac2a: 9bc4 subal %d4,%a5 <== NOT EXECUTED
4ac2c: 284d moveal %a5,%a4 <== NOT EXECUTED
4ac2e: 2d43 ffe8 movel %d3,%fp@(-24) <== NOT EXECUTED
4ac32: 282e fff0 movel %fp@(-16),%d4 <== NOT EXECUTED
4ac36: 6022 bras 4ac5a <_Heap_Allocate_aligned_with_boundary+0xf6><== 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 ) {
4ac38: b9ee fffc cmpal %fp@(-4),%a4 <== NOT EXECUTED
4ac3c: 6552 bcss 4ac90 <_Heap_Allocate_aligned_with_boundary+0x12c><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4ac3e: 240c movel %a4,%d2 <== NOT EXECUTED
4ac40: 9480 subl %d0,%d2 <== NOT EXECUTED
4ac42: 2802 movel %d2,%d4 <== NOT EXECUTED
4ac44: 4c41 4003 remul %d1,%d3,%d4 <== NOT EXECUTED
4ac48: 9483 subl %d3,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4ac4a: 2802 movel %d2,%d4 <== NOT EXECUTED
4ac4c: d880 addl %d0,%d4 <== NOT EXECUTED
4ac4e: 2c04 movel %d4,%d6 <== NOT EXECUTED
4ac50: 2a44 moveal %d4,%a5 <== NOT EXECUTED
4ac52: 4c45 6003 remul %d5,%d3,%d6 <== NOT EXECUTED
4ac56: 9bc3 subal %d3,%a5 <== NOT EXECUTED
4ac58: 284d moveal %a5,%a4 <== 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 ) {
4ac5a: b9c2 cmpal %d2,%a4 <== NOT EXECUTED
4ac5c: 6304 blss 4ac62 <_Heap_Allocate_aligned_with_boundary+0xfe><== NOT EXECUTED
4ac5e: b88c cmpl %a4,%d4 <== NOT EXECUTED
4ac60: 62d6 bhis 4ac38 <_Heap_Allocate_aligned_with_boundary+0xd4><== NOT EXECUTED
4ac62: 262e ffe8 movel %fp@(-24),%d3 <== NOT EXECUTED
4ac66: 2d47 ffe4 movel %d7,%fp@(-28) <== 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 ) {
4ac6a: b3c2 cmpal %d2,%a1
4ac6c: 622a bhis 4ac98 <_Heap_Allocate_aligned_with_boundary+0x134><== NEVER TAKEN
4ac6e: 2c2e ffec movel %fp@(-20),%d6
4ac72: 2802 movel %d2,%d4
4ac74: 327c fff8 moveaw #-8,%a1
4ac78: 93c8 subal %a0,%a1
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4ac7a: d3c2 addal %d2,%a1
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4ac7c: 4c46 4007 remul %d6,%d7,%d4
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;
4ac80: 93c7 subal %d7,%a1
if ( free_size >= min_block_size || free_size == 0 ) {
4ac82: b7c9 cmpal %a1,%a3
4ac84: 6314 blss 4ac9a <_Heap_Allocate_aligned_with_boundary+0x136><== ALWAYS TAKEN
return alloc_begin;
}
}
return 0;
4ac86: 4a89 tstl %a1 <== NOT EXECUTED
4ac88: 57c4 seq %d4 <== NOT EXECUTED
4ac8a: 49c4 extbl %d4 <== NOT EXECUTED
4ac8c: c484 andl %d4,%d2 <== NOT EXECUTED
4ac8e: 600a bras 4ac9a <_Heap_Allocate_aligned_with_boundary+0x136><== NOT EXECUTED
4ac90: 262e ffe8 movel %fp@(-24),%d3 <== NOT EXECUTED
4ac94: 2d47 ffe4 movel %d7,%fp@(-28) <== NOT EXECUTED
4ac98: 4282 clrl %d2
);
}
}
/* Statistics */
++search_count;
4ac9a: 5283 addql #1,%d3
if ( alloc_begin != 0 ) {
4ac9c: 4a82 tstl %d2
4ac9e: 660e bnes 4acae <_Heap_Allocate_aligned_with_boundary+0x14a>
break;
}
block = block->next;
4aca0: 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 ) {
4aca4: b5c8 cmpal %a0,%a2
4aca6: 6600 ff14 bnew 4abbc <_Heap_Allocate_aligned_with_boundary+0x58>
4acaa: 4282 clrl %d2
4acac: 601a bras 4acc8 <_Heap_Allocate_aligned_with_boundary+0x164>
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4acae: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4acb2: d7aa 004c addl %d3,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4acb6: 2f00 movel %d0,%sp@-
4acb8: 2f02 movel %d2,%sp@-
4acba: 2f08 movel %a0,%sp@-
4acbc: 2f0a movel %a2,%sp@-
4acbe: 4eb9 0004 66c6 jsr 466c6 <_Heap_Block_allocate>
4acc4: 4fef 0010 lea %sp@(16),%sp
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4acc8: b6aa 0044 cmpl %a2@(68),%d3
4accc: 6304 blss 4acd2 <_Heap_Allocate_aligned_with_boundary+0x16e>
stats->max_search = search_count;
4acce: 2543 0044 movel %d3,%a2@(68)
}
return (void *) alloc_begin;
4acd2: 2002 movel %d2,%d0
4acd4: 6002 bras 4acd8 <_Heap_Allocate_aligned_with_boundary+0x174>
return NULL;
}
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
return NULL;
4acd6: 4280 clrl %d0 <== NOT EXECUTED
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4acd8: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5
4acde: 4e5e unlk %fp
...
000466c6 <_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;
466c6: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
466c8: 4e56 ffe0 linkw %fp,#-32
466cc: 222e 0010 movel %fp@(16),%d1
466d0: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
466d4: 246e 000c moveal %fp@(12),%a2
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;
466d8: 7801 moveq #1,%d4
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
466da: 2841 moveal %d1,%a4
466dc: 518c subql #8,%a4
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;
466de: 260c movel %a4,%d3
466e0: 968a subl %a2,%d3
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
466e2: 242a 0004 movel %a2@(4),%d2
- 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;
466e6: c082 andl %d2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
466e8: 266e 0008 moveal %fp@(8),%a3
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
466ec: 4bf2 0800 lea %a2@(00000000,%d0:l),%a5
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;
466f0: c8ad 0004 andl %a5@(4),%d4
466f4: 2a2e 0014 movel %fp@(20),%d5
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
466f8: 4a84 tstl %d4
466fa: 6620 bnes 4671c <_Heap_Block_allocate+0x56> <== NEVER TAKEN
return _Heap_Free_list_tail(heap)->prev;
}
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
466fc: 282a 0008 movel %a2@(8),%d4
Heap_Block *prev = block->prev;
prev->next = next;
next->prev = prev;
46700: 2244 moveal %d4,%a1
free_list_anchor = block->prev;
46702: 206a 000c moveal %a2@(12),%a0
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
46706: 2144 0008 movel %d4,%a0@(8)
next->prev = prev;
4670a: 2348 000c movel %a0,%a1@(12)
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
4670e: 53ab 0038 subql #1,%a3@(56)
++stats->used_blocks;
46712: 52ab 0040 addql #1,%a3@(64)
stats->free_size -= _Heap_Block_size( block );
46716: 91ab 0030 subl %d0,%a3@(48)
4671a: 6002 bras 4671e <_Heap_Block_allocate+0x58>
} else {
free_list_anchor = _Heap_Free_list_head( heap );
4671c: 204b moveal %a3,%a0 <== NOT EXECUTED
}
if ( alloc_area_offset < heap->page_size ) {
4671e: 202b 0010 movel %a3@(16),%d0
46722: b083 cmpl %d3,%d0
46724: 6316 blss 4673c <_Heap_Block_allocate+0x76>
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
_Heap_Block_split( heap, block, free_list_anchor, alloc_size );
46726: 2243 moveal %d3,%a1
46728: 4871 5800 pea %a1@(00000000,%d5:l)
4672c: 2f08 movel %a0,%sp@-
4672e: 2f0a movel %a2,%sp@-
46730: 2f0b movel %a3,%sp@-
46732: 4eba fd5c jsr %pc@(46490 <_Heap_Block_split>)
46736: 4fef 0010 lea %sp@(16),%sp
4673a: 605e bras 4679a <_Heap_Block_allocate+0xd4>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4673c: 4c40 1003 remul %d0,%d3,%d1
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;
46740: 220d movel %a5,%d1
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
46742: 99c3 subal %d3,%a4
block_end = new_block_begin;
block_size = block_end - block_begin;
46744: 200c movel %a4,%d0
46746: 908a subl %a2,%d0
_HAssert( block_size >= heap->min_block_size );
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
46748: d1ab 0030 addl %d0,%a3@(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;
4674c: 928c subl %a4,%d1
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
if ( _Heap_Is_prev_used( block ) ) {
4674e: 0802 0000 btst #0,%d2
46752: 671c beqs 46770 <_Heap_Block_allocate+0xaa> <== 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;
46754: 2a68 0008 moveal %a0@(8),%a5
new_block->next = next;
new_block->prev = block_before;
46758: 2548 000c movel %a0,%a2@(12)
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4675c: 254d 0008 movel %a5,%a2@(8)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
46760: 2b4a 000c movel %a2,%a5@(12)
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
46764: 214a 0008 movel %a2,%a0@(8)
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
46768: 52ab 0038 addql #1,%a3@(56)
4676c: 204a moveal %a2,%a0
4676e: 600a bras 4677a <_Heap_Block_allocate+0xb4>
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Prev_block(
const Heap_Block *block
)
{
return (Heap_Block *) ((uintptr_t) block - block->prev_size);
46770: 95d2 subal %a2@,%a2 <== 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;
46772: 74fe moveq #-2,%d2 <== NOT EXECUTED
46774: c4aa 0004 andl %a2@(4),%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;
46778: d082 addl %d2,%d0 <== NOT EXECUTED
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4677a: 7401 moveq #1,%d2
4677c: 8480 orl %d0,%d2
new_block->prev_size = block_size;
4677e: 2880 movel %d0,%a4@
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
46780: 2542 0004 movel %d2,%a2@(4)
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
46784: 244c moveal %a4,%a2
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
46786: 2941 0004 movel %d1,%a4@(4)
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
4678a: 2f05 movel %d5,%sp@-
4678c: 2f08 movel %a0,%sp@-
4678e: 2f0c movel %a4,%sp@-
46790: 2f0b movel %a3,%sp@-
46792: 4eba fcfc jsr %pc@(46490 <_Heap_Block_split>)
46796: 4fef 0010 lea %sp@(16),%sp
alloc_size
);
}
/* Statistics */
if ( stats->min_free_size > stats->free_size ) {
4679a: 202b 0030 movel %a3@(48),%d0
4679e: b0ab 0034 cmpl %a3@(52),%d0
467a2: 6404 bccs 467a8 <_Heap_Block_allocate+0xe2> <== NEVER TAKEN
stats->min_free_size = stats->free_size;
467a4: 2740 0034 movel %d0,%a3@(52)
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
467a8: 200a movel %a2,%d0
467aa: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
467b0: 4e5e unlk %fp <== NOT EXECUTED
00046490 <_Heap_Block_split>:
- 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;
46490: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
46492: 4e56 ffe0 linkw %fp,#-32
46496: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
4649a: 246e 0008 moveal %fp@(8),%a2
4649e: 266e 000c moveal %fp@(12),%a3
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
464a2: 282a 0014 movel %a2@(20),%d4
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
464a6: 2044 moveal %d4,%a0
464a8: 5188 subql #8,%a0
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
464aa: 262b 0004 movel %a3@(4),%d3
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
464ae: 286e 0010 moveal %fp@(16),%a4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
464b2: 222a 0010 movel %a2@(16),%d1
return heap->stats.size;
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b )
{
return a > b ? a : b;
464b6: 242e 0014 movel %fp@(20),%d2
- 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;
464ba: c083 andl %d3,%d0
return heap->stats.size;
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b )
{
return a > b ? a : b;
464bc: b1c2 cmpal %d2,%a0
464be: 6302 blss 464c2 <_Heap_Block_split+0x32>
464c0: 2408 movel %a0,%d2
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 =
464c2: 5082 addql #8,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
464c4: 2c02 movel %d2,%d6
464c6: 4c41 6005 remul %d1,%d5,%d6
if ( remainder != 0 ) {
464ca: 4a85 tstl %d5
464cc: 6706 beqs 464d4 <_Heap_Block_split+0x44>
return value - remainder + alignment;
464ce: d282 addl %d2,%d1
464d0: 9285 subl %d5,%d1
464d2: 6002 bras 464d6 <_Heap_Block_split+0x46>
} else {
return value;
464d4: 2202 movel %d2,%d1
_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;
464d6: 2240 moveal %d0,%a1
464d8: 5889 addql #4,%a1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
464da: 41f3 0800 lea %a3@(00000000,%d0:l),%a0
464de: 93c2 subal %d2,%a1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
464e0: 5884 addql #4,%d4
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 ) {
464e2: b889 cmpl %a1,%d4
464e4: 626a bhis 46550 <_Heap_Block_split+0xc0> <== 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;
464e6: 7401 moveq #1,%d2
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
464e8: 43f3 1800 lea %a3@(00000000,%d1:l),%a1
Heap_Block *const free_block = _Heap_Block_at( block, used_block_size );
uintptr_t free_block_size = block_size - used_block_size;
464ec: 9081 subl %d1,%d0
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;
464ee: c682 andl %d2,%d3
block->size_and_flag = size | flag;
464f0: 8283 orl %d3,%d1
464f2: 2741 0004 movel %d1,%a3@(4)
- 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;
464f6: 72fe moveq #-2,%d1
_HAssert( used_block_size + free_block_size == block_size );
_Heap_Block_set_size( block, used_block_size );
/* Statistics */
stats->free_size += free_block_size;
464f8: d1aa 0030 addl %d0,%a2@(48)
464fc: c2a8 0004 andl %a0@(4),%d1
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;
46500: c4b0 1804 andl %a0@(00000004,%d1:l),%d2
if ( _Heap_Is_used( next_block ) ) {
46504: 671a beqs 46520 <_Heap_Block_split+0x90> <== 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;
46506: 266c 0008 moveal %a4@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4650a: 234c 000c movel %a4,%a1@(12)
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4650e: 234b 0008 movel %a3,%a1@(8)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
46512: 2749 000c movel %a1,%a3@(12)
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
46516: 2949 0008 movel %a1,%a4@(8)
_Heap_Free_list_insert_after( free_list_anchor, free_block );
/* Statistics */
++stats->free_blocks;
4651a: 52aa 0038 addql #1,%a2@(56)
4651e: 601e bras 4653e <_Heap_Block_split+0xae>
RTEMS_INLINE_ROUTINE void _Heap_Free_list_replace(
Heap_Block *old_block,
Heap_Block *new_block
)
{
Heap_Block *next = old_block->next;
46520: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
} 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;
46524: d081 addl %d1,%d0 <== NOT EXECUTED
Heap_Block *prev = old_block->prev;
46526: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
new_block->next = next;
4652a: 234a 0008 movel %a2,%a1@(8) <== NOT EXECUTED
new_block->prev = prev;
4652e: 2348 000c movel %a0,%a1@(12) <== NOT EXECUTED
next->prev = new_block;
prev->next = new_block;
46532: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
46536: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4653a: 2549 000c movel %a1,%a2@(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;
4653e: 7201 moveq #1,%d1
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
46540: 74fe moveq #-2,%d2
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;
46542: 8280 orl %d0,%d1
next_block->prev_size = free_block_size;
46544: 2080 movel %d0,%a0@
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;
46546: 2341 0004 movel %d1,%a1@(4)
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4654a: c5a8 0004 andl %d2,%a0@(4)
4654e: 6006 bras 46556 <_Heap_Block_split+0xc6>
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
46550: 7001 moveq #1,%d0
46552: 81a8 0004 orl %d0,%a0@(4)
}
}
46556: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
4655a: 4e5e unlk %fp <== NOT EXECUTED
0004afe0 <_Heap_Extend>:
Heap_Control *heap,
void *extend_area_begin_ptr,
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
4afe0: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
4afe4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
4afe8: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4afec: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4aff0: 262e 000c movel %fp@(12),%d3 <== 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;
4aff4: 2403 movel %d3,%d2 <== NOT EXECUTED
4aff6: d480 addl %d0,%d2 <== NOT EXECUTED
uintptr_t const free_size = stats->free_size;
4aff8: 206a 0030 moveal %a2@(48),%a0 <== 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;
4affc: 282a 0020 movel %a2@(32),%d4 <== 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;
4b000: 2a2a 0010 movel %a2@(16),%d5 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4b004: 222a 0014 movel %a2@(20),%d1 <== 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;
4b008: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
Heap_Block *extend_last_block = NULL;
4b00c: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
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;
uintptr_t const free_size = stats->free_size;
4b010: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
uintptr_t extend_first_block_size = 0;
uintptr_t extended_size = 0;
bool extend_area_ok = false;
if ( extend_area_end < extend_area_begin ) {
4b014: b682 cmpl %d2,%d3 <== NOT EXECUTED
4b016: 6200 01aa bhiw 4b1c2 <_Heap_Extend+0x1e2> <== NOT EXECUTED
return false;
}
extend_area_ok = _Heap_Get_first_and_last_block(
4b01a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4b01e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b022: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b024: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b026: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b028: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b02a: 4eb9 0004 6872 jsr 46872 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&extend_first_block,
&extend_last_block
);
if (!extend_area_ok ) {
4b030: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b034: 4a00 tstb %d0 <== NOT EXECUTED
4b036: 6700 018a beqw 4b1c2 <_Heap_Extend+0x1e2> <== NOT EXECUTED
4b03a: 2044 moveal %d4,%a0 <== NOT EXECUTED
4b03c: 9bcd subal %a5,%a5 <== NOT EXECUTED
4b03e: 4281 clrl %d1 <== NOT EXECUTED
4b040: 97cb subal %a3,%a3 <== NOT EXECUTED
4b042: 99cc subal %a4,%a4 <== NOT EXECUTED
return false;
}
do {
uintptr_t const sub_area_begin = (start_block != first_block) ?
(uintptr_t) start_block : heap->area_begin;
4b044: b888 cmpl %a0,%d4 <== NOT EXECUTED
4b046: 6704 beqs 4b04c <_Heap_Extend+0x6c> <== NOT EXECUTED
4b048: 2248 moveal %a0,%a1 <== NOT EXECUTED
4b04a: 6004 bras 4b050 <_Heap_Extend+0x70> <== NOT EXECUTED
4b04c: 226a 0018 moveal %a2@(24),%a1 <== NOT EXECUTED
uintptr_t const sub_area_end = start_block->prev_size;
4b050: 2010 movel %a0@,%d0 <== NOT EXECUTED
Heap_Block *const end_block =
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
4b052: b680 cmpl %d0,%d3 <== NOT EXECUTED
4b054: 6406 bccs 4b05c <_Heap_Extend+0x7c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
4b056: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
4b058: 6500 0168 bcsw 4b1c2 <_Heap_Extend+0x1e2> <== NOT EXECUTED
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4b05c: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
4b05e: 6706 beqs 4b066 <_Heap_Extend+0x86> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4b060: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b062: 6206 bhis 4b06a <_Heap_Extend+0x8a> <== NOT EXECUTED
4b064: 6006 bras 4b06c <_Heap_Extend+0x8c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4b066: 2848 moveal %a0,%a4 <== NOT EXECUTED
4b068: 6002 bras 4b06c <_Heap_Extend+0x8c> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4b06a: 2208 movel %a0,%d1 <== NOT EXECUTED
4b06c: 2e00 movel %d0,%d7 <== NOT EXECUTED
4b06e: 2240 moveal %d0,%a1 <== NOT EXECUTED
4b070: 5189 subql #8,%a1 <== NOT EXECUTED
4b072: 4c45 7006 remul %d5,%d6,%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);
4b076: 93c6 subal %d6,%a1 <== NOT EXECUTED
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
4b078: b680 cmpl %d0,%d3 <== NOT EXECUTED
4b07a: 6606 bnes 4b082 <_Heap_Extend+0xa2> <== NOT EXECUTED
start_block->prev_size = extend_area_end;
4b07c: 2082 movel %d2,%a0@ <== 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 )
4b07e: 2649 moveal %a1,%a3 <== NOT EXECUTED
4b080: 6006 bras 4b088 <_Heap_Extend+0xa8> <== NOT EXECUTED
merge_above_block = end_block;
} else if ( sub_area_end < extend_area_begin ) {
4b082: b680 cmpl %d0,%d3 <== NOT EXECUTED
4b084: 6302 blss 4b088 <_Heap_Extend+0xa8> <== NOT EXECUTED
4b086: 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;
4b088: 70fe moveq #-2,%d0 <== NOT EXECUTED
4b08a: 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);
4b08e: 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 );
4b092: b888 cmpl %a0,%d4 <== NOT EXECUTED
4b094: 66ae bnes 4b044 <_Heap_Extend+0x64> <== NOT EXECUTED
if ( extend_area_begin < heap->area_begin ) {
4b096: b6aa 0018 cmpl %a2@(24),%d3 <== NOT EXECUTED
4b09a: 6406 bccs 4b0a2 <_Heap_Extend+0xc2> <== NOT EXECUTED
heap->area_begin = extend_area_begin;
4b09c: 2543 0018 movel %d3,%a2@(24) <== NOT EXECUTED
4b0a0: 600a bras 4b0ac <_Heap_Extend+0xcc> <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
4b0a2: b4aa 001c cmpl %a2@(28),%d2 <== NOT EXECUTED
4b0a6: 6304 blss 4b0ac <_Heap_Extend+0xcc> <== NOT EXECUTED
heap->area_end = extend_area_end;
4b0a8: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4b0ac: 206e fff8 moveal %fp@(-8),%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 =
4b0b0: 2008 movel %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;
4b0b2: 7801 moveq #1,%d4 <== 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;
4b0b4: 226e fffc moveal %fp@(-4),%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 =
4b0b8: 9089 subl %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;
4b0ba: 8880 orl %d0,%d4 <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
4b0bc: 2282 movel %d2,%a1@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4b0be: 2344 0004 movel %d4,%a1@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_first_block );
extend_last_block->prev_size = extend_first_block_size;
4b0c2: 2080 movel %d0,%a0@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4b0c4: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_last_block );
if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
4b0c8: b3ea 0020 cmpal %a2@(32),%a1 <== NOT EXECUTED
4b0cc: 6406 bccs 4b0d4 <_Heap_Extend+0xf4> <== NOT EXECUTED
heap->first_block = extend_first_block;
4b0ce: 2549 0020 movel %a1,%a2@(32) <== NOT EXECUTED
4b0d2: 600a bras 4b0de <_Heap_Extend+0xfe> <== NOT EXECUTED
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
4b0d4: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED
4b0d8: 6304 blss 4b0de <_Heap_Extend+0xfe> <== NOT EXECUTED
heap->last_block = extend_last_block;
4b0da: 2548 0024 movel %a0,%a2@(36) <== NOT EXECUTED
}
if ( merge_below_block != NULL ) {
4b0de: 4a8c tstl %a4 <== NOT EXECUTED
4b0e0: 6732 beqs 4b114 <_Heap_Extend+0x134> <== NOT EXECUTED
Heap_Control *heap,
uintptr_t extend_area_begin,
Heap_Block *first_block
)
{
uintptr_t const page_size = heap->page_size;
4b0e2: 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 );
4b0e6: 5083 addql #8,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4b0e8: 2803 movel %d3,%d4 <== NOT EXECUTED
4b0ea: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED
if ( remainder != 0 ) {
4b0ee: 4a81 tstl %d1 <== NOT EXECUTED
4b0f0: 6704 beqs 4b0f6 <_Heap_Extend+0x116> <== NOT EXECUTED
return value - remainder + alignment;
4b0f2: d680 addl %d0,%d3 <== NOT EXECUTED
4b0f4: 9681 subl %d1,%d3 <== NOT EXECUTED
uintptr_t const new_first_block_begin =
4b0f6: 2043 moveal %d3,%a0 <== NOT EXECUTED
4b0f8: 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 =
4b0fa: 200c movel %a4,%d0 <== NOT EXECUTED
4b0fc: 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;
4b0fe: 7201 moveq #1,%d1 <== NOT EXECUTED
4b100: 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;
4b102: 2094 movel %a4@,%a0@ <== NOT EXECUTED
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4b104: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Free_block( heap, new_first_block );
4b108: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b10a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b10c: 4eba feb6 jsr %pc@(4afc4 <_Heap_Free_block>) <== NOT EXECUTED
4b110: 508f addql #8,%sp <== NOT EXECUTED
4b112: 6012 bras 4b126 <_Heap_Extend+0x146> <== 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 ) {
4b114: 4a81 tstl %d1 <== NOT EXECUTED
4b116: 670e beqs 4b126 <_Heap_Extend+0x146> <== NOT EXECUTED
_Heap_Link_below(
4b118: 206e fff8 moveal %fp@(-8),%a0 <== 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;
4b11c: 7801 moveq #1,%d4 <== NOT EXECUTED
4b11e: 9288 subl %a0,%d1 <== NOT EXECUTED
4b120: 8881 orl %d1,%d4 <== NOT EXECUTED
4b122: 2144 0004 movel %d4,%a0@(4) <== NOT EXECUTED
link_below_block,
extend_last_block
);
}
if ( merge_above_block != NULL ) {
4b126: 4a8b tstl %a3 <== NOT EXECUTED
4b128: 6734 beqs 4b15e <_Heap_Extend+0x17e> <== 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,
4b12a: 5182 subql #8,%d2 <== 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(
4b12c: 948b subl %a3,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4b12e: 2202 movel %d2,%d1 <== NOT EXECUTED
4b130: 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;
4b136: 7201 moveq #1,%d1 <== NOT EXECUTED
4b138: 9480 subl %d0,%d2 <== 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)
4b13a: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
4b13e: 9082 subl %d2,%d0 <== NOT EXECUTED
| HEAP_PREV_BLOCK_USED;
4b140: 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;
4b142: 7001 moveq #1,%d0 <== NOT EXECUTED
4b144: 2781 2804 movel %d1,%a3@(00000004,%d2:l) <== NOT EXECUTED
4b148: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4b14c: 8480 orl %d0,%d2 <== NOT EXECUTED
4b14e: 2742 0004 movel %d2,%a3@(4) <== NOT EXECUTED
_Heap_Block_set_size( last_block, last_block_new_size );
_Heap_Free_block( heap, last_block );
4b152: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b154: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b156: 4eba fe6c jsr %pc@(4afc4 <_Heap_Free_block>) <== NOT EXECUTED
4b15a: 508f addql #8,%sp <== NOT EXECUTED
4b15c: 6020 bras 4b17e <_Heap_Extend+0x19e> <== NOT EXECUTED
);
}
if ( merge_above_block != NULL ) {
_Heap_Merge_above( heap, merge_above_block, extend_area_end );
} else if ( link_above_block != NULL ) {
4b15e: 4a8d tstl %a5 <== NOT EXECUTED
4b160: 671c beqs 4b17e <_Heap_Extend+0x19e> <== 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;
4b162: 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 );
last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
4b164: 7801 moveq #1,%d4 <== 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 );
4b166: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4b16a: 928d subl %a5,%d1 <== NOT EXECUTED
4b16c: 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(
4b170: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4b174: 8280 orl %d0,%d1 <== NOT EXECUTED
4b176: 2b41 0004 movel %d1,%a5@(4) <== 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;
4b17a: 89a8 0004 orl %d4,%a0@(4) <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4b17e: 4a8c tstl %a4 <== NOT EXECUTED
4b180: 6610 bnes 4b192 <_Heap_Extend+0x1b2> <== NOT EXECUTED
4b182: 4a8b tstl %a3 <== NOT EXECUTED
4b184: 660c bnes 4b192 <_Heap_Extend+0x1b2> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
4b186: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4b18a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b18c: 4eba fe36 jsr %pc@(4afc4 <_Heap_Free_block>) <== NOT EXECUTED
4b190: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{
_Heap_Block_set_size(
heap->last_block,
(uintptr_t) heap->first_block - (uintptr_t) heap->last_block
4b192: 206a 0024 moveal %a2@(36),%a0 <== 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;
4b196: 7001 moveq #1,%d0 <== 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(
4b198: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
4b19c: 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;
4b19e: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4b1a2: 8280 orl %d0,%d1 <== NOT EXECUTED
}
_Heap_Set_last_block_size( heap );
extended_size = stats->free_size - free_size;
4b1a4: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
4b1a8: 90ae fff4 subl %fp@(-12),%d0 <== NOT EXECUTED
4b1ac: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
/* Statistics */
stats->size += extended_size;
4b1b0: d1aa 002c addl %d0,%a2@(44) <== NOT EXECUTED
if ( extended_size_ptr != NULL )
4b1b4: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
4b1b8: 670c beqs 4b1c6 <_Heap_Extend+0x1e6> <== NOT EXECUTED
*extended_size_ptr = extended_size;
4b1ba: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4b1be: 2080 movel %d0,%a0@ <== NOT EXECUTED
4b1c0: 6004 bras 4b1c6 <_Heap_Extend+0x1e6> <== 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;
4b1c2: 4200 clrb %d0 <== NOT EXECUTED
4b1c4: 6002 bras 4b1c8 <_Heap_Extend+0x1e8> <== NOT EXECUTED
stats->size += extended_size;
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
4b1c6: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4b1c8: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4b1ce: 4e5e unlk %fp <== NOT EXECUTED
...
0004ace4 <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4ace4: 4e56 ffe8 linkw %fp,#-24
4ace8: 202e 000c movel %fp@(12),%d0
4acec: 2240 moveal %d0,%a1
4acee: 5189 subql #8,%a1
4acf0: 206e 0008 moveal %fp@(8),%a0
4acf4: 4c68 0001 0010 remul %a0@(16),%d1,%d0
4acfa: 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
4acfe: 2828 0020 movel %a0@(32),%d4
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4ad02: 93c1 subal %d1,%a1
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4ad04: b889 cmpl %a1,%d4
4ad06: 620c bhis 4ad14 <_Heap_Free+0x30> <== NEVER TAKEN
4ad08: b3e8 0024 cmpal %a0@(36),%a1
4ad0c: 53c0 sls %d0
4ad0e: 49c0 extbl %d0
4ad10: 4480 negl %d0
4ad12: 6002 bras 4ad16 <_Heap_Free+0x32>
4ad14: 4280 clrl %d0 <== NOT EXECUTED
uintptr_t next_block_size = 0;
bool next_is_free = false;
_Heap_Protection_block_check( heap, block );
if ( !_Heap_Is_block_in_heap( heap, block ) ) {
4ad16: 4a00 tstb %d0
4ad18: 6700 012c beqw 4ae46 <_Heap_Free+0x162>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4ad1c: 2629 0004 movel %a1@(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;
4ad20: 70fe moveq #-2,%d0
4ad22: c083 andl %d3,%d0
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4ad24: 45f1 0800 lea %a1@(00000000,%d0: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;
4ad28: b88a cmpl %a2,%d4
4ad2a: 620c bhis 4ad38 <_Heap_Free+0x54> <== NEVER TAKEN
4ad2c: b5e8 0024 cmpal %a0@(36),%a2
4ad30: 53c1 sls %d1
4ad32: 49c1 extbl %d1
4ad34: 4481 negl %d1
4ad36: 6002 bras 4ad3a <_Heap_Free+0x56>
4ad38: 4281 clrl %d1 <== NOT EXECUTED
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
_Heap_Protection_block_check( heap, next_block );
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
4ad3a: 4a01 tstb %d1
4ad3c: 6700 0108 beqw 4ae46 <_Heap_Free+0x162>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4ad40: 242a 0004 movel %a2@(4),%d2
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
_HAssert( false );
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
4ad44: 0802 0000 btst #0,%d2
4ad48: 6700 00fc beqw 4ae46 <_Heap_Free+0x162>
- 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;
4ad4c: 72fe moveq #-2,%d1
if ( !_Heap_Protection_determine_block_free( heap, block ) ) {
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
4ad4e: 2668 0024 moveal %a0@(36),%a3
4ad52: c481 andl %d1,%d2
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
4ad54: b7ca cmpal %a2,%a3
4ad56: 670c beqs 4ad64 <_Heap_Free+0x80> <== 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;
4ad58: 7201 moveq #1,%d1
4ad5a: c2b2 2804 andl %a2@(00000004,%d2:l),%d1
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
4ad5e: 5381 subql #1,%d1
4ad60: 4481 negl %d1
4ad62: 6002 bras 4ad66 <_Heap_Free+0x82>
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 ));
4ad64: 4281 clrl %d1 <== NOT EXECUTED
if ( !_Heap_Protection_determine_block_free( heap, block ) ) {
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
4ad66: 1a01 moveb %d1,%d5
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
if ( !_Heap_Is_prev_used( block ) ) {
4ad68: 0803 0000 btst #0,%d3
4ad6c: 6662 bnes 4add0 <_Heap_Free+0xec>
uintptr_t const prev_size = block->prev_size;
4ad6e: 2611 movel %a1@,%d3
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4ad70: 93c3 subal %d3,%a1
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4ad72: b889 cmpl %a1,%d4
4ad74: 620a bhis 4ad80 <_Heap_Free+0x9c> <== NEVER TAKEN
4ad76: b3cb cmpal %a3,%a1
4ad78: 53c1 sls %d1
4ad7a: 49c1 extbl %d1
4ad7c: 4481 negl %d1
4ad7e: 6002 bras 4ad82 <_Heap_Free+0x9e>
4ad80: 4281 clrl %d1 <== NOT EXECUTED
Heap_Block * const prev_block = _Heap_Block_at( block, -prev_size );
if ( !_Heap_Is_block_in_heap( heap, prev_block ) ) {
4ad82: 4a01 tstb %d1
4ad84: 6700 00c0 beqw 4ae46 <_Heap_Free+0x162>
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;
4ad88: 7201 moveq #1,%d1
4ad8a: c2a9 0004 andl %a1@(4),%d1
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) ) {
4ad8e: 6700 00b6 beqw 4ae46 <_Heap_Free+0x162>
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4ad92: 4a05 tstb %d5
4ad94: 6726 beqs 4adbc <_Heap_Free+0xd8> <== ALWAYS TAKEN
return _Heap_Free_list_tail(heap)->prev;
}
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
4ad96: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED
uintptr_t const size = block_size + prev_size + next_block_size;
4ad9a: d480 addl %d0,%d2 <== NOT EXECUTED
4ad9c: d682 addl %d2,%d3 <== NOT EXECUTED
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4ad9e: 7401 moveq #1,%d2 <== NOT EXECUTED
Heap_Block *prev = block->prev;
4ada0: 246a 000c moveal %a2@(12),%a2 <== NOT EXECUTED
prev->next = next;
4ada4: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
4ada8: 8483 orl %d3,%d2 <== NOT EXECUTED
next->prev = prev;
4adaa: 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;
4adae: 53a8 0038 subql #1,%a0@(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;
4adb2: 2383 3800 movel %d3,%a1@(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;
4adb6: 2342 0004 movel %d2,%a1@(4) <== NOT EXECUTED
4adba: 607a bras 4ae36 <_Heap_Free+0x152> <== NOT EXECUTED
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;
4adbc: d680 addl %d0,%d3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4adbe: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4adc0: 74fe moveq #-2,%d2
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;
4adc2: 8283 orl %d3,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4adc4: 2483 movel %d3,%a2@
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;
4adc6: 2341 0004 movel %d1,%a1@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4adca: c5aa 0004 andl %d2,%a2@(4)
4adce: 6066 bras 4ae36 <_Heap_Free+0x152>
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
4add0: 4a01 tstb %d1
4add2: 672a beqs 4adfe <_Heap_Free+0x11a>
RTEMS_INLINE_ROUTINE void _Heap_Free_list_replace(
Heap_Block *old_block,
Heap_Block *new_block
)
{
Heap_Block *next = old_block->next;
4add4: 266a 0008 moveal %a2@(8),%a3
uintptr_t const size = block_size + next_block_size;
4add8: 2202 movel %d2,%d1
4adda: d280 addl %d0,%d1
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4addc: 7401 moveq #1,%d2
Heap_Block *prev = old_block->prev;
4adde: 246a 000c moveal %a2@(12),%a2
new_block->next = next;
4ade2: 234b 0008 movel %a3,%a1@(8)
4ade6: 8481 orl %d1,%d2
new_block->prev = prev;
4ade8: 234a 000c movel %a2,%a1@(12)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4adec: 2381 1800 movel %d1,%a1@(00000000,%d1:l)
next->prev = new_block;
4adf0: 2749 000c movel %a1,%a3@(12)
prev->next = new_block;
4adf4: 2549 0008 movel %a1,%a2@(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;
4adf8: 2342 0004 movel %d2,%a1@(4)
4adfc: 6038 bras 4ae36 <_Heap_Free+0x152>
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;
4adfe: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4ae00: 74fe moveq #-2,%d2
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;
4ae02: 8280 orl %d0,%d1
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
4ae04: 2668 0008 moveal %a0@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4ae08: 2348 000c movel %a0,%a1@(12)
4ae0c: 2341 0004 movel %d1,%a1@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4ae10: 2228 0038 movel %a0@(56),%d1
4ae14: 5281 addql #1,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4ae16: 234b 0008 movel %a3,%a1@(8)
} 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;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4ae1a: c5aa 0004 andl %d2,%a2@(4)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
4ae1e: 2749 000c movel %a1,%a3@(12)
next_block->prev_size = block_size;
4ae22: 2480 movel %d0,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4ae24: 2149 0008 movel %a1,%a0@(8)
/* Statistics */
++stats->free_blocks;
4ae28: 2141 0038 movel %d1,%a0@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4ae2c: b2a8 003c cmpl %a0@(60),%d1
4ae30: 6304 blss 4ae36 <_Heap_Free+0x152> <== NEVER TAKEN
stats->max_free_blocks = stats->free_blocks;
4ae32: 2141 003c movel %d1,%a0@(60)
}
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
4ae36: d1a8 0030 addl %d0,%a0@(48)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4ae3a: 53a8 0040 subql #1,%a0@(64)
++stats->frees;
4ae3e: 52a8 0050 addql #1,%a0@(80)
stats->free_size += block_size;
return( true );
4ae42: 7001 moveq #1,%d0
4ae44: 6002 bras 4ae48 <_Heap_Free+0x164>
/* 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 );
4ae46: 4200 clrb %d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4ae48: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
4ae4c: 4e5e unlk %fp <== NOT EXECUTED
0004afc4 <_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 )
{
4afc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4afc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Heap_Statistics *const stats = &heap->stats;
/* Statistics */
++stats->used_blocks;
4afcc: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED
--stats->frees;
4afd0: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4afd4: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED
}
4afd8: 4e5e unlk %fp <== NOT EXECUTED
/* Statistics */
++stats->used_blocks;
--stats->frees;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4afda: 4ef9 0004 b1d4 jmp 4b1d4 <_Heap_Free> <== NOT EXECUTED
0004655e <_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
)
{
4655e: 4e56 fff4 linkw %fp,#-12
46562: 206e 0008 moveal %fp@(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 );
46566: 2208 movel %a0,%d1
46568: 5081 addql #8,%d1
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
4656a: 48d7 001c moveml %d2-%d4,%sp@
4656e: 202e 0010 movel %fp@(16),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
46572: 2801 movel %d1,%d4
46574: 242e 000c movel %fp@(12),%d2
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
46578: 43f0 2800 lea %a0@(00000000,%d2:l),%a1
4657c: 4c40 4003 remul %d0,%d3,%d4
if ( remainder != 0 ) {
46580: 4a83 tstl %d3
46582: 6704 beqs 46588 <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN
return value - remainder + alignment;
46584: d280 addl %d0,%d1 <== NOT EXECUTED
46586: 9283 subl %d3,%d1 <== 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 (
46588: b1c9 cmpal %a1,%a0
4658a: 622e bhis 465ba <_Heap_Get_first_and_last_block+0x5c><== 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);
4658c: 2241 moveal %d1,%a1
4658e: 5189 subql #8,%a1
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 =
46590: 9288 subl %a0,%d1
Heap_Block *const last_block =
_Heap_Block_at( first_block, first_block_size );
if (
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
46592: b282 cmpl %d2,%d1
46594: 6424 bccs 465ba <_Heap_Get_first_and_last_block+0x5c>
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 );
46596: 9481 subl %d1,%d2
46598: 2202 movel %d2,%d1
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4659a: 2602 movel %d2,%d3
4659c: 4c40 3002 remul %d0,%d2,%d3
465a0: 9282 subl %d2,%d1
_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
465a2: b2ae 0014 cmpl %fp@(20),%d1
465a6: 6512 bcss 465ba <_Heap_Get_first_and_last_block+0x5c><== NEVER TAKEN
) {
/* Invalid area or area too small */
return false;
}
*first_block_ptr = first_block;
465a8: 206e 0018 moveal %fp@(24),%a0
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
465ac: d289 addl %a1,%d1
465ae: 2089 movel %a1,%a0@
465b0: 206e 001c moveal %fp@(28),%a0
465b4: 2081 movel %d1,%a0@
*last_block_ptr = last_block;
return true;
465b6: 7001 moveq #1,%d0
465b8: 6002 bras 465bc <_Heap_Get_first_and_last_block+0x5e>
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
|| first_block_size < min_block_size
) {
/* Invalid area or area too small */
return false;
465ba: 4200 clrb %d0
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
}
465bc: 4cd7 001c moveml %sp@,%d2-%d4
465c0: 4e5e unlk %fp <== NOT EXECUTED
0004f284 <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4f284: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4f288: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4f28c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4f28e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Heap_Block *the_block;
Heap_Block *const tail = _Heap_Free_list_tail(the_heap);
info->number = 0;
4f292: 4290 clrl %a0@ <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
4f294: 226a 0008 moveal %a2@(8),%a1 <== NOT EXECUTED
{
Heap_Block *the_block;
Heap_Block *const tail = _Heap_Free_list_tail(the_heap);
info->number = 0;
info->largest = 0;
4f298: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
info->total = 0;
4f29c: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
for(the_block = _Heap_Free_list_first(the_heap);
4f2a0: 601a bras 4f2bc <_Heap_Get_free_information+0x38><== 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;
4f2a2: 70fe moveq #-2,%d0 <== NOT EXECUTED
4f2a4: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED
uint32_t const the_size = _Heap_Block_size(the_block);
/* As we always coalesce free blocks, prev block must have been used. */
_HAssert(_Heap_Is_prev_used(the_block));
info->number++;
4f2a8: 5290 addql #1,%a0@ <== NOT EXECUTED
info->total += the_size;
4f2aa: d1a8 0008 addl %d0,%a0@(8) <== NOT EXECUTED
if ( info->largest < the_size )
4f2ae: b0a8 0004 cmpl %a0@(4),%d0 <== NOT EXECUTED
4f2b2: 6304 blss 4f2b8 <_Heap_Get_free_information+0x34><== NOT EXECUTED
info->largest = the_size;
4f2b4: 2140 0004 movel %d0,%a0@(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)
4f2b8: 2269 0008 moveal %a1@(8),%a1 <== NOT EXECUTED
info->number = 0;
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
4f2bc: b5c9 cmpal %a1,%a2 <== NOT EXECUTED
4f2be: 66e2 bnes 4f2a2 <_Heap_Get_free_information+0x1e><== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
4f2c0: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4f2c2: 4e5e unlk %fp <== NOT EXECUTED
...
000465c4 <_Heap_Initialize>:
Heap_Control *heap,
void *heap_area_begin_ptr,
uintptr_t heap_area_size,
uintptr_t page_size
)
{
465c4: 4e56 ffe4 linkw %fp,#-28
465c8: 48d7 043c moveml %d2-%d5/%a2,%sp@
465cc: 246e 0008 moveal %fp@(8),%a2
465d0: 282e 000c movel %fp@(12),%d4
465d4: 2a2e 0010 movel %fp@(16),%d5
465d8: 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;
465dc: 42ae fffc clrl %fp@(-4)
Heap_Block *last_block = NULL;
465e0: 42ae fff8 clrl %fp@(-8)
if ( page_size == 0 ) {
465e4: 4a82 tstl %d2
465e6: 6714 beqs 465fc <_Heap_Initialize+0x38> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
465e8: 7003 moveq #3,%d0
465ea: c082 andl %d2,%d0
if ( remainder != 0 ) {
465ec: 6704 beqs 465f2 <_Heap_Initialize+0x2e> <== ALWAYS TAKEN
return value - remainder + alignment;
465ee: 5882 addql #4,%d2 <== NOT EXECUTED
465f0: 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 ) {
465f2: 7003 moveq #3,%d0
465f4: b082 cmpl %d2,%d0
465f6: 6506 bcss 465fe <_Heap_Initialize+0x3a> <== ALWAYS TAKEN
465f8: 6000 00c0 braw 466ba <_Heap_Initialize+0xf6> <== NOT EXECUTED
bool area_ok = false;
Heap_Block *first_block = NULL;
Heap_Block *last_block = NULL;
if ( page_size == 0 ) {
page_size = CPU_ALIGNMENT;
465fc: 7404 moveq #4,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
465fe: 7210 moveq #16,%d1
46600: 4c42 1000 remul %d2,%d0,%d1
if ( remainder != 0 ) {
46604: 4a80 tstl %d0
46606: 670c beqs 46614 <_Heap_Initialize+0x50> <== ALWAYS TAKEN
return value - remainder + alignment;
46608: 2602 movel %d2,%d3 <== NOT EXECUTED
4660a: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
46610: 9680 subl %d0,%d3 <== NOT EXECUTED
46612: 6002 bras 46616 <_Heap_Initialize+0x52> <== NOT EXECUTED
} else {
return value;
46614: 7610 moveq #16,%d3
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
46616: 486e fff8 pea %fp@(-8)
4661a: 486e fffc pea %fp@(-4)
4661e: 2f03 movel %d3,%sp@-
46620: 2f02 movel %d2,%sp@-
46622: 2f05 movel %d5,%sp@-
46624: 2f04 movel %d4,%sp@-
46626: 4eb9 0004 655e jsr 4655e <_Heap_Get_first_and_last_block>
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
4662c: 4fef 0018 lea %sp@(24),%sp
46630: 4a00 tstb %d0
46632: 6700 0086 beqw 466ba <_Heap_Initialize+0xf6>
return 0;
}
memset(heap, 0, sizeof(*heap));
46636: 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;
4663a: da84 addl %d4,%d5
);
if ( !area_ok ) {
return 0;
}
memset(heap, 0, sizeof(*heap));
4663c: 42a7 clrl %sp@-
4663e: 2f0a movel %a2,%sp@-
46640: 4eb9 0004 d268 jsr 4d268 <memset>
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;
46646: 226e fff8 moveal %fp@(-8),%a1
first_block_size = last_block_begin - first_block_begin;
4664a: 2009 movel %a1,%d0
/* First block */
first_block->prev_size = heap_area_end;
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
4664c: 7201 moveq #1,%d1
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
4664e: 4fef 000c lea %sp@(12),%sp
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;
46652: 206e fffc moveal %fp@(-4),%a0
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
46656: 9088 subl %a0,%d0
/* First block */
first_block->prev_size = heap_area_end;
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
46658: 8280 orl %d0,%d1
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;
4665a: 2085 movel %d5,%a0@
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
4665c: 2141 0004 movel %d1,%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;
46660: 7201 moveq #1,%d1
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 );
46662: 214a 0008 movel %a2,%a0@(8)
first_block->prev = _Heap_Free_list_head( heap );
46666: 214a 000c movel %a2,%a0@(12)
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;
4666a: 2548 0008 movel %a0,%a2@(8)
/* Heap control */
heap->page_size = page_size;
heap->min_block_size = min_block_size;
heap->area_begin = heap_area_begin;
heap->area_end = heap_area_end;
heap->first_block = first_block;
4666e: 2548 0020 movel %a0,%a2@(32)
first_block->next = _Heap_Free_list_tail( heap );
first_block->prev = _Heap_Free_list_head( heap );
_Heap_Protection_block_initialize( heap, first_block );
/* Heap control */
heap->page_size = page_size;
46672: 2542 0010 movel %d2,%a2@(16)
heap->min_block_size = min_block_size;
46676: 2543 0014 movel %d3,%a2@(20)
heap->area_begin = heap_area_begin;
4667a: 2544 0018 movel %d4,%a2@(24)
heap->area_end = heap_area_end;
4667e: 2545 001c movel %d5,%a2@(28)
heap->first_block = first_block;
heap->last_block = last_block;
46682: 2549 0024 movel %a1,%a2@(36)
_Heap_Free_list_head( heap )->next = first_block;
_Heap_Free_list_tail( heap )->prev = first_block;
46686: 2548 000c movel %a0,%a2@(12)
* 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(
4668a: 91c9 subal %a1,%a0
/* Last block */
last_block->prev_size = first_block_size;
4668c: 2280 movel %d0,%a1@
4668e: 2348 0004 movel %a0,%a1@(4)
/* Statistics */
stats->size = first_block_size;
stats->free_size = first_block_size;
stats->min_free_size = first_block_size;
stats->free_blocks = 1;
46692: 2541 0038 movel %d1,%a2@(56)
stats->max_free_blocks = 1;
46696: 2541 003c movel %d1,%a2@(60)
stats->instance = instance++;
4669a: 2239 0005 d2bc movel 5d2bc <instance>,%d1
466a0: 2541 0028 movel %d1,%a2@(40)
466a4: 5281 addql #1,%d1
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;
466a6: 2540 002c movel %d0,%a2@(44)
stats->free_size = first_block_size;
466aa: 2540 0030 movel %d0,%a2@(48)
stats->min_free_size = first_block_size;
466ae: 2540 0034 movel %d0,%a2@(52)
stats->free_blocks = 1;
stats->max_free_blocks = 1;
stats->instance = instance++;
466b2: 23c1 0005 d2bc movel %d1,5d2bc <instance>
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
466b8: 6002 bras 466bc <_Heap_Initialize+0xf8>
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
return 0;
466ba: 4280 clrl %d0
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
466bc: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2
466c2: 4e5e unlk %fp <== NOT EXECUTED
0005a50c <_Heap_Resize_block>:
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5a50c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5a510: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
5a514: 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);
5a518: 2202 movel %d2,%d1 <== NOT EXECUTED
5a51a: 2042 moveal %d2,%a0 <== NOT EXECUTED
5a51c: 5188 subql #8,%a0 <== NOT EXECUTED
5a51e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5a522: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
5a526: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED
5a52a: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED
5a52e: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== 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;
5a534: 4294 clrl %a4@ <== NOT EXECUTED
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
5a536: 91c0 subal %d0,%a0 <== NOT EXECUTED
*new_size = 0;
5a538: 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;
5a53a: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
5a53e: 6500 0096 bcsw 5a5d6 <_Heap_Resize_block+0xca> <== NOT EXECUTED
5a542: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED
5a546: 6200 008e bhiw 5a5d6 <_Heap_Resize_block+0xca> <== 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;
5a54a: 70fe moveq #-2,%d0 <== NOT EXECUTED
5a54c: 72fe moveq #-2,%d1 <== 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;
5a54e: 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;
5a550: 7604 moveq #4,%d3 <== NOT EXECUTED
5a552: 9682 subl %d2,%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;
5a554: c0a8 0004 andl %a0@(4),%d0 <== 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;
5a558: 43f0 0800 lea %a0@(00000000,%d0:l),%a1 <== NOT EXECUTED
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5a55c: d689 addl %a1,%d3 <== NOT EXECUTED
5a55e: c2a9 0004 andl %a1@(4),%d1 <== 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;
5a562: cab1 1804 andl %a1@(00000004,%d1: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;
5a566: 2883 movel %d3,%a4@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_free(
const Heap_Block *block
)
{
return !_Heap_Is_used( block );
5a568: 4a85 tstl %d5 <== NOT EXECUTED
5a56a: 57c5 seq %d5 <== NOT EXECUTED
5a56c: 4485 negl %d5 <== NOT EXECUTED
if ( next_block_is_free ) {
5a56e: 4a05 tstb %d5 <== NOT EXECUTED
5a570: 6704 beqs 5a576 <_Heap_Resize_block+0x6a> <== NOT EXECUTED
block_size += next_block_size;
5a572: d081 addl %d1,%d0 <== NOT EXECUTED
alloc_size += next_block_size;
5a574: d681 addl %d1,%d3 <== NOT EXECUTED
}
if ( new_alloc_size > alloc_size ) {
5a576: b684 cmpl %d4,%d3 <== NOT EXECUTED
5a578: 6558 bcss 5a5d2 <_Heap_Resize_block+0xc6> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
}
if ( next_block_is_free ) {
5a57a: 4a05 tstb %d5 <== NOT EXECUTED
5a57c: 672a beqs 5a5a8 <_Heap_Resize_block+0x9c> <== 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;
5a57e: 7601 moveq #1,%d3 <== NOT EXECUTED
5a580: c6a8 0004 andl %a0@(4),%d3 <== NOT EXECUTED
return _Heap_Free_list_tail(heap)->prev;
}
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
5a584: 2869 0008 moveal %a1@(8),%a4 <== NOT EXECUTED
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
5a588: 8680 orl %d0,%d3 <== NOT EXECUTED
}
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
5a58a: 2269 000c moveal %a1@(12),%a1 <== NOT EXECUTED
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
5a58e: 2143 0004 movel %d3,%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;
5a592: 7601 moveq #1,%d3 <== NOT EXECUTED
5a594: 87b0 0804 orl %d3,%a0@(00000004,%d0: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;
5a598: 234c 0008 movel %a4,%a1@(8) <== NOT EXECUTED
next->prev = prev;
5a59c: 2949 000c movel %a1,%a4@(12) <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
5a5a0: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED
stats->free_size -= next_block_size;
5a5a4: 93aa 0030 subl %d1,%a2@(48) <== NOT EXECUTED
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5a5a8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5a5aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a5ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a5ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a5b0: 4eb9 0004 66c6 jsr 466c6 <_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;
5a5b6: 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;
5a5ba: 72fe moveq #-2,%d1 <== NOT EXECUTED
5a5bc: 2040 moveal %d0,%a0 <== NOT EXECUTED
return HEAP_RESIZE_SUCCESSFUL;
5a5be: 4280 clrl %d0 <== NOT EXECUTED
5a5c0: 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;
5a5c4: 91c2 subal %d2,%a0 <== NOT EXECUTED
5a5c6: 41f0 1804 lea %a0@(00000004,%d1:l),%a0 <== NOT EXECUTED
5a5ca: 2688 movel %a0,%a3@ <== NOT EXECUTED
/* Statistics */
++stats->resizes;
5a5cc: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
5a5d0: 6006 bras 5a5d8 <_Heap_Resize_block+0xcc> <== NOT EXECUTED
block_size += next_block_size;
alloc_size += next_block_size;
}
if ( new_alloc_size > alloc_size ) {
return HEAP_RESIZE_UNSATISFIED;
5a5d2: 7001 moveq #1,%d0 <== NOT EXECUTED
*new_size = 0;
_Heap_Protection_block_check( heap, block );
if ( _Heap_Is_block_in_heap( heap, block ) ) {
return _Heap_Resize_block_checked(
5a5d4: 6002 bras 5a5d8 <_Heap_Resize_block+0xcc> <== NOT EXECUTED
new_alloc_size,
old_size,
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
5a5d6: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
5a5d8: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5a5de: 4e5e unlk %fp <== NOT EXECUTED
...
0005a5e4 <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5a5e4: 4e56 0000 linkw %fp,#0
5a5e8: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5a5ec: 2040 moveal %d0,%a0
5a5ee: 5188 subql #8,%a0
5a5f0: 226e 0008 moveal %fp@(8),%a1
5a5f4: 2f02 movel %d2,%sp@-
5a5f6: 2400 movel %d0,%d2
5a5f8: 4c69 2001 0010 remul %a1@(16),%d1,%d2
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
5a5fe: 2429 0020 movel %a1@(32),%d2
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
5a602: 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;
5a604: b488 cmpl %a0,%d2
5a606: 620c bhis 5a614 <_Heap_Size_of_alloc_area+0x30> <== NEVER TAKEN
5a608: b1e9 0024 cmpal %a1@(36),%a0
5a60c: 53c1 sls %d1
5a60e: 49c1 extbl %d1
5a610: 4481 negl %d1
5a612: 6002 bras 5a616 <_Heap_Size_of_alloc_area+0x32>
5a614: 4281 clrl %d1 <== NOT EXECUTED
uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;
Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
Heap_Block *next_block = NULL;
uintptr_t block_size = 0;
if ( !_Heap_Is_block_in_heap( heap, block ) ) {
5a616: 4a01 tstb %d1
5a618: 6738 beqs 5a652 <_Heap_Size_of_alloc_area+0x6e> <== 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;
5a61a: 72fe moveq #-2,%d1
5a61c: c2a8 0004 andl %a0@(4),%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
5a620: d1c1 addal %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;
5a622: b488 cmpl %a0,%d2
5a624: 620c bhis 5a632 <_Heap_Size_of_alloc_area+0x4e> <== NEVER TAKEN
5a626: b1e9 0024 cmpal %a1@(36),%a0
5a62a: 53c1 sls %d1
5a62c: 49c1 extbl %d1
5a62e: 4481 negl %d1
5a630: 6002 bras 5a634 <_Heap_Size_of_alloc_area+0x50>
5a632: 4281 clrl %d1 <== NOT EXECUTED
}
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
if (
5a634: 4a01 tstb %d1
5a636: 671a beqs 5a652 <_Heap_Size_of_alloc_area+0x6e> <== 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;
5a638: 7201 moveq #1,%d1
5a63a: c2a8 0004 andl %a0@(4),%d1
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
5a63e: 6712 beqs 5a652 <_Heap_Size_of_alloc_area+0x6e> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5a640: 7204 moveq #4,%d1
5a642: 9280 subl %d0,%d1
5a644: 2001 movel %d1,%d0
5a646: d088 addl %a0,%d0
5a648: 226e 0010 moveal %fp@(16),%a1
5a64c: 2280 movel %d0,%a1@
return true;
5a64e: 7001 moveq #1,%d0
5a650: 6002 bras 5a654 <_Heap_Size_of_alloc_area+0x70>
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
) {
return false;
5a652: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
5a654: 241f movel %sp@+,%d2
5a656: 4e5e unlk %fp
...
000471a2 <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
471a2: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
471a6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
471aa: 266e 0008 moveal %fp@(8),%a3 <== 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;
471ae: 45fa ffac lea %pc@(4715c <_Heap_Walk_print_nothing>),%a2<== NOT EXECUTED
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
471b2: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
uintptr_t const page_size = heap->page_size;
471b6: 282b 0010 movel %a3@(16),%d4 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
471ba: 2a2b 0014 movel %a3@(20),%d5 <== NOT EXECUTED
Heap_Block *const first_block = heap->first_block;
471be: 2c2b 0020 movel %a3@(32),%d6 <== NOT EXECUTED
Heap_Block *const last_block = heap->last_block;
471c2: 2e2b 0024 movel %a3@(36),%d7 <== NOT EXECUTED
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
471c6: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED
471ca: 6704 beqs 471d0 <_Heap_Walk+0x2e> <== NOT EXECUTED
471cc: 45fa ff96 lea %pc@(47164 <_Heap_Walk_print>),%a2 <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
471d0: 7003 moveq #3,%d0 <== NOT EXECUTED
471d2: b0b9 0005 ffcc cmpl 5ffcc <_System_state_Current>,%d0 <== NOT EXECUTED
471d8: 6600 02fc bnew 474d6 <_Heap_Walk+0x334> <== 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)(
471dc: 2f2b 000c movel %a3@(12),%sp@- <== NOT EXECUTED
471e0: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
471e4: 2f07 movel %d7,%sp@- <== NOT EXECUTED
471e6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
471e8: 2f2b 001c movel %a3@(28),%sp@- <== NOT EXECUTED
471ec: 2f2b 0018 movel %a3@(24),%sp@- <== NOT EXECUTED
471f0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
471f2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
471f4: 4879 0005 c269 pea 5c269 <C.0.4121+0x57> <== NOT EXECUTED
471fa: 42a7 clrl %sp@- <== NOT EXECUTED
471fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
471fe: 4e92 jsr %a2@ <== NOT EXECUTED
heap->area_begin, heap->area_end,
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
47200: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
47204: 4a84 tstl %d4 <== NOT EXECUTED
47206: 6608 bnes 47210 <_Heap_Walk+0x6e> <== NOT EXECUTED
(*printer)( source, true, "page size is zero\n" );
47208: 4879 0005 c2fa pea 5c2fa <C.0.4121+0xe8> <== NOT EXECUTED
4720e: 6050 bras 47260 <_Heap_Walk+0xbe> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
47210: 7003 moveq #3,%d0 <== NOT EXECUTED
47212: c084 andl %d4,%d0 <== NOT EXECUTED
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
47214: 670c beqs 47222 <_Heap_Walk+0x80> <== NOT EXECUTED
(*printer)(
47216: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47218: 4879 0005 c30d pea 5c30d <C.0.4121+0xfb> <== NOT EXECUTED
4721e: 6000 02ca braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
47222: 2205 movel %d5,%d1 <== NOT EXECUTED
47224: 4c44 1000 remul %d4,%d0,%d1 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
47228: 4a80 tstl %d0 <== NOT EXECUTED
4722a: 670c beqs 47238 <_Heap_Walk+0x96> <== NOT EXECUTED
(*printer)(
4722c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4722e: 4879 0005 c32b pea 5c32b <C.0.4121+0x119> <== NOT EXECUTED
47234: 6000 02b4 braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
47238: 2006 movel %d6,%d0 <== NOT EXECUTED
4723a: 5080 addql #8,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4723c: 4c44 0001 remul %d4,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if (
47240: 4a81 tstl %d1 <== NOT EXECUTED
47242: 670c beqs 47250 <_Heap_Walk+0xae> <== NOT EXECUTED
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
47244: 2f06 movel %d6,%sp@- <== NOT EXECUTED
47246: 4879 0005 c34f pea 5c34f <C.0.4121+0x13d> <== NOT EXECUTED
4724c: 6000 029c braw 474ea <_Heap_Walk+0x348> <== 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;
47250: 7001 moveq #1,%d0 <== NOT EXECUTED
47252: 2046 moveal %d6,%a0 <== NOT EXECUTED
47254: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
47258: 6616 bnes 47270 <_Heap_Walk+0xce> <== NOT EXECUTED
(*printer)(
4725a: 4879 0005 c380 pea 5c380 <C.0.4121+0x16e> <== NOT EXECUTED
47260: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47264: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47266: 4e92 jsr %a2@ <== NOT EXECUTED
47268: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4726c: 6000 00ba braw 47328 <_Heap_Walk+0x186> <== 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;
47270: 70fe moveq #-2,%d0 <== NOT EXECUTED
47272: 2047 moveal %d7,%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);
47274: 2847 moveal %d7,%a4 <== 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;
47276: c0a8 0004 andl %a0@(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);
4727a: d9c0 addal %d0,%a4 <== 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;
4727c: 7001 moveq #1,%d0 <== NOT EXECUTED
4727e: c0ac 0004 andl %a4@(4),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
47282: 6608 bnes 4728c <_Heap_Walk+0xea> <== NOT EXECUTED
(*printer)(
47284: 4879 0005 c3ae pea 5c3ae <C.0.4121+0x19c> <== NOT EXECUTED
4728a: 60d4 bras 47260 <_Heap_Walk+0xbe> <== NOT EXECUTED
);
return false;
}
if (
4728c: bc8c cmpl %a4,%d6 <== NOT EXECUTED
4728e: 6708 beqs 47298 <_Heap_Walk+0xf6> <== NOT EXECUTED
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
47290: 4879 0005 c3c3 pea 5c3c3 <C.0.4121+0x1b1> <== NOT EXECUTED
47296: 60c8 bras 47260 <_Heap_Walk+0xbe> <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
47298: 262b 0010 movel %a3@(16),%d3 <== NOT EXECUTED
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
4729c: 220b movel %a3,%d1 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4729e: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
472a2: 2d44 fff8 movel %d4,%fp@(-8) <== NOT EXECUTED
472a6: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
472aa: 6000 0088 braw 47334 <_Heap_Walk+0x192> <== 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;
472ae: b1eb 0020 cmpal %a3@(32),%a0 <== NOT EXECUTED
472b2: 650c bcss 472c0 <_Heap_Walk+0x11e> <== NOT EXECUTED
472b4: b1eb 0024 cmpal %a3@(36),%a0 <== NOT EXECUTED
472b8: 53c0 sls %d0 <== NOT EXECUTED
472ba: 49c0 extbl %d0 <== NOT EXECUTED
472bc: 4480 negl %d0 <== NOT EXECUTED
472be: 6002 bras 472c2 <_Heap_Walk+0x120> <== NOT EXECUTED
472c0: 4280 clrl %d0 <== NOT EXECUTED
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 ) {
if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {
472c2: 4a00 tstb %d0 <== NOT EXECUTED
472c4: 660c bnes 472d2 <_Heap_Walk+0x130> <== NOT EXECUTED
(*printer)(
472c6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
472c8: 4879 0005 c3f2 pea 5c3f2 <C.0.4121+0x1e0> <== NOT EXECUTED
472ce: 6000 021a braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
472d2: 4be8 0008 lea %a0@(8),%a5 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
472d6: 200d movel %a5,%d0 <== NOT EXECUTED
472d8: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
472dc: 4c43 0004 remul %d3,%d4,%d0 <== NOT EXECUTED
);
return false;
}
if (
472e0: 4a84 tstl %d4 <== NOT EXECUTED
472e2: 670c beqs 472f0 <_Heap_Walk+0x14e> <== NOT EXECUTED
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
472e4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
472e6: 4879 0005 c412 pea 5c412 <C.0.4121+0x200> <== NOT EXECUTED
472ec: 6000 01fc braw 474ea <_Heap_Walk+0x348> <== 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;
472f0: 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;
472f2: 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;
472f4: 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;
472f8: c6b0 0804 andl %a0@(00000004,%d0:l),%d3 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
472fc: 670c beqs 4730a <_Heap_Walk+0x168> <== NOT EXECUTED
(*printer)(
472fe: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47300: 4879 0005 c442 pea 5c442 <C.0.4121+0x230> <== NOT EXECUTED
47306: 6000 01e2 braw 474ea <_Heap_Walk+0x348> <== NOT EXECUTED
);
return false;
}
if ( free_block->prev != prev_block ) {
4730a: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
4730e: b280 cmpl %d0,%d1 <== NOT EXECUTED
47310: 671c beqs 4732e <_Heap_Walk+0x18c> <== NOT EXECUTED
(*printer)(
47312: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47314: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47316: 4879 0005 c45e pea 5c45e <C.0.4121+0x24c> <== NOT EXECUTED
4731c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47320: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47322: 4e92 jsr %a2@ <== NOT EXECUTED
47324: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
47328: 4200 clrb %d0 <== NOT EXECUTED
4732a: 6000 01ac braw 474d8 <_Heap_Walk+0x336> <== NOT EXECUTED
return false;
}
prev_block = free_block;
free_block = free_block->next;
4732e: 2208 movel %a0,%d1 <== NOT EXECUTED
47330: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
47334: b7c8 cmpal %a0,%a3 <== NOT EXECUTED
47336: 6600 ff76 bnew 472ae <_Heap_Walk+0x10c> <== NOT EXECUTED
4733a: 282e fff8 movel %fp@(-8),%d4 <== NOT EXECUTED
4733e: 6002 bras 47342 <_Heap_Walk+0x1a0> <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
47340: 284d moveal %a5,%a4 <== NOT EXECUTED
return true;
}
47342: 202c 0004 movel %a4@(4),%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;
47346: 76fe moveq #-2,%d3 <== NOT EXECUTED
47348: c680 andl %d0,%d3 <== NOT EXECUTED
4734a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4734e: 4bf4 3800 lea %a4@(00000000,%d3:l),%a5 <== 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;
47352: bbeb 0020 cmpal %a3@(32),%a5 <== NOT EXECUTED
47356: 650c bcss 47364 <_Heap_Walk+0x1c2> <== NOT EXECUTED
47358: bbeb 0024 cmpal %a3@(36),%a5 <== NOT EXECUTED
4735c: 53c0 sls %d0 <== NOT EXECUTED
4735e: 49c0 extbl %d0 <== NOT EXECUTED
47360: 4480 negl %d0 <== NOT EXECUTED
47362: 6002 bras 47366 <_Heap_Walk+0x1c4> <== NOT EXECUTED
47364: 4280 clrl %d0 <== NOT EXECUTED
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;
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
47366: 4a00 tstb %d0 <== NOT EXECUTED
47368: 660c bnes 47376 <_Heap_Walk+0x1d4> <== NOT EXECUTED
(*printer)(
4736a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4736c: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4736e: 4879 0005 c490 pea 5c490 <C.0.4121+0x27e> <== NOT EXECUTED
47374: 60a6 bras 4731c <_Heap_Walk+0x17a> <== 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;
47376: be8c cmpl %a4,%d7 <== NOT EXECUTED
47378: 56c0 sne %d0 <== NOT EXECUTED
4737a: 2200 movel %d0,%d1 <== NOT EXECUTED
4737c: 4481 negl %d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
4737e: 2003 movel %d3,%d0 <== NOT EXECUTED
47380: 1d41 fffb moveb %d1,%fp@(-5) <== NOT EXECUTED
47384: 4c44 0001 remul %d4,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
47388: 4a81 tstl %d1 <== NOT EXECUTED
4738a: 6714 beqs 473a0 <_Heap_Walk+0x1fe> <== NOT EXECUTED
4738c: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED
47390: 670e beqs 473a0 <_Heap_Walk+0x1fe> <== NOT EXECUTED
(*printer)(
47392: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47394: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47396: 4879 0005 c4bd pea 5c4bd <C.0.4121+0x2ab> <== NOT EXECUTED
4739c: 6000 ff7e braw 4731c <_Heap_Walk+0x17a> <== NOT EXECUTED
);
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
473a0: ba83 cmpl %d3,%d5 <== NOT EXECUTED
473a2: 6322 blss 473c6 <_Heap_Walk+0x224> <== NOT EXECUTED
473a4: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED
473a8: 671c beqs 473c6 <_Heap_Walk+0x224> <== NOT EXECUTED
(*printer)(
473aa: 2f05 movel %d5,%sp@- <== NOT EXECUTED
473ac: 2f03 movel %d3,%sp@- <== NOT EXECUTED
473ae: 2f0c movel %a4,%sp@- <== NOT EXECUTED
473b0: 4879 0005 c4eb pea 5c4eb <C.0.4121+0x2d9> <== NOT EXECUTED
473b6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
473ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
473bc: 4e92 jsr %a2@ <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
473be: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
473c2: 6000 ff64 braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
473c6: b9cd cmpal %a5,%a4 <== NOT EXECUTED
473c8: 6514 bcss 473de <_Heap_Walk+0x23c> <== NOT EXECUTED
473ca: 4a2e fffb tstb %fp@(-5) <== NOT EXECUTED
473ce: 670e beqs 473de <_Heap_Walk+0x23c> <== NOT EXECUTED
(*printer)(
473d0: 2f0d movel %a5,%sp@- <== NOT EXECUTED
473d2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
473d4: 4879 0005 c516 pea 5c516 <C.0.4121+0x304> <== NOT EXECUTED
473da: 6000 ff40 braw 4731c <_Heap_Walk+0x17a> <== 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;
473de: 7001 moveq #1,%d0 <== NOT EXECUTED
473e0: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED
473e4: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
473e8: 7001 moveq #1,%d0 <== NOT EXECUTED
473ea: c0ad 0004 andl %a5@(4),%d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
473ee: 6600 00ae bnew 4749e <_Heap_Walk+0x2fc> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
473f2: 222b 0008 movel %a3@(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)(
473f6: 43f9 0005 c236 lea 5c236 <C.0.4121+0x24>,%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 ?
473fc: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
47400: 2d41 fff8 movel %d1,%fp@(-8) <== 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)(
47404: b1eb 000c cmpal %a3@(12),%a0 <== NOT EXECUTED
47408: 6710 beqs 4741a <_Heap_Walk+0x278> <== 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)" : "")
4740a: 43f9 0005 c170 lea 5c170 <rtems_filesystem_default_pathconf+0xb4>,%a1<== NOT EXECUTED
47410: b7c8 cmpal %a0,%a3 <== NOT EXECUTED
47412: 6606 bnes 4741a <_Heap_Walk+0x278> <== NOT EXECUTED
47414: 43f9 0005 c245 lea 5c245 <C.0.4121+0x33>,%a1 <== 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 ?
4741a: 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)(
4741e: 223c 0005 c24f movel #377423,%d1 <== NOT EXECUTED
47424: b0ae fff8 cmpl %fp@(-8),%d0 <== NOT EXECUTED
47428: 6710 beqs 4743a <_Heap_Walk+0x298> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
4742a: 223c 0005 c170 movel #377200,%d1 <== NOT EXECUTED
47430: b7c0 cmpal %d0,%a3 <== NOT EXECUTED
47432: 6606 bnes 4743a <_Heap_Walk+0x298> <== NOT EXECUTED
47434: 223c 0005 c25f movel #377439,%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)(
4743a: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4743c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4743e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47440: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47442: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47444: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47446: 4879 0005 c54a pea 5c54a <C.0.4121+0x338> <== NOT EXECUTED
4744c: 42a7 clrl %sp@- <== NOT EXECUTED
4744e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47450: 4e92 jsr %a2@ <== NOT EXECUTED
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
47452: 2015 movel %a5@,%d0 <== NOT EXECUTED
47454: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
47458: b083 cmpl %d3,%d0 <== NOT EXECUTED
4745a: 671e beqs 4747a <_Heap_Walk+0x2d8> <== NOT EXECUTED
(*printer)(
4745c: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4745e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47460: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47462: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47464: 4879 0005 c57f pea 5c57f <C.0.4121+0x36d> <== NOT EXECUTED
4746a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4746e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47470: 4e92 jsr %a2@ <== NOT EXECUTED
47472: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
47476: 6000 feb0 braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED
);
return false;
}
if ( !prev_used ) {
4747a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4747e: 660a bnes 4748a <_Heap_Walk+0x2e8> <== NOT EXECUTED
(*printer)(
47480: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47482: 4879 0005 c5b8 pea 5c5b8 <C.0.4121+0x3a6> <== NOT EXECUTED
47488: 6060 bras 474ea <_Heap_Walk+0x348> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4748a: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
4748e: 6008 bras 47498 <_Heap_Walk+0x2f6> <== 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 ) {
if ( free_block == block ) {
47490: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
47492: 673c beqs 474d0 <_Heap_Walk+0x32e> <== NOT EXECUTED
return true;
}
free_block = free_block->next;
47494: 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 ) {
47498: b7c8 cmpal %a0,%a3 <== NOT EXECUTED
4749a: 66f4 bnes 47490 <_Heap_Walk+0x2ee> <== NOT EXECUTED
4749c: 6044 bras 474e2 <_Heap_Walk+0x340> <== NOT EXECUTED
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
4749e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
474a2: 6716 beqs 474ba <_Heap_Walk+0x318> <== NOT EXECUTED
(*printer)(
474a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
474a6: 2f0c movel %a4,%sp@- <== NOT EXECUTED
474a8: 4879 0005 c5e7 pea 5c5e7 <C.0.4121+0x3d5> <== NOT EXECUTED
474ae: 42a7 clrl %sp@- <== NOT EXECUTED
474b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474b2: 4e92 jsr %a2@ <== NOT EXECUTED
474b4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
474b8: 6016 bras 474d0 <_Heap_Walk+0x32e> <== NOT EXECUTED
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
474ba: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
474bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
474be: 2f0c movel %a4,%sp@- <== NOT EXECUTED
474c0: 4879 0005 c5fe pea 5c5fe <C.0.4121+0x3ec> <== NOT EXECUTED
474c6: 42a7 clrl %sp@- <== NOT EXECUTED
474c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474ca: 4e92 jsr %a2@ <== NOT EXECUTED
474cc: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
474d0: bc8d cmpl %a5,%d6 <== NOT EXECUTED
474d2: 6600 fe6c bnew 47340 <_Heap_Walk+0x19e> <== NOT EXECUTED
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
474d6: 7001 moveq #1,%d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
474d8: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
474de: 4e5e unlk %fp <== NOT EXECUTED
474e0: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
474e2: 2f0c movel %a4,%sp@- <== NOT EXECUTED
474e4: 4879 0005 c623 pea 5c623 <C.0.4121+0x411> <== NOT EXECUTED
474ea: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
474ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474f0: 4e92 jsr %a2@ <== NOT EXECUTED
474f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
474f6: 6000 fe30 braw 47328 <_Heap_Walk+0x186> <== NOT EXECUTED
...
00047164 <_Heap_Walk_print>:
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
47164: 41f9 0004 3b54 lea 43b54 <printk>,%a0 <== NOT EXECUTED
4716a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4716e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
va_list ap;
if ( error ) {
47172: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED
47176: 670a beqs 47182 <_Heap_Walk_print+0x1e> <== NOT EXECUTED
printk( "FAIL[%d]: ", source );
47178: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4717a: 4879 0005 c220 pea 5c220 <C.0.4121+0xe> <== NOT EXECUTED
47180: 6008 bras 4718a <_Heap_Walk_print+0x26> <== NOT EXECUTED
} else {
printk( "PASS[%d]: ", source );
47182: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47184: 4879 0005 c22b pea 5c22b <C.0.4121+0x19> <== NOT EXECUTED
4718a: 4e90 jsr %a0@ <== NOT EXECUTED
4718c: 508f addql #8,%sp <== NOT EXECUTED
}
va_start( ap, fmt );
vprintk( fmt, ap );
4718e: 486e 0014 pea %fp@(20) <== NOT EXECUTED
47192: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
47196: 4eb9 0004 546c jsr 4546c <vprintk> <== NOT EXECUTED
va_end( ap );
4719c: 508f addql #8,%sp <== NOT EXECUTED
}
4719e: 4e5e unlk %fp <== NOT EXECUTED
0004715c <_Heap_Walk_print_nothing>:
int source,
bool error,
const char *fmt,
...
)
{
4715c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */
}
47160: 4e5e unlk %fp <== NOT EXECUTED
000467b4 <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
467b4: 4e56 0000 linkw %fp,#0
467b8: 222e 000c movel %fp@(12),%d1
467bc: 2f02 movel %d2,%sp@-
467be: 242e 0010 movel %fp@(16),%d2
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
467c2: 13c1 0005 dbc2 moveb %d1,5dbc2 <_Internal_errors_What_happened+0x4>
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
467c8: 2f02 movel %d2,%sp@-
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
467ca: 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 );
467ce: 0281 0000 00ff andil #255,%d1
bool is_internal,
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
467d4: 23c0 0005 dbbe movel %d0,5dbbe <_Internal_errors_What_happened>
_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 );
467da: 2f01 movel %d1,%sp@-
)
{
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
467dc: 23c2 0005 dbc4 movel %d2,5dbc4 <_Internal_errors_What_happened+0x6>
_User_extensions_Fatal( the_source, is_internal, the_error );
467e2: 2f00 movel %d0,%sp@-
467e4: 4eb9 0004 83ca jsr 483ca <_User_extensions_Fatal>
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
467ea: 7005 moveq #5,%d0 <== NOT EXECUTED
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
467ec: 2042 moveal %d2,%a0 <== NOT EXECUTED
467ee: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
467f4: 23c0 0005 dc74 movel %d0,5dc74 <_System_state_Current> <== NOT EXECUTED
467fa: 40c0 movew %sr,%d0 <== NOT EXECUTED
467fc: 8082 orl %d2,%d0 <== NOT EXECUTED
467fe: 46c0 movew %d0,%sr <== NOT EXECUTED
46800: 2008 movel %a0,%d0 <== NOT EXECUTED
46802: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED
46808: 4ac8 halt <== NOT EXECUTED
4680a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4680e: 60fe bras 4680e <_Internal_error_Occurred+0x5a> <== NOT EXECUTED
00052778 <_Message_queue_Allocate>:
* Output parameters:
* the_message_queue - set if successful, NULL otherwise
*/
Message_queue_Control *_Message_queue_Allocate(void)
{
52778: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (Message_queue_Control *)
_Objects_Allocate(&_Message_queue_Information);
5277c: 4879 0006 6fd0 pea 66fd0 <_Message_queue_Information> <== NOT EXECUTED
52782: 4eb9 0004 e94c jsr 4e94c <_Objects_Allocate> <== NOT EXECUTED
}
52788: 4e5e unlk %fp <== NOT EXECUTED
0004ce54 <_Message_queue_Translate_core_message_queue_return_code>:
if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT )
return RTEMS_INTERNAL_ERROR;
#endif
return _Message_queue_Translate_core_return_code_[status];
}
4ce54: 41f9 0006 4f2c lea 64f2c <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
uint32_t status
)
{
4ce5a: 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];
}
4ce5e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4ce62: 4e5e unlk %fp <== NOT EXECUTED
4ce64: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004ae50 <_Objects_API_maximum_class>:
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4ae50: 7202 moveq #2,%d1
4ae52: 4e56 0000 linkw %fp,#0
4ae56: 202e 0008 movel %fp@(8),%d0
4ae5a: 5380 subql #1,%d0
4ae5c: b280 cmpl %d0,%d1
4ae5e: 650c bcss 4ae6c <_Objects_API_maximum_class+0x1c><== NEVER TAKEN
4ae60: 41f9 0005 b822 lea 5b822 <CSWTCH.1>,%a0
4ae66: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
4ae6a: 6002 bras 4ae6e <_Objects_API_maximum_class+0x1e>
4ae6c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4ae6e: 4e5e unlk %fp
...
00046868 <_Objects_Allocate>:
*/
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
46868: 4e56 fff0 linkw %fp,#-16
4686c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
46870: 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 )
46874: 4aaa 0014 tstl %a2@(20)
46878: 675e beqs 468d8 <_Objects_Allocate+0x70> <== NEVER TAKEN
/*
* OK. The manager should be initialized and configured to have objects.
* With any luck, it is safe to attempt to allocate an object.
*/
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
4687a: 240a movel %a2,%d2
4687c: 0682 0000 001c addil #28,%d2
46882: 47f9 0004 6014 lea 46014 <_Chain_Get>,%a3
46888: 2f02 movel %d2,%sp@-
4688a: 4e93 jsr %a3@
if ( information->auto_extend ) {
4688c: 588f addql #4,%sp
4688e: 4a2a 0010 tstb %a2@(16)
46892: 6746 beqs 468da <_Objects_Allocate+0x72>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
46894: 4a80 tstl %d0
46896: 6612 bnes 468aa <_Objects_Allocate+0x42> <== ALWAYS TAKEN
_Objects_Extend_information( information );
46898: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4689a: 4eb9 0004 6910 jsr 46910 <_Objects_Extend_information> <== NOT EXECUTED
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
468a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
468a2: 4e93 jsr %a3@ <== NOT EXECUTED
}
if ( the_object ) {
468a4: 508f addql #8,%sp <== NOT EXECUTED
468a6: 4a80 tstl %d0 <== NOT EXECUTED
468a8: 6730 beqs 468da <_Objects_Allocate+0x72> <== NOT EXECUTED
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
468aa: 2040 moveal %d0,%a0
468ac: 4281 clrl %d1
468ae: 4282 clrl %d2
468b0: 3228 000a movew %a0@(10),%d1
468b4: 342a 0008 movew %a2@(8),%d2
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
information->inactive_per_block[ block ]--;
468b8: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
468bc: 9282 subl %d2,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
468be: 342a 0012 movew %a2@(18),%d2
468c2: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
468c6: e589 lsll #2,%d1
468c8: d1c1 addal %d1,%a0
468ca: 5390 subql #1,%a0@
information->inactive--;
468cc: 322a 0028 movew %a2@(40),%d1
468d0: 5381 subql #1,%d1
468d2: 3541 0028 movew %d1,%a2@(40)
468d6: 6002 bras 468da <_Objects_Allocate+0x72>
* still attempts to create the object, the information block
* should be all zeroed out because it is in the BSS. So let's
* check that code for this manager is even present.
*/
if ( information->size == 0 )
return NULL;
468d8: 4280 clrl %d0 <== NOT EXECUTED
);
}
#endif
return the_object;
}
468da: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
468e0: 4e5e unlk %fp <== NOT EXECUTED
000468e4 <_Objects_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
468e4: 4280 clrl %d0
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
468e6: 4e56 0000 linkw %fp,#0
468ea: 226e 000c moveal %fp@(12),%a1
468ee: 206e 0008 moveal %fp@(8),%a0
468f2: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
468f4: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
468f8: 3029 000a movew %a1@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
468fc: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
46900: 245f moveal %sp@+,%a2
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
46902: 2d49 000c movel %a1,%fp@(12)
}
46906: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
46908: 4ef9 0004 6e1c jmp 46e1c <_Objects_Namespace_remove>
...
00046910 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
46910: 4e56 ffc8 linkw %fp,#-56
46914: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
46918: 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 );
4691c: 4283 clrl %d3
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
4691e: 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 );
46922: 362a 0008 movew %a2@(8),%d3
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
46926: 4a88 tstl %a0
46928: 6730 beqs 4695a <_Objects_Extend_information+0x4a><== ALWAYS TAKEN
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
4692a: 4280 clrl %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;
minimum_index = _Objects_Get_index( information->minimum_id );
4692c: 2403 movel %d3,%d2 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
4692e: 4285 clrl %d5 <== NOT EXECUTED
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
46930: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED
46934: 3c2a 000e movew %a2@(14),%d6 <== NOT EXECUTED
46938: 0286 0000 ffff andil #65535,%d6 <== NOT EXECUTED
4693e: 8cc0 divuw %d0,%d6 <== NOT EXECUTED
46940: 0286 0000 ffff andil #65535,%d6 <== NOT EXECUTED
for ( ; block < block_count; block++ ) {
46946: 6008 bras 46950 <_Objects_Extend_information+0x40><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
46948: 4a98 tstl %a0@+ <== NOT EXECUTED
4694a: 671a beqs 46966 <_Objects_Extend_information+0x56><== NOT EXECUTED
4694c: d480 addl %d0,%d2 <== NOT EXECUTED
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
4694e: 5285 addql #1,%d5 <== NOT EXECUTED
46950: bc85 cmpl %d5,%d6 <== NOT EXECUTED
46952: 62f4 bhis 46948 <_Objects_Extend_information+0x38><== 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;
46954: 367c 0001 moveaw #1,%a3 <== NOT EXECUTED
46958: 600e bras 46968 <_Objects_Extend_information+0x58><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
4695a: 2403 movel %d3,%d2
index_base = minimum_index;
block = 0;
4695c: 4285 clrl %d5
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
4695e: 4286 clrl %d6
/*
* 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;
46960: 367c 0001 moveaw #1,%a3
46964: 6002 bras 46968 <_Objects_Extend_information+0x58>
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
do_extend = false;
46966: 97cb subal %a3,%a3 <== NOT EXECUTED
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
46968: 4280 clrl %d0
4696a: 4287 clrl %d7
4696c: 302a 0012 movew %a2@(18),%d0
46970: 3e2a 000e movew %a2@(14),%d7
46974: de80 addl %d0,%d7
/*
* We need to limit the number of objects to the maximum number
* representable in the index portion of the object Id. In the
* case of 16-bit Ids, this is only 256 object instances.
*/
if ( maximum > OBJECTS_ID_FINAL_INDEX ) {
46976: 0c87 0000 ffff cmpil #65535,%d7
4697c: 6200 01d4 bhiw 46b52 <_Objects_Extend_information+0x242>
/*
* 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;
46980: 41ea 0014 lea %a2@(20),%a0
46984: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
46988: 4a2a 0010 tstb %a2@(16)
4698c: 6712 beqs 469a0 <_Objects_Extend_information+0x90>
new_object_block = _Workspace_Allocate( block_size );
4698e: 2f00 movel %d0,%sp@-
46990: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
if ( !new_object_block )
46996: 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 );
46998: 2800 movel %d0,%d4
if ( !new_object_block )
4699a: 6610 bnes 469ac <_Objects_Extend_information+0x9c><== ALWAYS TAKEN
4699c: 6000 01b4 braw 46b52 <_Objects_Extend_information+0x242><== NOT EXECUTED
return;
} else {
new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
469a0: 2f00 movel %d0,%sp@-
469a2: 4eb9 0004 87c8 jsr 487c8 <_Workspace_Allocate_or_fatal_error>
469a8: 588f addql #4,%sp
469aa: 2800 movel %d0,%d4
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
469ac: 300b movew %a3,%d0
469ae: 4a00 tstb %d0
469b0: 6700 0110 beqw 46ac2 <_Objects_Extend_information+0x1b2>
*/
/*
* Up the block count and maximum
*/
block_count++;
469b4: 2846 moveal %d6,%a4
469b6: 528c addql #1,%a4
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
469b8: 2007 movel %d7,%d0
469ba: d083 addl %d3,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
469bc: 41f4 ca00 lea %a4@(00000000,%a4:l:2),%a0
469c0: d088 addl %a0,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
469c2: 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 );
469c4: 2f00 movel %d0,%sp@-
469c6: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
if ( !object_blocks ) {
469cc: 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 );
469ce: 2640 moveal %d0,%a3
if ( !object_blocks ) {
469d0: 4a80 tstl %d0
469d2: 660e bnes 469e2 <_Objects_Extend_information+0xd2><== ALWAYS TAKEN
_Workspace_Free( new_object_block );
469d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
469d6: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
return;
469dc: 588f addql #4,%sp <== NOT EXECUTED
469de: 6000 0172 braw 46b52 <_Objects_Extend_information+0x242><== NOT EXECUTED
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
469e2: 220c movel %a4,%d1
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
469e4: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
469e6: e589 lsll #2,%d1
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
469e8: 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);
469ec: 4bf3 1800 lea %a3@(00000000,%d1:l),%a5
469f0: 49f5 1800 lea %a5@(00000000,%d1:l),%a4
469f4: b680 cmpl %d0,%d3
469f6: 6506 bcss 469fe <_Objects_Extend_information+0xee><== NEVER TAKEN
469f8: 204c moveal %a4,%a0
469fa: 4280 clrl %d0
469fc: 604a bras 46a48 <_Objects_Extend_information+0x138>
/*
* 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,
469fe: 2206 movel %d6,%d1 <== NOT EXECUTED
46a00: e589 lsll #2,%d1 <== NOT EXECUTED
46a02: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46a04: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED
46a08: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED
46a0c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46a0e: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
46a14: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
46a18: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46a1a: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED
46a1e: 2f0d movel %a5,%sp@- <== NOT EXECUTED
46a20: 4eb9 0004 d1f8 jsr 4d1f8 <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 *) );
46a26: 4280 clrl %d0 <== NOT EXECUTED
46a28: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
46a2c: d680 addl %d0,%d3 <== 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,
46a2e: e58b lsll #2,%d3 <== NOT EXECUTED
46a30: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46a32: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
46a36: 2f0c movel %a4,%sp@- <== NOT EXECUTED
46a38: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
46a3e: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
46a42: 6008 bras 46a4c <_Objects_Extend_information+0x13c><== NOT EXECUTED
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
local_table[ index ] = NULL;
46a44: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
46a46: 5280 addql #1,%d0
46a48: b680 cmpl %d0,%d3
46a4a: 62f8 bhis 46a44 <_Objects_Extend_information+0x134>
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
46a4c: 4281 clrl %d1
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
46a4e: 2002 movel %d2,%d0
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
46a50: e58e lsll #2,%d6
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
46a52: 322a 0012 movew %a2@(18),%d1
46a56: 41f4 2c00 lea %a4@(00000000,%d2:l:4),%a0
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
46a5a: 42b3 6800 clrl %a3@(00000000,%d6:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
46a5e: d282 addl %d2,%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
46a60: 42b5 6800 clrl %a5@(00000000,%d6:l)
for ( index=index_base ;
46a64: 6004 bras 46a6a <_Objects_Extend_information+0x15a>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
46a66: 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++ ) {
46a68: 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 ;
46a6a: b280 cmpl %d0,%d1
46a6c: 62f8 bhis 46a66 <_Objects_Extend_information+0x156>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
46a6e: 203c 0000 0700 movel #1792,%d0
46a74: 40c3 movew %sr,%d3
46a76: 8083 orl %d3,%d0
46a78: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
46a7a: 2012 movel %a2@,%d0
46a7c: 7c18 moveq #24,%d6
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(
46a7e: 4281 clrl %d1
46a80: eda8 lsll %d6,%d0
46a82: 322a 0004 movew %a2@(4),%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
46a86: 1c3c 001b moveb #27,%d6
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
46a8a: 08c0 0010 bset #16,%d0
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
46a8e: eda9 lsll %d6,%d1
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
information->inactive_per_block = inactive_per_block;
information->local_table = local_table;
information->maximum = (Objects_Maximum) maximum;
46a90: 3547 000e movew %d7,%a2@(14)
information->maximum_id = _Objects_Build_id(
46a94: 0287 0000 ffff andil #65535,%d7
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
46a9a: 206a 002e moveal %a2@(46),%a0
46a9e: 8081 orl %d1,%d0
information->object_blocks = object_blocks;
46aa0: 254b 002e movel %a3,%a2@(46)
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
46aa4: 8087 orl %d7,%d0
information->inactive_per_block = inactive_per_block;
46aa6: 254d 002a movel %a5,%a2@(42)
information->local_table = local_table;
46aaa: 254c 0018 movel %a4,%a2@(24)
46aae: 2540 000a movel %d0,%a2@(10)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
46ab2: 46c3 movew %d3,%sr
if ( old_tables )
46ab4: 4a88 tstl %a0
46ab6: 670a beqs 46ac2 <_Objects_Extend_information+0x1b2><== ALWAYS TAKEN
_Workspace_Free( old_tables );
46ab8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
46aba: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
46ac0: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
46ac2: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
46ac6: 4280 clrl %d0
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
46ac8: 260a movel %a2,%d3
/*
* Move from the local chain, initialise, then append to the inactive chain
*/
index = index_base;
while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
46aca: 49f9 0004 6014 lea 46014 <_Chain_Get>,%a4
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
46ad0: 0683 0000 001c addil #28,%d3
46ad6: 47f9 0004 5fb4 lea 45fb4 <_Chain_Append>,%a3
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
46adc: e58d lsll #2,%d5
46ade: 2184 5800 movel %d4,%a0@(00000000,%d5:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
46ae2: 2f2a 0014 movel %a2@(20),%sp@-
46ae6: 302a 0012 movew %a2@(18),%d0
46aea: 2f00 movel %d0,%sp@-
46aec: 2f04 movel %d4,%sp@-
46aee: 280e movel %fp,%d4
46af0: 0684 ffff fff4 addil #-12,%d4
46af6: 2f04 movel %d4,%sp@-
46af8: 4eb9 0004 a9c4 jsr 4a9c4 <_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 ) {
46afe: 4fef 0010 lea %sp@(16),%sp
46b02: 602a bras 46b2e <_Objects_Extend_information+0x21e>
46b04: 2212 movel %a2@,%d1
46b06: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
46b08: 4286 clrl %d6
46b0a: 2040 moveal %d0,%a0
46b0c: 3c2a 0004 movew %a2@(4),%d6
46b10: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
46b12: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
46b16: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
46b1a: efae lsll %d7,%d6
46b1c: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
46b1e: 8282 orl %d2,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
46b20: 5282 addql #1,%d2
46b22: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
46b26: 2f00 movel %d0,%sp@-
46b28: 2f03 movel %d3,%sp@-
46b2a: 4e93 jsr %a3@
index++;
46b2c: 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 ) {
46b2e: 2f04 movel %d4,%sp@-
46b30: 4e94 jsr %a4@
46b32: 588f addql #4,%sp
46b34: 4a80 tstl %d0
46b36: 66cc bnes 46b04 <_Objects_Extend_information+0x1f4>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
46b38: 4281 clrl %d1
46b3a: 302a 0012 movew %a2@(18),%d0
46b3e: 206a 002a moveal %a2@(42),%a0
46b42: 3200 movew %d0,%d1
46b44: 2181 5800 movel %d1,%a0@(00000000,%d5:l)
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
46b48: 322a 0028 movew %a2@(40),%d1
46b4c: d081 addl %d1,%d0
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
46b4e: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
46b52: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
46b58: 4e5e unlk %fp <== NOT EXECUTED
00046b5c <_Objects_Free>:
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
46b5c: 4e56 fff0 linkw %fp,#-16
46b60: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
46b64: 246e 0008 moveal %fp@(8),%a2
46b68: 266e 000c moveal %fp@(12),%a3
uint32_t allocation_size = information->allocation_size;
46b6c: 342a 0012 movew %a2@(18),%d2
_Chain_Append( &information->Inactive, &the_object->Node );
46b70: 2f0b movel %a3,%sp@-
46b72: 486a 001c pea %a2@(28)
46b76: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append>
if ( information->auto_extend ) {
46b7c: 508f addql #8,%sp
46b7e: 4a2a 0010 tstb %a2@(16)
46b82: 6750 beqs 46bd4 <_Objects_Free+0x78> <== ALWAYS TAKEN
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
46b84: 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 ) -
46b86: 4280 clrl %d0 <== NOT EXECUTED
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
46b88: 3202 movew %d2,%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 ) -
46b8a: 4282 clrl %d2 <== NOT EXECUTED
46b8c: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED
46b90: 342a 0008 movew %a2@(8),%d2 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
46b94: 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 ) -
46b98: 9082 subl %d2,%d0 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
46b9a: 342a 0012 movew %a2@(18),%d2 <== NOT EXECUTED
46b9e: 4c42 0000 remul %d2,%d0,%d0 <== 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 ) ) ) {
46ba2: 2401 movel %d1,%d2 <== NOT EXECUTED
46ba4: e28a lsrl #1,%d2 <== NOT EXECUTED
46ba6: d282 addl %d2,%d1 <== 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 ]++;
46ba8: e588 lsll #2,%d0 <== NOT EXECUTED
46baa: d1c0 addal %d0,%a0 <== NOT EXECUTED
46bac: 5290 addql #1,%a0@ <== NOT EXECUTED
information->inactive++;
46bae: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED
46bb2: 5280 addql #1,%d0 <== NOT EXECUTED
46bb4: 3540 0028 movew %d0,%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 ) ) ) {
46bb8: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
46bbe: b280 cmpl %d0,%d1 <== NOT EXECUTED
46bc0: 6412 bccs 46bd4 <_Objects_Free+0x78> <== NOT EXECUTED
_Objects_Shrink_information( information );
46bc2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
}
46bc6: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46bcc: 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 );
46bce: 4ef9 0004 6ec0 jmp 46ec0 <_Objects_Shrink_information> <== NOT EXECUTED
}
}
}
46bd4: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
46bda: 4e5e unlk %fp
...
00046cc0 <_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;
46cc0: 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 ) {
46cc2: 4281 clrl %d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
46cc4: 4e56 0000 linkw %fp,#0
46cc8: 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;
46ccc: 90a8 0006 subl %a0@(6),%d0
46cd0: d0ae 000c addl %fp@(12),%d0
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
46cd4: 2f0a movel %a2,%sp@-
46cd6: 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 ) {
46cda: 3228 000e movew %a0@(14),%d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
46cde: 2f02 movel %d2,%sp@-
/*
* 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 ) {
46ce0: b280 cmpl %d0,%d1
46ce2: 6528 bcss 46d0c <_Objects_Get+0x4c> <== NEVER TAKEN
46ce4: 2239 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d1
46cea: 5281 addql #1,%d1
46cec: 23c1 0005 db08 movel %d1,5db08 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( (the_object = information->local_table[ index ]) != NULL ) {
46cf2: 2068 0018 moveal %a0@(24),%a0
46cf6: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2
46cfa: 6704 beqs 46d00 <_Objects_Get+0x40> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
46cfc: 4292 clrl %a2@
return the_object;
46cfe: 6012 bras 46d12 <_Objects_Get+0x52>
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
46d00: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
*location = OBJECTS_ERROR;
46d06: 7201 moveq #1,%d1 <== NOT EXECUTED
46d08: 2481 movel %d1,%a2@ <== NOT EXECUTED
return NULL;
46d0a: 6006 bras 46d12 <_Objects_Get+0x52> <== NOT EXECUTED
/*
* 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;
46d0c: 7001 moveq #1,%d0 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
46d0e: 4282 clrl %d2 <== NOT EXECUTED
/*
* 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;
46d10: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
46d12: 2002 movel %d2,%d0
46d14: 242e fff8 movel %fp@(-8),%d2
46d18: 246e fffc moveal %fp@(-4),%a2
46d1c: 4e5e unlk %fp <== NOT EXECUTED
00046c0c <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
46c0c: 4e56 0000 linkw %fp,#0
46c10: 2f03 movel %d3,%sp@-
46c12: 362e 000e movew %fp@(14),%d3
46c16: 2f02 movel %d2,%sp@-
46c18: 242e 0008 movel %fp@(8),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
46c1c: 4a43 tstw %d3
46c1e: 673a beqs 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN
/*
* 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 );
46c20: 2f02 movel %d2,%sp@-
46c22: 4eb9 0004 ae50 jsr 4ae50 <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
46c28: 588f addql #4,%sp
46c2a: 4a80 tstl %d0
46c2c: 672c beqs 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
46c2e: 0283 0000 ffff andil #65535,%d3
46c34: b083 cmpl %d3,%d0
46c36: 6522 bcss 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN
return NULL;
if ( !_Objects_Information_table[ the_api ] )
46c38: 41f9 0005 dac4 lea 5dac4 <_Objects_Information_table>,%a0
46c3e: 2070 2c00 moveal %a0@(00000000,%d2:l:4),%a0
46c42: 4a88 tstl %a0
46c44: 6714 beqs 46c5a <_Objects_Get_information+0x4e> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
46c46: 2030 3c00 movel %a0@(00000000,%d3:l:4),%d0
if ( !info )
46c4a: 6710 beqs 46c5c <_Objects_Get_information+0x50> <== 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;
46c4c: 2040 moveal %d0,%a0
46c4e: 4a68 000e tstw %a0@(14)
46c52: 56c1 sne %d1
46c54: 49c1 extbl %d1
46c56: c081 andl %d1,%d0
46c58: 6002 bras 46c5c <_Objects_Get_information+0x50>
if ( the_class > (uint32_t) the_class_api_maximum )
return NULL;
if ( !_Objects_Information_table[ the_api ] )
return NULL;
46c5a: 4280 clrl %d0 <== NOT EXECUTED
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
46c5c: 242e fff8 movel %fp@(-8),%d2
46c60: 262e fffc movel %fp@(-4),%d3
46c64: 4e5e unlk %fp <== NOT EXECUTED
00046c68 <_Objects_Get_isr_disable>:
{
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
46c68: 7001 moveq #1,%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
46c6a: 4e56 0000 linkw %fp,#0
46c6e: 226e 0008 moveal %fp@(8),%a1
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
46c72: 90a9 0006 subl %a1@(6),%d0
46c76: d0ae 000c addl %fp@(12),%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
46c7a: 2f02 movel %d2,%sp@-
46c7c: 206e 0010 moveal %fp@(16),%a0
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
_ISR_Disable( level );
46c80: 243c 0000 0700 movel #1792,%d2
46c86: 40c1 movew %sr,%d1
46c88: 8481 orl %d1,%d2
46c8a: 46c2 movew %d2,%sr
if ( information->maximum >= index ) {
46c8c: 4282 clrl %d2
46c8e: 3429 000e movew %a1@(14),%d2
46c92: b082 cmpl %d2,%d0
46c94: 621c bhis 46cb2 <_Objects_Get_isr_disable+0x4a> <== NEVER TAKEN
if ( (the_object = information->local_table[ index ]) != NULL ) {
46c96: 2269 0018 moveal %a1@(24),%a1
46c9a: 2031 0c00 movel %a1@(00000000,%d0:l:4),%d0
46c9e: 670a beqs 46caa <_Objects_Get_isr_disable+0x42> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
46ca0: 4290 clrl %a0@
*level_p = level;
46ca2: 206e 0014 moveal %fp@(20),%a0
46ca6: 2081 movel %d1,%a0@
return the_object;
46ca8: 6010 bras 46cba <_Objects_Get_isr_disable+0x52>
}
_ISR_Enable( level );
46caa: 46c1 movew %d1,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
46cac: 7201 moveq #1,%d1 <== NOT EXECUTED
46cae: 2081 movel %d1,%a0@ <== NOT EXECUTED
return NULL;
46cb0: 6008 bras 46cba <_Objects_Get_isr_disable+0x52> <== NOT EXECUTED
}
_ISR_Enable( level );
46cb2: 46c1 movew %d1,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
46cb4: 7001 moveq #1,%d0 <== NOT EXECUTED
46cb6: 2080 movel %d0,%a0@ <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
46cb8: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
46cba: 241f movel %sp@+,%d2
46cbc: 4e5e unlk %fp <== NOT EXECUTED
00047ff8 <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
47ff8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
47ffc: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
48000: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
48004: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
48008: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
4800c: 4a84 tstl %d4 <== NOT EXECUTED
4800e: 6700 00c2 beqw 480d2 <_Objects_Get_name_as_string+0xda><== NOT EXECUTED
return NULL;
if ( name == NULL )
48012: 4a82 tstl %d2 <== NOT EXECUTED
48014: 6700 00be beqw 480d4 <_Objects_Get_name_as_string+0xdc><== NOT EXECUTED
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
48018: 4a83 tstl %d3 <== NOT EXECUTED
4801a: 660a bnes 48026 <_Objects_Get_name_as_string+0x2e><== NOT EXECUTED
4801c: 2079 0006 7ebc moveal 67ebc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
48022: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
48026: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48028: 4eb9 0004 7f18 jsr 47f18 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
4802e: 588f addql #4,%sp <== NOT EXECUTED
if ( name == NULL )
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
information = _Objects_Get_information_id( tmpId );
48030: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( !information )
48032: 4a80 tstl %d0 <== NOT EXECUTED
48034: 6700 009c beqw 480d2 <_Objects_Get_name_as_string+0xda><== NOT EXECUTED
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
48038: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4803c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4803e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48040: 4eb9 0004 80e0 jsr 480e0 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
48046: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4804a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4804e: 6600 0082 bnew 480d2 <_Objects_Get_name_as_string+0xda><== NOT EXECUTED
return NULL;
case OBJECTS_LOCAL:
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
48052: 4a2a 0032 tstb %a2@(50) <== NOT EXECUTED
48056: 670c beqs 48064 <_Objects_Get_name_as_string+0x6c><== NOT EXECUTED
s = the_object->name.name_p;
48058: 2040 moveal %d0,%a0 <== NOT EXECUTED
4805a: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
lname[ 4 ] = '\0';
s = lname;
}
d = name;
if ( s ) {
4805e: 6638 bnes 48098 <_Objects_Get_name_as_string+0xa0><== NOT EXECUTED
48060: 2042 moveal %d2,%a0 <== NOT EXECUTED
48062: 6064 bras 480c8 <_Objects_Get_name_as_string+0xd0><== 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;
48064: 2040 moveal %d0,%a0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
48066: 7618 moveq #24,%d3 <== 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;
48068: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
4806c: 2200 movel %d0,%d1 <== NOT EXECUTED
4806e: e6a9 lsrl %d3,%d1 <== NOT EXECUTED
48070: 1d41 fff7 moveb %d1,%fp@(-9) <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
48074: 2200 movel %d0,%d1 <== NOT EXECUTED
48076: 4241 clrw %d1 <== NOT EXECUTED
48078: 4841 swap %d1 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
4807a: 1d40 fffa moveb %d0,%fp@(-6) <== NOT EXECUTED
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
4807e: 1d41 fff8 moveb %d1,%fp@(-8) <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
48082: 2200 movel %d0,%d1 <== NOT EXECUTED
48084: e089 lsrl #8,%d1 <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
48086: 4200 clrb %d0 <== NOT EXECUTED
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
48088: 1d41 fff9 moveb %d1,%fp@(-7) <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
4808c: 1d40 fffb moveb %d0,%fp@(-5) <== NOT EXECUTED
s = lname;
48090: 200e movel %fp,%d0 <== NOT EXECUTED
48092: 0680 ffff fff7 addil #-9,%d0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
48098: 2240 moveal %d0,%a1 <== NOT EXECUTED
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
*d = (isprint((unsigned char)*s)) ? *s : '*';
4809a: 2042 moveal %d2,%a0 <== NOT EXECUTED
4809c: 4280 clrl %d0 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4809e: 5384 subql #1,%d4 <== NOT EXECUTED
480a0: 601e bras 480c0 <_Objects_Get_name_as_string+0xc8><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
480a2: 4283 clrl %d3 <== NOT EXECUTED
480a4: 1601 moveb %d1,%d3 <== NOT EXECUTED
480a6: 2479 0005 e5d4 moveal 5e5d4 <__ctype_ptr__>,%a2 <== NOT EXECUTED
480ac: 1632 3801 moveb %a2@(00000001,%d3:l),%d3 <== NOT EXECUTED
480b0: 49c3 extbl %d3 <== NOT EXECUTED
480b2: 0283 0000 0097 andil #151,%d3 <== NOT EXECUTED
480b8: 6602 bnes 480bc <_Objects_Get_name_as_string+0xc4><== NOT EXECUTED
480ba: 722a moveq #42,%d1 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
480bc: 5280 addql #1,%d0 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
480be: 10c1 moveb %d1,%a0@+ <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
480c0: b880 cmpl %d0,%d4 <== NOT EXECUTED
480c2: 6304 blss 480c8 <_Objects_Get_name_as_string+0xd0><== NOT EXECUTED
480c4: 1219 moveb %a1@+,%d1 <== NOT EXECUTED
480c6: 66da bnes 480a2 <_Objects_Get_name_as_string+0xaa><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
480c8: 4210 clrb %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
480ca: 4eb9 0004 8b46 jsr 48b46 <_Thread_Enable_dispatch> <== NOT EXECUTED
return name;
480d0: 6002 bras 480d4 <_Objects_Get_name_as_string+0xdc><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
480d2: 4282 clrl %d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
480d4: 2002 movel %d2,%d0 <== NOT EXECUTED
480d6: 4cee 041c ffe4 moveml %fp@(-28),%d2-%d4/%a2 <== NOT EXECUTED
480dc: 4e5e unlk %fp <== NOT EXECUTED
00046e4c <_Objects_Get_next>:
Objects_Information *information,
Objects_Id id,
Objects_Locations *location_p,
Objects_Id *next_id_p
)
{
46e4c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
46e50: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
46e54: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
46e58: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
46e5c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
46e60: 286e 0014 moveal %fp@(20),%a4 <== NOT EXECUTED
Objects_Control *object;
Objects_Id next_id;
if ( !information )
46e64: 4a8b tstl %a3 <== NOT EXECUTED
46e66: 6744 beqs 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED
return NULL;
if ( !location_p )
46e68: 4a8a tstl %a2 <== NOT EXECUTED
46e6a: 6740 beqs 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED
return NULL;
if ( !next_id_p )
46e6c: 4a8c tstl %a4 <== NOT EXECUTED
46e6e: 673c beqs 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
46e70: 4a42 tstw %d2 <== NOT EXECUTED
46e72: 6604 bnes 46e78 <_Objects_Get_next+0x2c> <== NOT EXECUTED
next_id = information->minimum_id;
46e74: 242b 0006 movel %a3@(6),%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
46e78: 4bf9 0004 6eb8 lea 46eb8 <_Objects_Get>,%a5 <== NOT EXECUTED
else
next_id = id;
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
46e7e: 4281 clrl %d1 <== NOT EXECUTED
46e80: 4280 clrl %d0 <== NOT EXECUTED
46e82: 322b 000e movew %a3@(14),%d1 <== NOT EXECUTED
46e86: 3002 movew %d2,%d0 <== NOT EXECUTED
46e88: b081 cmpl %d1,%d0 <== NOT EXECUTED
46e8a: 630a blss 46e96 <_Objects_Get_next+0x4a> <== NOT EXECUTED
{
*location_p = OBJECTS_ERROR;
46e8c: 7201 moveq #1,%d1 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
46e8e: 70ff moveq #-1,%d0 <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
46e90: 2481 movel %d1,%a2@ <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
46e92: 2880 movel %d0,%a4@ <== NOT EXECUTED
46e94: 6016 bras 46eac <_Objects_Get_next+0x60> <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
46e96: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46e98: 2f02 movel %d2,%sp@- <== NOT EXECUTED
next_id++;
46e9a: 5282 addql #1,%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
46e9c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46e9e: 4e95 jsr %a5@ <== NOT EXECUTED
next_id++;
} while (*location_p != OBJECTS_LOCAL);
46ea0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46ea4: 4a92 tstl %a2@ <== NOT EXECUTED
46ea6: 66d6 bnes 46e7e <_Objects_Get_next+0x32> <== NOT EXECUTED
*next_id_p = next_id;
46ea8: 2882 movel %d2,%a4@ <== NOT EXECUTED
return object;
46eaa: 6002 bras 46eae <_Objects_Get_next+0x62> <== NOT EXECUTED
if ( !location_p )
return NULL;
if ( !next_id_p )
return NULL;
46eac: 4280 clrl %d0 <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
46eae: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
46eb4: 4e5e unlk %fp <== NOT EXECUTED
000543a4 <_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;
543a4: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
543a6: 4281 clrl %d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
543a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
543ac: 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;
543b0: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED
543b4: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
543b8: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
543bc: 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 ) {
543c0: b081 cmpl %d1,%d0 <== NOT EXECUTED
543c2: 620e bhis 543d2 <_Objects_Get_no_protection+0x2e><== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
543c4: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
543c8: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
543cc: 6704 beqs 543d2 <_Objects_Get_no_protection+0x2e><== NOT EXECUTED
*location = OBJECTS_LOCAL;
543ce: 4291 clrl %a1@ <== NOT EXECUTED
return the_object;
543d0: 6006 bras 543d8 <_Objects_Get_no_protection+0x34><== 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;
543d2: 7001 moveq #1,%d0 <== NOT EXECUTED
543d4: 2280 movel %d0,%a1@ <== NOT EXECUTED
return NULL;
543d6: 4280 clrl %d0 <== NOT EXECUTED
}
543d8: 4e5e unlk %fp <== NOT EXECUTED
00047bec <_Objects_Id_to_name>:
*/
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
47bec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47bf0: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
47bf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
47bf6: 4a81 tstl %d1 <== NOT EXECUTED
47bf8: 660a bnes 47c04 <_Objects_Id_to_name+0x18> <== NOT EXECUTED
47bfa: 2079 0005 f44a moveal 5f44a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
47c00: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
47c04: 7418 moveq #24,%d2 <== NOT EXECUTED
47c06: 2001 movel %d1,%d0 <== NOT EXECUTED
47c08: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
47c0a: 143c 0007 moveb #7,%d2 <== NOT EXECUTED
47c0e: 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 )
47c10: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
47c14: 2040 moveal %d0,%a0 <== NOT EXECUTED
47c16: 5388 subql #1,%a0 <== NOT EXECUTED
47c18: b488 cmpl %a0,%d2 <== NOT EXECUTED
47c1a: 6540 bcss 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED
47c1c: 6048 bras 47c66 <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
47c1e: 2001 movel %d1,%d0 <== NOT EXECUTED
47c20: 741b moveq #27,%d2 <== NOT EXECUTED
47c22: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
if ( !_Objects_Information_table[ the_api ] )
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
47c24: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
if ( !information )
47c28: 4a88 tstl %a0 <== NOT EXECUTED
47c2a: 6730 beqs 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string )
47c2c: 4a28 0032 tstb %a0@(50) <== NOT EXECUTED
47c30: 662a bnes 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
#endif
the_object = _Objects_Get( information, tmpId, &ignored_location );
47c32: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47c36: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47c38: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47c3a: 4eb9 0004 7b8c jsr 47b8c <_Objects_Get> <== NOT EXECUTED
if ( !the_object )
47c40: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47c44: 4a80 tstl %d0 <== NOT EXECUTED
47c46: 6714 beqs 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
47c48: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
47c4c: 2240 moveal %d0,%a1 <== NOT EXECUTED
47c4e: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47c52: 4eb9 0004 86f2 jsr 486f2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
47c58: 4280 clrl %d0 <== NOT EXECUTED
47c5a: 6002 bras 47c5e <_Objects_Id_to_name+0x72> <== 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;
47c5c: 7003 moveq #3,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
47c5e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47c62: 4e5e unlk %fp <== NOT EXECUTED
47c64: 4e75 rts <== 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 ] )
47c66: 41f9 0005 ef7c lea 5ef7c <_Objects_Information_table>,%a0 <== NOT EXECUTED
47c6c: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
47c70: 4a88 tstl %a0 <== NOT EXECUTED
47c72: 66aa bnes 47c1e <_Objects_Id_to_name+0x32> <== NOT EXECUTED
47c74: 60e6 bras 47c5c <_Objects_Id_to_name+0x70> <== NOT EXECUTED
...
00051174 <_Objects_Name_to_id_string>:
Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string(
Objects_Information *information,
const char *name,
Objects_Id *id
)
{
51174: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
51178: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5117c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
51180: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
51184: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED
Objects_Control *the_object;
uint32_t index;
/* ASSERT: information->is_string == true */
if ( !id )
51188: 4a8c tstl %a4 <== NOT EXECUTED
5118a: 6750 beqs 511dc <_Objects_Name_to_id_string+0x68><== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( !name )
5118c: 4a83 tstl %d3 <== NOT EXECUTED
5118e: 6750 beqs 511e0 <_Objects_Name_to_id_string+0x6c><== NOT EXECUTED
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
51190: 382b 000e movew %a3@(14),%d4 <== NOT EXECUTED
51194: 674a beqs 511e0 <_Objects_Name_to_id_string+0x6c><== NOT EXECUTED
51196: 7401 moveq #1,%d2 <== NOT EXECUTED
continue;
if ( !the_object->name.name_p )
continue;
if (!strncmp( name, the_object->name.name_p, information->name_length)) {
51198: 4bf9 0005 490c lea 5490c <strncmp>,%a5 <== NOT EXECUTED
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
for ( index = 1; index <= information->maximum; index++ ) {
5119e: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
511a4: 6030 bras 511d6 <_Objects_Name_to_id_string+0x62><== NOT EXECUTED
the_object = information->local_table[ index ];
511a6: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED
511aa: 2470 2c00 moveal %a0@(00000000,%d2:l:4),%a2 <== NOT EXECUTED
if ( !the_object )
511ae: 4a8a tstl %a2 <== NOT EXECUTED
511b0: 6722 beqs 511d4 <_Objects_Name_to_id_string+0x60><== NOT EXECUTED
continue;
if ( !the_object->name.name_p )
511b2: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
511b6: 671c beqs 511d4 <_Objects_Name_to_id_string+0x60><== NOT EXECUTED
continue;
if (!strncmp( name, the_object->name.name_p, information->name_length)) {
511b8: 4281 clrl %d1 <== NOT EXECUTED
511ba: 322b 0034 movew %a3@(52),%d1 <== NOT EXECUTED
511be: 2f01 movel %d1,%sp@- <== NOT EXECUTED
511c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
511c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
511c4: 4e95 jsr %a5@ <== NOT EXECUTED
511c6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
511ca: 4a80 tstl %d0 <== NOT EXECUTED
511cc: 6606 bnes 511d4 <_Objects_Name_to_id_string+0x60><== NOT EXECUTED
*id = the_object->id;
511ce: 28aa 0008 movel %a2@(8),%a4@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
511d2: 600e bras 511e2 <_Objects_Name_to_id_string+0x6e><== NOT EXECUTED
if ( !name )
return OBJECTS_INVALID_NAME;
if ( information->maximum != 0 ) {
for ( index = 1; index <= information->maximum; index++ ) {
511d4: 5282 addql #1,%d2 <== NOT EXECUTED
511d6: b882 cmpl %d2,%d4 <== NOT EXECUTED
511d8: 64cc bccs 511a6 <_Objects_Name_to_id_string+0x32><== NOT EXECUTED
511da: 6004 bras 511e0 <_Objects_Name_to_id_string+0x6c><== NOT EXECUTED
uint32_t index;
/* ASSERT: information->is_string == true */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
511dc: 7002 moveq #2,%d0 <== NOT EXECUTED
511de: 6002 bras 511e2 <_Objects_Name_to_id_string+0x6e><== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
}
}
return OBJECTS_INVALID_NAME;
511e0: 7001 moveq #1,%d0 <== NOT EXECUTED
}
511e2: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
511e8: 4e5e unlk %fp <== NOT EXECUTED
00046e4c <_Objects_Name_to_id_u32>:
Objects_Information *information,
uint32_t name,
uint32_t node,
Objects_Id *id
)
{
46e4c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
46e50: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
46e54: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
46e58: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
46e5c: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
46e60: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == false */
if ( !id )
46e64: 4a8a tstl %a2 <== NOT EXECUTED
46e66: 674a beqs 46eb2 <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( name == 0 )
46e68: 4a82 tstl %d2 <== NOT EXECUTED
46e6a: 674a beqs 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
search_local_node = false;
if ( information->maximum != 0 &&
46e6c: 3229 000e movew %a1@(14),%d1 <== NOT EXECUTED
46e70: 6744 beqs 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED
46e72: 4a80 tstl %d0 <== NOT EXECUTED
46e74: 672e beqs 46ea4 <_Objects_Name_to_id_u32+0x58> <== NOT EXECUTED
(node == OBJECTS_SEARCH_ALL_NODES ||
46e76: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED
46e7c: 6726 beqs 46ea4 <_Objects_Name_to_id_u32+0x58> <== NOT EXECUTED
node == OBJECTS_SEARCH_LOCAL_NODE ||
46e7e: 7601 moveq #1,%d3 <== NOT EXECUTED
46e80: b680 cmpl %d0,%d3 <== NOT EXECUTED
46e82: 6632 bnes 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED
46e84: 601e bras 46ea4 <_Objects_Name_to_id_u32+0x58> <== NOT EXECUTED
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
the_object = information->local_table[ index ];
46e86: 2069 0018 moveal %a1@(24),%a0 <== NOT EXECUTED
46e8a: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
if ( !the_object )
46e8e: 4a88 tstl %a0 <== NOT EXECUTED
46e90: 670e beqs 46ea0 <_Objects_Name_to_id_u32+0x54> <== NOT EXECUTED
continue;
if ( name == the_object->name.name_u32 ) {
46e92: b4a8 000c cmpl %a0@(12),%d2 <== NOT EXECUTED
46e96: 6608 bnes 46ea0 <_Objects_Name_to_id_u32+0x54> <== NOT EXECUTED
*id = the_object->id;
46e98: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
46e9c: 4280 clrl %d0 <== NOT EXECUTED
46e9e: 6018 bras 46eb8 <_Objects_Name_to_id_u32+0x6c> <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
46ea0: 5280 addql #1,%d0 <== NOT EXECUTED
46ea2: 6008 bras 46eac <_Objects_Name_to_id_u32+0x60> <== NOT EXECUTED
search_local_node = false;
if ( information->maximum != 0 &&
(node == OBJECTS_SEARCH_ALL_NODES ||
node == OBJECTS_SEARCH_LOCAL_NODE ||
46ea4: 7001 moveq #1,%d0 <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
46ea6: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
46eac: b280 cmpl %d0,%d1 <== NOT EXECUTED
46eae: 64d6 bccs 46e86 <_Objects_Name_to_id_u32+0x3a> <== NOT EXECUTED
46eb0: 6004 bras 46eb6 <_Objects_Name_to_id_u32+0x6a> <== NOT EXECUTED
#endif
/* ASSERT: information->is_string == false */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
46eb2: 7002 moveq #2,%d0 <== NOT EXECUTED
46eb4: 6002 bras 46eb8 <_Objects_Name_to_id_u32+0x6c> <== 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;
46eb6: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
46eb8: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
46ebc: 4e5e unlk %fp <== NOT EXECUTED
00046e1c <_Objects_Namespace_remove>:
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
46e1c: 4e56 0000 linkw %fp,#0
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/*
* If this is a string format name, then free the memory.
*/
if ( information->is_string && the_object->name.name_p )
46e20: 206e 0008 moveal %fp@(8),%a0
void _Objects_Namespace_remove(
Objects_Information *information,
Objects_Control *the_object
)
{
46e24: 2f0a movel %a2,%sp@-
46e26: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/*
* If this is a string format name, then free the memory.
*/
if ( information->is_string && the_object->name.name_p )
46e2a: 4a28 0032 tstb %a0@(50)
46e2e: 6710 beqs 46e40 <_Objects_Namespace_remove+0x24> <== ALWAYS TAKEN
46e30: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
46e34: 670a beqs 46e40 <_Objects_Namespace_remove+0x24> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
46e36: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46e38: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
46e3e: 588f addql #4,%sp <== NOT EXECUTED
* Clear out either format.
*/
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
the_object->name.name_p = NULL;
#endif
the_object->name.name_u32 = 0;
46e40: 42aa 000c clrl %a2@(12)
}
46e44: 246e fffc moveal %fp@(-4),%a2
46e48: 4e5e unlk %fp <== NOT EXECUTED
00047238 <_Objects_Set_name>:
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
47238: 4280 clrl %d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
4723a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4723e: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
47242: 2a6e 0008 moveal %fp@(8),%a5 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
47246: 302d 0034 movew %a5@(52),%d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
4724a: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4724e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
47250: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
47254: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47256: 4eb9 0004 e520 jsr 4e520 <strnlen> <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
4725c: 508f addql #8,%sp <== NOT EXECUTED
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4725e: 2640 moveal %d0,%a3 <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
47260: 4a2d 0032 tstb %a5@(50) <== NOT EXECUTED
47264: 6744 beqs 472aa <_Objects_Set_name+0x72> <== NOT EXECUTED
char *d;
d = _Workspace_Allocate( length + 1 );
47266: 486b 0001 pea %a3@(1) <== NOT EXECUTED
4726a: 4eb9 0004 8bdc jsr 48bdc <_Workspace_Allocate> <== NOT EXECUTED
if ( !d )
47270: 588f addql #4,%sp <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string ) {
char *d;
d = _Workspace_Allocate( length + 1 );
47272: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if ( !d )
47274: 4a80 tstl %d0 <== NOT EXECUTED
47276: 6700 0082 beqw 472fa <_Objects_Set_name+0xc2> <== NOT EXECUTED
return false;
if ( the_object->name.name_p ) {
4727a: 202c 000c movel %a4@(12),%d0 <== NOT EXECUTED
4727e: 670e beqs 4728e <_Objects_Set_name+0x56> <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
47280: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47282: 4eb9 0004 8bf8 jsr 48bf8 <_Workspace_Free> <== NOT EXECUTED
the_object->name.name_p = NULL;
47288: 588f addql #4,%sp <== NOT EXECUTED
4728a: 42ac 000c clrl %a4@(12) <== NOT EXECUTED
}
strncpy( d, name, length );
4728e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47290: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47292: 2f0d movel %a5,%sp@- <== NOT EXECUTED
47294: 4eb9 0004 e49c jsr 4e49c <strncpy> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
4729a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
_Workspace_Free( (void *)the_object->name.name_p );
the_object->name.name_p = NULL;
}
strncpy( d, name, length );
d[length] = '\0';
4729e: 4200 clrb %d0 <== NOT EXECUTED
472a0: 1b80 b800 moveb %d0,%a5@(00000000,%a3:l) <== NOT EXECUTED
the_object->name.name_p = d;
472a4: 294d 000c movel %a5,%a4@(12) <== NOT EXECUTED
472a8: 604c bras 472f6 <_Objects_Set_name+0xbe> <== NOT EXECUTED
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
472aa: 7418 moveq #24,%d2 <== NOT EXECUTED
472ac: 1212 moveb %a2@,%d1 <== NOT EXECUTED
472ae: 7020 moveq #32,%d0 <== NOT EXECUTED
472b0: 4840 swap %d0 <== NOT EXECUTED
472b2: 49c1 extbl %d1 <== NOT EXECUTED
472b4: e5a9 lsll %d2,%d1 <== NOT EXECUTED
472b6: 143c 0001 moveb #1,%d2 <== NOT EXECUTED
472ba: b48b cmpl %a3,%d2 <== NOT EXECUTED
472bc: 640a bccs 472c8 <_Objects_Set_name+0x90> <== NOT EXECUTED
472be: 102a 0001 moveb %a2@(1),%d0 <== NOT EXECUTED
472c2: 49c0 extbl %d0 <== NOT EXECUTED
472c4: 4840 swap %d0 <== NOT EXECUTED
472c6: 4240 clrw %d0 <== NOT EXECUTED
472c8: 7402 moveq #2,%d2 <== NOT EXECUTED
472ca: 8280 orl %d0,%d1 <== NOT EXECUTED
472cc: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED
472d2: b48b cmpl %a3,%d2 <== NOT EXECUTED
472d4: 6408 bccs 472de <_Objects_Set_name+0xa6> <== NOT EXECUTED
472d6: 102a 0002 moveb %a2@(2),%d0 <== NOT EXECUTED
472da: 49c0 extbl %d0 <== NOT EXECUTED
472dc: e188 lsll #8,%d0 <== NOT EXECUTED
472de: 8081 orl %d1,%d0 <== NOT EXECUTED
472e0: 7203 moveq #3,%d1 <== NOT EXECUTED
472e2: b28b cmpl %a3,%d1 <== NOT EXECUTED
472e4: 6408 bccs 472ee <_Objects_Set_name+0xb6> <== NOT EXECUTED
472e6: 142a 0003 moveb %a2@(3),%d2 <== NOT EXECUTED
472ea: 49c2 extbl %d2 <== NOT EXECUTED
472ec: 6002 bras 472f0 <_Objects_Set_name+0xb8> <== NOT EXECUTED
472ee: 7420 moveq #32,%d2 <== NOT EXECUTED
472f0: 8082 orl %d2,%d0 <== NOT EXECUTED
472f2: 2940 000c movel %d0,%a4@(12) <== NOT EXECUTED
((3 < length) ? s[ 3 ] : ' ')
);
}
return true;
472f6: 7001 moveq #1,%d0 <== NOT EXECUTED
472f8: 6002 bras 472fc <_Objects_Set_name+0xc4> <== NOT EXECUTED
if ( information->is_string ) {
char *d;
d = _Workspace_Allocate( length + 1 );
if ( !d )
return false;
472fa: 4200 clrb %d0 <== NOT EXECUTED
);
}
return true;
}
472fc: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
47302: 4e5e unlk %fp <== NOT EXECUTED
...
00046ec0 <_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) /
46ec0: 4280 clrl %d0 <== NOT EXECUTED
*/
void _Objects_Shrink_information(
Objects_Information *information
)
{
46ec2: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
46ec6: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
46eca: 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 );
46ece: 4283 clrl %d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
46ed0: 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 );
46ed2: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
46ed6: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
46eda: 382a 0012 movew %a2@(18),%d4 <== NOT EXECUTED
46ede: 9083 subl %d3,%d0 <== NOT EXECUTED
46ee0: 4c44 0000 remul %d4,%d0,%d0 <== NOT EXECUTED
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
46ee4: 4281 clrl %d1 <== NOT EXECUTED
46ee6: 6072 bras 46f5a <_Objects_Shrink_information+0x9a><== NOT EXECUTED
46ee8: 2401 movel %d1,%d2 <== NOT EXECUTED
46eea: e58a lsll #2,%d2 <== NOT EXECUTED
if ( information->inactive_per_block[ block ] ==
46eec: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
46ef0: b8b0 2800 cmpl %a0@(00000000,%d2:l),%d4 <== NOT EXECUTED
46ef4: 6660 bnes 46f56 <_Objects_Shrink_information+0x96><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
46ef6: 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 );
46efa: 47f9 0004 5fec lea 45fec <_Chain_Extract>,%a3 <== NOT EXECUTED
46f00: 6002 bras 46f04 <_Objects_Shrink_information+0x44><== 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;
46f02: 2044 moveal %d4,%a0 <== 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 );
46f04: 4280 clrl %d0 <== NOT EXECUTED
46f06: 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;
46f0a: 2810 movel %a0@,%d4 <== NOT EXECUTED
if ((index >= index_base) &&
46f0c: b680 cmpl %d0,%d3 <== NOT EXECUTED
46f0e: 6212 bhis 46f22 <_Objects_Shrink_information+0x62><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
46f10: 4281 clrl %d1 <== NOT EXECUTED
46f12: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
46f16: 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) &&
46f18: b280 cmpl %d0,%d1 <== NOT EXECUTED
46f1a: 6306 blss 46f22 <_Objects_Shrink_information+0x62><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
46f1c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
46f1e: 4e93 jsr %a3@ <== NOT EXECUTED
46f20: 588f addql #4,%sp <== NOT EXECUTED
}
}
while ( the_object );
46f22: 4a84 tstl %d4 <== NOT EXECUTED
46f24: 66dc bnes 46f02 <_Objects_Shrink_information+0x42><== NOT EXECUTED
/*
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
46f26: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
46f2a: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED
46f2e: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
information->object_blocks[ block ] = NULL;
46f34: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
46f38: 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;
46f3a: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
46f3e: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
46f42: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED
46f46: 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;
46f4a: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive -= information->allocation_size;
46f4e: 9081 subl %d1,%d0 <== NOT EXECUTED
46f50: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED
return;
46f54: 6008 bras 46f5e <_Objects_Shrink_information+0x9e><== NOT EXECUTED
}
index_base += information->allocation_size;
46f56: d684 addl %d4,%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++ ) {
46f58: 5281 addql #1,%d1 <== NOT EXECUTED
46f5a: b081 cmpl %d1,%d0 <== NOT EXECUTED
46f5c: 628a bhis 46ee8 <_Objects_Shrink_information+0x28><== NOT EXECUTED
return;
}
index_base += information->allocation_size;
}
}
46f5e: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46f64: 4e5e unlk %fp <== NOT EXECUTED
0004744c <_POSIX_Absolute_timeout_to_ticks>:
*/
POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks(
const struct timespec *abstime,
Watchdog_Interval *ticks_out
)
{
4744c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
47450: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
47454: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
47458: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
/*
* Make sure there is always a value returned.
*/
*ticks_out = 0;
4745c: 4292 clrl %a2@ <== NOT EXECUTED
/*
* Is the absolute time even valid?
*/
if ( !_Timespec_Is_valid(abstime) )
4745e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47460: 4eb9 0004 ae70 jsr 4ae70 <_Timespec_Is_valid> <== NOT EXECUTED
47466: 588f addql #4,%sp <== NOT EXECUTED
47468: 4a00 tstb %d0 <== NOT EXECUTED
4746a: 674c beqs 474b8 <_POSIX_Absolute_timeout_to_ticks+0x6c><== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_INVALID;
/*
* Is the absolute time in the past?
*/
_TOD_Get( ¤t_time );
4746c: 240e movel %fp,%d2 <== NOT EXECUTED
4746e: 5182 subql #8,%d2 <== NOT EXECUTED
47470: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47472: 4eb9 0004 8fa0 jsr 48fa0 <_TOD_Get> <== NOT EXECUTED
if ( _Timespec_Less_than( abstime, ¤t_time ) )
47478: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4747a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4747c: 4eb9 0004 ae98 jsr 4ae98 <_Timespec_Less_than> <== NOT EXECUTED
47482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47486: 4a00 tstb %d0 <== NOT EXECUTED
47488: 6632 bnes 474bc <_POSIX_Absolute_timeout_to_ticks+0x70><== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;
/*
* How long until the requested absolute time?
*/
_Timespec_Subtract( ¤t_time, abstime, &difference );
4748a: 280e movel %fp,%d4 <== NOT EXECUTED
4748c: 0684 ffff fff0 addil #-16,%d4 <== NOT EXECUTED
47492: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47494: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47496: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47498: 4eb9 0004 aec8 jsr 4aec8 <_Timespec_Subtract> <== NOT EXECUTED
/*
* Internally the SuperCore uses ticks, so convert to them.
*/
*ticks_out = _Timespec_To_ticks( &difference );
4749e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
474a0: 4eb9 0004 af0c jsr 4af0c <_Timespec_To_ticks> <== NOT EXECUTED
/*
* If the difference was 0, then the future is now. It is so bright
* we better wear shades.
*/
if ( !*ticks_out )
474a6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return POSIX_ABSOLUTE_TIMEOUT_IS_NOW;
474aa: 7202 moveq #2,%d1 <== NOT EXECUTED
_Timespec_Subtract( ¤t_time, abstime, &difference );
/*
* Internally the SuperCore uses ticks, so convert to them.
*/
*ticks_out = _Timespec_To_ticks( &difference );
474ac: 2480 movel %d0,%a2@ <== NOT EXECUTED
/*
* If the difference was 0, then the future is now. It is so bright
* we better wear shades.
*/
if ( !*ticks_out )
return POSIX_ABSOLUTE_TIMEOUT_IS_NOW;
474ae: 56c0 sne %d0 <== NOT EXECUTED
474b0: 49c0 extbl %d0 <== NOT EXECUTED
474b2: 9280 subl %d0,%d1 <== NOT EXECUTED
474b4: 2001 movel %d1,%d0 <== NOT EXECUTED
474b6: 6006 bras 474be <_POSIX_Absolute_timeout_to_ticks+0x72><== NOT EXECUTED
/*
* Is the absolute time even valid?
*/
if ( !_Timespec_Is_valid(abstime) )
return POSIX_ABSOLUTE_TIMEOUT_INVALID;
474b8: 4280 clrl %d0 <== NOT EXECUTED
474ba: 6002 bras 474be <_POSIX_Absolute_timeout_to_ticks+0x72><== NOT EXECUTED
* Is the absolute time in the past?
*/
_TOD_Get( ¤t_time );
if ( _Timespec_Less_than( abstime, ¤t_time ) )
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST;
474bc: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* This is the case we were expecting and it took this long to
* get here.
*/
return POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE;
}
474be: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED
474c4: 4e5e unlk %fp <== NOT EXECUTED
0004afe0 <_POSIX_Barrier_Translate_core_barrier_return_code>:
#if defined(RTEMS_DEBUG)
if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Barrier_Return_codes[the_barrier_status];
}
4afe0: 41f9 0005 cc6e lea 5cc6e <_POSIX_Barrier_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Barrier_Translate_core_barrier_return_code(
CORE_barrier_Status the_barrier_status
)
{
4afe6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_barrier_status > CORE_BARRIER_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Barrier_Return_codes[the_barrier_status];
}
4afea: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4afee: 4e5e unlk %fp <== NOT EXECUTED
4aff0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
000460a0 <_POSIX_Condition_variables_Get>:
POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get (
pthread_cond_t *cond,
Objects_Locations *location
)
{
460a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
460a4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
460a6: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
460aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
460ac: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int status;
if ( !cond ) {
460b0: 4a8a tstl %a2 <== NOT EXECUTED
460b2: 6716 beqs 460ca <_POSIX_Condition_variables_Get+0x2a><== NOT EXECUTED
*location = OBJECTS_ERROR;
return (POSIX_Condition_variables_Control *) 0;
}
if ( *cond == PTHREAD_COND_INITIALIZER ) {
460b4: 70ff moveq #-1,%d0 <== NOT EXECUTED
460b6: b092 cmpl %a2@,%d0 <== NOT EXECUTED
460b8: 6618 bnes 460d2 <_POSIX_Condition_variables_Get+0x32><== NOT EXECUTED
/*
* Do an "auto-create" here.
*/
status = pthread_cond_init( cond, 0 );
460ba: 42a7 clrl %sp@- <== NOT EXECUTED
460bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
460be: 4eb9 0004 60f4 jsr 460f4 <pthread_cond_init> <== NOT EXECUTED
if ( status ) {
460c4: 508f addql #8,%sp <== NOT EXECUTED
460c6: 4a80 tstl %d0 <== NOT EXECUTED
460c8: 6708 beqs 460d2 <_POSIX_Condition_variables_Get+0x32><== NOT EXECUTED
*location = OBJECTS_ERROR;
460ca: 7001 moveq #1,%d0 <== NOT EXECUTED
460cc: 2680 movel %d0,%a3@ <== NOT EXECUTED
return (POSIX_Condition_variables_Control *) 0;
460ce: 4280 clrl %d0 <== NOT EXECUTED
460d0: 6014 bras 460e6 <_POSIX_Condition_variables_Get+0x46><== NOT EXECUTED
}
/*
* Now call Objects_Get()
*/
return (POSIX_Condition_variables_Control *)_Objects_Get(
460d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
460d4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
460d6: 4879 0006 03c2 pea 603c2 <_POSIX_Condition_variables_Information><== NOT EXECUTED
460dc: 4eb9 0004 8970 jsr 48970 <_Objects_Get> <== NOT EXECUTED
460e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
(Objects_Id) *cond,
location
);
}
460e6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
460ea: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
460ee: 4e5e unlk %fp <== NOT EXECUTED
...
000461ac <_POSIX_Condition_variables_Signal_support>:
int _POSIX_Condition_variables_Signal_support(
pthread_cond_t *cond,
bool is_broadcast
)
{
461ac: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
461b0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
Thread_Control *the_thread;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
461b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
461b8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int _POSIX_Condition_variables_Signal_support(
pthread_cond_t *cond,
bool is_broadcast
)
{
461bc: 162e 000f moveb %fp@(15),%d3 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
Thread_Control *the_thread;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
461c0: 4eb9 0004 60a0 jsr 460a0 <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
461c6: 508f addql #8,%sp <== NOT EXECUTED
{
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
Thread_Control *the_thread;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
461c8: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
461ca: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
461ce: 662e bnes 461fe <_POSIX_Condition_variables_Signal_support+0x52><== NOT EXECUTED
case OBJECTS_LOCAL:
do {
the_thread = _Thread_queue_Dequeue( &the_cond->Wait_queue );
461d0: 2400 movel %d0,%d2 <== NOT EXECUTED
461d2: 0682 0000 0018 addil #24,%d2 <== NOT EXECUTED
461d8: 47f9 0004 96f8 lea 496f8 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
461de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
461e0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( !the_thread )
461e2: 588f addql #4,%sp <== NOT EXECUTED
461e4: 4a80 tstl %d0 <== NOT EXECUTED
461e6: 6604 bnes 461ec <_POSIX_Condition_variables_Signal_support+0x40><== NOT EXECUTED
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
461e8: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
} while ( is_broadcast && the_thread );
461ec: 4a03 tstb %d3 <== NOT EXECUTED
461ee: 6704 beqs 461f4 <_POSIX_Condition_variables_Signal_support+0x48><== NOT EXECUTED
461f0: 4a80 tstl %d0 <== NOT EXECUTED
461f2: 66ea bnes 461de <_POSIX_Condition_variables_Signal_support+0x32><== NOT EXECUTED
_Thread_Enable_dispatch();
461f4: 4eb9 0004 93d6 jsr 493d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
461fa: 4280 clrl %d0 <== NOT EXECUTED
461fc: 6002 bras 46200 <_POSIX_Condition_variables_Signal_support+0x54><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
461fe: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46200: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
46206: 4e5e unlk %fp <== NOT EXECUTED
...
0004626c <_POSIX_Condition_variables_Wait_support>:
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
4626c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
46270: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
46274: 240e movel %fp,%d2 <== NOT EXECUTED
46276: 5982 subql #4,%d2 <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
46278: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
4627c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
4627e: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
46282: 2f0a movel %a2,%sp@- <== NOT EXECUTED
pthread_cond_t *cond,
pthread_mutex_t *mutex,
Watchdog_Interval timeout,
bool already_timedout
)
{
46284: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED
register POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
int status;
int mutex_status;
if ( !_POSIX_Mutex_Get( mutex, &location ) ) {
46288: 4eb9 0004 63c8 jsr 463c8 <_POSIX_Mutex_Get> <== NOT EXECUTED
4628e: 508f addql #8,%sp <== NOT EXECUTED
46290: 4a80 tstl %d0 <== NOT EXECUTED
46292: 6700 00ac beqw 46340 <_POSIX_Condition_variables_Wait_support+0xd4><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
46296: 2039 0006 0018 movel 60018 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4629c: 5380 subql #1,%d0 <== NOT EXECUTED
return EINVAL;
}
_Thread_Unnest_dispatch();
the_cond = _POSIX_Condition_variables_Get( cond, &location );
4629e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
462a0: 23c0 0006 0018 movel %d0,60018 <_Thread_Dispatch_disable_level><== NOT EXECUTED
462a6: 2f0c movel %a4,%sp@- <== NOT EXECUTED
462a8: 4eb9 0004 60a0 jsr 460a0 <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
462ae: 508f addql #8,%sp <== NOT EXECUTED
return EINVAL;
}
_Thread_Unnest_dispatch();
the_cond = _POSIX_Condition_variables_Get( cond, &location );
462b0: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch ( location ) {
462b2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
462b6: 6600 0088 bnew 46340 <_POSIX_Condition_variables_Wait_support+0xd4><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) {
462ba: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
462be: 670c beqs 462cc <_POSIX_Condition_variables_Wait_support+0x60><== NOT EXECUTED
462c0: b092 cmpl %a2@,%d0 <== NOT EXECUTED
462c2: 6708 beqs 462cc <_POSIX_Condition_variables_Wait_support+0x60><== NOT EXECUTED
_Thread_Enable_dispatch();
462c4: 4eb9 0004 93d6 jsr 493d6 <_Thread_Enable_dispatch> <== NOT EXECUTED
462ca: 6074 bras 46340 <_POSIX_Condition_variables_Wait_support+0xd4><== NOT EXECUTED
return EINVAL;
}
(void) pthread_mutex_unlock( mutex );
462cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
462ce: 4bf9 0004 93d6 lea 493d6 <_Thread_Enable_dispatch>,%a5 <== NOT EXECUTED
462d4: 4eb9 0004 6620 jsr 46620 <pthread_mutex_unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
return EINVAL;
}
*/
if ( !already_timedout ) {
462da: 588f addql #4,%sp <== NOT EXECUTED
462dc: 4a03 tstb %d3 <== NOT EXECUTED
462de: 664e bnes 4632e <_POSIX_Condition_variables_Wait_support+0xc2><== NOT EXECUTED
the_cond->Mutex = *mutex;
462e0: 2752 0014 movel %a2@,%a3@(20) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
462e4: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
_Thread_Executing->Wait.return_code = 0;
462e6: 2079 0006 04a2 moveal 604a2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
462ec: 2740 0048 movel %d0,%a3@(72) <== NOT EXECUTED
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
462f0: 47eb 0018 lea %a3@(24),%a3 <== NOT EXECUTED
if ( !already_timedout ) {
the_cond->Mutex = *mutex;
_Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
_Thread_Executing->Wait.return_code = 0;
462f4: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
_Thread_Executing->Wait.id = *cond;
462f8: 2154 0020 movel %a4@,%a0@(32) <== NOT EXECUTED
if ( !already_timedout ) {
the_cond->Mutex = *mutex;
_Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
_Thread_Executing->Wait.return_code = 0;
_Thread_Executing->Wait.queue = &the_cond->Wait_queue;
462fc: 214b 0044 movel %a3,%a0@(68) <== NOT EXECUTED
_Thread_Executing->Wait.id = *cond;
_Thread_queue_Enqueue( &the_cond->Wait_queue, timeout );
46300: 4879 0004 9bac pea 49bac <_Thread_queue_Timeout> <== NOT EXECUTED
46306: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4630a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4630c: 4eb9 0004 9838 jsr 49838 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
46312: 4e95 jsr %a5@ <== NOT EXECUTED
* a POSIX signal, then pthread_cond_wait returns spuriously,
* according to the POSIX standard. It means that pthread_cond_wait
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
46314: 2079 0006 04a2 moveal 604a2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
if ( status == EINTR )
status = 0;
4631a: 7004 moveq #4,%d0 <== NOT EXECUTED
* according to the POSIX standard. It means that pthread_cond_wait
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
if ( status == EINTR )
4631c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* a POSIX signal, then pthread_cond_wait returns spuriously,
* according to the POSIX standard. It means that pthread_cond_wait
* returns a success status, except for the fact that it was not
* woken up a pthread_cond_signal or a pthread_cond_broadcast.
*/
status = _Thread_Executing->Wait.return_code;
46320: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED
if ( status == EINTR )
status = 0;
46324: b082 cmpl %d2,%d0 <== NOT EXECUTED
46326: 56c0 sne %d0 <== NOT EXECUTED
46328: 49c0 extbl %d0 <== NOT EXECUTED
4632a: c480 andl %d0,%d2 <== NOT EXECUTED
4632c: 6004 bras 46332 <_POSIX_Condition_variables_Wait_support+0xc6><== NOT EXECUTED
} else {
_Thread_Enable_dispatch();
4632e: 4e95 jsr %a5@ <== NOT EXECUTED
status = ETIMEDOUT;
46330: 7474 moveq #116,%d2 <== NOT EXECUTED
/*
* When we get here the dispatch disable level is 0.
*/
mutex_status = pthread_mutex_lock( mutex );
46332: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46334: 4eb9 0004 6588 jsr 46588 <pthread_mutex_lock> <== NOT EXECUTED
if ( mutex_status )
4633a: 588f addql #4,%sp <== NOT EXECUTED
4633c: 4a80 tstl %d0 <== NOT EXECUTED
4633e: 6702 beqs 46342 <_POSIX_Condition_variables_Wait_support+0xd6><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46340: 7416 moveq #22,%d2 <== NOT EXECUTED
}
46342: 2002 movel %d2,%d0 <== NOT EXECUTED
46344: 4cee 3c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4634a: 4e5e unlk %fp <== NOT EXECUTED
...
000456c4 <_POSIX_Keys_Free_memory>:
#include <rtems/posix/key.h>
void _POSIX_Keys_Free_memory(
POSIX_Keys_Control *the_key
)
{
456c4: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
456c8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/thread.h>
#include <rtems/score/wkspace.h>
#include <rtems/posix/key.h>
void _POSIX_Keys_Free_memory(
456cc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
456d0: 7403 moveq #3,%d2 <== NOT EXECUTED
456d2: 45ea 0018 lea %a2@(24),%a2 <== NOT EXECUTED
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
if ( the_key->Values[ the_api ] )
_Workspace_Free( the_key->Values[ the_api ] );
456d6: 47f9 0004 95f0 lea 495f0 <_Workspace_Free>,%a3 <== NOT EXECUTED
)
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
if ( the_key->Values[ the_api ] )
456dc: 201a movel %a2@+,%d0 <== NOT EXECUTED
456de: 6706 beqs 456e6 <_POSIX_Keys_Free_memory+0x22> <== NOT EXECUTED
_Workspace_Free( the_key->Values[ the_api ] );
456e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
456e2: 4e93 jsr %a3@ <== NOT EXECUTED
456e4: 588f addql #4,%sp <== NOT EXECUTED
456e6: 5382 subql #1,%d2 <== NOT EXECUTED
POSIX_Keys_Control *the_key
)
{
uint32_t the_api;
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ )
456e8: 66f2 bnes 456dc <_POSIX_Keys_Free_memory+0x18> <== NOT EXECUTED
if ( the_key->Values[ the_api ] )
_Workspace_Free( the_key->Values[ the_api ] );
}
456ea: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
456f0: 4e5e unlk %fp <== NOT EXECUTED
0004c1f4 <_POSIX_Keys_Run_destructors>:
4c1f4: 7218 moveq #24,%d1
*/
void _POSIX_Keys_Run_destructors(
Thread_Control *thread
)
{
4c1f6: 4e56 ffe8 linkw %fp,#-24
Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
4c1fa: 206e 0008 moveal %fp@(8),%a0
*/
void _POSIX_Keys_Run_destructors(
Thread_Control *thread
)
{
4c1fe: 48d7 047c moveml %d2-%d6/%a2,%sp@
Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
4c202: 2428 0008 movel %a0@(8),%d2
4c206: 2002 movel %d2,%d0
4c208: e2a8 lsrl %d1,%d0
4c20a: 123c 0007 moveb #7,%d1
for ( index = 1 ; index <= max ; ++index ) {
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
void *value = key->Values [ thread_api ][ thread_index ];
4c20e: 0282 0000 ffff andil #65535,%d2
4c214: c081 andl %d1,%d0
4c216: e58a lsll #2,%d2
4c218: 2a00 movel %d0,%d5
4c21a: 5a85 addql #5,%d5
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4c21c: 4286 clrl %d6
4c21e: 7601 moveq #1,%d3
*/
while ( !done ) {
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
4c220: 7201 moveq #1,%d1
for ( index = 1 ; index <= max ; ++index ) {
4c222: 3c39 0005 de86 movew 5de86 <_POSIX_Keys_Information+0xe>,%d6
4c228: 602e bras 4c258 <_POSIX_Keys_Run_destructors+0x64>
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
_POSIX_Keys_Information.local_table [ index ];
4c22a: 2079 0005 de90 moveal 5de90 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
POSIX_Keys_Control *key = (POSIX_Keys_Control *)
4c230: 2070 4c00 moveal %a0@(00000000,%d4:l:4),%a0 <== NOT EXECUTED
_POSIX_Keys_Information.local_table [ index ];
if ( key != NULL && key->destructor != NULL ) {
4c234: 4a88 tstl %a0 <== NOT EXECUTED
4c236: 671e beqs 4c256 <_POSIX_Keys_Run_destructors+0x62><== NOT EXECUTED
4c238: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
4c23c: 4a89 tstl %a1 <== NOT EXECUTED
4c23e: 6716 beqs 4c256 <_POSIX_Keys_Run_destructors+0x62><== NOT EXECUTED
void *value = key->Values [ thread_api ][ thread_index ];
4c240: 2470 5c00 moveal %a0@(00000000,%d5:l:4),%a2 <== NOT EXECUTED
4c244: d5c2 addal %d2,%a2 <== NOT EXECUTED
4c246: 2052 moveal %a2@,%a0 <== NOT EXECUTED
if ( value != NULL ) {
4c248: 4a88 tstl %a0 <== NOT EXECUTED
4c24a: 670a beqs 4c256 <_POSIX_Keys_Run_destructors+0x62><== NOT EXECUTED
key->Values [ thread_api ][ thread_index ] = NULL;
4c24c: 4292 clrl %a2@ <== NOT EXECUTED
(*key->destructor)( value );
4c24e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c250: 4e91 jsr %a1@ <== NOT EXECUTED
4c252: 588f addql #4,%sp <== NOT EXECUTED
done = false;
4c254: 4201 clrb %d1 <== NOT EXECUTED
Objects_Maximum index = 0;
Objects_Maximum max = _POSIX_Keys_Information.maximum;
done = true;
for ( index = 1 ; index <= max ; ++index ) {
4c256: 5283 addql #1,%d3 <== NOT EXECUTED
4c258: 4284 clrl %d4
4c25a: 3803 movew %d3,%d4
4c25c: bc84 cmpl %d4,%d6
4c25e: 64ca bccs 4c22a <_POSIX_Keys_Run_destructors+0x36><== NEVER TAKEN
* number of iterations. An infinite loop may happen if destructors set
* thread specific data. This can be considered dubious.
*
* Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.
*/
while ( !done ) {
4c260: 4a01 tstb %d1
4c262: 67b8 beqs 4c21c <_POSIX_Keys_Run_destructors+0x28><== NEVER TAKEN
done = false;
}
}
}
}
}
4c264: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
4c26a: 4e5e unlk %fp
...
0004fcf0 <_POSIX_Message_queue_Create_support>:
const char *name_arg,
int pshared,
struct mq_attr *attr_ptr,
POSIX_Message_queue_Control **message_queue
)
{
4fcf0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4fcf4: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
CORE_message_queue_Attributes *the_mq_attr;
struct mq_attr attr;
char *name;
size_t n;
n = strnlen( name_arg, NAME_MAX );
4fcf8: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
const char *name_arg,
int pshared,
struct mq_attr *attr_ptr,
POSIX_Message_queue_Control **message_queue
)
{
4fcfc: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
4fd00: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
CORE_message_queue_Attributes *the_mq_attr;
struct mq_attr attr;
char *name;
size_t n;
n = strnlen( name_arg, NAME_MAX );
4fd04: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4fd06: 4eb9 0005 4a80 jsr 54a80 <strnlen> <== NOT EXECUTED
4fd0c: 2a00 movel %d0,%d5 <== NOT EXECUTED
4fd0e: 2039 0006 5d44 movel 65d44 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4fd14: 5280 addql #1,%d0 <== NOT EXECUTED
4fd16: 23c0 0006 5d44 movel %d0,65d44 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* There is no real basis for the default values. They will work
* but were not compared against any existing implementation for
* compatibility. See README.mqueue for an example program we
* think will print out the defaults. Report anything you find with it.
*/
if ( attr_ptr == NULL ) {
4fd1c: 508f addql #8,%sp <== NOT EXECUTED
4fd1e: 4a8a tstl %a2 <== NOT EXECUTED
4fd20: 6722 beqs 4fd44 <_POSIX_Message_queue_Create_support+0x54><== NOT EXECUTED
attr.mq_maxmsg = 10;
attr.mq_msgsize = 16;
} else {
if ( attr_ptr->mq_maxmsg <= 0 ){
4fd22: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
4fd26: 6f06 bles 4fd2e <_POSIX_Message_queue_Create_support+0x3e><== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( attr_ptr->mq_msgsize <= 0 ){
4fd28: 282a 0008 movel %a2@(8),%d4 <== NOT EXECUTED
4fd2c: 6e1a bgts 4fd48 <_POSIX_Message_queue_Create_support+0x58><== NOT EXECUTED
_Thread_Enable_dispatch();
4fd2e: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4fd34: 7616 moveq #22,%d3 <== NOT EXECUTED
4fd36: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
4fd3c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fd3e: 2083 movel %d3,%a0@ <== NOT EXECUTED
4fd40: 6000 00d2 braw 4fe14 <_POSIX_Message_queue_Create_support+0x124><== NOT EXECUTED
* compatibility. See README.mqueue for an example program we
* think will print out the defaults. Report anything you find with it.
*/
if ( attr_ptr == NULL ) {
attr.mq_maxmsg = 10;
attr.mq_msgsize = 16;
4fd44: 7810 moveq #16,%d4 <== NOT EXECUTED
* but were not compared against any existing implementation for
* compatibility. See README.mqueue for an example program we
* think will print out the defaults. Report anything you find with it.
*/
if ( attr_ptr == NULL ) {
attr.mq_maxmsg = 10;
4fd46: 760a moveq #10,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE
POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void )
{
return (POSIX_Message_queue_Control *)
_Objects_Allocate( &_POSIX_Message_queue_Information );
4fd48: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
4fd4e: 4eb9 0004 c5cc jsr 4c5cc <_Objects_Allocate> <== NOT EXECUTED
attr = *attr_ptr;
}
the_mq = _POSIX_Message_queue_Allocate();
if ( !the_mq ) {
4fd54: 588f addql #4,%sp <== NOT EXECUTED
4fd56: 2440 moveal %d0,%a2 <== NOT EXECUTED
4fd58: 4a80 tstl %d0 <== NOT EXECUTED
4fd5a: 6616 bnes 4fd72 <_POSIX_Message_queue_Create_support+0x82><== NOT EXECUTED
_Thread_Enable_dispatch();
4fd5c: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
4fd62: 7417 moveq #23,%d2 <== NOT EXECUTED
4fd64: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
4fd6a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fd6c: 2082 movel %d2,%a0@ <== NOT EXECUTED
4fd6e: 6000 00a4 braw 4fe14 <_POSIX_Message_queue_Create_support+0x124><== NOT EXECUTED
/*
* Make a copy of the user's string for name just in case it was
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
4fd72: 5285 addql #1,%d5 <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq->process_shared = pshared;
the_mq->named = true;
4fd74: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( !the_mq ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq->process_shared = pshared;
4fd76: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED
the_mq->named = true;
4fd7c: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_mq->open_count = 1;
4fd80: 7001 moveq #1,%d0 <== NOT EXECUTED
4fd82: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
the_mq->linked = true;
4fd86: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
/*
* Make a copy of the user's string for name just in case it was
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
4fd8a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4fd8c: 4eb9 0004 e5f0 jsr 4e5f0 <_Workspace_Allocate> <== NOT EXECUTED
if (!name) {
4fd92: 588f addql #4,%sp <== NOT EXECUTED
/*
* Make a copy of the user's string for name just in case it was
* dynamically constructed.
*/
name = _Workspace_Allocate(n+1);
4fd94: 2400 movel %d0,%d2 <== NOT EXECUTED
if (!name) {
4fd96: 6624 bnes 4fdbc <_POSIX_Message_queue_Create_support+0xcc><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free (
POSIX_Message_queue_Control *the_mq
)
{
_Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object );
4fd98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fd9a: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
4fda0: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free( the_mq );
_Thread_Enable_dispatch();
4fda6: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
4fdac: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
4fdb2: 508f addql #8,%sp <== NOT EXECUTED
4fdb4: 720c moveq #12,%d1 <== NOT EXECUTED
4fdb6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fdb8: 2081 movel %d1,%a0@ <== NOT EXECUTED
4fdba: 6058 bras 4fe14 <_POSIX_Message_queue_Create_support+0x124><== NOT EXECUTED
}
strncpy( name, name_arg, n+1 );
4fdbc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4fdbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4fdc0: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
4fdc6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fdc8: 4eb9 0005 49fc jsr 549fc <strncpy> <== NOT EXECUTED
*
* Joel: Cite POSIX or OpenGroup on above statement so we can determine
* if it is a real requirement.
*/
the_mq_attr = &the_mq->Message_queue.Attributes;
the_mq_attr->discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
4fdce: 42aa 005a clrl %a2@(90) <== NOT EXECUTED
if ( !_CORE_message_queue_Initialize(
4fdd2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4fdd4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4fdd6: 486a 005a pea %a2@(90) <== NOT EXECUTED
4fdda: 486a 001a pea %a2@(26) <== NOT EXECUTED
4fdde: 4eb9 0005 0b88 jsr 50b88 <_CORE_message_queue_Initialize> <== NOT EXECUTED
4fde4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4fde8: 4a00 tstb %d0 <== NOT EXECUTED
4fdea: 662c bnes 4fe18 <_POSIX_Message_queue_Create_support+0x128><== NOT EXECUTED
4fdec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fdee: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
4fdf4: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
attr.mq_maxmsg,
attr.mq_msgsize
) ) {
_POSIX_Message_queue_Free( the_mq );
_Workspace_Free(name);
4fdfa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fdfc: 4eb9 0004 e60c jsr 4e60c <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
4fe02: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4fe04: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
4fe0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fe0e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fe10: 701c moveq #28,%d0 <== NOT EXECUTED
4fe12: 2080 movel %d0,%a0@ <== NOT EXECUTED
4fe14: 70ff moveq #-1,%d0 <== NOT EXECUTED
4fe16: 601e bras 4fe36 <_POSIX_Message_queue_Create_support+0x146><== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fe18: 4280 clrl %d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fe1a: 2079 0006 6006 moveal 66006 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4fe20: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fe24: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Message_queue_Information,
&the_mq->Object,
name
);
*message_queue = the_mq;
4fe28: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
4fe2c: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
4fe30: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fe32: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
4fe34: 4280 clrl %d0 <== NOT EXECUTED
}
4fe36: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4fe3c: 4e5e unlk %fp <== NOT EXECUTED
00049964 <_POSIX_Message_queue_Delete>:
*/
void _POSIX_Message_queue_Delete(
POSIX_Message_queue_Control *the_mq
)
{
49964: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49968: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4996a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_mq->linked && !the_mq->open_count ) {
4996e: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED
49972: 6636 bnes 499aa <_POSIX_Message_queue_Delete+0x46><== NOT EXECUTED
49974: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED
49978: 6630 bnes 499aa <_POSIX_Message_queue_Delete+0x46><== NOT EXECUTED
);
_Workspace_Free( (void *)the_object->name.name_p );
}
#endif
_Objects_Close( &_POSIX_Message_queue_Information, the_object );
4997a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4997c: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
49982: 4eb9 0004 c648 jsr 4c648 <_Objects_Close> <== NOT EXECUTED
_CORE_message_queue_Close(
49988: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4998c: 42a7 clrl %sp@- <== NOT EXECUTED
4998e: 486a 001a pea %a2@(26) <== NOT EXECUTED
49992: 4eb9 0004 baa8 jsr 4baa8 <_CORE_message_queue_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free (
POSIX_Message_queue_Control *the_mq
)
{
_Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object );
49998: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4999a: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
499a0: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
499a6: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
);
_POSIX_Message_queue_Free( the_mq );
}
}
499aa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
499ae: 4e5e unlk %fp <== NOT EXECUTED
...
0004fe40 <_POSIX_Message_queue_Name_to_id>:
*/
int _POSIX_Message_queue_Name_to_id(
const char *name,
Objects_Id *id
)
{
4fe40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fe44: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fe46: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
4fe4a: 4a8a tstl %a2 <== NOT EXECUTED
4fe4c: 673e beqs 4fe8c <_POSIX_Message_queue_Name_to_id+0x4c><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
4fe4e: 4a12 tstb %a2@ <== NOT EXECUTED
4fe50: 673a beqs 4fe8c <_POSIX_Message_queue_Name_to_id+0x4c><== NOT EXECUTED
return EINVAL;
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
4fe52: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
4fe56: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fe58: 4eb9 0005 4a80 jsr 54a80 <strnlen> <== NOT EXECUTED
4fe5e: 508f addql #8,%sp <== NOT EXECUTED
4fe60: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED
4fe66: 6228 bhis 4fe90 <_POSIX_Message_queue_Name_to_id+0x50><== NOT EXECUTED
return ENAMETOOLONG;
status = _Objects_Name_to_id_string(
4fe68: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fe6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fe6e: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
4fe74: 4eb9 0005 1174 jsr 51174 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
4fe7a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fe7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Message_queue_Information,
name,
&the_id
);
*id = the_id;
4fe82: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4fe86: 4a80 tstl %d0 <== NOT EXECUTED
4fe88: 660a bnes 4fe94 <_POSIX_Message_queue_Name_to_id+0x54><== NOT EXECUTED
4fe8a: 600a bras 4fe96 <_POSIX_Message_queue_Name_to_id+0x56><== NOT EXECUTED
if ( !name )
return EINVAL;
if ( !name[0] )
return EINVAL;
4fe8c: 7016 moveq #22,%d0 <== NOT EXECUTED
4fe8e: 6006 bras 4fe96 <_POSIX_Message_queue_Name_to_id+0x56><== NOT EXECUTED
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
return ENAMETOOLONG;
4fe90: 705b moveq #91,%d0 <== NOT EXECUTED
4fe92: 6002 bras 4fe96 <_POSIX_Message_queue_Name_to_id+0x56><== NOT EXECUTED
*id = the_id;
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
4fe94: 7002 moveq #2,%d0 <== NOT EXECUTED
}
4fe96: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4fe9a: 4e5e unlk %fp <== NOT EXECUTED
...
00049a2c <_POSIX_Message_queue_Notify_handler>:
*/
void _POSIX_Message_queue_Notify_handler(
void *user_data
)
{
49a2c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49a30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49a32: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
49a36: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
the_mq = user_data;
kill( getpid(), the_mq->notification.sigev_signo );
49a38: 242a 0092 movel %a2@(146),%d2 <== NOT EXECUTED
49a3c: 4eb9 0004 f6c8 jsr 4f6c8 <getpid> <== NOT EXECUTED
49a42: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49a44: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49a46: 4eb9 0004 fcd8 jsr 4fcd8 <kill> <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
49a4c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
the_message_queue->notify_argument = the_argument;
49a50: 508f addql #8,%sp <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
49a52: 42aa 007a clrl %a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
49a56: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
49a5a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49a5e: 4e5e unlk %fp <== NOT EXECUTED
00049ca0 <_POSIX_Message_queue_Receive_support>:
size_t msg_len,
unsigned int *msg_prio,
bool wait,
Watchdog_Interval timeout
)
{
49ca0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
49ca4: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
49ca8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49cac: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
49cb0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49cb2: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49cb8: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED
49cbc: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
Objects_Locations location;
size_t length_out;
bool do_wait;
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
49cc2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49cc6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49cca: 6600 00c0 bnew 49d8c <_POSIX_Message_queue_Receive_support+0xec><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {
49cce: 2040 moveal %d0,%a0 <== NOT EXECUTED
49cd0: 7803 moveq #3,%d4 <== NOT EXECUTED
49cd2: 7a01 moveq #1,%d5 <== NOT EXECUTED
49cd4: 2228 0014 movel %a0@(20),%d1 <== NOT EXECUTED
49cd8: c881 andl %d1,%d4 <== NOT EXECUTED
49cda: ba84 cmpl %d4,%d5 <== NOT EXECUTED
49cdc: 660a bnes 49ce8 <_POSIX_Message_queue_Receive_support+0x48><== NOT EXECUTED
_Thread_Enable_dispatch();
49cde: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
49ce4: 6000 00a6 braw 49d8c <_POSIX_Message_queue_Receive_support+0xec><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
}
the_mq = the_mq_fd->Queue;
49ce8: 2240 moveal %d0,%a1 <== NOT EXECUTED
49cea: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
if ( msg_len < the_mq->Message_queue.maximum_message_size ) {
49cee: 2028 0066 movel %a0@(102),%d0 <== NOT EXECUTED
49cf2: b0ae 0010 cmpl %fp@(16),%d0 <== NOT EXECUTED
49cf6: 6316 blss 49d0e <_POSIX_Message_queue_Receive_support+0x6e><== NOT EXECUTED
_Thread_Enable_dispatch();
49cf8: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EMSGSIZE );
49cfe: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49d04: 727a moveq #122,%d1 <== NOT EXECUTED
49d06: 2040 moveal %d0,%a0 <== NOT EXECUTED
49d08: 2081 movel %d1,%a0@ <== NOT EXECUTED
49d0a: 6000 008c braw 49d98 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED
/*
* Now if something goes wrong, we return a "length" of -1
* to indicate an error.
*/
length_out = -1;
49d0e: 70ff moveq #-1,%d0 <== NOT EXECUTED
49d10: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
49d14: 4a03 tstb %d3 <== NOT EXECUTED
49d16: 670a beqs 49d22 <_POSIX_Message_queue_Receive_support+0x82><== NOT EXECUTED
do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;
49d18: 0801 000e btst #14,%d1 <== NOT EXECUTED
49d1c: 57c0 seq %d0 <== NOT EXECUTED
49d1e: 4480 negl %d0 <== NOT EXECUTED
49d20: 6002 bras 49d24 <_POSIX_Message_queue_Receive_support+0x84><== NOT EXECUTED
length_out = -1;
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
49d22: 4200 clrb %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
_CORE_message_queue_Seize(
49d24: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
49d28: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
49d2e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49d30: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
49d34: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49d38: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49d3a: 4868 001a pea %a0@(26) <== NOT EXECUTED
49d3e: 4eb9 0004 bb44 jsr 4bb44 <_CORE_message_queue_Seize> <== NOT EXECUTED
&length_out,
do_wait,
timeout
);
_Thread_Enable_dispatch();
49d44: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
*msg_prio =
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
49d4a: 2079 0006 61ce moveal 661ce <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
CORE_message_queue_Submit_types priority
)
{
/* absolute value without a library dependency */
return ((priority >= 0) ? priority : -priority);
49d50: 2028 0024 movel %a0@(36),%d0 <== NOT EXECUTED
49d54: 6c02 bges 49d58 <_POSIX_Message_queue_Receive_support+0xb8><== NOT EXECUTED
49d56: 4480 negl %d0 <== NOT EXECUTED
do_wait,
timeout
);
_Thread_Enable_dispatch();
*msg_prio =
49d58: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
49d5c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
do_wait,
timeout
);
_Thread_Enable_dispatch();
*msg_prio =
49d60: 2280 movel %d0,%a1@ <== NOT EXECUTED
_POSIX_Message_queue_Priority_from_core(_Thread_Executing->Wait.count);
if ( !_Thread_Executing->Wait.return_code )
49d62: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED
49d66: 6606 bnes 49d6e <_POSIX_Message_queue_Receive_support+0xce><== NOT EXECUTED
return length_out;
49d68: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
49d6c: 602c bras 49d9a <_POSIX_Message_queue_Receive_support+0xfa><== NOT EXECUTED
rtems_set_errno_and_return_minus_one(
49d6e: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49d74: 2079 0006 61ce moveal 661ce <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
49d7a: 2440 moveal %d0,%a2 <== NOT EXECUTED
49d7c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
49d80: 4eb9 0004 9fb4 jsr 49fb4 <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
49d86: 588f addql #4,%sp <== NOT EXECUTED
49d88: 2480 movel %d0,%a2@ <== NOT EXECUTED
49d8a: 600c bras 49d98 <_POSIX_Message_queue_Receive_support+0xf8><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
49d8c: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49d92: 2040 moveal %d0,%a0 <== NOT EXECUTED
49d94: 7009 moveq #9,%d0 <== NOT EXECUTED
49d96: 2080 movel %d0,%a0@ <== NOT EXECUTED
49d98: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49d9a: 4cee 043c ffe4 moveml %fp@(-28),%d2-%d5/%a2 <== NOT EXECUTED
49da0: 4e5e unlk %fp <== NOT EXECUTED
00049dc8 <_POSIX_Message_queue_Send_support>:
/*
* Validate the priority.
* XXX - Do not validate msg_prio is not less than 0.
*/
if ( msg_prio > MQ_PRIO_MAX )
49dc8: 7020 moveq #32,%d0 <== NOT EXECUTED
size_t msg_len,
uint32_t msg_prio,
bool wait,
Watchdog_Interval timeout
)
{
49dca: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
49dce: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
49dd2: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
49dd6: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
49dda: 182e 001b moveb %fp@(27),%d4 <== NOT EXECUTED
/*
* Validate the priority.
* XXX - Do not validate msg_prio is not less than 0.
*/
if ( msg_prio > MQ_PRIO_MAX )
49dde: b083 cmpl %d3,%d0 <== NOT EXECUTED
49de0: 6410 bccs 49df2 <_POSIX_Message_queue_Send_support+0x2a><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49de2: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49de8: 7216 moveq #22,%d1 <== NOT EXECUTED
49dea: 2040 moveal %d0,%a0 <== NOT EXECUTED
49dec: 2081 movel %d1,%a0@ <== NOT EXECUTED
49dee: 6000 00b2 braw 49ea2 <_POSIX_Message_queue_Send_support+0xda><== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
49df2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49df6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49df8: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49dfe: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
49e04: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49e08: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49e0c: 6600 0088 bnew 49e96 <_POSIX_Message_queue_Send_support+0xce><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( (the_mq_fd->oflag & O_ACCMODE) == O_RDONLY ) {
49e10: 2240 moveal %d0,%a1 <== NOT EXECUTED
49e12: 7a03 moveq #3,%d5 <== NOT EXECUTED
49e14: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED
49e18: ca81 andl %d1,%d5 <== NOT EXECUTED
49e1a: 6608 bnes 49e24 <_POSIX_Message_queue_Send_support+0x5c><== NOT EXECUTED
_Thread_Enable_dispatch();
49e1c: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
49e22: 6072 bras 49e96 <_POSIX_Message_queue_Send_support+0xce><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBADF );
}
the_mq = the_mq_fd->Queue;
49e24: 2240 moveal %d0,%a1 <== NOT EXECUTED
49e26: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
49e2a: 4a04 tstb %d4 <== NOT EXECUTED
49e2c: 670a beqs 49e38 <_POSIX_Message_queue_Send_support+0x70><== NOT EXECUTED
do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;
49e2e: 0801 000e btst #14,%d1 <== NOT EXECUTED
49e32: 57c0 seq %d0 <== NOT EXECUTED
49e34: 4480 negl %d0 <== NOT EXECUTED
49e36: 6002 bras 49e3a <_POSIX_Message_queue_Send_support+0x72><== NOT EXECUTED
the_mq = the_mq_fd->Queue;
/*
* A timed receive with a bad time will do a poll regardless.
*/
if ( wait )
49e38: 4200 clrb %d0 <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
49e3a: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
49e3e: 4483 negl %d3 <== NOT EXECUTED
49e40: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
49e46: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49e48: 2f03 movel %d3,%sp@- <== NOT EXECUTED
49e4a: 42a7 clrl %sp@- <== NOT EXECUTED
49e4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49e4e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49e52: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49e56: 4868 001a pea %a0@(26) <== NOT EXECUTED
49e5a: 4eb9 0004 bc80 jsr 4bc80 <_CORE_message_queue_Submit> <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
49e60: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
do_wait = wait;
/*
* Now perform the actual message receive
*/
msg_status = _CORE_message_queue_Submit(
49e64: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_Message_queue_Priority_to_core( msg_prio ),
do_wait,
timeout /* no timeout */
);
_Thread_Enable_dispatch();
49e66: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
* after it wakes up. The returned status is correct for
* non-blocking operations but if we blocked, then we need
* to look at the status in our TCB.
*/
if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT )
49e6c: 7007 moveq #7,%d0 <== NOT EXECUTED
49e6e: b082 cmpl %d2,%d0 <== NOT EXECUTED
49e70: 660a bnes 49e7c <_POSIX_Message_queue_Send_support+0xb4><== NOT EXECUTED
msg_status = _Thread_Executing->Wait.return_code;
49e72: 2079 0006 61ce moveal 661ce <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
49e78: 2428 0034 movel %a0@(52),%d2 <== NOT EXECUTED
if ( !msg_status )
49e7c: 4a82 tstl %d2 <== NOT EXECUTED
49e7e: 6726 beqs 49ea6 <_POSIX_Message_queue_Send_support+0xde><== NOT EXECUTED
return msg_status;
rtems_set_errno_and_return_minus_one(
49e80: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49e86: 2440 moveal %d0,%a2 <== NOT EXECUTED
49e88: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49e8a: 4eb9 0004 9fb4 jsr 49fb4 <_POSIX_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
49e90: 588f addql #4,%sp <== NOT EXECUTED
49e92: 2480 movel %d0,%a2@ <== NOT EXECUTED
49e94: 600c bras 49ea2 <_POSIX_Message_queue_Send_support+0xda><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
49e96: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49e9c: 2040 moveal %d0,%a0 <== NOT EXECUTED
49e9e: 7009 moveq #9,%d0 <== NOT EXECUTED
49ea0: 2080 movel %d0,%a0@ <== NOT EXECUTED
49ea2: 70ff moveq #-1,%d0 <== NOT EXECUTED
49ea4: 6002 bras 49ea8 <_POSIX_Message_queue_Send_support+0xe0><== NOT EXECUTED
if ( msg_status == CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT )
msg_status = _Thread_Executing->Wait.return_code;
if ( !msg_status )
return msg_status;
49ea6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
}
49ea8: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
49eae: 4e5e unlk %fp <== NOT EXECUTED
...
00049fb4 <_POSIX_Message_queue_Translate_core_message_queue_return_code>:
#if defined(RTEMS_DEBUG)
if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Message_queue_Return_codes[the_message_queue_status];
}
49fb4: 41f9 0006 2ef2 lea 62ef2 <_POSIX_Message_queue_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Message_queue_Translate_core_message_queue_return_code(
uint32_t the_message_queue_status
)
{
49fba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_message_queue_status > CORE_MESSAGE_QUEUE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Message_queue_Return_codes[the_message_queue_status];
}
49fbe: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
49fc2: 4e5e unlk %fp <== NOT EXECUTED
49fc4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004704c <_POSIX_Mutex_Get>:
POSIX_Mutex_Control *_POSIX_Mutex_Get (
pthread_mutex_t *mutex,
Objects_Locations *location
)
{
4704c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47050: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47052: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
47056: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47058: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
___POSIX_Mutex_Get_support_error_check( mutex, location );
4705c: 4a8a tstl %a2 <== NOT EXECUTED
4705e: 6716 beqs 47076 <_POSIX_Mutex_Get+0x2a> <== NOT EXECUTED
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
47060: 70ff moveq #-1,%d0 <== NOT EXECUTED
47062: b092 cmpl %a2@,%d0 <== NOT EXECUTED
47064: 6618 bnes 4707e <_POSIX_Mutex_Get+0x32> <== NOT EXECUTED
47066: 42a7 clrl %sp@- <== NOT EXECUTED
47068: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4706a: 4eb9 0004 713c jsr 4713c <pthread_mutex_init> <== NOT EXECUTED
47070: 508f addql #8,%sp <== NOT EXECUTED
47072: 4a80 tstl %d0 <== NOT EXECUTED
47074: 6708 beqs 4707e <_POSIX_Mutex_Get+0x32> <== NOT EXECUTED
47076: 7001 moveq #1,%d0 <== NOT EXECUTED
47078: 2680 movel %d0,%a3@ <== NOT EXECUTED
4707a: 4280 clrl %d0 <== NOT EXECUTED
4707c: 6014 bras 47092 <_POSIX_Mutex_Get+0x46> <== NOT EXECUTED
return (POSIX_Mutex_Control *)
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
4707e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47080: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
47082: 4879 0006 295c pea 6295c <_POSIX_Mutex_Information> <== NOT EXECUTED
47088: 4eb9 0004 9944 jsr 49944 <_Objects_Get> <== NOT EXECUTED
{
___POSIX_Mutex_Get_support_error_check( mutex, location );
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
return (POSIX_Mutex_Control *)
4708e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
_Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location );
}
47092: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47096: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4709a: 4e5e unlk %fp <== NOT EXECUTED
0004709e <_POSIX_Mutex_Get_interrupt_disable>:
POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable (
pthread_mutex_t *mutex,
Objects_Locations *location,
ISR_Level *level
)
{
4709e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
470a2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
470a4: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
470a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470aa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
___POSIX_Mutex_Get_support_error_check( mutex, location );
470ae: 4a8a tstl %a2 <== NOT EXECUTED
470b0: 6716 beqs 470c8 <_POSIX_Mutex_Get_interrupt_disable+0x2a><== NOT EXECUTED
___POSIX_Mutex_Get_support_auto_initialization( mutex, location );
470b2: 70ff moveq #-1,%d0 <== NOT EXECUTED
470b4: b092 cmpl %a2@,%d0 <== NOT EXECUTED
470b6: 6618 bnes 470d0 <_POSIX_Mutex_Get_interrupt_disable+0x32><== NOT EXECUTED
470b8: 42a7 clrl %sp@- <== NOT EXECUTED
470ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470bc: 4eb9 0004 713c jsr 4713c <pthread_mutex_init> <== NOT EXECUTED
470c2: 508f addql #8,%sp <== NOT EXECUTED
470c4: 4a80 tstl %d0 <== NOT EXECUTED
470c6: 6708 beqs 470d0 <_POSIX_Mutex_Get_interrupt_disable+0x32><== NOT EXECUTED
470c8: 7201 moveq #1,%d1 <== NOT EXECUTED
470ca: 4280 clrl %d0 <== NOT EXECUTED
470cc: 2681 movel %d1,%a3@ <== NOT EXECUTED
470ce: 6018 bras 470e8 <_POSIX_Mutex_Get_interrupt_disable+0x4a><== NOT EXECUTED
return (POSIX_Mutex_Control *) _Objects_Get_isr_disable(
470d0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
470d4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
470d6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
470d8: 4879 0006 295c pea 6295c <_POSIX_Mutex_Information> <== NOT EXECUTED
470de: 4eb9 0004 98ec jsr 498ec <_Objects_Get_isr_disable> <== NOT EXECUTED
470e4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
&_POSIX_Mutex_Information,
(Objects_Id) *mutex,
location,
level
);
}
470e8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
470ec: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
470f0: 4e5e unlk %fp <== NOT EXECUTED
0004726c <_POSIX_Mutex_Lock_support>:
int _POSIX_Mutex_Lock_support(
pthread_mutex_t *mutex,
bool blocking,
Watchdog_Interval timeout
)
{
4726c: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
47270: 2f02 movel %d2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
ISR_Level level;
the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level );
47272: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
47276: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4727a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int _POSIX_Mutex_Lock_support(
pthread_mutex_t *mutex,
bool blocking,
Watchdog_Interval timeout
)
{
4727e: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
ISR_Level level;
the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level );
47282: 4eb9 0004 709e jsr 4709e <_POSIX_Mutex_Get_interrupt_disable><== NOT EXECUTED
switch ( location ) {
47288: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4728c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47290: 6636 bnes 472c8 <_POSIX_Mutex_Lock_support+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_mutex_Seize(
47292: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
47296: 2040 moveal %d0,%a0 <== NOT EXECUTED
47298: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4729c: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
472a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
472a4: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
472a8: 4868 0014 pea %a0@(20) <== NOT EXECUTED
472ac: 4eb9 0004 8d7c jsr 48d7c <_CORE_mutex_Seize> <== NOT EXECUTED
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
(CORE_mutex_Status) _Thread_Executing->Wait.return_code
472b2: 2079 0006 2b02 moveal 62b02 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
the_mutex->Object.id,
blocking,
timeout,
level
);
return _POSIX_Mutex_Translate_core_mutex_return_code(
472b8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
472bc: 4eb9 0004 73cc jsr 473cc <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED
472c2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
472c6: 6002 bras 472ca <_POSIX_Mutex_Lock_support+0x5e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
472c8: 7016 moveq #22,%d0 <== NOT EXECUTED
}
472ca: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
472ce: 4e5e unlk %fp <== NOT EXECUTED
...
000473cc <_POSIX_Mutex_Translate_core_mutex_return_code>:
#if defined(RTEMS_DEBUG)
if ( the_mutex_status > CORE_MUTEX_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Mutex_Return_codes[the_mutex_status];
}
473cc: 41f9 0005 fd18 lea 5fd18 <_POSIX_Mutex_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_Mutex_Translate_core_mutex_return_code(
CORE_mutex_Status the_mutex_status
)
{
473d2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_mutex_status > CORE_MUTEX_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Mutex_Return_codes[the_mutex_status];
}
473d6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
473da: 4e5e unlk %fp <== NOT EXECUTED
473dc: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004b26c <_POSIX_Priority_Is_valid>:
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
int priority
)
{
4b26c: 4e56 0000 linkw %fp,#0
4b270: 202e 0008 movel %fp@(8),%d0
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4b274: 6f12 bles 4b288 <_POSIX_Priority_Is_valid+0x1c> <== NEVER TAKEN
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
4b276: 4281 clrl %d1
4b278: 1239 0005 d2a6 moveb 5d2a6 <rtems_maximum_priority>,%d1
#endif
#include <rtems/system.h>
#include <rtems/posix/priority.h>
bool _POSIX_Priority_Is_valid(
4b27e: b081 cmpl %d1,%d0
4b280: 5dc0 slt %d0
4b282: 49c0 extbl %d0
4b284: 4480 negl %d0
4b286: 6002 bras 4b28a <_POSIX_Priority_Is_valid+0x1e>
int priority
)
{
return ((priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY) &&
4b288: 4280 clrl %d0
(priority <= POSIX_SCHEDULER_MAXIMUM_PRIORITY));
}
4b28a: 4e5e unlk %fp
...
0004674c <_POSIX_RWLock_Translate_core_RWLock_return_code>:
#if defined(RTEMS_DEBUG)
if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_RWLock_Return_codes[the_rwlock_status];
}
4674c: 41f9 0005 df28 lea 5df28 <_POSIX_RWLock_Return_codes>,%a0 <== NOT EXECUTED
int _POSIX_RWLock_Translate_core_RWLock_return_code(
CORE_RWLock_Status the_rwlock_status
)
{
46752: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_rwlock_status > CORE_RWLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_RWLock_Return_codes[the_rwlock_status];
}
46756: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4675a: 4e5e unlk %fp <== NOT EXECUTED
4675c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004de78 <_POSIX_Semaphore_Create_support>:
const char *name,
int pshared,
unsigned int value,
POSIX_Semaphore_Control **the_sem
)
{
4de78: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4de7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4de7e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4de80: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
CORE_semaphore_Attributes *the_sem_attr;
char *name_p = (char *)name;
/* Sharing semaphores among processes is not currently supported */
if (pshared != 0)
4de84: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
4de88: 670e beqs 4de98 <_POSIX_Semaphore_Create_support+0x20><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4de8a: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4de90: 7458 moveq #88,%d2 <== NOT EXECUTED
4de92: 2040 moveal %d0,%a0 <== NOT EXECUTED
4de94: 2082 movel %d2,%a0@ <== NOT EXECUTED
4de96: 6026 bras 4debe <_POSIX_Semaphore_Create_support+0x46><== NOT EXECUTED
if ( name ) {
4de98: 4a82 tstl %d2 <== NOT EXECUTED
4de9a: 6728 beqs 4dec4 <_POSIX_Semaphore_Create_support+0x4c><== NOT EXECUTED
if ( strnlen( name, NAME_MAX ) >= NAME_MAX )
4de9c: 4878 00ff pea ff <DBL_MANT_DIG+0xca> <== NOT EXECUTED
4dea0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4dea2: 4eb9 0005 1e10 jsr 51e10 <strnlen> <== NOT EXECUTED
4dea8: 508f addql #8,%sp <== NOT EXECUTED
4deaa: 0c80 0000 00fe cmpil #254,%d0 <== NOT EXECUTED
4deb0: 6312 blss 4dec4 <_POSIX_Semaphore_Create_support+0x4c><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
4deb2: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4deb8: 725b moveq #91,%d1 <== NOT EXECUTED
4deba: 2040 moveal %d0,%a0 <== NOT EXECUTED
4debc: 2081 movel %d1,%a0@ <== NOT EXECUTED
4debe: 70ff moveq #-1,%d0 <== NOT EXECUTED
4dec0: 6000 009e braw 4df60 <_POSIX_Semaphore_Create_support+0xe8><== NOT EXECUTED
4dec4: 2039 0006 2a74 movel 62a74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4deca: 5280 addql #1,%d0 <== NOT EXECUTED
4decc: 23c0 0006 2a74 movel %d0,62a74 <_Thread_Dispatch_disable_level><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void )
{
return (POSIX_Semaphore_Control *)
_Objects_Allocate( &_POSIX_Semaphore_Information );
4ded2: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4ded8: 4eb9 0004 9ea4 jsr 49ea4 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_semaphore = _POSIX_Semaphore_Allocate();
if ( !the_semaphore ) {
4dede: 588f addql #4,%sp <== NOT EXECUTED
4dee0: 2440 moveal %d0,%a2 <== NOT EXECUTED
4dee2: 4a80 tstl %d0 <== NOT EXECUTED
4dee4: 6614 bnes 4defa <_POSIX_Semaphore_Create_support+0x82><== NOT EXECUTED
_Thread_Enable_dispatch();
4dee6: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4deec: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4def2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4def4: 701c moveq #28,%d0 <== NOT EXECUTED
4def6: 2080 movel %d0,%a0@ <== NOT EXECUTED
4def8: 60c4 bras 4debe <_POSIX_Semaphore_Create_support+0x46><== NOT EXECUTED
}
the_semaphore->process_shared = pshared;
4defa: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
if ( name ) {
4defe: 4a82 tstl %d2 <== NOT EXECUTED
4df00: 670e beqs 4df10 <_POSIX_Semaphore_Create_support+0x98><== NOT EXECUTED
the_semaphore->named = true;
4df02: 7001 moveq #1,%d0 <== NOT EXECUTED
4df04: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
the_semaphore->open_count = 1;
4df08: 7001 moveq #1,%d0 <== NOT EXECUTED
4df0a: 2540 0016 movel %d0,%a2@(22) <== NOT EXECUTED
4df0e: 600a bras 4df1a <_POSIX_Semaphore_Create_support+0xa2><== NOT EXECUTED
the_semaphore->linked = true;
} else {
the_semaphore->named = false;
the_semaphore->open_count = 0;
4df10: 42aa 0016 clrl %a2@(22) <== NOT EXECUTED
if ( name ) {
the_semaphore->named = true;
the_semaphore->open_count = 1;
the_semaphore->linked = true;
} else {
the_semaphore->named = false;
4df14: 4200 clrb %d0 <== NOT EXECUTED
4df16: 1540 0014 moveb %d0,%a2@(20) <== NOT EXECUTED
* blocking tasks on this semaphore should be. It could somehow
* be derived from the current scheduling policy. One
* thing is certain, no matter what we decide, it won't be
* the same as all other POSIX implementations. :)
*/
the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
4df1a: 42aa 005e clrl %a2@(94) <== NOT EXECUTED
the_semaphore->open_count = 1;
the_semaphore->linked = true;
} else {
the_semaphore->named = false;
the_semaphore->open_count = 0;
the_semaphore->linked = false;
4df1e: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
/*
* This effectively disables limit checking.
*/
the_sem_attr->maximum_count = 0xFFFFFFFF;
4df22: 70ff moveq #-1,%d0 <== NOT EXECUTED
4df24: 2540 005a movel %d0,%a2@(90) <== NOT EXECUTED
_CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
4df28: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4df2c: 486a 005a pea %a2@(90) <== NOT EXECUTED
4df30: 486a 001a pea %a2@(26) <== NOT EXECUTED
4df34: 4eb9 0004 9930 jsr 49930 <_CORE_semaphore_Initialize> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4df3a: 2079 0006 2cc2 moveal 62cc2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
4df40: 4280 clrl %d0 <== NOT EXECUTED
4df42: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4df46: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
&_POSIX_Semaphore_Information,
&the_semaphore->Object,
name_p
);
*the_sem = the_semaphore;
4df4a: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
4df4e: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
4df52: 208a movel %a2,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4df54: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4df5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4df5e: 4280 clrl %d0 <== NOT EXECUTED
}
4df60: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4df64: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4df68: 4e5e unlk %fp <== NOT EXECUTED
0004df6c <_POSIX_Semaphore_Delete>:
*/
void _POSIX_Semaphore_Delete(
POSIX_Semaphore_Control *the_semaphore
)
{
4df6c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4df70: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4df72: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !the_semaphore->linked && !the_semaphore->open_count ) {
4df76: 4a2a 0015 tstb %a2@(21) <== NOT EXECUTED
4df7a: 6636 bnes 4dfb2 <_POSIX_Semaphore_Delete+0x46> <== NOT EXECUTED
4df7c: 4aaa 0016 tstl %a2@(22) <== NOT EXECUTED
4df80: 6630 bnes 4dfb2 <_POSIX_Semaphore_Delete+0x46> <== NOT EXECUTED
_Objects_Close( &_POSIX_Semaphore_Information, &the_semaphore->Object );
4df82: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4df84: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4df8a: 4eb9 0004 9f20 jsr 49f20 <_Objects_Close> <== NOT EXECUTED
_CORE_semaphore_Flush(
4df90: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4df94: 42a7 clrl %sp@- <== NOT EXECUTED
4df96: 486a 001a pea %a2@(26) <== NOT EXECUTED
4df9a: 4eb9 0004 9924 jsr 49924 <_CORE_semaphore_Flush> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Free (
POSIX_Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_POSIX_Semaphore_Information, &the_semaphore->Object );
4dfa0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4dfa2: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4dfa8: 4eb9 0004 a198 jsr 4a198 <_Objects_Free> <== NOT EXECUTED
4dfae: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
-1
);
_POSIX_Semaphore_Free( the_semaphore );
}
}
4dfb2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4dfb6: 4e5e unlk %fp <== NOT EXECUTED
...
0004dfbc <_POSIX_Semaphore_Name_to_id>:
int _POSIX_Semaphore_Name_to_id(
const char *name,
sem_t *id
)
{
4dfbc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4dfc0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Id the_id;
if ( !name )
4dfc4: 4a88 tstl %a0 <== NOT EXECUTED
4dfc6: 6728 beqs 4dff0 <_POSIX_Semaphore_Name_to_id+0x34><== NOT EXECUTED
return EINVAL;
if ( !name[0] )
4dfc8: 4a10 tstb %a0@ <== NOT EXECUTED
4dfca: 6724 beqs 4dff0 <_POSIX_Semaphore_Name_to_id+0x34><== NOT EXECUTED
return EINVAL;
status = _Objects_Name_to_id_string(
4dfcc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4dfd0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4dfd2: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4dfd8: 4eb9 0004 eb28 jsr 4eb28 <_Objects_Name_to_id_string> <== NOT EXECUTED
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4dfde: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4dfe2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
status = _Objects_Name_to_id_string(
&_POSIX_Semaphore_Information,
name,
&the_id
);
*id = the_id;
4dfe6: 20ae fffc movel %fp@(-4),%a0@ <== NOT EXECUTED
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
4dfea: 4a80 tstl %d0 <== NOT EXECUTED
4dfec: 6606 bnes 4dff4 <_POSIX_Semaphore_Name_to_id+0x38><== NOT EXECUTED
4dfee: 6006 bras 4dff6 <_POSIX_Semaphore_Name_to_id+0x3a><== NOT EXECUTED
if ( !name )
return EINVAL;
if ( !name[0] )
return EINVAL;
4dff0: 7016 moveq #22,%d0 <== NOT EXECUTED
4dff2: 6002 bras 4dff6 <_POSIX_Semaphore_Name_to_id+0x3a><== NOT EXECUTED
*id = the_id;
if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL )
return 0;
return ENOENT;
4dff4: 7002 moveq #2,%d0 <== NOT EXECUTED
}
4dff6: 4e5e unlk %fp <== NOT EXECUTED
...
00050320 <_POSIX_Semaphore_Translate_core_semaphore_return_code>:
#if defined(RTEMS_DEBUG)
if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Semaphore_Return_codes[the_semaphore_status];
}
50320: 41f9 0006 059a lea 6059a <_POSIX_Semaphore_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Semaphore_Translate_core_semaphore_return_code(
CORE_semaphore_Status the_semaphore_status
)
{
50326: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_semaphore_status > CORE_SEMAPHORE_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Semaphore_Return_codes[the_semaphore_status];
}
5032a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5032e: 4e5e unlk %fp <== NOT EXECUTED
50330: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004e030 <_POSIX_Semaphore_Wait_support>:
int _POSIX_Semaphore_Wait_support(
sem_t *sem,
bool blocking,
Watchdog_Interval timeout
)
{
4e030: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
sem_t *id,
Objects_Locations *location
)
{
return (POSIX_Semaphore_Control *)
_Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location );
4e034: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4e038: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e03a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e03c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e040: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4e042: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4e048: 142e 000f moveb %fp@(15),%d2 <== NOT EXECUTED
4e04c: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
4e052: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e056: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e05a: 6650 bnes 4e0ac <_POSIX_Semaphore_Wait_support+0x7c><== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_semaphore_Seize(
4e05c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4e060: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e062: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
4e068: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e06a: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4e06e: 4868 001a pea %a0@(26) <== NOT EXECUTED
4e072: 4eb9 0004 e684 jsr 4e684 <_CORE_semaphore_Seize> <== NOT EXECUTED
&the_semaphore->Semaphore,
the_semaphore->Object.id,
blocking,
timeout
);
_Thread_Enable_dispatch();
4e078: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !_Thread_Executing->Wait.return_code )
4e07e: 2079 0006 2efe moveal 62efe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4e084: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4e088: 4aa8 0034 tstl %a0@(52) <== NOT EXECUTED
4e08c: 672e beqs 4e0bc <_POSIX_Semaphore_Wait_support+0x8c><== NOT EXECUTED
return 0;
rtems_set_errno_and_return_minus_one(
4e08e: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4e094: 2079 0006 2efe moveal 62efe <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4e09a: 2440 moveal %d0,%a2 <== NOT EXECUTED
4e09c: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4e0a0: 4eb9 0005 0320 jsr 50320 <_POSIX_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
4e0a6: 588f addql #4,%sp <== NOT EXECUTED
4e0a8: 2480 movel %d0,%a2@ <== NOT EXECUTED
4e0aa: 600c bras 4e0b8 <_POSIX_Semaphore_Wait_support+0x88><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4e0ac: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4e0b2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e0b4: 7016 moveq #22,%d0 <== NOT EXECUTED
4e0b6: 2080 movel %d0,%a0@ <== NOT EXECUTED
4e0b8: 70ff moveq #-1,%d0 <== NOT EXECUTED
4e0ba: 6002 bras 4e0be <_POSIX_Semaphore_Wait_support+0x8e><== NOT EXECUTED
timeout
);
_Thread_Enable_dispatch();
if ( !_Thread_Executing->Wait.return_code )
return 0;
4e0bc: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
}
4e0be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4e0c2: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e0c6: 4e5e unlk %fp <== NOT EXECUTED
...
00045840 <_POSIX_Spinlock_Translate_core_spinlock_return_code>:
#if defined(RTEMS_DEBUG)
if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Spinlock_Return_codes[the_spinlock_status];
}
45840: 41f9 0005 c298 lea 5c298 <_POSIX_Spinlock_Return_codes>,%a0<== NOT EXECUTED
int _POSIX_Spinlock_Translate_core_spinlock_return_code(
CORE_spinlock_Status the_spinlock_status
)
{
45846: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( the_spinlock_status > CORE_SPINLOCK_STATUS_LAST )
return EINVAL;
#endif
return _POSIX_Spinlock_Return_codes[the_spinlock_status];
}
4584a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4584e: 4e5e unlk %fp <== NOT EXECUTED
45850: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>:
#include <rtems/posix/pthread.h>
void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(
Thread_Control *the_thread
)
{
4a040: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a044: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
POSIX_API_Control *thread_support;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4a048: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
4a04c: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED
4a050: 662e bnes 4a080 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x40><== NOT EXECUTED
4a052: 7001 moveq #1,%d0 <== NOT EXECUTED
4a054: b0a8 00dc cmpl %a0@(220),%d0 <== NOT EXECUTED
4a058: 6626 bnes 4a080 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x40><== NOT EXECUTED
thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
4a05a: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED
4a05e: 6720 beqs 4a080 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x40><== NOT EXECUTED
thread_support->cancelation_requested ) {
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
4a060: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4a064: 2039 0005 e17c movel 5e17c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4a06a: 5380 subql #1,%d0 <== NOT EXECUTED
4a06c: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4a06e: 23c0 0005 e17c movel %d0,5e17c <_Thread_Dispatch_disable_level><== NOT EXECUTED
4a074: 4eb9 0004 a818 jsr 4a818 <_POSIX_Thread_Exit> <== NOT EXECUTED
4a07a: 508f addql #8,%sp <== NOT EXECUTED
} else
_Thread_Enable_dispatch();
}
4a07c: 4e5e unlk %fp <== NOT EXECUTED
4a07e: 4e75 rts <== NOT EXECUTED
4a080: 4e5e unlk %fp <== NOT EXECUTED
thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
thread_support->cancelation_requested ) {
_Thread_Unnest_dispatch();
_POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );
} else
_Thread_Enable_dispatch();
4a082: 4ef9 0004 7abe jmp 47abe <_Thread_Enable_dispatch> <== NOT EXECUTED
0004c440 <_POSIX_Thread_Exit>:
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4c440: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4c444: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4c448: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4c44c: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
4c450: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4c454: 4eb9 0004 6be0 jsr 46be0 <_Objects_Get_information_id> <== NOT EXECUTED
* are ready to be switched out. Otherwise, an ISR could
* occur and preempt us out while we still hold the
* allocator mutex.
*/
_RTEMS_Lock_allocator();
4c45a: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *value_ptr
)
{
Objects_Information *the_information;
the_information = _Objects_Get_information_id( the_thread->Object.id );
4c460: 2600 movel %d0,%d3 <== NOT EXECUTED
* are ready to be switched out. Otherwise, an ISR could
* occur and preempt us out while we still hold the
* allocator mutex.
*/
_RTEMS_Lock_allocator();
4c462: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4c468: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4c46e: 5280 addql #1,%d0 <== NOT EXECUTED
4c470: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.return_argument = value_ptr;
4c476: 2542 0028 movel %d2,%a2@(40) <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
4c47a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c47c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c47e: 4eb9 0004 748c jsr 4748c <_Thread_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
4c484: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c486: 4879 0005 dcca pea 5dcca <_POSIX_Threads_Information> <== NOT EXECUTED
4c48c: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> <== NOT EXECUTED
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
4c492: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4c498: 4eb9 0004 5f80 jsr 45f80 <_API_Mutex_Unlock> <== NOT EXECUTED
_Thread_Enable_dispatch();
4c49e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4c4a2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4c4a8: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
4c4aa: 4ef9 0004 779a jmp 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
0004b290 <_POSIX_Thread_Translate_sched_param>:
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4b290: 4e56 ffec linkw %fp,#-20
4b294: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4b298: 246e 000c moveal %fp@(12),%a2
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4b29c: 2f12 movel %a2@,%sp@-
int policy,
struct sched_param *param,
Thread_CPU_budget_algorithms *budget_algorithm,
Thread_CPU_budget_algorithm_callout *budget_callout
)
{
4b29e: 242e 0008 movel %fp@(8),%d2
4b2a2: 266e 0010 moveal %fp@(16),%a3
4b2a6: 286e 0014 moveal %fp@(20),%a4
if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )
4b2aa: 4eb9 0004 b26c jsr 4b26c <_POSIX_Priority_Is_valid>
4b2b0: 588f addql #4,%sp
4b2b2: 4a00 tstb %d0
4b2b4: 6778 beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NEVER TAKEN
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
4b2b6: 4293 clrl %a3@
*budget_callout = NULL;
4b2b8: 4294 clrl %a4@
if ( policy == SCHED_OTHER ) {
4b2ba: 4a82 tstl %d2
4b2bc: 6606 bnes 4b2c4 <_POSIX_Thread_Translate_sched_param+0x34><== ALWAYS TAKEN
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4b2be: 7201 moveq #1,%d1
4b2c0: 2681 movel %d1,%a3@
4b2c2: 6066 bras 4b32a <_POSIX_Thread_Translate_sched_param+0x9a><== NOT EXECUTED
return 0;
}
if ( policy == SCHED_FIFO ) {
4b2c4: 7001 moveq #1,%d0
4b2c6: b082 cmpl %d2,%d0
4b2c8: 6760 beqs 4b32a <_POSIX_Thread_Translate_sched_param+0x9a><== ALWAYS TAKEN
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
}
if ( policy == SCHED_RR ) {
4b2ca: 103c 0002 moveb #2,%d0 <== NOT EXECUTED
4b2ce: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b2d0: 6606 bnes 4b2d8 <_POSIX_Thread_Translate_sched_param+0x48><== NOT EXECUTED
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
4b2d2: 2680 movel %d0,%a3@ <== NOT EXECUTED
return 0;
4b2d4: 4200 clrb %d0 <== NOT EXECUTED
4b2d6: 6058 bras 4b330 <_POSIX_Thread_Translate_sched_param+0xa0><== NOT EXECUTED
}
if ( policy == SCHED_SPORADIC ) {
4b2d8: 7004 moveq #4,%d0 <== NOT EXECUTED
4b2da: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b2dc: 6650 bnes 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED
if ( (param->sched_ss_repl_period.tv_sec == 0) &&
4b2de: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4b2e2: 6606 bnes 4b2ea <_POSIX_Thread_Translate_sched_param+0x5a><== NOT EXECUTED
4b2e4: 4aaa 000c tstl %a2@(12) <== NOT EXECUTED
4b2e8: 6744 beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED
(param->sched_ss_repl_period.tv_nsec == 0) )
return EINVAL;
if ( (param->sched_ss_init_budget.tv_sec == 0) &&
4b2ea: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4b2ee: 6606 bnes 4b2f6 <_POSIX_Thread_Translate_sched_param+0x66><== NOT EXECUTED
4b2f0: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4b2f4: 6738 beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED
(param->sched_ss_init_budget.tv_nsec == 0) )
return EINVAL;
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
4b2f6: 486a 0008 pea %a2@(8) <== NOT EXECUTED
4b2fa: 4bf9 0004 918c lea 4918c <_Timespec_To_ticks>,%a5 <== NOT EXECUTED
4b300: 4e95 jsr %a5@ <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4b302: 486a 0010 pea %a2@(16) <== NOT EXECUTED
if ( (param->sched_ss_init_budget.tv_sec == 0) &&
(param->sched_ss_init_budget.tv_nsec == 0) )
return EINVAL;
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
4b306: 2400 movel %d0,%d2 <== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
4b308: 4e95 jsr %a5@ <== NOT EXECUTED
if ( (param->sched_ss_init_budget.tv_sec == 0) &&
(param->sched_ss_init_budget.tv_nsec == 0) )
return EINVAL;
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
4b30a: 508f addql #8,%sp <== NOT EXECUTED
4b30c: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b30e: 621e bhis 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )
4b310: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED
4b314: 4eb9 0004 b26c jsr 4b26c <_POSIX_Priority_Is_valid> <== NOT EXECUTED
4b31a: 588f addql #4,%sp <== NOT EXECUTED
4b31c: 4a00 tstb %d0 <== NOT EXECUTED
4b31e: 670e beqs 4b32e <_POSIX_Thread_Translate_sched_param+0x9e><== NOT EXECUTED
return EINVAL;
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;
4b320: 7003 moveq #3,%d0 <== NOT EXECUTED
4b322: 2680 movel %d0,%a3@ <== NOT EXECUTED
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
4b324: 28bc 0004 5c7c movel #285820,%a4@ <== NOT EXECUTED
return 0;
}
if ( policy == SCHED_FIFO ) {
*budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
return 0;
4b32a: 4280 clrl %d0
4b32c: 6002 bras 4b330 <_POSIX_Thread_Translate_sched_param+0xa0>
if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <
_Timespec_To_ticks( ¶m->sched_ss_init_budget ) )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )
return EINVAL;
4b32e: 7016 moveq #22,%d0
*budget_callout = _POSIX_Threads_Sporadic_budget_callout;
return 0;
}
return EINVAL;
}
4b330: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4b336: 4e5e unlk %fp
...
0004a2c2 <_POSIX_Threads_Create_extension>:
bool _POSIX_Threads_Create_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *created
)
{
4a2c2: 4e56 0000 linkw %fp,#0
4a2c6: 2f0b movel %a3,%sp@-
4a2c8: 266e 000c moveal %fp@(12),%a3
4a2cc: 2f0a movel %a2,%sp@-
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4a2ce: 4878 00f0 pea f0 <DBL_MANT_DIG+0xbb>
4a2d2: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
if ( !api )
4a2d8: 588f addql #4,%sp
)
{
POSIX_API_Control *api;
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
4a2da: 2440 moveal %d0,%a2
if ( !api )
4a2dc: 4a80 tstl %d0
4a2de: 6700 00e2 beqw 4a3c2 <_POSIX_Threads_Create_extension+0x100>
return false;
created->API_Extensions[ THREAD_API_POSIX ] = api;
4a2e2: 2740 0102 movel %d0,%a3@(258)
/* XXX check all fields are touched */
api->Attributes = _POSIX_Threads_Default_attributes;
4a2e6: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
4a2ea: 42a7 clrl %sp@-
4a2ec: 2f00 movel %d0,%sp@-
4a2ee: 4eb9 0004 d268 jsr 4d268 <memset>
4a2f4: 7001 moveq #1,%d0
4a2f6: 7202 moveq #2,%d1
4a2f8: 2480 movel %d0,%a2@
4a2fa: 7001 moveq #1,%d0
4a2fc: 2541 0018 movel %d1,%a2@(24)
4a300: 2540 0010 movel %d0,%a2@(16)
4a304: 2540 0014 movel %d0,%a2@(20)
4a308: 2540 0038 movel %d0,%a2@(56)
4a30c: 2540 003c movel %d0,%a2@(60)
api->detachstate = _POSIX_Threads_Default_attributes.detachstate;
4a310: 2540 0040 movel %d0,%a2@(64)
api->schedpolicy = _POSIX_Threads_Default_attributes.schedpolicy;
4a314: 2540 0084 movel %d0,%a2@(132)
api->schedparam = _POSIX_Threads_Default_attributes.schedparam;
4a318: 4878 001c pea 1c <OPER2+0x8>
4a31c: 4879 0005 b7fa pea 5b7fa <_POSIX_Threads_Default_attributes+0x18>
4a322: 486a 0088 pea %a2@(136)
4a326: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy>
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4a32c: 4fef 0018 lea %sp@(24),%sp
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4a330: 4280 clrl %d0
4a332: 1039 0005 c252 moveb 5c252 <rtems_maximum_priority>,%d0
4a338: 90ab 0014 subl %a3@(20),%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 );
4a33c: 41ea 00e8 lea %a2@(232),%a0
4a340: 7207 moveq #7,%d1
4a342: 2540 0088 movel %d0,%a2@(136)
4a346: 4280 clrl %d0
4a348: 102b 0008 moveb %a3@(8),%d0
4a34c: 2548 00e4 movel %a0,%a2@(228)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a350: 41ea 00e4 lea %a2@(228),%a0
4a354: c081 andl %d1,%d0
_POSIX_Priority_From_core( created->current_priority );
/*
* POSIX 1003.1 1996, 18.2.2.2
*/
api->cancelation_requested = 0;
4a356: 42aa 00e0 clrl %a2@(224)
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4a35a: 123c 0003 moveb #3,%d1
/*
* POSIX 1003.1 1996, 18.2.2.2
*/
api->cancelation_requested = 0;
api->cancelability_state = PTHREAD_CANCEL_ENABLE;
4a35e: 42aa 00d8 clrl %a2@(216)
api->cancelability_type = PTHREAD_CANCEL_DEFERRED;
4a362: 42aa 00dc clrl %a2@(220)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4a366: 42aa 00e8 clrl %a2@(232)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4a36a: 2548 00ec movel %a0,%a2@(236)
*
* The check for class == 1 is debug. Should never really happen.
*/
/* XXX use signal constants */
api->signals_pending = 0;
4a36e: 42aa 00d4 clrl %a2@(212)
if ( _Objects_Get_API( created->Object.id ) == OBJECTS_POSIX_API
4a372: b280 cmpl %d0,%d1
4a374: 6612 bnes 4a388 <_POSIX_Threads_Create_extension+0xc6>
#if defined(RTEMS_DEBUG)
&& _Objects_Get_class( created->Object.id ) == 1
#endif
) {
executing_api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4a376: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
api->signals_blocked = executing_api->signals_blocked;
4a37c: 2068 0102 moveal %a0@(258),%a0
4a380: 2568 00d0 00d0 movel %a0@(208),%a2@(208)
4a386: 6006 bras 4a38e <_POSIX_Threads_Create_extension+0xcc>
} else {
api->signals_blocked = 0xffffffff;
4a388: 70ff moveq #-1,%d0
4a38a: 2540 00d0 movel %d0,%a2@(208)
}
_Thread_queue_Initialize(
4a38e: 42a7 clrl %sp@-
4a390: 4878 1000 pea 1000 <D_MAX_EXP+0x801>
4a394: 42a7 clrl %sp@-
4a396: 486a 0044 pea %a2@(68)
4a39a: 4eb9 0004 7e40 jsr 47e40 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_JOIN_AT_EXIT,
0
);
_Watchdog_Initialize(
4a3a0: 202b 0008 movel %a3@(8),%d0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4a3a4: 223c 0004 a3d0 movel #304080,%d1
_POSIX_Threads_Sporadic_budget_TSR,
created->Object.id,
created
);
return true;
4a3aa: 4fef 0010 lea %sp@(16),%sp
the_watchdog->id = id;
4a3ae: 2540 00c8 movel %d0,%a2@(200)
4a3b2: 7001 moveq #1,%d0
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4a3b4: 42aa 00b0 clrl %a2@(176)
the_watchdog->routine = routine;
4a3b8: 2541 00c4 movel %d1,%a2@(196)
the_watchdog->id = id;
the_watchdog->user_data = user_data;
4a3bc: 254b 00cc movel %a3,%a2@(204)
4a3c0: 6002 bras 4a3c4 <_POSIX_Threads_Create_extension+0x102>
POSIX_API_Control *executing_api;
api = _Workspace_Allocate( sizeof( POSIX_API_Control ) );
if ( !api )
return false;
4a3c2: 4200 clrb %d0 <== NOT EXECUTED
created->Object.id,
created
);
return true;
}
4a3c4: 246e fff8 moveal %fp@(-8),%a2
4a3c8: 266e fffc moveal %fp@(-4),%a3
4a3cc: 4e5e unlk %fp <== NOT EXECUTED
0004a24e <_POSIX_Threads_Delete_extension>:
*/
void _POSIX_Threads_Delete_extension(
Thread_Control *executing __attribute__((unused)),
Thread_Control *deleted
)
{
4a24e: 4e56 ffec linkw %fp,#-20
4a252: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
4a256: 246e 000c moveal %fp@(12),%a2
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4a25a: 49f9 0004 7abc lea 47abc <_Thread_queue_Dequeue>,%a4
{
Thread_Control *the_thread;
POSIX_API_Control *api;
void **value_ptr;
api = deleted->API_Extensions[ THREAD_API_POSIX ];
4a260: 266a 0102 moveal %a2@(258),%a3
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4a264: 240b movel %a3,%d2
4a266: 0682 0000 0044 addil #68,%d2
api = deleted->API_Extensions[ THREAD_API_POSIX ];
/*
* Run the POSIX cancellation handlers
*/
_POSIX_Threads_cancel_run( deleted );
4a26c: 2f0a movel %a2,%sp@-
4a26e: 4eb9 0004 c18c jsr 4c18c <_POSIX_Threads_cancel_run>
/*
* Run all the key destructors
*/
_POSIX_Keys_Run_destructors( deleted );
4a274: 2f0a movel %a2,%sp@-
4a276: 4eb9 0004 c1f4 jsr 4c1f4 <_POSIX_Keys_Run_destructors>
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
4a27c: 262a 0028 movel %a2@(40),%d3
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4a280: 508f addql #8,%sp
4a282: 6008 bras 4a28c <_POSIX_Threads_Delete_extension+0x3e>
*(void **)the_thread->Wait.return_argument = value_ptr;
4a284: 2240 moveal %d0,%a1 <== NOT EXECUTED
4a286: 2069 0028 moveal %a1@(40),%a0 <== NOT EXECUTED
4a28a: 2083 movel %d3,%a0@ <== NOT EXECUTED
/*
* Wakeup all the tasks which joined with this one
*/
value_ptr = (void **) deleted->Wait.return_argument;
while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )
4a28c: 2f02 movel %d2,%sp@-
4a28e: 4e94 jsr %a4@
4a290: 588f addql #4,%sp
4a292: 4a80 tstl %d0
4a294: 66ee bnes 4a284 <_POSIX_Threads_Delete_extension+0x36><== NEVER TAKEN
*(void **)the_thread->Wait.return_argument = value_ptr;
if ( api->schedpolicy == SCHED_SPORADIC )
4a296: 103c 0004 moveb #4,%d0
4a29a: b0ab 0084 cmpl %a3@(132),%d0
4a29e: 660c bnes 4a2ac <_POSIX_Threads_Delete_extension+0x5e><== ALWAYS TAKEN
(void) _Watchdog_Remove( &api->Sporadic_timer );
4a2a0: 486b 00a8 pea %a3@(168) <== NOT EXECUTED
4a2a4: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
4a2aa: 588f addql #4,%sp <== NOT EXECUTED
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
4a2ac: 42aa 0102 clrl %a2@(258)
(void) _Workspace_Free( api );
4a2b0: 2d4b 0008 movel %a3,%fp@(8)
}
4a2b4: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4a2ba: 4e5e unlk %fp
if ( api->schedpolicy == SCHED_SPORADIC )
(void) _Watchdog_Remove( &api->Sporadic_timer );
deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;
(void) _Workspace_Free( api );
4a2bc: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free>
0004a222 <_POSIX_Threads_Exitted_extension>:
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
4a222: 4280 clrl %d0
4a224: 7207 moveq #7,%d1
* This method is invoked each time a thread exits.
*/
void _POSIX_Threads_Exitted_extension(
Thread_Control *executing
)
{
4a226: 4e56 0000 linkw %fp,#0
4a22a: 206e 0008 moveal %fp@(8),%a0
4a22e: 1028 0008 moveb %a0@(8),%d0
4a232: c081 andl %d1,%d0
/*
* If the executing thread was not created with the POSIX API, then this
* API do not get to define its exit behavior.
*/
if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
4a234: 123c 0003 moveb #3,%d1
4a238: b280 cmpl %d0,%d1
4a23a: 660e bnes 4a24a <_POSIX_Threads_Exitted_extension+0x28><== ALWAYS TAKEN
pthread_exit( executing->Wait.return_argument );
4a23c: 2d68 0028 0008 movel %a0@(40),%fp@(8) <== NOT EXECUTED
}
4a242: 4e5e unlk %fp <== NOT EXECUTED
/*
* If the executing thread was not created with the POSIX API, then this
* API do not get to define its exit behavior.
*/
if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
pthread_exit( executing->Wait.return_argument );
4a244: 4ef9 0004 c4b0 jmp 4c4b0 <pthread_exit> <== NOT EXECUTED
}
4a24a: 4e5e unlk %fp <== NOT EXECUTED
000459ac <_POSIX_Threads_Initialize_user_threads_body>:
*
* Output parameters: NONE
*/
void _POSIX_Threads_Initialize_user_threads_body(void)
{
459ac: 4e56 ff98 linkw %fp,#-104
459b0: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
uint32_t maximum;
posix_initialization_threads_table *user_threads;
pthread_t thread_id;
pthread_attr_t attr;
user_threads = Configuration_POSIX_API.User_initialization_threads_table;
459b4: 2479 0005 d29e moveal 5d29e <Configuration_POSIX_API+0x34>,%a2
maximum = Configuration_POSIX_API.number_of_initialization_threads;
459ba: 2839 0005 d29a movel 5d29a <Configuration_POSIX_API+0x30>,%d4
if ( !user_threads || maximum == 0 )
459c0: 4a8a tstl %a2
459c2: 676a beqs 45a2e <_POSIX_Threads_Initialize_user_threads_body+0x82><== NEVER TAKEN
459c4: 4a84 tstl %d4
459c6: 6766 beqs 45a2e <_POSIX_Threads_Initialize_user_threads_body+0x82><== NEVER TAKEN
for ( index=0 ; index < maximum ; index++ ) {
/*
* There is no way for these calls to fail in this situation.
*/
(void) pthread_attr_init( &attr );
459c8: 240e movel %fp,%d2
(void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
(void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
status = pthread_create(
459ca: 2a0e movel %fp,%d5
pthread_attr_t attr;
user_threads = Configuration_POSIX_API.User_initialization_threads_table;
maximum = Configuration_POSIX_API.number_of_initialization_threads;
if ( !user_threads || maximum == 0 )
459cc: 4283 clrl %d3
for ( index=0 ; index < maximum ; index++ ) {
/*
* There is no way for these calls to fail in this situation.
*/
(void) pthread_attr_init( &attr );
459ce: 0682 ffff ffbc addil #-68,%d2
459d4: 2c3c 0004 b33c movel #308028,%d6
(void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
459da: 4bf9 0004 b368 lea 4b368 <pthread_attr_setinheritsched>,%a5
(void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
459e0: 49f9 0004 b3a0 lea 4b3a0 <pthread_attr_setstacksize>,%a4
status = pthread_create(
459e6: 5985 subql #4,%d5
459e8: 47f9 0004 5700 lea 45700 <pthread_create>,%a3
for ( index=0 ; index < maximum ; index++ ) {
/*
* There is no way for these calls to fail in this situation.
*/
(void) pthread_attr_init( &attr );
459ee: 2f02 movel %d2,%sp@-
459f0: 2046 moveal %d6,%a0
459f2: 4e90 jsr %a0@
(void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
459f4: 4878 0002 pea 2 <DOUBLE_FLOAT>
459f8: 2f02 movel %d2,%sp@-
459fa: 4e95 jsr %a5@
(void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
459fc: 2f2a 0004 movel %a2@(4),%sp@-
45a00: 2f02 movel %d2,%sp@-
45a02: 4e94 jsr %a4@
status = pthread_create(
45a04: 42a7 clrl %sp@-
45a06: 2f12 movel %a2@,%sp@-
45a08: 2f02 movel %d2,%sp@-
45a0a: 2f05 movel %d5,%sp@-
45a0c: 4e93 jsr %a3@
&thread_id,
&attr,
user_threads[ index ].thread_entry,
NULL
);
if ( status )
45a0e: 4fef 0024 lea %sp@(36),%sp
45a12: 4a80 tstl %d0
45a14: 6710 beqs 45a26 <_POSIX_Threads_Initialize_user_threads_body+0x7a>
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
45a16: 2f00 movel %d0,%sp@-
45a18: 4878 0001 pea 1 <ADD>
45a1c: 4878 0002 pea 2 <DOUBLE_FLOAT>
45a20: 4eb9 0004 76d4 jsr 476d4 <_Internal_error_Occurred>
*
* Setting the attributes explicitly is critical, since we don't want
* to inherit the idle tasks attributes.
*/
for ( index=0 ; index < maximum ; index++ ) {
45a26: 5283 addql #1,%d3
45a28: 508a addql #8,%a2
45a2a: b883 cmpl %d3,%d4
45a2c: 62c0 bhis 459ee <_POSIX_Threads_Initialize_user_threads_body+0x42><== NEVER TAKEN
NULL
);
if ( status )
_Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
}
}
45a2e: 4cee 3c7c ff98 moveml %fp@(-104),%d2-%d6/%a2-%a5
45a34: 4e5e unlk %fp <== NOT EXECUTED
0004a3d0 <_POSIX_Threads_Sporadic_budget_TSR>:
*/
void _POSIX_Threads_Sporadic_budget_TSR(
Objects_Id id __attribute__((unused)),
void *argument
)
{
4a3d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a3d4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a3d6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a3d8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Thread_Control *the_thread;
POSIX_API_Control *api;
the_thread = argument;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4a3dc: 266a 0102 moveal %a2@(258),%a3 <== NOT EXECUTED
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
4a3e0: 486b 0098 pea %a3@(152) <== NOT EXECUTED
4a3e4: 4eb9 0004 b204 jsr 4b204 <_Timespec_To_ticks> <== NOT EXECUTED
*/
#if 0
printk( "TSR %d %d %d\n", the_thread->resource_count,
the_thread->current_priority, new_priority );
#endif
if ( the_thread->resource_count == 0 ) {
4a3ea: 588f addql #4,%sp <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
the_thread->cpu_time_budget = ticks;
4a3ec: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4a3f0: 4280 clrl %d0 <== NOT EXECUTED
4a3f2: 1039 0005 c252 moveb 5c252 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
4a3f8: 90ab 0088 subl %a3@(136),%d0 <== NOT EXECUTED
new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
the_thread->real_priority = new_priority;
4a3fc: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
*/
#if 0
printk( "TSR %d %d %d\n", the_thread->resource_count,
the_thread->current_priority, new_priority );
#endif
if ( the_thread->resource_count == 0 ) {
4a400: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED
4a404: 6618 bnes 4a41e <_POSIX_Threads_Sporadic_budget_TSR+0x4e><== NOT EXECUTED
/*
* If this would make them less important, then do not change it.
*/
if ( the_thread->current_priority > new_priority ) {
4a406: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4a40a: 6412 bccs 4a41e <_POSIX_Threads_Sporadic_budget_TSR+0x4e><== NOT EXECUTED
_Thread_Change_priority( the_thread, new_priority, true );
4a40c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4a410: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a412: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a414: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED
4a41a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#endif
}
}
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
4a41e: 486b 0090 pea %a3@(144) <== NOT EXECUTED
4a422: 4eb9 0004 b204 jsr 4b204 <_Timespec_To_ticks> <== NOT EXECUTED
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
}
4a428: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4a42c: 588f addql #4,%sp <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4a42e: 2740 00b4 movel %d0,%a3@(180) <== NOT EXECUTED
}
/* ticks is guaranteed to be at least one */
ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
_Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );
4a432: 47eb 00a8 lea %a3@(168),%a3 <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4a436: 203c 0005 dbe8 movel #383976,%d0 <== NOT EXECUTED
4a43c: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
}
4a440: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4a444: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
4a448: 4e5e unlk %fp <== NOT EXECUTED
4a44a: 4ef9 0004 8514 jmp 48514 <_Watchdog_Insert> <== NOT EXECUTED
0004a450 <_POSIX_Threads_Sporadic_budget_callout>:
/*
* This will prevent the thread from consuming its entire "budget"
* while at low priority.
*/
the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
4a450: 70ff moveq #-1,%d0 <== NOT EXECUTED
* _POSIX_Threads_Sporadic_budget_callout
*/
void _POSIX_Threads_Sporadic_budget_callout(
Thread_Control *the_thread
)
{
4a452: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a456: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
/*
* This will prevent the thread from consuming its entire "budget"
* while at low priority.
*/
the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
4a45a: 2140 0076 movel %d0,%a0@(118) <== NOT EXECUTED
4a45e: 4280 clrl %d0 <== NOT EXECUTED
4a460: 1039 0005 c252 moveb 5c252 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
)
{
POSIX_API_Control *api;
uint32_t new_priority;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4a466: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED
4a46a: 90a9 008c subl %a1@(140),%d0 <== NOT EXECUTED
* while at low priority.
*/
the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority);
the_thread->real_priority = new_priority;
4a46e: 2140 0018 movel %d0,%a0@(24) <== NOT EXECUTED
*/
#if 0
printk( "callout %d %d %d\n", the_thread->resource_count,
the_thread->current_priority, new_priority );
#endif
if ( the_thread->resource_count == 0 ) {
4a472: 4aa8 001c tstl %a0@(28) <== NOT EXECUTED
4a476: 6618 bnes 4a490 <_POSIX_Threads_Sporadic_budget_callout+0x40><== NOT EXECUTED
/*
* Make sure we are actually lowering it. If they have lowered it
* to logically lower than sched_ss_low_priority, then we do not want to
* change it.
*/
if ( the_thread->current_priority < new_priority ) {
4a478: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
4a47c: 6312 blss 4a490 <_POSIX_Threads_Sporadic_budget_callout+0x40><== NOT EXECUTED
_Thread_Change_priority( the_thread, new_priority, true );
4a47e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4a482: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a484: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4a486: 4eb9 0004 7300 jsr 47300 <_Thread_Change_priority> <== NOT EXECUTED
4a48c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
#if 0
printk( "lower priority\n" );
#endif
}
}
}
4a490: 4e5e unlk %fp <== NOT EXECUTED
0004c18c <_POSIX_Threads_cancel_run>:
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
4c18c: 7001 moveq #1,%d0
#include <rtems/posix/threadsup.h>
void _POSIX_Threads_cancel_run(
Thread_Control *the_thread
)
{
4c18e: 4e56 ffec linkw %fp,#-20
POSIX_Cancel_Handler_control *handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4c192: 206e 0008 moveal %fp@(8),%a0
#include <rtems/posix/threadsup.h>
void _POSIX_Threads_cancel_run(
Thread_Control *the_thread
)
{
4c196: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
POSIX_Cancel_Handler_control *handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
4c19a: 2468 0102 moveal %a0@(258),%a2
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4c19e: 260a movel %a2,%d3
4c1a0: 0683 0000 00e8 addil #232,%d3
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
while ( !_Chain_Is_empty( handler_stack ) ) {
_ISR_Disable( level );
4c1a6: 243c 0000 0700 movel #1792,%d2
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
(*handler->routine)( handler->arg );
_Workspace_Free( handler );
4c1ac: 47f9 0004 87b0 lea 487b0 <_Workspace_Free>,%a3
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
4c1b2: 2540 00d8 movel %d0,%a2@(216)
while ( !_Chain_Is_empty( handler_stack ) ) {
4c1b6: 602a bras 4c1e2 <_POSIX_Threads_cancel_run+0x56>
_ISR_Disable( level );
4c1b8: 2002 movel %d2,%d0 <== NOT EXECUTED
4c1ba: 40c1 movew %sr,%d1 <== NOT EXECUTED
4c1bc: 8081 orl %d1,%d0 <== NOT EXECUTED
4c1be: 46c0 movew %d0,%sr <== NOT EXECUTED
handler = (POSIX_Cancel_Handler_control *)
4c1c0: 286a 00ec moveal %a2@(236),%a4 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4c1c4: 2254 moveal %a4@,%a1 <== NOT EXECUTED
previous = the_node->previous;
4c1c6: 206c 0004 moveal %a4@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4c1ca: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4c1ce: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
4c1d0: 46c1 movew %d1,%sr <== NOT EXECUTED
(*handler->routine)( handler->arg );
4c1d2: 2f2c 000c movel %a4@(12),%sp@- <== NOT EXECUTED
4c1d6: 206c 0008 moveal %a4@(8),%a0 <== NOT EXECUTED
4c1da: 4e90 jsr %a0@ <== NOT EXECUTED
_Workspace_Free( handler );
4c1dc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4c1de: 4e93 jsr %a3@ <== NOT EXECUTED
4c1e0: 508f addql #8,%sp <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;
while ( !_Chain_Is_empty( handler_stack ) ) {
4c1e2: b6aa 00e4 cmpl %a2@(228),%d3
4c1e6: 66d0 bnes 4c1b8 <_POSIX_Threads_cancel_run+0x2c> <== NEVER TAKEN
(*handler->routine)( handler->arg );
_Workspace_Free( handler );
}
}
4c1e8: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4
4c1ee: 4e5e unlk %fp
...
0004ad44 <_POSIX_Timer_Insert_helper>:
Watchdog_Interval ticks,
Objects_Id id,
Watchdog_Service_routine_entry TSR,
void *arg
)
{
4ad44: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ad48: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ad4a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4ad4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
(void) _Watchdog_Remove( timer );
4ad50: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ad52: 4eb9 0004 8d5c jsr 48d5c <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
4ad58: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4ad5e: 40c2 movew %sr,%d2 <== NOT EXECUTED
4ad60: 8082 orl %d2,%d0 <== NOT EXECUTED
4ad62: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( timer->state != WATCHDOG_INACTIVE ) {
4ad64: 588f addql #4,%sp <== NOT EXECUTED
4ad66: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
4ad6a: 6706 beqs 4ad72 <_POSIX_Timer_Insert_helper+0x2e><== NOT EXECUTED
_ISR_Enable( level );
4ad6c: 46c2 movew %d2,%sr <== NOT EXECUTED
return false;
4ad6e: 4200 clrb %d0 <== NOT EXECUTED
4ad70: 6030 bras 4ada2 <_POSIX_Timer_Insert_helper+0x5e><== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4ad72: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
the_watchdog->routine = routine;
4ad76: 256e 0014 001c movel %fp@(20),%a2@(28) <== NOT EXECUTED
the_watchdog->id = id;
4ad7c: 256e 0010 0020 movel %fp@(16),%a2@(32) <== NOT EXECUTED
the_watchdog->user_data = user_data;
4ad82: 256e 0018 0024 movel %fp@(24),%a2@(36) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4ad88: 256e 000c 000c movel %fp@(12),%a2@(12) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4ad8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ad90: 4879 0005 e768 pea 5e768 <_Watchdog_Ticks_chain> <== NOT EXECUTED
4ad96: 4eb9 0004 8c34 jsr 48c34 <_Watchdog_Insert> <== NOT EXECUTED
* OK. Now we now the timer was not rescheduled by an interrupt
* so we can atomically initialize it as in use.
*/
_Watchdog_Initialize( timer, TSR, id, arg );
_Watchdog_Insert_ticks( timer, ticks );
_ISR_Enable( level );
4ad9c: 46c2 movew %d2,%sr <== NOT EXECUTED
return true;
4ad9e: 508f addql #8,%sp <== NOT EXECUTED
4ada0: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4ada2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ada6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4adaa: 4e5e unlk %fp <== NOT EXECUTED
...
00045534 <_POSIX_Timer_TSR>:
* This is the operation that is run when a timer expires
*/
void _POSIX_Timer_TSR(
Objects_Id timer __attribute__((unused)),
void *data)
{
45534: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45538: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4553a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
bool activated;
ptimer = (POSIX_Timer_Control *)data;
/* Increment the number of expirations. */
ptimer->overrun = ptimer->overrun + 1;
4553e: 52aa 0066 addql #1,%a2@(102) <== NOT EXECUTED
/* The timer must be reprogrammed */
if ( ( ptimer->timer_data.it_interval.tv_sec != 0 ) ||
45542: 4aaa 0052 tstl %a2@(82) <== NOT EXECUTED
45546: 6606 bnes 4554e <_POSIX_Timer_TSR+0x1a> <== NOT EXECUTED
45548: 4aaa 0056 tstl %a2@(86) <== NOT EXECUTED
4554c: 6736 beqs 45584 <_POSIX_Timer_TSR+0x50> <== NOT EXECUTED
( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) {
activated = _POSIX_Timer_Insert_helper(
4554e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45550: 4879 0004 5534 pea 45534 <_POSIX_Timer_TSR> <== NOT EXECUTED
45556: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
4555a: 2f2a 0062 movel %a2@(98),%sp@- <== NOT EXECUTED
4555e: 486a 0010 pea %a2@(16) <== NOT EXECUTED
45562: 4eb9 0004 ad44 jsr 4ad44 <_POSIX_Timer_Insert_helper> <== NOT EXECUTED
ptimer->ticks,
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated )
45568: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4556c: 4a00 tstb %d0 <== NOT EXECUTED
4556e: 672e beqs 4559e <_POSIX_Timer_TSR+0x6a> <== NOT EXECUTED
return;
/* Store the time when the timer was started again */
_TOD_Get( &ptimer->time );
45570: 486a 006a pea %a2@(106) <== NOT EXECUTED
45574: 4eb9 0004 6a70 jsr 46a70 <_TOD_Get> <== NOT EXECUTED
/* The state really did not change but just to be safe */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
4557a: 588f addql #4,%sp <== NOT EXECUTED
4557c: 7003 moveq #3,%d0 <== NOT EXECUTED
4557e: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
45582: 6006 bras 4558a <_POSIX_Timer_TSR+0x56> <== NOT EXECUTED
} else {
/* Indicates that the timer is stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
45584: 7004 moveq #4,%d0 <== NOT EXECUTED
45586: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/*
* The sending of the signal to the process running the handling function
* specified for that signal is simulated
*/
if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) {
4558a: 2f2a 0042 movel %a2@(66),%sp@- <== NOT EXECUTED
4558e: 2f2a 0038 movel %a2@(56),%sp@- <== NOT EXECUTED
45592: 4eb9 0004 a92c jsr 4a92c <pthread_kill> <== NOT EXECUTED
}
/* After the signal handler returns, the count of expirations of the
* timer must be set to 0.
*/
ptimer->overrun = 0;
45598: 508f addql #8,%sp <== NOT EXECUTED
4559a: 42aa 0066 clrl %a2@(102) <== NOT EXECUTED
}
4559e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
455a2: 4e5e unlk %fp <== NOT EXECUTED
...
00049eac <_POSIX_signals_Abnormal_termination_handler>:
sigset_t _POSIX_signals_Pending;
void _POSIX_signals_Abnormal_termination_handler(
int signo __attribute__((unused)) )
{
49eac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
exit( 1 );
49eb0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49eb4: 4eb9 0004 c95c jsr 4c95c <exit> <== NOT EXECUTED
00046da8 <_POSIX_signals_Alarm_TSR>:
void _POSIX_signals_Alarm_TSR(
Objects_Id id __attribute__((unused)),
void *argument __attribute__((unused))
)
{
46da8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
int status;
status = kill( getpid(), SIGALRM );
46dac: 4eb9 0004 4610 jsr 44610 <getpid> <== NOT EXECUTED
46db2: 720e moveq #14,%d1 <== NOT EXECUTED
46db4: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
46db8: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
/* XXX can't print from an ISR, should this be fatal? */
}
46dbc: 4e5e unlk %fp <== NOT EXECUTED
void *argument __attribute__((unused))
)
{
int status;
status = kill( getpid(), SIGALRM );
46dbe: 4ef9 0004 6ed8 jmp 46ed8 <kill> <== NOT EXECUTED
0004c270 <_POSIX_signals_Check_signal>:
{
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4c270: 4280 clrl %d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4c272: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4c276: 102e 0013 moveb %fp@(19),%d0 <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4c27a: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4c27e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4c282: 2a0e movel %fp,%d5 <== NOT EXECUTED
4c284: 0685 ffff fff4 addil #-12,%d5 <== NOT EXECUTED
4c28a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4c28c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4c290: 2f05 movel %d5,%sp@- <== NOT EXECUTED
bool _POSIX_signals_Check_signal(
POSIX_API_Control *api,
int signo,
bool is_global
)
{
4c292: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
siginfo_t siginfo_struct;
sigset_t saved_signals_blocked;
Thread_Wait_information stored_thread_wait_information;
if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,
4c296: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c298: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c29a: 4eb9 0004 c348 jsr 4c348 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
4c2a0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4c2a4: 4a00 tstb %d0 <== NOT EXECUTED
4c2a6: 6700 0092 beqw 4c33a <_POSIX_signals_Check_signal+0xca><== NOT EXECUTED
#endif
/*
* Just to prevent sending a signal which is currently being ignored.
*/
if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )
4c2aa: 2002 movel %d2,%d0 <== NOT EXECUTED
4c2ac: 2602 movel %d2,%d3 <== NOT EXECUTED
4c2ae: e588 lsll #2,%d0 <== NOT EXECUTED
4c2b0: e98b lsll #4,%d3 <== NOT EXECUTED
4c2b2: 9680 subl %d0,%d3 <== NOT EXECUTED
4c2b4: 2043 moveal %d3,%a0 <== NOT EXECUTED
4c2b6: d1fc 0005 dfc4 addal #384964,%a0 <== NOT EXECUTED
4c2bc: 7001 moveq #1,%d0 <== NOT EXECUTED
4c2be: 2668 0008 moveal %a0@(8),%a3 <== NOT EXECUTED
4c2c2: b08b cmpl %a3,%d0 <== NOT EXECUTED
4c2c4: 6774 beqs 4c33a <_POSIX_signals_Check_signal+0xca><== NOT EXECUTED
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;
4c2c6: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
return false;
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
4c2ca: 282a 00d0 movel %a2@(208),%d4 <== NOT EXECUTED
api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;
4c2ce: 8084 orl %d4,%d0 <== NOT EXECUTED
/*
* We have to save the blocking information of the current wait queue
* because the signal handler may subsequently go on and put the thread
* on a wait queue, for its own purposes.
*/
memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,
4c2d0: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c2d6: 41e8 0020 lea %a0@(32),%a0 <== NOT EXECUTED
/*
* Block the signals requested in sa_mask
*/
saved_signals_blocked = api->signals_blocked;
api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;
4c2da: 2540 00d0 movel %d0,%a2@(208) <== NOT EXECUTED
/*
* We have to save the blocking information of the current wait queue
* because the signal handler may subsequently go on and put the thread
* on a wait queue, for its own purposes.
*/
memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,
4c2de: 4878 0028 pea 28 <OPER2+0x14> <== NOT EXECUTED
4c2e2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c2e4: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
4c2e8: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Here, the signal handler function executes
*/
switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {
4c2ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c2f2: 41f9 0005 dfc4 lea 5dfc4 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
4c2f8: 7002 moveq #2,%d0 <== NOT EXECUTED
4c2fa: b0b0 3800 cmpl %a0@(00000000,%d3:l),%d0 <== NOT EXECUTED
4c2fe: 660e bnes 4c30e <_POSIX_signals_Check_signal+0x9e><== NOT EXECUTED
case SA_SIGINFO:
(*_POSIX_signals_Vectors[ signo ].sa_sigaction)(
4c300: 42a7 clrl %sp@- <== NOT EXECUTED
4c302: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4c304: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c306: 4e93 jsr %a3@ <== NOT EXECUTED
signo,
&siginfo_struct,
NULL /* context is undefined per 1003.1b-1993, p. 66 */
);
break;
4c308: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c30c: 6006 bras 4c314 <_POSIX_signals_Check_signal+0xa4><== NOT EXECUTED
default:
(*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );
4c30e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c310: 4e93 jsr %a3@ <== NOT EXECUTED
break;
4c312: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Restore the blocking information
*/
memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,
4c314: 4878 0028 pea 28 <OPER2+0x14> <== NOT EXECUTED
4c318: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
4c31c: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c322: 41e8 0020 lea %a0@(32),%a0 <== NOT EXECUTED
4c326: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c328: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
return true;
4c32e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
sizeof( Thread_Wait_information ));
/*
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
4c332: 2544 00d0 movel %d4,%a2@(208) <== NOT EXECUTED
return true;
4c336: 7001 moveq #1,%d0 <== NOT EXECUTED
4c338: 6002 bras 4c33c <_POSIX_signals_Check_signal+0xcc><== NOT EXECUTED
/*
* Just to prevent sending a signal which is currently being ignored.
*/
if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )
return false;
4c33a: 4200 clrb %d0 <== NOT EXECUTED
* Restore the previous set of blocked signals
*/
api->signals_blocked = saved_signals_blocked;
return true;
}
4c33c: 4cee 0c3c ffb4 moveml %fp@(-76),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4c342: 4e5e unlk %fp <== NOT EXECUTED
...
0004c8c0 <_POSIX_signals_Clear_process_signals>:
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4c8c0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Clear_process_signals(
int signo
)
{
4c8c6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c8ca: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
4c8ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c8d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
clear_signal = true;
mask = signo_to_mask( signo );
ISR_Level level;
_ISR_Disable( level );
4c8d2: 40c2 movew %sr,%d2 <== NOT EXECUTED
4c8d4: 8082 orl %d2,%d0 <== NOT EXECUTED
4c8d6: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4c8d8: 2601 movel %d1,%d3 <== NOT EXECUTED
4c8da: 2001 movel %d1,%d0 <== NOT EXECUTED
4c8dc: 41f9 0005 dfc4 lea 5dfc4 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
4c8e2: e58b lsll #2,%d3 <== NOT EXECUTED
4c8e4: e988 lsll #4,%d0 <== NOT EXECUTED
4c8e6: 9083 subl %d3,%d0 <== NOT EXECUTED
4c8e8: 7602 moveq #2,%d3 <== NOT EXECUTED
4c8ea: b6b0 0800 cmpl %a0@(00000000,%d0:l),%d3 <== NOT EXECUTED
4c8ee: 6614 bnes 4c904 <_POSIX_signals_Clear_process_signals+0x44><== 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 );
4c8f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c8f2: d1fc 0005 e1c0 addal #385472,%a0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )
4c8f8: 43f9 0005 e1bc lea 5e1bc <_POSIX_signals_Siginfo>,%a1 <== NOT EXECUTED
4c8fe: b1f1 0800 cmpal %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED
4c902: 660e bnes 4c912 <_POSIX_signals_Clear_process_signals+0x52><== NOT EXECUTED
4c904: 5381 subql #1,%d1 <== NOT EXECUTED
4c906: 7001 moveq #1,%d0 <== NOT EXECUTED
4c908: e3a8 lsll %d1,%d0 <== NOT EXECUTED
clear_signal = false;
}
if ( clear_signal ) {
_POSIX_signals_Pending &= ~mask;
4c90a: 4680 notl %d0 <== NOT EXECUTED
4c90c: c1b9 0005 e1b8 andl %d0,5e1b8 <_POSIX_signals_Pending> <== NOT EXECUTED
}
_ISR_Enable( level );
4c912: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4c914: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c916: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c918: 4e5e unlk %fp <== NOT EXECUTED
0004c348 <_POSIX_signals_Clear_signals>:
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
4c348: 7001 moveq #1,%d0 <== NOT EXECUTED
int signo,
siginfo_t *info,
bool is_global,
bool check_blocked
)
{
4c34a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4c34e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4c352: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
4c356: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4c35a: 2202 movel %d2,%d1 <== NOT EXECUTED
4c35c: 5381 subql #1,%d1 <== NOT EXECUTED
4c35e: 1a2e 0017 moveb %fp@(23),%d5 <== NOT EXECUTED
4c362: e3a8 lsll %d1,%d0 <== NOT EXECUTED
/* set blocked signals based on if checking for them, SIGNAL_ALL_MASK
* insures that no signals are blocked and all are checked.
*/
if ( check_blocked )
4c364: 4a2e 001b tstb %fp@(27) <== NOT EXECUTED
4c368: 6708 beqs 4c372 <_POSIX_signals_Clear_signals+0x2a><== NOT EXECUTED
signals_blocked = ~api->signals_blocked;
4c36a: 2828 00d0 movel %a0@(208),%d4 <== NOT EXECUTED
4c36e: 4684 notl %d4 <== NOT EXECUTED
4c370: 6002 bras 4c374 <_POSIX_signals_Clear_signals+0x2c><== NOT EXECUTED
else
signals_blocked = SIGNAL_ALL_MASK;
4c372: 78ff moveq #-1,%d4 <== NOT EXECUTED
/* XXX is this right for siginfo type signals? */
/* XXX are we sure they can be cleared the same way? */
_ISR_Disable( level );
4c374: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
4c37a: 40c3 movew %sr,%d3 <== NOT EXECUTED
4c37c: 8283 orl %d3,%d1 <== NOT EXECUTED
4c37e: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( is_global ) {
4c380: 4a05 tstb %d5 <== NOT EXECUTED
4c382: 6700 0094 beqw 4c418 <_POSIX_signals_Clear_signals+0xd0><== NOT EXECUTED
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
4c386: c0b9 0005 e1b8 andl 5e1b8 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
4c38c: c084 andl %d4,%d0 <== NOT EXECUTED
4c38e: 6700 00a0 beqw 4c430 <_POSIX_signals_Clear_signals+0xe8><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
4c392: 2202 movel %d2,%d1 <== NOT EXECUTED
4c394: 2002 movel %d2,%d0 <== NOT EXECUTED
4c396: 41f9 0005 dfc4 lea 5dfc4 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
4c39c: e589 lsll #2,%d1 <== NOT EXECUTED
4c39e: e988 lsll #4,%d0 <== NOT EXECUTED
4c3a0: 9081 subl %d1,%d0 <== NOT EXECUTED
4c3a2: 7202 moveq #2,%d1 <== NOT EXECUTED
4c3a4: b2b0 0800 cmpl %a0@(00000000,%d0:l),%d1 <== NOT EXECUTED
4c3a8: 6662 bnes 4c40c <_POSIX_signals_Clear_signals+0xc4><== NOT EXECUTED
do_callout = true;
}
}
_ISR_Enable( level );
return do_callout;
}
4c3aa: 43f9 0005 e1bc lea 5e1bc <_POSIX_signals_Siginfo>,%a1 <== 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 );
4c3b0: 2200 movel %d0,%d1 <== NOT EXECUTED
4c3b2: 0681 0005 e1c0 addil #385472,%d1 <== NOT EXECUTED
4c3b8: 2471 0800 moveal %a1@(00000000,%d0:l),%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
4c3bc: b28a cmpl %a2,%d1 <== NOT EXECUTED
4c3be: 670e beqs 4c3ce <_POSIX_signals_Clear_signals+0x86><== 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;
4c3c0: 2052 moveal %a2@,%a0 <== NOT EXECUTED
head->next = new_first;
4c3c2: 2388 0800 movel %a0,%a1@(00000000,%d0:l) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4c3c6: d089 addl %a1,%d0 <== NOT EXECUTED
4c3c8: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
4c3cc: 6002 bras 4c3d0 <_POSIX_signals_Clear_signals+0x88><== NOT EXECUTED
)
{
if ( !_Chain_Is_empty(the_chain))
return _Chain_Get_first_unprotected(the_chain);
else
return NULL;
4c3ce: 95ca subal %a2,%a2 <== NOT EXECUTED
if ( is_global ) {
if ( mask & (_POSIX_signals_Pending & signals_blocked) ) {
if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get_unprotected( &_POSIX_signals_Siginfo[ signo ] );
_POSIX_signals_Clear_process_signals( signo );
4c3d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c3d2: 4eb9 0004 c8c0 jsr 4c8c0 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED
/*
* It may be impossible to get here with an empty chain
* BUT until that is proven we need to be defensive and
* protect against it.
*/
if ( psiginfo ) {
4c3d8: 588f addql #4,%sp <== NOT EXECUTED
4c3da: 4a8a tstl %a2 <== NOT EXECUTED
4c3dc: 672e beqs 4c40c <_POSIX_signals_Clear_signals+0xc4><== NOT EXECUTED
*info = psiginfo->Info;
4c3de: 4878 000c pea c <OPER1> <== NOT EXECUTED
4c3e2: 486a 0008 pea %a2@(8) <== NOT EXECUTED
4c3e6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4c3ea: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4c3f0: 2079 0005 e14c moveal 5e14c <_POSIX_signals_Inactive_siginfo+0x8>,%a0<== NOT EXECUTED
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
4c3f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
4c3fa: 24bc 0005 e148 movel #385352,%a2@ <== NOT EXECUTED
tail->previous = the_node;
4c400: 23ca 0005 e14c movel %a2,5e14c <_POSIX_signals_Inactive_siginfo+0x8><== NOT EXECUTED
old_last->next = the_node;
4c406: 208a movel %a2,%a0@ <== NOT EXECUTED
the_node->previous = old_last;
4c408: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
&psiginfo->Node
);
} else
do_callout = false;
}
_POSIX_signals_Clear_process_signals( signo );
4c40c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c40e: 4eb9 0004 c8c0 jsr 4c8c0 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED
4c414: 588f addql #4,%sp <== NOT EXECUTED
4c416: 6014 bras 4c42c <_POSIX_signals_Clear_signals+0xe4><== NOT EXECUTED
do_callout = true;
}
} else {
if ( mask & (api->signals_pending & signals_blocked) ) {
4c418: 2428 00d4 movel %a0@(212),%d2 <== NOT EXECUTED
4c41c: 2200 movel %d0,%d1 <== NOT EXECUTED
4c41e: c282 andl %d2,%d1 <== NOT EXECUTED
4c420: c284 andl %d4,%d1 <== NOT EXECUTED
4c422: 670c beqs 4c430 <_POSIX_signals_Clear_signals+0xe8><== NOT EXECUTED
api->signals_pending &= ~mask;
4c424: 4680 notl %d0 <== NOT EXECUTED
4c426: c082 andl %d2,%d0 <== NOT EXECUTED
4c428: 2140 00d4 movel %d0,%a0@(212) <== NOT EXECUTED
do_callout = true;
4c42c: 7001 moveq #1,%d0 <== NOT EXECUTED
4c42e: 6002 bras 4c432 <_POSIX_signals_Clear_signals+0xea><== NOT EXECUTED
bool do_callout;
POSIX_signals_Siginfo_node *psiginfo;
mask = signo_to_mask( signo );
do_callout = false;
4c430: 4200 clrb %d0 <== NOT EXECUTED
if ( mask & (api->signals_pending & signals_blocked) ) {
api->signals_pending &= ~mask;
do_callout = true;
}
}
_ISR_Enable( level );
4c432: 46c3 movew %d3,%sr <== NOT EXECUTED
return do_callout;
}
4c434: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
4c43a: 4e5e unlk %fp <== NOT EXECUTED
...
00046030 <_POSIX_signals_Get_lowest>:
sigset_t set
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
46030: 701b moveq #27,%d0 <== NOT EXECUTED
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
sigset_t set
)
{
46032: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
46036: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4603a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4603e: 7601 moveq #1,%d3 <== NOT EXECUTED
#include <rtems/posix/psignal.h>
#include <rtems/seterr.h>
#include <rtems/posix/time.h>
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
46040: 2200 movel %d0,%d1 <== NOT EXECUTED
46042: 5381 subql #1,%d1 <== NOT EXECUTED
46044: 2803 movel %d3,%d4 <== NOT EXECUTED
46046: e3ac lsll %d1,%d4 <== NOT EXECUTED
46048: 2204 movel %d4,%d1 <== NOT EXECUTED
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
if ( set & signo_to_mask( signo ) ) {
4604a: c282 andl %d2,%d1 <== NOT EXECUTED
4604c: 6626 bnes 46074 <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED
sigset_t set
)
{
int signo;
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
4604e: 5280 addql #1,%d0 <== NOT EXECUTED
46050: 123c 0020 moveb #32,%d1 <== NOT EXECUTED
46054: b280 cmpl %d0,%d1 <== NOT EXECUTED
46056: 66e8 bnes 46040 <_POSIX_signals_Get_lowest+0x10> <== NOT EXECUTED
46058: 7001 moveq #1,%d0 <== NOT EXECUTED
4605a: 7601 moveq #1,%d3 <== NOT EXECUTED
#include <rtems/posix/psignal.h>
#include <rtems/seterr.h>
#include <rtems/posix/time.h>
#include <rtems/score/isr.h>
int _POSIX_signals_Get_lowest(
4605c: 2200 movel %d0,%d1 <== NOT EXECUTED
4605e: 5381 subql #1,%d1 <== NOT EXECUTED
46060: 2803 movel %d3,%d4 <== NOT EXECUTED
46062: e3ac lsll %d1,%d4 <== NOT EXECUTED
46064: 2204 movel %d4,%d1 <== NOT EXECUTED
#if (SIGHUP != 1)
#error "Assumption that SIGHUP==1 violated!!"
#endif
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
if ( set & signo_to_mask( signo ) ) {
46066: c282 andl %d2,%d1 <== NOT EXECUTED
46068: 660a bnes 46074 <_POSIX_signals_Get_lowest+0x44> <== NOT EXECUTED
*/
#if (SIGHUP != 1)
#error "Assumption that SIGHUP==1 violated!!"
#endif
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
4606a: 5280 addql #1,%d0 <== NOT EXECUTED
4606c: 123c 001b moveb #27,%d1 <== NOT EXECUTED
46070: b280 cmpl %d0,%d1 <== NOT EXECUTED
46072: 66e8 bnes 4605c <_POSIX_signals_Get_lowest+0x2c> <== NOT EXECUTED
* a return 0. This routine will NOT be called unless a signal
* is pending in the set passed in.
*/
found_it:
return signo;
}
46074: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
46078: 4e5e unlk %fp <== NOT EXECUTED
00049eba <_POSIX_signals_Post_switch_extension>:
*/
void _POSIX_signals_Post_switch_extension(
Thread_Control *the_thread
)
{
49eba: 4e56 fff0 linkw %fp,#-16
POSIX_API_Control *api;
int signo;
ISR_Level level;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
49ebe: 206e 0008 moveal %fp@(8),%a0
*/
void _POSIX_signals_Post_switch_extension(
Thread_Control *the_thread
)
{
49ec2: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
POSIX_API_Control *api;
int signo;
ISR_Level level;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
49ec6: 2468 0102 moveal %a0@(258),%a2
/*
* api may be NULL in case of a thread close in progress
*/
if ( !api )
49eca: 4a8a tstl %a2
49ecc: 6770 beqs 49f3e <_POSIX_signals_Post_switch_extension+0x84><== NEVER TAKEN
*
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
49ece: 263c 0000 0700 movel #1792,%d3
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
_POSIX_signals_Check_signal( api, signo, false );
49ed4: 47f9 0004 c270 lea 4c270 <_POSIX_signals_Check_signal>,%a3
*
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
49eda: 2003 movel %d3,%d0
49edc: 40c1 movew %sr,%d1
49ede: 8081 orl %d1,%d0
49ee0: 46c0 movew %d0,%sr
if ( !(~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending)) ) {
49ee2: 2039 0005 e1b8 movel 5e1b8 <_POSIX_signals_Pending>,%d0
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
if ( !(~api->signals_blocked &
49ee8: 242a 00d0 movel %a2@(208),%d2
49eec: 4682 notl %d2
(api->signals_pending | _POSIX_signals_Pending)) ) {
49eee: 80aa 00d4 orl %a2@(212),%d0
* The first thing done is to check there are any signals to be
* processed at all. No point in doing this loop otherwise.
*/
while (1) {
_ISR_Disable( level );
if ( !(~api->signals_blocked &
49ef2: c082 andl %d2,%d0
49ef4: 6604 bnes 49efa <_POSIX_signals_Post_switch_extension+0x40><== NEVER TAKEN
(api->signals_pending | _POSIX_signals_Pending)) ) {
_ISR_Enable( level );
49ef6: 46c1 movew %d1,%sr
49ef8: 6044 bras 49f3e <_POSIX_signals_Post_switch_extension+0x84>
break;
}
_ISR_Enable( level );
49efa: 46c1 movew %d1,%sr <== NOT EXECUTED
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
49efc: 741b moveq #27,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
49efe: 42a7 clrl %sp@- <== NOT EXECUTED
49f00: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49f02: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49f04: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
49f06: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49f0a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
49f0c: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
49f0e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49f10: 4e93 jsr %a3@ <== NOT EXECUTED
_ISR_Enable( level );
break;
}
_ISR_Enable( level );
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
49f12: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
49f16: 7020 moveq #32,%d0 <== NOT EXECUTED
49f18: b082 cmpl %d2,%d0 <== NOT EXECUTED
49f1a: 66e2 bnes 49efe <_POSIX_signals_Post_switch_extension+0x44><== NOT EXECUTED
49f1c: 7401 moveq #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
_POSIX_signals_Check_signal( api, signo, false );
49f1e: 42a7 clrl %sp@- <== NOT EXECUTED
49f20: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49f22: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49f24: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, true );
49f26: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49f2a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
49f2c: 5282 addql #1,%d2 <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
49f2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49f30: 4e93 jsr %a3@ <== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
/* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {
49f32: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
49f36: 701b moveq #27,%d0 <== NOT EXECUTED
49f38: b082 cmpl %d2,%d0 <== NOT EXECUTED
49f3a: 66e2 bnes 49f1e <_POSIX_signals_Post_switch_extension+0x64><== NOT EXECUTED
49f3c: 609c bras 49eda <_POSIX_signals_Post_switch_extension+0x20><== NOT EXECUTED
_POSIX_signals_Check_signal( api, signo, false );
_POSIX_signals_Check_signal( api, signo, true );
}
}
}
49f3e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
49f44: 4e5e unlk %fp <== NOT EXECUTED
0005a29c <_POSIX_signals_Set_process_signals>:
sigset_t mask
)
{
ISR_Level level;
_ISR_Disable( level );
5a29c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _POSIX_signals_Set_process_signals(
sigset_t mask
)
{
5a2a2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
5a2a6: 40c1 movew %sr,%d1 <== NOT EXECUTED
5a2a8: 8081 orl %d1,%d0 <== NOT EXECUTED
5a2aa: 46c0 movew %d0,%sr <== NOT EXECUTED
_POSIX_signals_Pending |= mask;
5a2ac: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5a2b0: 81b9 0005 e1b8 orl %d0,5e1b8 <_POSIX_signals_Pending> <== NOT EXECUTED
_ISR_Enable( level );
5a2b6: 46c1 movew %d1,%sr <== NOT EXECUTED
}
5a2b8: 4e5e unlk %fp <== NOT EXECUTED
00045418 <_POSIX_signals_Ualarm_TSR>:
void _POSIX_signals_Ualarm_TSR(
Objects_Id id __attribute__((unused)),
void *argument __attribute__((unused))
)
{
45418: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* Send a SIGALRM but if there is a problem, ignore it.
* It's OK, there isn't a way this should fail.
*/
(void) kill( getpid(), SIGALRM );
4541c: 4eb9 0004 2a1c jsr 42a1c <getpid> <== NOT EXECUTED
45422: 4878 000e pea e <OPER1+0x2> <== NOT EXECUTED
45426: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45428: 4eb9 0004 5230 jsr 45230 <kill> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Reset(
Watchdog_Control *the_watchdog
)
{
(void) _Watchdog_Remove( the_watchdog );
4542e: 4879 0005 fb0c pea 5fb0c <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED
45434: 4eb9 0004 8bf0 jsr 48bf0 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4543a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4543e: 203c 0005 fb0c movel #391948,%d0 <== NOT EXECUTED
45444: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
45448: 203c 0005 f3b8 movel #390072,%d0 <== NOT EXECUTED
4544e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
/*
* If the reset interval is non-zero, reschedule ourselves.
*/
_Watchdog_Reset( &_POSIX_signals_Ualarm_timer );
}
45452: 4e5e unlk %fp <== NOT EXECUTED
45454: 4ef9 0004 8ac8 jmp 48ac8 <_Watchdog_Insert> <== NOT EXECUTED
0005a2bc <_POSIX_signals_Unblock_thread>:
5a2bc: 7201 moveq #1,%d1 <== NOT EXECUTED
bool _POSIX_signals_Unblock_thread(
Thread_Control *the_thread,
int signo,
siginfo_t *info
)
{
5a2be: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5a2c2: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
5a2c6: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5a2ca: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
5a2ce: 2002 movel %d2,%d0 <== NOT EXECUTED
5a2d0: 5380 subql #1,%d0 <== NOT EXECUTED
5a2d2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5a2d6: e1a9 lsll %d0,%d1 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5a2d8: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
5a2dc: 2600 movel %d0,%d3 <== NOT EXECUTED
5a2de: 0283 1000 8000 andil #268468224,%d3 <== NOT EXECUTED
{
POSIX_API_Control *api;
sigset_t mask;
siginfo_t *the_info = NULL;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5a2e4: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED
/*
* Is the thread is specifically waiting for a signal?
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
5a2e8: 0c83 1000 8000 cmpil #268468224,%d3 <== NOT EXECUTED
5a2ee: 6650 bnes 5a340 <_POSIX_signals_Unblock_thread+0x84><== NOT EXECUTED
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
5a2f0: 2001 movel %d1,%d0 <== NOT EXECUTED
5a2f2: c0aa 0030 andl %a2@(48),%d0 <== NOT EXECUTED
5a2f6: 660c bnes 5a304 <_POSIX_signals_Unblock_thread+0x48><== NOT EXECUTED
5a2f8: 2028 00d0 movel %a0@(208),%d0 <== NOT EXECUTED
5a2fc: 4680 notl %d0 <== NOT EXECUTED
5a2fe: c280 andl %d0,%d1 <== NOT EXECUTED
5a300: 6700 00a8 beqw 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5a304: 7004 moveq #4,%d0 <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
5a306: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
*/
if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
the_thread->Wait.return_code = EINTR;
5a30a: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
5a30e: 4a89 tstl %a1 <== NOT EXECUTED
5a310: 660e bnes 5a320 <_POSIX_signals_Unblock_thread+0x64><== NOT EXECUTED
the_info->si_signo = signo;
the_info->si_code = SI_USER;
5a312: 7201 moveq #1,%d1 <== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
the_info = (siginfo_t *) the_thread->Wait.return_argument;
if ( !info ) {
the_info->si_signo = signo;
5a314: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_info->si_code = SI_USER;
5a316: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
the_info->si_value.sival_int = 0;
5a31a: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
5a31e: 6012 bras 5a332 <_POSIX_signals_Unblock_thread+0x76><== NOT EXECUTED
} else {
*the_info = *info;
5a320: 4878 000c pea c <OPER1> <== NOT EXECUTED
5a324: 2f09 movel %a1,%sp@- <== NOT EXECUTED
5a326: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a328: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
5a32e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
_Thread_queue_Extract_with_proxy( the_thread );
5a332: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a334: 4eb9 0004 7de0 jsr 47de0 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
return true;
5a33a: 588f addql #4,%sp <== NOT EXECUTED
5a33c: 7001 moveq #1,%d0 <== NOT EXECUTED
5a33e: 606c bras 5a3ac <_POSIX_signals_Unblock_thread+0xf0><== NOT EXECUTED
}
/*
* Thread is not waiting due to a sigwait.
*/
if ( ~api->signals_blocked & mask ) {
5a340: 2428 00d0 movel %a0@(208),%d2 <== NOT EXECUTED
5a344: 4682 notl %d2 <== NOT EXECUTED
5a346: c282 andl %d2,%d1 <== NOT EXECUTED
5a348: 6760 beqs 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
* it is not blocked, THEN
* we need to dispatch at the end of this ISR.
* + Any other combination, do nothing.
*/
if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
5a34a: 0800 001c btst #28,%d0 <== NOT EXECUTED
5a34e: 673e beqs 5a38e <_POSIX_signals_Unblock_thread+0xd2><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
5a350: 7204 moveq #4,%d1 <== NOT EXECUTED
5a352: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
5a356: 2200 movel %d0,%d1 <== NOT EXECUTED
5a358: 0281 0003 bee0 andil #245472,%d1 <== NOT EXECUTED
/*
* In pthread_cond_wait, a thread will be blocking on a thread
* queue, but is also interruptible by a POSIX signal.
*/
if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
5a35e: 670c beqs 5a36c <_POSIX_signals_Unblock_thread+0xb0><== NOT EXECUTED
_Thread_queue_Extract_with_proxy( the_thread );
5a360: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a362: 4eb9 0004 7de0 jsr 47de0 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
5a368: 588f addql #4,%sp <== NOT EXECUTED
5a36a: 603e bras 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
else if ( _States_Is_delaying(the_thread->current_state) ) {
5a36c: 44c0 movew %d0,%ccr <== NOT EXECUTED
5a36e: 6a3a bpls 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
5a370: 486a 0048 pea %a2@(72) <== NOT EXECUTED
5a374: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
5a37a: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
5a380: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a382: 4eb9 0004 743c jsr 4743c <_Thread_Clear_state> <== NOT EXECUTED
5a388: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a38c: 601c bras 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
_Thread_Unblock( the_thread );
}
} else if ( the_thread->current_state == STATES_READY ) {
5a38e: 4a80 tstl %d0 <== NOT EXECUTED
5a390: 6618 bnes 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5a392: 4ab9 0005 df8e tstl 5df8e <_Per_CPU_Information+0x8> <== NOT EXECUTED
5a398: 6710 beqs 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
5a39a: b5f9 0005 df92 cmpal 5df92 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
5a3a0: 6608 bnes 5a3aa <_POSIX_signals_Unblock_thread+0xee><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
5a3a2: 7001 moveq #1,%d0 <== NOT EXECUTED
5a3a4: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
}
return false;
5a3aa: 4200 clrb %d0 <== NOT EXECUTED
}
5a3ac: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5a3b2: 4e5e unlk %fp <== NOT EXECUTED
...
00047248 <_Protected_heap_Extend>:
bool _Protected_heap_Extend(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
47248: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
bool extend_ok;
uintptr_t amount_extended;
_RTEMS_Lock_allocator();
4724c: 2f39 0005 e1f4 movel 5e1f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
47252: 4eb9 0004 6234 jsr 46234 <_API_Mutex_Lock> <== NOT EXECUTED
extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended);
47258: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4725c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
47260: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47264: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47268: 4eb9 0004 afe0 jsr 4afe0 <_Heap_Extend> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4726e: 2f39 0005 e1f4 movel 5e1f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
47274: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
47278: 4eb9 0004 6294 jsr 46294 <_API_Mutex_Unlock> <== NOT EXECUTED
return extend_ok;
}
4727e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47282: 4e5e unlk %fp <== NOT EXECUTED
...
0004b330 <_Protected_heap_Get_free_information>:
bool _Protected_heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4b330: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* TBD: _Heap_Get_free_information does not error check or return status.
*/
_RTEMS_Lock_allocator();
4b334: 2f39 0006 3454 movel 63454 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4b33a: 4eb9 0004 9a28 jsr 49a28 <_API_Mutex_Lock> <== NOT EXECUTED
_Heap_Get_free_information( the_heap, info );
4b340: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b344: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4b348: 4eb9 0004 f284 jsr 4f284 <_Heap_Get_free_information> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4b34e: 2f39 0006 3454 movel 63454 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4b354: 4eb9 0004 9a88 jsr 49a88 <_API_Mutex_Unlock> <== NOT EXECUTED
return true;
}
4b35a: 7001 moveq #1,%d0 <== NOT EXECUTED
4b35c: 4e5e unlk %fp <== NOT EXECUTED
00047608 <_Protected_heap_Get_information>:
bool _Protected_heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
47608: 4e56 0000 linkw %fp,#0
4760c: 2f03 movel %d3,%sp@-
4760e: 262e 000c movel %fp@(12),%d3
47612: 2f02 movel %d2,%sp@-
47614: 242e 0008 movel %fp@(8),%d2
if ( !the_heap )
47618: 672e beqs 47648 <_Protected_heap_Get_information+0x40><== NEVER TAKEN
return false;
if ( !the_info )
4761a: 4a83 tstl %d3
4761c: 672a beqs 47648 <_Protected_heap_Get_information+0x40><== NEVER TAKEN
return false;
_RTEMS_Lock_allocator();
4761e: 2f39 0005 e4d8 movel 5e4d8 <_RTEMS_Allocator_Mutex>,%sp@-
47624: 4eb9 0004 65bc jsr 465bc <_API_Mutex_Lock>
_Heap_Get_information( the_heap, the_info );
4762a: 2f03 movel %d3,%sp@-
4762c: 2f02 movel %d2,%sp@-
4762e: 4eb9 0004 b7ac jsr 4b7ac <_Heap_Get_information>
_RTEMS_Unlock_allocator();
47634: 2f39 0005 e4d8 movel 5e4d8 <_RTEMS_Allocator_Mutex>,%sp@-
4763a: 4eb9 0004 661c jsr 4661c <_API_Mutex_Unlock>
return true;
47640: 4fef 0010 lea %sp@(16),%sp
47644: 7001 moveq #1,%d0
47646: 6002 bras 4764a <_Protected_heap_Get_information+0x42>
{
if ( !the_heap )
return false;
if ( !the_info )
return false;
47648: 4200 clrb %d0
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
}
4764a: 242e fff8 movel %fp@(-8),%d2
4764e: 262e fffc movel %fp@(-4),%d3
47652: 4e5e unlk %fp
...
0005a4c0 <_Protected_heap_Resize_block>:
bool _Protected_heap_Resize_block(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
5a4c0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
5a4c4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
5a4c6: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5a4cc: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Resize_block(
5a4d2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
5a4d6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5a4da: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5a4de: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5a4e2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5a4e6: 4eb9 0005 a50c jsr 5a50c <_Heap_Resize_block> <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5a4ec: 2f39 0005 dbc8 movel 5dbc8 <_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(
5a4f2: 2400 movel %d0,%d2 <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5a4f4: 4eb9 0004 5f80 jsr 45f80 <_API_Mutex_Unlock> <== NOT EXECUTED
return (status == HEAP_RESIZE_SUCCESSFUL);
5a4fa: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5a4fe: 4a82 tstl %d2 <== NOT EXECUTED
5a500: 57c0 seq %d0 <== NOT EXECUTED
}
5a502: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5a506: 4480 negl %d0 <== NOT EXECUTED
5a508: 4e5e unlk %fp <== NOT EXECUTED
0004b40c <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4b40c: 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 ) {
4b410: 2039 0006 3394 movel 63394 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4b416: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4b41a: 4284 clrl %d4 <== NOT EXECUTED
4b41c: 182e 0013 moveb %fp@(19),%d4 <== NOT EXECUTED
4b420: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4b424: 262e 000c movel %fp@(12),%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 ) {
4b428: 4a80 tstl %d0 <== NOT EXECUTED
4b42a: 663a bnes 4b466 <_Protected_heap_Walk+0x5a> <== NOT EXECUTED
_RTEMS_Lock_allocator();
4b42c: 2f39 0006 3454 movel 63454 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4b432: 4eb9 0004 9a28 jsr 49a28 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4b438: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b43a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b43c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b43e: 4eb9 0004 a72e jsr 4a72e <_Heap_Walk> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4b444: 2f39 0006 3454 movel 63454 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4b44a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4b44e: 4eb9 0004 9a88 jsr 49a88 <_API_Mutex_Unlock> <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4b454: 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();
4b458: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4b45c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4b462: 4e5e unlk %fp <== NOT EXECUTED
4b464: 4e75 rts <== 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 );
4b466: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED
4b46a: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
4b46e: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return status;
}
4b472: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4b478: 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 );
4b47a: 4ef9 0004 a72e jmp 4a72e <_Heap_Walk> <== NOT EXECUTED
0004a8ec <_RTEMS_Tasks_Invoke_task_variable_dtor>:
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4a8ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
4a8f0: 2039 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4a8f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a8f8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
4a8fc: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
if (_Thread_Is_executing(the_thread)) {
4a900: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
4a904: 660c bnes 4a912 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x26><== NOT EXECUTED
value = *tvp->ptr;
4a906: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
4a90a: 2011 movel %a1@,%d0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4a90c: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED
4a910: 6004 bras 4a916 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x2a><== NOT EXECUTED
} else {
value = tvp->tval;
4a912: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
}
if ( dtor )
4a916: 4a88 tstl %a0 <== NOT EXECUTED
4a918: 6706 beqs 4a920 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x34><== NOT EXECUTED
(*dtor)(value);
4a91a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a91c: 4e90 jsr %a0@ <== NOT EXECUTED
4a91e: 588f addql #4,%sp <== NOT EXECUTED
_Workspace_Free(tvp);
4a920: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4a924: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a928: 4e5e unlk %fp <== NOT EXECUTED
}
if ( dtor )
(*dtor)(value);
_Workspace_Free(tvp);
4a92a: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free> <== NOT EXECUTED
0004a82c <_RTEMS_tasks_Create_extension>:
bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4a82c: 4e56 0000 linkw %fp,#0
4a830: 2f0a movel %a2,%sp@-
4a832: 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() )
4a836: 4a39 0005 c224 tstb 5c224 <Configuration_RTEMS_API+0x4>
4a83c: 6704 beqs 4a842 <_RTEMS_tasks_Create_extension+0x16>
/*
* 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 );
4a83e: 705e moveq #94,%d0
4a840: 6002 bras 4a844 <_RTEMS_tasks_Create_extension+0x18>
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
4a842: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4a844: 2f00 movel %d0,%sp@-
4a846: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
if ( !api )
4a84c: 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 );
4a84e: 2040 moveal %d0,%a0
if ( !api )
4a850: 4a80 tstl %d0
4a852: 673e beqs 4a892 <_RTEMS_tasks_Create_extension+0x66><== NEVER TAKEN
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4a854: 2540 00fe movel %d0,%a2@(254)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4a858: 4200 clrb %d0
api->pending_events = EVENT_SETS_NONE_PENDING;
4a85a: 4290 clrl %a0@
4a85c: 1140 0008 moveb %d0,%a0@(8)
api->event_condition = 0;
4a860: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4a864: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4a868: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4a86c: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4a870: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4a874: 42a8 001a clrl %a0@(26)
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
4a878: 42aa 010a clrl %a2@(266)
if ( rtems_configuration_get_notepads_enabled() ) {
4a87c: 4a39 0005 c224 tstb 5c224 <Configuration_RTEMS_API+0x4>
4a882: 6712 beqs 4a896 <_RTEMS_tasks_Create_extension+0x6a>
* 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(
4a884: 41e8 001e lea %a0@(30),%a0
4a888: 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;
4a88a: 4298 clrl %a0@+
4a88c: 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++)
4a88e: 66fa bnes 4a88a <_RTEMS_tasks_Create_extension+0x5e>
4a890: 6004 bras 4a896 <_RTEMS_tasks_Create_extension+0x6a>
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4a892: 4200 clrb %d0 <== NOT EXECUTED
4a894: 6002 bras 4a898 <_RTEMS_tasks_Create_extension+0x6c><== NOT EXECUTED
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4a896: 7001 moveq #1,%d0
}
4a898: 246e fffc moveal %fp@(-4),%a2
4a89c: 4e5e unlk %fp <== NOT EXECUTED
0004a7e6 <_RTEMS_tasks_Delete_extension>:
void _RTEMS_tasks_Delete_extension(
Thread_Control *executing,
Thread_Control *deleted
)
{
4a7e6: 4e56 fff4 linkw %fp,#-12
4a7ea: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4a7ee: 246e 000c moveal %fp@(12),%a2
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
next = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4a7f2: 47f9 0004 a8ec lea 4a8ec <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3
/*
* Free per task variable memory
*/
tvp = deleted->task_variables;
4a7f8: 206a 010a moveal %a2@(266),%a0
deleted->task_variables = NULL;
4a7fc: 42aa 010a clrl %a2@(266)
while (tvp) {
4a800: 600c bras 4a80e <_RTEMS_tasks_Delete_extension+0x28>
next = (rtems_task_variable_t *)tvp->next;
4a802: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4a804: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4a806: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a808: 4e93 jsr %a3@ <== NOT EXECUTED
tvp = next;
4a80a: 508f addql #8,%sp <== NOT EXECUTED
4a80c: 2042 moveal %d2,%a0 <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4a80e: 4a88 tstl %a0
4a810: 66f0 bnes 4a802 <_RTEMS_tasks_Delete_extension+0x1c><== NEVER TAKEN
/*
* Free API specific memory
*/
(void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] );
4a812: 2f2a 00fe movel %a2@(254),%sp@-
4a816: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free>
deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL;
4a81c: 588f addql #4,%sp
4a81e: 42aa 00fe clrl %a2@(254)
}
4a822: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4a828: 4e5e unlk %fp <== NOT EXECUTED
0004a774 <_RTEMS_tasks_Post_switch_extension>:
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4a774: 4e56 ffec linkw %fp,#-20
RTEMS_API_Control *api;
ASR_Information *asr;
rtems_signal_set signal_set;
Modes_Control prev_mode;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4a778: 206e 0008 moveal %fp@(8),%a0
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4a77c: 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 ];
4a780: 2468 00fe moveal %a0@(254),%a2
if ( !api )
4a784: 4a8a tstl %a2
4a786: 6754 beqs 4a7dc <_RTEMS_tasks_Post_switch_extension+0x68><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
4a788: 203c 0000 0700 movel #1792,%d0
4a78e: 40c1 movew %sr,%d1
4a790: 8081 orl %d1,%d0
4a792: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
4a794: 262a 0012 movel %a2@(18),%d3
asr->signals_posted = 0;
4a798: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
4a79c: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
4a79e: 4a83 tstl %d3
4a7a0: 673a beqs 4a7dc <_RTEMS_tasks_Post_switch_extension+0x68><== ALWAYS TAKEN
return;
asr->nest_level += 1;
4a7a2: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
4a7a6: 240e movel %fp,%d2 <== NOT EXECUTED
4a7a8: 5982 subql #4,%d2 <== NOT EXECUTED
4a7aa: 47f9 0004 c4cc lea 4c4cc <rtems_task_mode>,%a3 <== NOT EXECUTED
4a7b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a7b2: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4a7b8: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED
4a7bc: 4e93 jsr %a3@ <== NOT EXECUTED
(*asr->handler)( signal_set );
4a7be: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a7c0: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
4a7c4: 4e90 jsr %a0@ <== NOT EXECUTED
asr->nest_level -= 1;
4a7c6: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4a7ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a7cc: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4a7d2: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4a7d6: 4e93 jsr %a3@ <== NOT EXECUTED
4a7d8: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4a7dc: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4a7e2: 4e5e unlk %fp <== NOT EXECUTED
0004a71e <_RTEMS_tasks_Switch_extension>:
void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4a71e: 4e56 0000 linkw %fp,#0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4a722: 206e 0008 moveal %fp@(8),%a0
4a726: 2068 010a moveal %a0@(266),%a0
while (tvp) {
4a72a: 600e bras 4a73a <_RTEMS_tasks_Switch_extension+0x1c>
tvp->tval = *tvp->ptr;
4a72c: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4a730: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4a734: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4a738: 2050 moveal %a0@,%a0 <== NOT EXECUTED
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4a73a: 4a88 tstl %a0
4a73c: 66ee bnes 4a72c <_RTEMS_tasks_Switch_extension+0xe><== NEVER TAKEN
tvp->tval = *tvp->ptr;
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
4a73e: 206e 000c moveal %fp@(12),%a0
4a742: 2068 010a moveal %a0@(266),%a0
while (tvp) {
4a746: 600e bras 4a756 <_RTEMS_tasks_Switch_extension+0x38>
tvp->gval = *tvp->ptr;
4a748: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4a74c: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED
*tvp->ptr = tvp->tval;
4a750: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4a754: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4a756: 4a88 tstl %a0
4a758: 66ee bnes 4a748 <_RTEMS_tasks_Switch_extension+0x2a><== NEVER TAKEN
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4a75a: 4e5e unlk %fp <== NOT EXECUTED
0004611c <_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
)
{
4611c: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
46120: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
46124: 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 );
46128: 240e movel %fp,%d2 <== NOT EXECUTED
4612a: 5182 subql #8,%d2 <== NOT EXECUTED
_Timestamp_Subtract(
4612c: 45f9 0004 9978 lea 49978 <_Timespec_Subtract>,%a2 <== NOT EXECUTED
)
{
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
#endif
Thread_Control *owning_thread = the_period->owner;
46132: 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 );
46136: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46138: 4eb9 0004 78c4 jsr 478c4 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract(
4613e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
46142: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46144: 486b 004c pea %a3@(76) <== NOT EXECUTED
46148: 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) {
4614a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#endif
/*
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
4614e: 202c 0082 movel %a4@(130),%d0 <== NOT EXECUTED
46152: 222c 0086 movel %a4@(134),%d1 <== NOT EXECUTED
46156: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
4615a: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
4615e: b9f9 0005 fc0c cmpal 5fc0c <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED
46164: 6644 bnes 461aa <_Rate_monotonic_Get_status+0x8e><== NOT EXECUTED
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
46166: 260e movel %fp,%d3 <== NOT EXECUTED
46168: 0683 ffff ffe8 addil #-24,%d3 <== 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))
4616e: 47eb 0044 lea %a3@(68),%a3 <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
46172: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46174: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46176: 4879 0005 f84e pea 5f84e <_Thread_Time_of_last_context_switch><== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
4617c: 5182 subql #8,%d2 <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
4617e: 4e92 jsr %a2@ <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
46180: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46182: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46184: 4eb9 0004 9850 jsr 49850 <_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))
4618a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4618c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4618e: 4eb9 0004 9948 jsr 49948 <_Timespec_Less_than> <== NOT EXECUTED
46194: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
46198: 4a00 tstb %d0 <== NOT EXECUTED
4619a: 6612 bnes 461ae <_Rate_monotonic_Get_status+0x92><== NOT EXECUTED
return false;
/* used = current cpu usage - cpu usage at start of period */
_Timestamp_Subtract(
4619c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
461a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
461a2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
461a4: 4e92 jsr %a2@ <== NOT EXECUTED
461a6: 4fef 000c lea %sp@(12),%sp <== 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;
461aa: 7001 moveq #1,%d0 <== NOT EXECUTED
461ac: 6002 bras 461b0 <_Rate_monotonic_Get_status+0x94><== 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;
461ae: 4200 clrb %d0 <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
461b0: 4cee 1c0c ffd4 moveml %fp@(-44),%d2-%d3/%a2-%a4 <== NOT EXECUTED
461b6: 4e5e unlk %fp <== NOT EXECUTED
000461ba <_Rate_monotonic_Initiate_statistics>:
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
461ba: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
461be: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
461c2: 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 );
461c6: 260e movel %fp,%d3 <== NOT EXECUTED
461c8: 5183 subql #8,%d3 <== NOT EXECUTED
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
Thread_Control *owning_thread = the_period->owner;
461ca: 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 );
461ce: 2f03 movel %d3,%sp@- <== NOT EXECUTED
461d0: 4eb9 0004 78c4 jsr 478c4 <_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) {
461d6: 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;
461d8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
461dc: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
461e0: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
461e4: 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;
461e8: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED
461ec: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED
461f0: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
461f4: 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) {
461f8: b7f9 0005 fc0c cmpal 5fc0c <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
461fe: 6628 bnes 46228 <_Rate_monotonic_Initiate_statistics+0x6e><== 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
46200: 240e movel %fp,%d2 <== NOT EXECUTED
46202: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
/*
* Adjust the CPU time used to account for the time since last
* context switch.
*/
_Timespec_Subtract(
46208: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4620a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4620c: 4879 0005 f84e pea 5f84e <_Thread_Time_of_last_context_switch><== NOT EXECUTED
46212: 4eb9 0004 9978 jsr 49978 <_Timespec_Subtract> <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
46218: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4621a: 486a 0044 pea %a2@(68) <== NOT EXECUTED
4621e: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED
46224: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
#endif
}
46228: 4cee 0c0c ffe0 moveml %fp@(-32),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4622e: 4e5e unlk %fp <== NOT EXECUTED
000466e8 <_Rate_monotonic_Timeout>:
void _Rate_monotonic_Timeout(
Objects_Id id,
void *ignored
)
{
466e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
466ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
466ee: 486e fffc pea %fp@(-4) <== NOT EXECUTED
466f2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
466f6: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
466fc: 4eb9 0004 82e8 jsr 482e8 <_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 ) {
46702: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46706: 2440 moveal %d0,%a2 <== NOT EXECUTED
46708: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4670c: 6600 0096 bnew 467a4 <_Rate_monotonic_Timeout+0xbc> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_thread = the_period->owner;
46710: 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);
46714: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
46718: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
4671e: 673c beqs 4675c <_Rate_monotonic_Timeout+0x74> <== NOT EXECUTED
46720: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
46724: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED
46728: 6632 bnes 4675c <_Rate_monotonic_Timeout+0x74> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4672a: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
46730: 2f08 movel %a0,%sp@- <== NOT EXECUTED
46732: 4eb9 0004 8a64 jsr 48a64 <_Thread_Clear_state> <== NOT EXECUTED
the_thread->Wait.id == the_period->Object.id ) {
_Thread_Unblock( the_thread );
_Rate_monotonic_Initiate_statistics( the_period );
46738: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4673a: 4eb9 0004 61ba jsr 461ba <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46740: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46746: 486a 0010 pea %a2@(16) <== NOT EXECUTED
4674a: 4879 0005 f862 pea 5f862 <_Watchdog_Ticks_chain> <== NOT EXECUTED
46750: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
46756: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4675a: 603a bras 46796 <_Rate_monotonic_Timeout+0xae> <== NOT EXECUTED
} else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
4675c: 7001 moveq #1,%d0 <== NOT EXECUTED
4675e: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
46762: 662c bnes 46790 <_Rate_monotonic_Timeout+0xa8> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;
46764: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
46768: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
4676c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4676e: 4eb9 0004 61ba jsr 461ba <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46774: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4677a: 486a 0010 pea %a2@(16) <== NOT EXECUTED
4677e: 4879 0005 f862 pea 5f862 <_Watchdog_Ticks_chain> <== NOT EXECUTED
46784: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED
4678a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4678e: 6006 bras 46796 <_Rate_monotonic_Timeout+0xae> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else
the_period->state = RATE_MONOTONIC_EXPIRED;
46790: 7004 moveq #4,%d0 <== NOT EXECUTED
46792: 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;
46796: 2039 0005 f782 movel 5f782 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4679c: 5380 subql #1,%d0 <== NOT EXECUTED
4679e: 23c0 0005 f782 movel %d0,5f782 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
467a4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
467a8: 4e5e unlk %fp <== NOT EXECUTED
00046232 <_Rate_monotonic_Update_statistics>:
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
46232: 7004 moveq #4,%d0 <== NOT EXECUTED
}
void _Rate_monotonic_Update_statistics(
Rate_monotonic_Control *the_period
)
{
46234: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
46238: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4623a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4623e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
46240: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
46244: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
46248: 6604 bnes 4624e <_Rate_monotonic_Update_statistics+0x1c><== NOT EXECUTED
stats->missed_count++;
4624a: 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 );
4624e: 240e movel %fp,%d2 <== NOT EXECUTED
46250: 5182 subql #8,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
46252: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46254: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
46258: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4625a: 4eb9 0004 611c jsr 4611c <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
46260: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46264: 4a00 tstb %d0 <== NOT EXECUTED
46266: 6700 00b2 beqw 4631a <_Rate_monotonic_Update_statistics+0xe8><== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4626a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4626c: 486a 006c pea %a2@(108) <== NOT EXECUTED
46270: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
46276: 486a 005c pea %a2@(92) <== NOT EXECUTED
4627a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4627c: 4eb9 0004 9948 jsr 49948 <_Timespec_Less_than> <== NOT EXECUTED
46282: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46286: 4a00 tstb %d0 <== NOT EXECUTED
46288: 6710 beqs 4629a <_Rate_monotonic_Update_statistics+0x68><== NOT EXECUTED
stats->min_cpu_time = executed;
4628a: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4628e: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
46292: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
46296: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED
if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) )
4629a: 486a 0064 pea %a2@(100) <== NOT EXECUTED
4629e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
462a2: 4eb9 0004 9918 jsr 49918 <_Timespec_Greater_than> <== NOT EXECUTED
462a8: 508f addql #8,%sp <== NOT EXECUTED
462aa: 4a00 tstb %d0 <== NOT EXECUTED
462ac: 6710 beqs 462be <_Rate_monotonic_Update_statistics+0x8c><== NOT EXECUTED
stats->max_cpu_time = executed;
462ae: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
462b2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
462b6: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED
462ba: 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 );
462be: 240e movel %fp,%d2 <== NOT EXECUTED
462c0: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
462c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
462c8: 486a 0084 pea %a2@(132) <== NOT EXECUTED
462cc: 4eb9 0004 9850 jsr 49850 <_Timespec_Add_to> <== NOT EXECUTED
if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
462d2: 486a 0074 pea %a2@(116) <== NOT EXECUTED
462d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
462d8: 4eb9 0004 9948 jsr 49948 <_Timespec_Less_than> <== NOT EXECUTED
462de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
462e2: 4a00 tstb %d0 <== NOT EXECUTED
462e4: 6710 beqs 462f6 <_Rate_monotonic_Update_statistics+0xc4><== NOT EXECUTED
stats->min_wall_time = since_last_period;
462e6: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
462ea: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
462ee: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
462f2: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED
if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
462f6: 486a 007c pea %a2@(124) <== NOT EXECUTED
462fa: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
462fe: 4eb9 0004 9918 jsr 49918 <_Timespec_Greater_than> <== NOT EXECUTED
46304: 508f addql #8,%sp <== NOT EXECUTED
46306: 4a00 tstb %d0 <== NOT EXECUTED
46308: 6710 beqs 4631a <_Rate_monotonic_Update_statistics+0xe8><== NOT EXECUTED
stats->max_wall_time = since_last_period;
4630a: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
4630e: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
46312: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED
46316: 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
}
4631a: 242e ffe8 movel %fp@(-24),%d2 <== NOT EXECUTED
4631e: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
46322: 4e5e unlk %fp <== NOT EXECUTED
00058048 <_Region_Process_queue>:
*/
void _Region_Process_queue(
Region_Control *the_region
)
{
58048: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
5804c: 2039 0007 65ac movel 765ac <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
58052: 5280 addql #1,%d0 <== NOT EXECUTED
58054: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
58058: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
5805c: 23c0 0007 65ac movel %d0,765ac <_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();
58062: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%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 );
58068: 240b movel %a3,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
Region_Control *the_region,
uintptr_t size
)
{
return _Heap_Allocate( &the_region->Memory, size );
5806a: 260b movel %a3,%d3 <== NOT EXECUTED
5806c: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
58072: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED
58078: 4bf9 0005 347c lea 5347c <_Heap_Allocate_aligned_with_boundary>,%a5<== 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 );
5807e: 49f9 0005 8798 lea 58798 <_Thread_queue_Extract>,%a4 <== 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();
58084: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
5808a: 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 );
5808c: 283c 0005 889c movel #362652,%d4 <== NOT EXECUTED
58092: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58094: 2044 moveal %d4,%a0 <== NOT EXECUTED
58096: 4e90 jsr %a0@ <== NOT EXECUTED
if ( the_thread == NULL )
58098: 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 );
5809a: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5809c: 4a80 tstl %d0 <== NOT EXECUTED
5809e: 672c beqs 580cc <_Region_Process_queue+0x84> <== NOT EXECUTED
580a0: 42a7 clrl %sp@- <== NOT EXECUTED
580a2: 42a7 clrl %sp@- <== NOT EXECUTED
580a4: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
580a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
580aa: 4e95 jsr %a5@ <== NOT EXECUTED
the_segment = (void **) _Region_Allocate_segment(
the_region,
the_thread->Wait.count
);
if ( the_segment == NULL )
580ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
580b0: 4a80 tstl %d0 <== NOT EXECUTED
580b2: 6718 beqs 580cc <_Region_Process_queue+0x84> <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
580b4: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
580b8: 2080 movel %d0,%a0@ <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
580ba: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
580be: 2f0a movel %a2,%sp@- <== NOT EXECUTED
580c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
580c2: 4e94 jsr %a4@ <== NOT EXECUTED
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
580c4: 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;
580c6: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED
}
580ca: 60c6 bras 58092 <_Region_Process_queue+0x4a> <== NOT EXECUTED
_Thread_Enable_dispatch();
}
580cc: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
580d2: 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();
580d4: 4ef9 0005 4eb6 jmp 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
...
0004ae74 <_Scheduler_priority_Block>:
void _Scheduler_priority_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
4ae74: 4e56 0000 linkw %fp,#0
4ae78: 226e 000c moveal %fp@(12),%a1
4ae7c: 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;
4ae7e: 2069 008a moveal %a1@(138),%a0
4ae82: 2050 moveal %a0@,%a0
if ( _Chain_Has_only_one_node( ready ) ) {
4ae84: 2028 0008 movel %a0@(8),%d0
4ae88: b090 cmpl %a0@,%d0
4ae8a: 6636 bnes 4aec2 <_Scheduler_priority_Block+0x4e>
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 );
4ae8c: 2008 movel %a0,%d0
4ae8e: 5880 addql #4,%d0
head->next = tail;
head->previous = NULL;
4ae90: 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 );
4ae94: 2080 movel %d0,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4ae96: 2148 0008 movel %a0,%a0@(8)
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
4ae9a: 2069 008a moveal %a1@(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;
4ae9e: 2468 0004 moveal %a0@(4),%a2
4aea2: 3028 000e movew %a0@(14),%d0
4aea6: 3212 movew %a2@,%d1
4aea8: c081 andl %d1,%d0
4aeaa: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
4aeac: 6620 bnes 4aece <_Scheduler_priority_Block+0x5a>
_Priority_Major_bit_map &= the_priority_map->block_major;
4aeae: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
4aeb4: 3228 000c movew %a0@(12),%d1
4aeb8: c081 andl %d1,%d0
4aeba: 33c0 0005 dfa0 movew %d0,5dfa0 <_Priority_Major_bit_map>
4aec0: 600c bras 4aece <_Scheduler_priority_Block+0x5a>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4aec2: 2451 moveal %a1@,%a2
previous = the_node->previous;
4aec4: 2069 0004 moveal %a1@(4),%a0
next->previous = previous;
4aec8: 2548 0004 movel %a0,%a2@(4)
previous->next = next;
4aecc: 208a movel %a2,%a0@
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4aece: b3f9 0005 df96 cmpal 5df96 <_Per_CPU_Information+0x10>,%a1
4aed4: 6646 bnes 4af1c <_Scheduler_priority_Block+0xa8>
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 );
4aed6: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
4aedc: 4840 swap %d0
4aede: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4aee0: 41f9 0005 dfa4 lea 5dfa4 <_Priority_Bit_map>,%a0
4aee6: 0280 0000 ffff andil #65535,%d0
4aeec: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1
4aef0: 4841 swap %d1
4aef2: 04c1 ff1 %d1
_Scheduler_priority_Block_body(the_scheduler, the_thread);
}
4aef4: 206e 0008 moveal %fp@(8),%a0
return (_Priority_Bits_index( major ) << 4) +
4aef8: 0281 0000 ffff andil #65535,%d1
4aefe: e988 lsll #4,%d0
4af00: 2050 moveal %a0@,%a0
4af02: 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 ] ) )
4af04: 2200 movel %d0,%d1
4af06: e988 lsll #4,%d0
4af08: e589 lsll #2,%d1
4af0a: 9081 subl %d1,%d0
4af0c: d1c0 addal %d0,%a0
4af0e: 2018 movel %a0@+,%d0
4af10: b1c0 cmpal %d0,%a0
4af12: 6602 bnes 4af16 <_Scheduler_priority_Block+0xa2> <== ALWAYS TAKEN
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
4af14: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4af16: 23c0 0005 df96 movel %d0,5df96 <_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 ) )
4af1c: b3f9 0005 df92 cmpal 5df92 <_Per_CPU_Information+0xc>,%a1
4af22: 6608 bnes 4af2c <_Scheduler_priority_Block+0xb8>
_Thread_Dispatch_necessary = true;
4af24: 7001 moveq #1,%d0
4af26: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18>
4af2c: 245f moveal %sp@+,%a2
4af2e: 4e5e unlk %fp
...
000470c8 <_Scheduler_priority_Schedule>:
*/
void _Scheduler_priority_Schedule(
Scheduler_Control *the_scheduler
)
{
470c8: 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 );
470cc: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
470d2: 4840 swap %d0
470d4: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
470d6: 41f9 0005 dfa4 lea 5dfa4 <_Priority_Bit_map>,%a0
470dc: 0280 0000 ffff andil #65535,%d0
470e2: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1
470e6: 4841 swap %d1
470e8: 04c1 ff1 %d1
_Scheduler_priority_Schedule_body( the_scheduler );
}
470ea: 206e 0008 moveal %fp@(8),%a0
return (_Priority_Bits_index( major ) << 4) +
470ee: 0281 0000 ffff andil #65535,%d1
470f4: e988 lsll #4,%d0
470f6: 2050 moveal %a0@,%a0
470f8: 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 ] ) )
470fa: 2200 movel %d0,%d1
470fc: e988 lsll #4,%d0
470fe: e589 lsll #2,%d1
47100: 9081 subl %d1,%d0
47102: d1c0 addal %d0,%a0
47104: 2018 movel %a0@+,%d0
47106: b1c0 cmpal %d0,%a0
47108: 6602 bnes 4710c <_Scheduler_priority_Schedule+0x44><== ALWAYS TAKEN
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
4710a: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4710c: 23c0 0005 df96 movel %d0,5df96 <_Per_CPU_Information+0x10>
47112: 4e5e unlk %fp
...
00047134 <_Scheduler_priority_Thread_scheduler_free>:
void _Scheduler_priority_Thread_scheduler_free (
Scheduler_Control *the_scheduler __attribute__((unused)),
Thread_Control *the_thread
)
{
47134: 4e56 0000 linkw %fp,#0
_Workspace_Free( the_thread->scheduler.priority );
47138: 206e 000c moveal %fp@(12),%a0
4713c: 2d68 008a 0008 movel %a0@(138),%fp@(8)
}
47142: 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 );
47144: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free>
...
000471bc <_Scheduler_priority_Unblock>:
void _Scheduler_priority_Unblock (
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
471bc: 4e56 0000 linkw %fp,#0
471c0: 206e 000c moveal %fp@(12),%a0
471c4: 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 );
471c6: 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;
471ca: 2469 0004 moveal %a1@(4),%a2
471ce: 3029 000a movew %a1@(10),%d0
471d2: 3212 movew %a2@,%d1
471d4: 8081 orl %d1,%d0
471d6: 3480 movew %d0,%a2@
_Priority_Major_bit_map |= the_priority_map->ready_major;
471d8: 3229 0008 movew %a1@(8),%d1
471dc: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
471e2: 2251 moveal %a1@,%a1
471e4: 8081 orl %d1,%d0
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
471e6: 2469 0008 moveal %a1@(8),%a2
471ea: 33c0 0005 dfa0 movew %d0,5dfa0 <_Priority_Major_bit_map>
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
471f0: 2009 movel %a1,%d0
471f2: 5880 addql #4,%d0
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
471f4: 2348 0008 movel %a0,%a1@(8)
* 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 ) {
471f8: 2279 0005 df96 moveal 5df96 <_Per_CPU_Information+0x10>,%a1
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
471fe: 2080 movel %d0,%a0@
47200: 2028 0014 movel %a0@(20),%d0
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
47204: 2488 movel %a0,%a2@
the_node->previous = old_last;
47206: 214a 0004 movel %a2,%a0@(4)
4720a: b0a9 0014 cmpl %a1@(20),%d0
4720e: 641e bccs 4722e <_Scheduler_priority_Unblock+0x72>
_Thread_Heir = the_thread;
47210: 23c8 0005 df96 movel %a0,5df96 <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
47216: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
4721c: 4a28 0074 tstb %a0@(116)
47220: 6604 bnes 47226 <_Scheduler_priority_Unblock+0x6a>
47222: 4a80 tstl %d0
47224: 6608 bnes 4722e <_Scheduler_priority_Unblock+0x72><== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
47226: 7001 moveq #1,%d0
47228: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18>
_Scheduler_priority_Unblock_body(the_scheduler, the_thread);
}
4722e: 245f moveal %sp@+,%a2
47230: 4e5e unlk %fp <== NOT EXECUTED
00047234 <_Scheduler_priority_Yield>:
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
47234: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
47238: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
4723e: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
_ISR_Disable( level );
47242: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
47248: 2002 movel %d2,%d0 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
4724a: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED
4724e: 2251 moveal %a1@,%a1 <== NOT EXECUTED
_ISR_Disable( level );
47250: 40c1 movew %sr,%d1 <== NOT EXECUTED
47252: 8081 orl %d1,%d0 <== NOT EXECUTED
47254: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( !_Chain_Has_only_one_node( ready ) ) {
47256: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED
4725a: b091 cmpl %a1@,%d0 <== NOT EXECUTED
4725c: 6738 beqs 47296 <_Scheduler_priority_Yield+0x62> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
4725e: 2468 0004 moveal %a0@(4),%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 );
47262: 2009 movel %a1,%d0 <== NOT EXECUTED
47264: 5880 addql #4,%d0 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
47266: 2650 moveal %a0@,%a3 <== NOT EXECUTED
previous = the_node->previous;
next->previous = previous;
47268: 274a 0004 movel %a2,%a3@(4) <== NOT EXECUTED
previous->next = next;
4726c: 248b movel %a3,%a2@ <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
4726e: 2469 0008 moveal %a1@(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 );
47272: 2080 movel %d0,%a0@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
47274: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
old_last->next = the_node;
47278: 2488 movel %a0,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
4727a: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
_Chain_Extract_unprotected( &executing->Object.Node );
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
4727e: 2002 movel %d2,%d0 <== NOT EXECUTED
47280: 46c1 movew %d1,%sr <== NOT EXECUTED
47282: 8081 orl %d1,%d0 <== NOT EXECUTED
47284: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
47286: b1f9 0005 df96 cmpal 5df96 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
4728c: 6610 bnes 4729e <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
4728e: 23d1 0005 df96 movel %a1@,5df96 <_Per_CPU_Information+0x10><== NOT EXECUTED
47294: 6008 bras 4729e <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
47296: b1f9 0005 df96 cmpal 5df96 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
4729c: 6708 beqs 472a6 <_Scheduler_priority_Yield+0x72> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4729e: 7001 moveq #1,%d0 <== NOT EXECUTED
472a0: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18> <== NOT EXECUTED
_ISR_Enable( level );
472a6: 46c1 movew %d1,%sr <== NOT EXECUTED
}
472a8: 4cd7 0c04 moveml %sp@,%d2/%a2-%a3 <== NOT EXECUTED
472ac: 4e5e unlk %fp <== NOT EXECUTED
00045796 <_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];
}
45796: 41f9 0005 b2fe lea 5b2fe <_Semaphore_Translate_core_semaphore_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Semaphore_Translate_core_semaphore_return_code (
uint32_t status
)
{
4579c: 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];
}
457a0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
457a4: 4e5e unlk %fp <== NOT EXECUTED
457a6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00046764 <_TOD_Get_uptime_as_timespec>:
*/
void _TOD_Get_uptime_as_timespec(
struct timespec *uptime
)
{
46764: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
46768: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4676c: 4eb9 0004 af18 jsr 4af18 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_To_timespec( &uptime_ts, uptime );
46772: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46776: 588f addql #4,%sp <== NOT EXECUTED
46778: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4677c: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
}
46780: 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 );
46782: 2080 movel %d0,%a0@ <== NOT EXECUTED
46784: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
}
...
00047694 <_TOD_Set>:
*/
void _TOD_Set(
const struct timespec *time
)
{
47694: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47698: 2039 0006 79f8 movel 679f8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4769e: 5280 addql #1,%d0 <== NOT EXECUTED
476a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
476a2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
476a6: 23c0 0006 79f8 movel %d0,679f8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
long seconds;
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds = _TOD_Seconds_since_epoch();
476ac: 2039 0006 7aa2 movel 67aa2 <_TOD_Now>,%d0 <== NOT EXECUTED
476b2: 41f9 0004 9a24 lea 49a24 <_Watchdog_Adjust>,%a0 <== NOT EXECUTED
if ( time->tv_sec < seconds )
476b8: 2212 movel %a2@,%d1 <== NOT EXECUTED
476ba: b081 cmpl %d1,%d0 <== NOT EXECUTED
476bc: 6f0a bles 476c8 <_TOD_Set+0x34> <== NOT EXECUTED
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
476be: 9081 subl %d1,%d0 <== NOT EXECUTED
476c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
476c2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
476c6: 6006 bras 476ce <_TOD_Set+0x3a> <== NOT EXECUTED
476c8: 9280 subl %d0,%d1 <== NOT EXECUTED
476ca: 2f01 movel %d1,%sp@- <== NOT EXECUTED
476cc: 42a7 clrl %sp@- <== NOT EXECUTED
476ce: 4879 0006 7acc pea 67acc <_Watchdog_Seconds_chain> <== NOT EXECUTED
476d4: 4e90 jsr %a0@ <== 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 );
476d6: 23d2 0006 7aa2 movel %a2@,67aa2 <_TOD_Now> <== NOT EXECUTED
476dc: 588a addql #4,%a2 <== NOT EXECUTED
476de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
476e2: 23d2 0006 7aa6 movel %a2@,67aa6 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
476e8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
476ec: 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;
476ee: 7001 moveq #1,%d0 <== NOT EXECUTED
476f0: 13c0 0006 7a08 moveb %d0,67a08 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
476f6: 4ef9 0004 8b46 jmp 48b46 <_Thread_Enable_dispatch> <== NOT EXECUTED
00046418 <_TOD_Tickle_ticks>:
{
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
46418: 223c 0000 03e8 movel #1000,%d1
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
4641e: 4e56 fff8 linkw %fp,#-8
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
46422: 2039 0005 c260 movel 5c260 <Configuration+0xc>,%d0
46428: 4c01 0800 mulsl %d1,%d0
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
4642c: 2f0a movel %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 );
4642e: 45f9 0004 8228 lea 48228 <_Timespec_Add_to>,%a2
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
46434: 2f02 movel %d2,%sp@-
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
46436: 240e movel %fp,%d2
46438: 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() );
4643a: 2d40 fffc movel %d0,%fp@(-4)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
4643e: 2039 0005 dc32 movel 5dc32 <_Watchdog_Ticks_since_boot>,%d0
46444: 5280 addql #1,%d0
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
46446: 2f02 movel %d2,%sp@-
46448: 4879 0005 db82 pea 5db82 <_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() );
4644e: 42ae fff8 clrl %fp@(-8)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
46452: 23c0 0005 dc32 movel %d0,5dc32 <_Watchdog_Ticks_since_boot>
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
46458: 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 );
4645a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4645c: 4879 0005 dbb2 pea 5dbb2 <_TOD_Now> <== NOT EXECUTED
46462: 4e92 jsr %a2@ <== NOT EXECUTED
while ( seconds ) {
46464: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
46468: 45f9 0004 86b8 lea 486b8 <_Watchdog_Tickle>,%a2 <== 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 );
4646e: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( seconds ) {
46470: 600c bras 4647e <_TOD_Tickle_ticks+0x66> <== NOT EXECUTED
46472: 4879 0005 dbdc pea 5dbdc <_Watchdog_Seconds_chain> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
46478: 5382 subql #1,%d2 <== NOT EXECUTED
4647a: 4e92 jsr %a2@ <== NOT EXECUTED
4647c: 588f addql #4,%sp <== 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 ) {
4647e: 4a82 tstl %d2 <== NOT EXECUTED
46480: 66f0 bnes 46472 <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
}
}
46482: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
46486: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4648a: 4e5e unlk %fp <== NOT EXECUTED
...
00045f68 <_TOD_To_seconds>:
*/
uint32_t _TOD_To_seconds(
const rtems_time_of_day *the_tod
)
{
45f68: 43f9 0005 d2fa lea 5d2fa <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
45f6e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
45f72: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45f76: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
45f7a: 2210 movel %a0@,%d1 <== NOT EXECUTED
45f7c: 7403 moveq #3,%d2 <== NOT EXECUTED
)
{
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
45f7e: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
45f82: 5380 subql #1,%d0 <== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
45f84: c481 andl %d1,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
45f86: 660c bnes 45f94 <_TOD_To_seconds+0x2c> <== NOT EXECUTED
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
45f88: 2628 0004 movel %a0@(4),%d3 <== NOT EXECUTED
45f8c: 0683 0000 000d addil #13,%d3 <== NOT EXECUTED
45f92: 6004 bras 45f98 <_TOD_To_seconds+0x30> <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
45f94: 2628 0004 movel %a0@(4),%d3 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
45f98: 45f9 0005 d32e lea 5d32e <_TOD_Days_since_last_leap_year>,%a2<== 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 ) *
45f9e: 0681 ffff f83c addil #-1988,%d1 <== NOT EXECUTED
45fa4: e489 lsrl #2,%d1 <== 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 ];
45fa6: 3631 3a00 movew %a1@(00000000,%d3:l:2),%d3 <== NOT EXECUTED
45faa: 0283 0000 ffff andil #65535,%d3 <== NOT EXECUTED
45fb0: 2243 moveal %d3,%a1 <== NOT EXECUTED
45fb2: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
45fb4: 4280 clrl %d0 <== NOT EXECUTED
45fb6: 3032 2a00 movew %a2@(00000000,%d2:l:2),%d0 <== 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 ) *
45fba: 243c 0000 05b5 movel #1461,%d2 <== NOT EXECUTED
45fc0: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
45fc4: d280 addl %d0,%d1 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
45fc6: 2001 movel %d1,%d0 <== NOT EXECUTED
45fc8: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
45fca: 223c 0001 5180 movel #86400,%d1 <== NOT EXECUTED
45fd0: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
45fd4: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
45fd8: 2401 movel %d1,%d2 <== NOT EXECUTED
45fda: ed89 lsll #6,%d1 <== NOT EXECUTED
45fdc: e58a lsll #2,%d2 <== NOT EXECUTED
45fde: 2268 0014 moveal %a0@(20),%a1 <== NOT EXECUTED
45fe2: 9282 subl %d2,%d1 <== NOT EXECUTED
45fe4: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
45fe8: d3fc 21da e500 addal #567993600,%a1 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
45fee: 2401 movel %d1,%d2 <== NOT EXECUTED
45ff0: ed89 lsll #6,%d1 <== NOT EXECUTED
45ff2: e58a lsll #2,%d2 <== NOT EXECUTED
45ff4: 9282 subl %d2,%d1 <== NOT EXECUTED
time += the_tod->second;
45ff6: d289 addl %a1,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
45ff8: d081 addl %d1,%d0 <== NOT EXECUTED
45ffa: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
45ffe: 4e5e unlk %fp <== NOT EXECUTED
...
00046004 <_TOD_Validate>:
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
46004: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46008: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4600c: 2f03 movel %d3,%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();
4600e: 2039 0005 e390 movel 5e390 <Configuration+0xc>,%d0 <== NOT EXECUTED
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
46014: 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) ||
46016: 4a88 tstl %a0 <== NOT EXECUTED
46018: 6762 beqs 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
)
{
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
4601a: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
46020: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
46024: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED
46028: 6352 blss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->ticks >= ticks_per_second) ||
4602a: 763b moveq #59,%d3 <== NOT EXECUTED
4602c: b6a8 0014 cmpl %a0@(20),%d3 <== NOT EXECUTED
46030: 654a bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
46032: b6a8 0010 cmpl %a0@(16),%d3 <== NOT EXECUTED
46036: 6544 bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
46038: 7017 moveq #23,%d0 <== NOT EXECUTED
4603a: b0a8 000c cmpl %a0@(12),%d0 <== NOT EXECUTED
4603e: 653c bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
46040: 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) ||
46044: 6736 beqs 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->month == 0) ||
46046: 720c moveq #12,%d1 <== NOT EXECUTED
46048: b280 cmpl %d0,%d1 <== NOT EXECUTED
4604a: 6530 bcss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
4604c: 2410 movel %a0@,%d2 <== 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) ||
4604e: 0c82 0000 07c3 cmpil #1987,%d2 <== NOT EXECUTED
46054: 6326 blss 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
46056: 2228 0008 movel %a0@(8),%d1 <== 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) ||
4605a: 6720 beqs 4607c <_TOD_Validate+0x78> <== NOT EXECUTED
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
4605c: 163c 0003 moveb #3,%d3 <== NOT EXECUTED
46060: 41f9 0005 d336 lea 5d336 <_TOD_Days_per_month>,%a0 <== NOT EXECUTED
46066: c483 andl %d3,%d2 <== NOT EXECUTED
46068: 6606 bnes 46070 <_TOD_Validate+0x6c> <== NOT EXECUTED
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
4606a: 2030 0c34 movel %a0@(00000034,%d0:l:4),%d0 <== NOT EXECUTED
4606e: 6004 bras 46074 <_TOD_Validate+0x70> <== NOT EXECUTED
else
days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];
46070: 2030 0c00 movel %a0@(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(
46074: b081 cmpl %d1,%d0 <== NOT EXECUTED
46076: 54c0 scc %d0 <== NOT EXECUTED
46078: 4480 negl %d0 <== NOT EXECUTED
4607a: 6002 bras 4607e <_TOD_Validate+0x7a> <== 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;
4607c: 4200 clrb %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
4607e: 241f movel %sp@+,%d2 <== NOT EXECUTED
46080: 261f movel %sp@+,%d3 <== NOT EXECUTED
46082: 4e5e unlk %fp <== NOT EXECUTED
...
00047300 <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
47300: 4e56 fff0 linkw %fp,#-16
47304: 48d7 041c moveml %d2-%d4/%a2,%sp@
47308: 246e 0008 moveal %fp@(8),%a2
*/
/*
* Save original state
*/
original_state = the_thread->current_state;
4730c: 282a 0010 movel %a2@(16),%d4
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
47310: 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 );
47314: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
47316: 162e 0013 moveb %fp@(19),%d3
/*
* 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 );
4731a: 4eb9 0004 7fbc jsr 47fbc <_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 )
47320: 588f addql #4,%sp
47322: b4aa 0014 cmpl %a2@(20),%d2
47326: 670c beqs 47334 <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
47328: 2f02 movel %d2,%sp@-
4732a: 2f0a movel %a2,%sp@-
4732c: 4eb9 0004 7f48 jsr 47f48 <_Thread_Set_priority>
47332: 508f addql #8,%sp
_ISR_Disable( level );
47334: 203c 0000 0700 movel #1792,%d0
4733a: 40c2 movew %sr,%d2
4733c: 8082 orl %d2,%d0
4733e: 46c0 movew %d0,%sr
47340: 7204 moveq #4,%d1
/*
* 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;
47342: 202a 0010 movel %a2@(16),%d0
47346: c284 andl %d4,%d1
if ( state != STATES_TRANSIENT ) {
47348: 7804 moveq #4,%d4
4734a: b880 cmpl %d0,%d4
4734c: 6730 beqs 4737e <_Thread_Change_priority+0x7e>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
4734e: 4a81 tstl %d1
47350: 6608 bnes 4735a <_Thread_Change_priority+0x5a> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
47352: 72fb moveq #-5,%d1
47354: c280 andl %d0,%d1
47356: 2541 0010 movel %d1,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
4735a: 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);
4735c: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
47362: 6700 00cc beqw 47430 <_Thread_Change_priority+0x130>
_Thread_queue_Requeue( the_thread->Wait.queue, the_thread );
47366: 2d4a 000c movel %a2,%fp@(12)
4736a: 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 );
}
47370: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
47376: 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 );
47378: 4ef9 0004 7eac jmp 47eac <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
4737e: 4a81 tstl %d1
47380: 6674 bnes 473f6 <_Thread_Change_priority+0xf6> <== NEVER TAKEN
47382: 206a 008a moveal %a2@(138),%a0
* 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 );
47386: 42aa 0010 clrl %a2@(16)
if ( prepend_it )
4738a: 4a03 tstb %d3
4738c: 6732 beqs 473c0 <_Thread_Change_priority+0xc0>
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
4738e: 2268 0004 moveal %a0@(4),%a1
47392: 3028 000a movew %a0@(10),%d0
47396: 3211 movew %a1@,%d1
47398: 8081 orl %d1,%d0
4739a: 3280 movew %d0,%a1@
_Priority_Major_bit_map |= the_priority_map->ready_major;
4739c: 3228 0008 movew %a0@(8),%d1
473a0: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
_Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain,
473a6: 2050 moveal %a0@,%a0
473a8: 8081 orl %d1,%d0
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
473aa: 2250 moveal %a0@,%a1
473ac: 33c0 0005 dfa0 movew %d0,5dfa0 <_Priority_Major_bit_map>
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
473b2: 2548 0004 movel %a0,%a2@(4)
before_node = after_node->next;
after_node->next = the_node;
473b6: 208a movel %a2,%a0@
the_node->next = before_node;
before_node->previous = the_node;
473b8: 234a 0004 movel %a2,%a1@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
473bc: 2489 movel %a1,%a2@
473be: 6036 bras 473f6 <_Thread_Change_priority+0xf6>
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
473c0: 2268 0004 moveal %a0@(4),%a1
473c4: 3028 000a movew %a0@(10),%d0
473c8: 3211 movew %a1@,%d1
473ca: 8081 orl %d1,%d0
473cc: 3280 movew %d0,%a1@
_Priority_Major_bit_map |= the_priority_map->ready_major;
473ce: 3228 0008 movew %a0@(8),%d1
473d2: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
473d8: 2050 moveal %a0@,%a0
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
473da: 2808 movel %a0,%d4
473dc: 5884 addql #4,%d4
473de: 8081 orl %d1,%d0
Chain_Node *old_last = tail->previous;
473e0: 2268 0008 moveal %a0@(8),%a1
473e4: 33c0 0005 dfa0 movew %d0,5dfa0 <_Priority_Major_bit_map>
the_node->next = tail;
tail->previous = the_node;
473ea: 214a 0008 movel %a2,%a0@(8)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
473ee: 2484 movel %d4,%a2@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
473f0: 2549 0004 movel %a1,%a2@(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;
473f4: 228a movel %a2,%a1@
_Scheduler_priority_Ready_queue_enqueue_first( the_thread );
else
_Scheduler_priority_Ready_queue_enqueue( the_thread );
}
_ISR_Flash( level );
473f6: 203c 0000 0700 movel #1792,%d0
473fc: 46c2 movew %d2,%sr
473fe: 8082 orl %d2,%d0
47400: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule(
Scheduler_Control *the_scheduler
)
{
the_scheduler->Operations.schedule( the_scheduler );
47402: 4879 0005 db8e pea 5db8e <_Scheduler>
47408: 2079 0005 db92 moveal 5db92 <_Scheduler+0x4>,%a0
4740e: 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 );
47410: 2079 0005 df92 moveal 5df92 <_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() &&
47416: 588f addql #4,%sp
47418: b1f9 0005 df96 cmpal 5df96 <_Per_CPU_Information+0x10>,%a0
4741e: 670e beqs 4742e <_Thread_Change_priority+0x12e>
47420: 4a28 0074 tstb %a0@(116)
47424: 6708 beqs 4742e <_Thread_Change_priority+0x12e> <== NEVER TAKEN
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
47426: 7001 moveq #1,%d0
47428: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18>
_ISR_Enable( level );
4742e: 46c2 movew %d2,%sr
}
47430: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
47436: 4e5e unlk %fp
...
0004743c <_Thread_Clear_state>:
)
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4743c: 223c 0000 0700 movel #1792,%d1
void _Thread_Clear_state(
Thread_Control *the_thread,
States_Control state
)
{
47442: 4e56 0000 linkw %fp,#0
47446: 206e 0008 moveal %fp@(8),%a0
4744a: 2f03 movel %d3,%sp@-
4744c: 202e 000c movel %fp@(12),%d0
47450: 2f02 movel %d2,%sp@-
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
47452: 40c2 movew %sr,%d2
47454: 8282 orl %d2,%d1
47456: 46c1 movew %d1,%sr
current_state = the_thread->current_state;
47458: 2228 0010 movel %a0@(16),%d1
if ( current_state & state ) {
4745c: 2600 movel %d0,%d3
4745e: c681 andl %d1,%d3
47460: 671c beqs 4747e <_Thread_Clear_state+0x42> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
47462: 4680 notl %d0
47464: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear( state, current_state );
47466: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4746a: 6612 bnes 4747e <_Thread_Clear_state+0x42> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.unblock( the_scheduler, the_thread );
4746c: 2f08 movel %a0,%sp@-
4746e: 4879 0005 db8e pea 5db8e <_Scheduler>
47474: 2079 0005 db9e moveal 5db9e <_Scheduler+0x10>,%a0
4747a: 4e90 jsr %a0@
4747c: 508f addql #8,%sp
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
4747e: 46c2 movew %d2,%sr
}
47480: 242e fff8 movel %fp@(-8),%d2
47484: 262e fffc movel %fp@(-4),%d3
47488: 4e5e unlk %fp <== NOT EXECUTED
0004748c <_Thread_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
4748c: 4280 clrl %d0
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
4748e: 4e56 0000 linkw %fp,#0
47492: 2f0b movel %a3,%sp@-
47494: 266e 0008 moveal %fp@(8),%a3
47498: 2f0a movel %a2,%sp@-
4749a: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4749e: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
474a2: 302a 000a movew %a2@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
474a6: 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;
474aa: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
474b0: 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 );
474b2: 2f0a movel %a2,%sp@-
474b4: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level>
474ba: 4eb9 0004 845c jsr 4845c <_User_extensions_Thread_delete>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
474c0: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
474c6: 5280 addql #1,%d0
474c8: 23c0 0005 db08 movel %d0,5db08 <_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 );
474ce: 2f0a movel %a2,%sp@-
474d0: 2f0b movel %a3,%sp@-
474d2: 4eb9 0004 68e4 jsr 468e4 <_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 );
474d8: 4878 0001 pea 1 <ADD>
474dc: 2f0a movel %a2,%sp@-
474de: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
474e4: 2f0a movel %a2,%sp@-
474e6: 4eb9 0004 7de0 jsr 47de0 <_Thread_queue_Extract_with_proxy>
474ec: 4fef 0018 lea %sp@(24),%sp
474f0: 4a00 tstb %d0
474f2: 6614 bnes 47508 <_Thread_Close+0x7c> <== NEVER TAKEN
if ( _Watchdog_Is_active( &the_thread->Timer ) )
474f4: 7002 moveq #2,%d0
474f6: b0aa 0050 cmpl %a2@(80),%d0
474fa: 660c bnes 47508 <_Thread_Close+0x7c> <== ALWAYS TAKEN
(void) _Watchdog_Remove( &the_thread->Timer );
474fc: 486a 0048 pea %a2@(72) <== NOT EXECUTED
47500: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
47506: 588f addql #4,%sp <== NOT EXECUTED
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 );
47508: 2f0a movel %a2,%sp@-
4750a: 4879 0005 db8e pea 5db8e <_Scheduler>
47510: 2079 0005 dba6 moveal 5dba6 <_Scheduler+0x18>,%a0
47516: 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 ) )
47518: 508f addql #8,%sp
4751a: b5f9 0005 db8a cmpal 5db8a <_Thread_Allocated_fp>,%a2
47520: 6606 bnes 47528 <_Thread_Close+0x9c> <== ALWAYS TAKEN
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
47522: 42b9 0005 db8a clrl 5db8a <_Thread_Allocated_fp> <== NOT EXECUTED
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
if ( the_thread->Start.fp_context )
47528: 202a 00ba movel %a2@(186),%d0
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
4752c: 42aa 00f6 clrl %a2@(246)
if ( the_thread->Start.fp_context )
47530: 4a80 tstl %d0
47532: 670a beqs 4753e <_Thread_Close+0xb2> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->Start.fp_context );
47534: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47536: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
4753c: 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 );
4753e: 2f0a movel %a2,%sp@-
47540: 4eb9 0004 808c jsr 4808c <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
if ( the_thread->extensions )
47546: 202a 0106 movel %a2@(262),%d0
4754a: 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;
4754c: 42aa 00be clrl %a2@(190)
if ( the_thread->extensions )
47550: 4a80 tstl %d0
47552: 670a beqs 4755e <_Thread_Close+0xd2> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->extensions );
47554: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47556: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
4755c: 588f addql #4,%sp <== NOT EXECUTED
the_thread->extensions = NULL;
4755e: 42aa 0106 clrl %a2@(262)
}
47562: 246e fff8 moveal %fp@(-8),%a2
47566: 266e fffc moveal %fp@(-4),%a3
4756a: 4e5e unlk %fp
...
00047620 <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
47620: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
47624: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47628: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4762c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
47632: 508f addql #8,%sp <== NOT EXECUTED
47634: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47638: 661e bnes 47658 <_Thread_Delay_ended+0x38> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
4763a: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED
47640: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47642: 4eb9 0004 743c jsr 4743c <_Thread_Clear_state> <== NOT EXECUTED
47648: 508f addql #8,%sp <== NOT EXECUTED
4764a: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47650: 5380 subql #1,%d0 <== NOT EXECUTED
47652: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
47658: 4e5e unlk %fp <== NOT EXECUTED
00040564 <_Thread_Disable_dispatch>:
*/
extern Heap_Control *RTEMS_Malloc_Heap;
#endif
RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )
{
40564: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
40568: 2039 0006 3394 movel 63394 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4056e: 5280 addql #1,%d0 <== NOT EXECUTED
40570: 23c0 0006 3394 movel %d0,63394 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#if defined(RTEMS_HEAVY_MALLOC_DEBUG)
if ( _Thread_Dispatch_disable_level == 1 ) {
_Heap_Walk( RTEMS_Malloc_Heap,99, false );
}
#endif
}
40576: 4e5e unlk %fp <== NOT EXECUTED
0004765c <_Thread_Dispatch>:
* dispatch thread
* no dispatch thread
*/
void _Thread_Dispatch( void )
{
4765c: 4e56 ffc8 linkw %fp,#-56
47660: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
47664: 283c 0000 0700 movel #1792,%d4
4766a: 2204 movel %d4,%d1
{
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
4766c: 2479 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
47672: 40c0 movew %sr,%d0
47674: 8280 orl %d0,%d1
47676: 46c1 movew %d1,%sr
_ISR_Enable( level );
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
47678: 260e movel %fp,%d3
_Timestamp_Subtract(
4767a: 240e movel %fp,%d2
_ISR_Enable( level );
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
4767c: 5183 subql #8,%d3
_Timestamp_Subtract(
4767e: 0682 ffff fff0 addil #-16,%d2
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
47684: 2e3c 0004 8228 movel #295464,%d7
if ( _Thread_libc_reent ) {
executing->libc_reent = *_Thread_libc_reent;
*_Thread_libc_reent = heir->libc_reent;
}
_User_extensions_Thread_switch( executing, heir );
4768a: 2c3c 0004 84dc movel #296156,%d6
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
47690: 2a3c 0004 87fc movel #296956,%d5
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
_Context_Restore_fp( &executing->fp_context );
47696: 4bf9 0004 8964 lea 48964 <_CPU_Context_restore_fp>,%a5
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4769c: 49f9 0004 8942 lea 48942 <_CPU_Context_save_fp>,%a4
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
476a2: 6000 00d4 braw 47778 <_Thread_Dispatch+0x11c>
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
476a6: 7201 moveq #1,%d1
476a8: 23c1 0005 db08 movel %d1,5db08 <_Thread_Dispatch_disable_level>
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
476ae: 2679 0005 df96 moveal 5df96 <_Per_CPU_Information+0x10>,%a3
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
476b4: 4201 clrb %d1
_Thread_Executing = heir;
476b6: 23cb 0005 df92 movel %a3,5df92 <_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;
476bc: 13c1 0005 df9e moveb %d1,5df9e <_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 )
476c2: b5cb cmpal %a3,%a2
476c4: 6700 00bc beqw 47782 <_Thread_Dispatch+0x126>
*/
#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 )
476c8: 7201 moveq #1,%d1
476ca: b2ab 007a cmpl %a3@(122),%d1
476ce: 660a bnes 476da <_Thread_Dispatch+0x7e> <== ALWAYS TAKEN
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
476d0: 41f9 0005 dac0 lea 5dac0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
476d6: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED
_ISR_Enable( level );
476da: 46c0 movew %d0,%sr
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
476dc: 2f03 movel %d3,%sp@-
476de: 4eb9 0004 ab00 jsr 4ab00 <_TOD_Get_uptime>
_Timestamp_Subtract(
476e4: 2f02 movel %d2,%sp@-
476e6: 2f03 movel %d3,%sp@-
476e8: 4879 0005 dbd4 pea 5dbd4 <_Thread_Time_of_last_context_switch>
476ee: 4eb9 0004 8260 jsr 48260 <_Timespec_Subtract>
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
476f4: 2047 moveal %d7,%a0
476f6: 2f02 movel %d2,%sp@-
476f8: 486a 0082 pea %a2@(130)
476fc: 4e90 jsr %a0@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
476fe: 2079 0005 dbae moveal 5dbae <_Thread_libc_reent>,%a0
47704: 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;
47708: 202e fff8 movel %fp@(-8),%d0
4770c: 222e fffc movel %fp@(-4),%d1
47710: 23c0 0005 dbd4 movel %d0,5dbd4 <_Thread_Time_of_last_context_switch>
47716: 23c1 0005 dbd8 movel %d1,5dbd8 <_Thread_Time_of_last_context_switch+0x4>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
4771c: 4a88 tstl %a0
4771e: 6708 beqs 47728 <_Thread_Dispatch+0xcc> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
47720: 2550 00fa movel %a0@,%a2@(250)
*_Thread_libc_reent = heir->libc_reent;
47724: 20ab 00fa movel %a3@(250),%a0@
}
_User_extensions_Thread_switch( executing, heir );
47728: 2f0b movel %a3,%sp@-
4772a: 2046 moveal %d6,%a0
4772c: 2f0a movel %a2,%sp@-
4772e: 4e90 jsr %a0@
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
47730: 486b 00c2 pea %a3@(194)
47734: 2045 moveal %d5,%a0
47736: 486a 00c2 pea %a2@(194)
4773a: 4e90 jsr %a0@
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4773c: 4fef 0010 lea %sp@(16),%sp
47740: 4aaa 00f6 tstl %a2@(246)
47744: 6724 beqs 4776a <_Thread_Dispatch+0x10e> <== 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 );
47746: 2079 0005 db8a moveal 5db8a <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED
4774c: b1ca cmpal %a2,%a0 <== NOT EXECUTED
4774e: 671a beqs 4776a <_Thread_Dispatch+0x10e> <== NOT EXECUTED
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
47750: 4a88 tstl %a0 <== NOT EXECUTED
47752: 6708 beqs 4775c <_Thread_Dispatch+0x100> <== NOT EXECUTED
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
47754: 4868 00f6 pea %a0@(246) <== NOT EXECUTED
47758: 4e94 jsr %a4@ <== NOT EXECUTED
4775a: 588f addql #4,%sp <== NOT EXECUTED
_Context_Restore_fp( &executing->fp_context );
4775c: 486a 00f6 pea %a2@(246) <== NOT EXECUTED
47760: 4e95 jsr %a5@ <== NOT EXECUTED
_Thread_Allocated_fp = executing;
47762: 588f addql #4,%sp <== NOT EXECUTED
47764: 23ca 0005 db8a movel %a2,5db8a <_Thread_Allocated_fp> <== NOT EXECUTED
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
4776a: 2479 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
47770: 2204 movel %d4,%d1
47772: 40c0 movew %sr,%d0
47774: 8280 orl %d0,%d1
47776: 46c1 movew %d1,%sr
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
47778: 1239 0005 df9e moveb 5df9e <_Per_CPU_Information+0x18>,%d1
4777e: 6600 ff26 bnew 476a6 <_Thread_Dispatch+0x4a>
_ISR_Disable( level );
}
post_switch:
_Thread_Dispatch_disable_level = 0;
47782: 42b9 0005 db08 clrl 5db08 <_Thread_Dispatch_disable_level>
_ISR_Enable( level );
47788: 46c0 movew %d0,%sr
_API_extensions_Run_postswitch();
4778a: 4eb9 0004 5e84 jsr 45e84 <_API_extensions_Run_postswitch>
}
47790: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
47796: 4e5e unlk %fp <== NOT EXECUTED
000477c0 <_Thread_Get>:
*/
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
477c0: 4e56 0000 linkw %fp,#0
477c4: 202e 0008 movel %fp@(8),%d0
477c8: 2f03 movel %d3,%sp@-
477ca: 206e 000c moveal %fp@(12),%a0
477ce: 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 ) ) {
477d0: 4a80 tstl %d0
477d2: 6618 bnes 477ec <_Thread_Get+0x2c>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
477d4: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
477da: 5280 addql #1,%d0
477dc: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
*location = OBJECTS_LOCAL;
477e2: 4290 clrl %a0@
tp = _Thread_Executing;
477e4: 2039 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%d0
goto done;
477ea: 6040 bras 4782c <_Thread_Get+0x6c>
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
477ec: 7418 moveq #24,%d2
477ee: 2200 movel %d0,%d1
477f0: e4a9 lsrl %d2,%d1
477f2: 7607 moveq #7,%d3
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
477f4: 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);
477f8: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
477fa: 2241 moveal %d1,%a1
477fc: 5389 subql #1,%a1
477fe: b489 cmpl %a1,%d2
47800: 6436 bccs 47838 <_Thread_Get+0x78> <== ALWAYS TAKEN
47802: 6010 bras 47814 <_Thread_Get+0x54> <== NOT EXECUTED
if ( the_class != 1 ) { /* threads are always first class :) */
*location = OBJECTS_ERROR;
goto done;
}
api_information = _Objects_Information_table[ the_api ];
47804: 43f9 0005 dac4 lea 5dac4 <_Objects_Information_table>,%a1
*location = OBJECTS_ERROR;
goto done;
}
#endif
information = api_information[ the_class ];
4780a: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1
4780e: 2229 0004 movel %a1@(4),%d1
if ( !information ) {
47812: 6608 bnes 4781c <_Thread_Get+0x5c> <== ALWAYS TAKEN
*location = OBJECTS_ERROR;
47814: 7001 moveq #1,%d0 <== NOT EXECUTED
47816: 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;
47818: 4280 clrl %d0 <== NOT EXECUTED
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
goto done;
4781a: 6010 bras 4782c <_Thread_Get+0x6c> <== NOT EXECUTED
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
4781c: 2f08 movel %a0,%sp@-
4781e: 2f00 movel %d0,%sp@-
47820: 2f01 movel %d1,%sp@-
47822: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get>
47828: 4fef 000c lea %sp@(12),%sp
done:
return tp;
}
4782c: 242e fff8 movel %fp@(-8),%d2
47830: 262e fffc movel %fp@(-4),%d3
47834: 4e5e unlk %fp
47836: 4e75 rts
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
47838: 761b moveq #27,%d3
4783a: 2400 movel %d0,%d2
4783c: e6aa lsrl %d3,%d2
*location = OBJECTS_ERROR;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class != 1 ) { /* threads are always first class :) */
4783e: 163c 0001 moveb #1,%d3
47842: b682 cmpl %d2,%d3
47844: 67be beqs 47804 <_Thread_Get+0x44> <== ALWAYS TAKEN
47846: 60cc bras 47814 <_Thread_Get+0x54> <== NOT EXECUTED
0004c764 <_Thread_Handler>:
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4c764: 4e56 0000 linkw %fp,#0
4c768: 2f0a movel %a2,%sp@-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
4c76a: 2479 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a2
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4c770: 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;
4c772: 222a 00a8 movel %a2@(168),%d1
_ISR_Set_level(level);
4c776: 40c0 movew %sr,%d0
4c778: e189 lsll #8,%d1
4c77a: 0280 0000 f8ff andil #63743,%d0
4c780: 8081 orl %d1,%d0
4c782: 46c0 movew %d0,%sr
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
doneConstructors = 1;
4c784: 7001 moveq #1,%d0
level = executing->Start.isr_level;
_ISR_Set_level(level);
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
4c786: 1439 0005 d2c8 moveb 5d2c8 <doneConstructors.3368>,%d2
doneConstructors = 1;
4c78c: 13c0 0005 d2c8 moveb %d0,5d2c8 <doneConstructors.3368>
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4c792: 4aaa 00f6 tstl %a2@(246)
4c796: 6720 beqs 4c7b8 <_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 );
4c798: 2079 0005 db8a moveal 5db8a <_Thread_Allocated_fp>,%a0
4c79e: b1ca cmpal %a2,%a0
4c7a0: 6716 beqs 4c7b8 <_Thread_Handler+0x54> <== NEVER TAKEN
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4c7a2: 4a88 tstl %a0
4c7a4: 670c beqs 4c7b2 <_Thread_Handler+0x4e> <== ALWAYS TAKEN
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4c7a6: 4868 00f6 pea %a0@(246) <== NOT EXECUTED
4c7aa: 4eb9 0004 8942 jsr 48942 <_CPU_Context_save_fp> <== NOT EXECUTED
4c7b0: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4c7b2: 23ca 0005 db8a movel %a2,5db8a <_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 );
4c7b8: 2f0a movel %a2,%sp@-
4c7ba: 4eb9 0004 8358 jsr 48358 <_User_extensions_Thread_begin>
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4c7c0: 4eb9 0004 779a jsr 4779a <_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) */ {
4c7c6: 588f addql #4,%sp
4c7c8: 4a02 tstb %d2
4c7ca: 6606 bnes 4c7d2 <_Thread_Handler+0x6e>
INIT_NAME ();
4c7cc: 4eb9 0005 a6f0 jsr 5a6f0 <_init>
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4c7d2: 202a 0092 movel %a2@(146),%d0
4c7d6: 6606 bnes 4c7de <_Thread_Handler+0x7a>
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4c7d8: 2f2a 009a movel %a2@(154),%sp@-
4c7dc: 600a bras 4c7e8 <_Thread_Handler+0x84>
executing->Start.numeric_argument
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
4c7de: 7201 moveq #1,%d1
4c7e0: b280 cmpl %d0,%d1
4c7e2: 6610 bnes 4c7f4 <_Thread_Handler+0x90> <== NEVER TAKEN
executing->Wait.return_argument =
(*(Thread_Entry_pointer) executing->Start.entry_point)(
4c7e4: 2f2a 0096 movel %a2@(150),%sp@-
4c7e8: 206a 008e moveal %a2@(142),%a0
4c7ec: 4e90 jsr %a0@
executing->Start.numeric_argument
);
}
#if defined(RTEMS_POSIX_API)
else if ( executing->Start.prototype == THREAD_START_POINTER ) {
executing->Wait.return_argument =
4c7ee: 588f addql #4,%sp
4c7f0: 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 );
4c7f4: 2f0a movel %a2,%sp@-
4c7f6: 4eb9 0004 8390 jsr 48390 <_User_extensions_Thread_exitted>
_Internal_error_Occurred(
4c7fc: 4878 0005 pea 5 <COMPARE>
4c800: 4878 0001 pea 1 <ADD>
4c804: 42a7 clrl %sp@-
4c806: 4eb9 0004 67b4 jsr 467b4 <_Internal_error_Occurred>
00047848 <_Thread_Initialize>:
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
47848: 4e56 ffe8 linkw %fp,#-24
4784c: 222e 0010 movel %fp@(16),%d1
47850: 48d7 047c moveml %d2-%d6/%a2,%sp@
47854: 246e 000c moveal %fp@(12),%a2
47858: 242e 0014 movel %fp@(20),%d2
4785c: 2a2e 001c movel %fp@(28),%d5
47860: 282e 0024 movel %fp@(36),%d4
47864: 162e 001b moveb %fp@(27),%d3
47868: 1c2e 0023 moveb %fp@(35),%d6
/*
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
4786c: 42aa 00fe clrl %a2@(254)
47870: 42aa 0102 clrl %a2@(258)
extensions_area = NULL;
the_thread->libc_reent = NULL;
47874: 42aa 00fa clrl %a2@(250)
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
47878: 4a81 tstl %d1
4787a: 6624 bnes 478a0 <_Thread_Initialize+0x58> <== NEVER TAKEN
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
4787c: 2f02 movel %d2,%sp@-
4787e: 2f0a movel %a2,%sp@-
47880: 4eb9 0004 8040 jsr 48040 <_Thread_Stack_Allocate>
if ( !actual_stack_size || actual_stack_size < stack_size )
47886: 508f addql #8,%sp
47888: 4a80 tstl %d0
4788a: 6700 0188 beqw 47a14 <_Thread_Initialize+0x1cc>
4788e: b480 cmpl %d0,%d2
47890: 6200 0182 bhiw 47a14 <_Thread_Initialize+0x1cc>
return false; /* stack allocation failed */
stack = the_thread->Start.stack;
47894: 222a 00be movel %a2@(190),%d1
the_thread->Start.core_allocated_stack = true;
47898: 7401 moveq #1,%d2
4789a: 1542 00b0 moveb %d2,%a2@(176)
4789e: 6008 bras 478a8 <_Thread_Initialize+0x60>
} else {
stack = stack_area;
actual_stack_size = stack_size;
the_thread->Start.core_allocated_stack = false;
478a0: 4200 clrb %d0 <== NOT EXECUTED
478a2: 1540 00b0 moveb %d0,%a2@(176) <== NOT EXECUTED
478a6: 2002 movel %d2,%d0 <== NOT EXECUTED
Stack_Control *the_stack,
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
478a8: 2541 00b6 movel %d1,%a2@(182)
the_stack->size = size;
478ac: 2540 00b2 movel %d0,%a2@(178)
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
478b0: 4a03 tstb %d3
478b2: 6714 beqs 478c8 <_Thread_Initialize+0x80>
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
478b4: 4878 001c pea 1c <OPER2+0x8>
478b8: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
if ( !fp_area )
478be: 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 );
478c0: 2600 movel %d0,%d3
if ( !fp_area )
478c2: 6606 bnes 478ca <_Thread_Initialize+0x82> <== ALWAYS TAKEN
478c4: 6000 00e6 braw 479ac <_Thread_Initialize+0x164> <== NOT EXECUTED
extensions_area = NULL;
the_thread->libc_reent = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
fp_area = NULL;
478c8: 4283 clrl %d3
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
478ca: 2039 0005 dbba movel 5dbba <_Thread_Maximum_extensions>,%d0
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;
478d0: 2543 00f6 movel %d3,%a2@(246)
the_thread->Start.fp_context = fp_area;
478d4: 2543 00ba movel %d3,%a2@(186)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
478d8: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
478dc: 42aa 0064 clrl %a2@(100)
the_watchdog->id = id;
478e0: 42aa 0068 clrl %a2@(104)
the_watchdog->user_data = user_data;
478e4: 42aa 006c clrl %a2@(108)
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
478e8: 4a80 tstl %d0
478ea: 6718 beqs 47904 <_Thread_Initialize+0xbc>
extensions_area = _Workspace_Allocate(
478ec: e588 lsll #2,%d0
478ee: 2040 moveal %d0,%a0
478f0: 4868 0004 pea %a0@(4)
478f4: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
478fa: 588f addql #4,%sp
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
478fc: 2400 movel %d0,%d2
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
478fe: 6606 bnes 47906 <_Thread_Initialize+0xbe> <== ALWAYS TAKEN
47900: 6000 00ac braw 479ae <_Thread_Initialize+0x166> <== 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;
47904: 4282 clrl %d2
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
47906: 2542 0106 movel %d2,%a2@(262)
* if they are linked to the thread. An extension user may
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
4790a: 6714 beqs 47920 <_Thread_Initialize+0xd8>
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
4790c: 2239 0005 dbba movel 5dbba <_Thread_Maximum_extensions>,%d1
47912: 2042 moveal %d2,%a0
47914: 4280 clrl %d0
47916: 6004 bras 4791c <_Thread_Initialize+0xd4>
the_thread->extensions[i] = NULL;
47918: 4298 clrl %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++ )
4791a: 5280 addql #1,%d0
4791c: b280 cmpl %d0,%d1
4791e: 64f8 bccs 47918 <_Thread_Initialize+0xd0>
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
the_thread->Start.budget_algorithm = budget_algorithm;
47920: 2544 00a0 movel %d4,%a2@(160)
the_thread->Start.budget_callout = budget_callout;
switch ( budget_algorithm ) {
47924: 7002 moveq #2,%d0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
47926: 1546 009e moveb %d6,%a2@(158)
the_thread->Start.budget_algorithm = budget_algorithm;
the_thread->Start.budget_callout = budget_callout;
4792a: 256e 0028 00a4 movel %fp@(40),%a2@(164)
switch ( budget_algorithm ) {
47930: b084 cmpl %d4,%d0
47932: 660a bnes 4793e <_Thread_Initialize+0xf6> <== ALWAYS TAKEN
case THREAD_CPU_BUDGET_ALGORITHM_NONE:
case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:
break;
#if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)
case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:
the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
47934: 41f9 0005 dac0 lea 5dac0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
4793a: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
4793e: 7001 moveq #1,%d0
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
47940: 256e 002c 00a8 movel %fp@(44),%a2@(168)
RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return
47946: 2079 0005 dba2 moveal 5dba2 <_Scheduler+0x14>,%a0
the_thread->current_state = STATES_DORMANT;
4794c: 2540 0010 movel %d0,%a2@(16)
the_thread->Wait.queue = NULL;
47950: 42aa 0044 clrl %a2@(68)
the_thread->resource_count = 0;
47954: 42aa 001c clrl %a2@(28)
the_thread->real_priority = priority;
47958: 2545 0018 movel %d5,%a2@(24)
the_thread->Start.initial_priority = priority;
4795c: 2545 00ac movel %d5,%a2@(172)
47960: 2f0a movel %a2,%sp@-
47962: 4879 0005 db8e pea 5db8e <_Scheduler>
47968: 4e90 jsr %a0@
sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread );
if ( !sched )
4796a: 508f addql #8,%sp
4796c: 2800 movel %d0,%d4
4796e: 6740 beqs 479b0 <_Thread_Initialize+0x168> <== NEVER TAKEN
goto failed;
_Thread_Set_priority( the_thread, priority );
47970: 2f05 movel %d5,%sp@-
47972: 2f0a movel %a2,%sp@-
47974: 4eb9 0004 7f48 jsr 47f48 <_Thread_Set_priority>
_Thread_Stack_Free( the_thread );
return false;
}
4797a: 206e 0008 moveal %fp@(8),%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4797e: 4280 clrl %d0
47980: 2068 0018 moveal %a0@(24),%a0
47984: 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 );
47988: 42aa 0082 clrl %a2@(130)
4798c: 42aa 0086 clrl %a2@(134)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47990: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
47994: 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 );
4799a: 2f0a movel %a2,%sp@-
4799c: 4eb9 0004 8414 jsr 48414 <_User_extensions_Thread_create>
if ( extension_status )
479a2: 4fef 000c lea %sp@(12),%sp
479a6: 4a00 tstb %d0
479a8: 6706 beqs 479b0 <_Thread_Initialize+0x168> <== NEVER TAKEN
479aa: 606c bras 47a18 <_Thread_Initialize+0x1d0>
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
479ac: 4282 clrl %d2 <== 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;
479ae: 4284 clrl %d4 <== NOT EXECUTED
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
479b0: 202a 00fa movel %a2@(250),%d0 <== NOT EXECUTED
479b4: 670a beqs 479c0 <_Thread_Initialize+0x178> <== NOT EXECUTED
_Workspace_Free( the_thread->libc_reent );
479b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
479b8: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
479be: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
479c0: 202a 00fe movel %a2@(254),%d0 <== NOT EXECUTED
479c4: 670a beqs 479d0 <_Thread_Initialize+0x188> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
479c6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
479c8: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
479ce: 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] )
479d0: 202a 0102 movel %a2@(258),%d0 <== NOT EXECUTED
479d4: 670a beqs 479e0 <_Thread_Initialize+0x198> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
479d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
479d8: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
479de: 588f addql #4,%sp <== NOT EXECUTED
if ( extensions_area )
479e0: 4a82 tstl %d2 <== NOT EXECUTED
479e2: 670a beqs 479ee <_Thread_Initialize+0x1a6> <== NOT EXECUTED
(void) _Workspace_Free( extensions_area );
479e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
479e6: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
479ec: 588f addql #4,%sp <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( fp_area )
479ee: 4a83 tstl %d3 <== NOT EXECUTED
479f0: 670a beqs 479fc <_Thread_Initialize+0x1b4> <== NOT EXECUTED
(void) _Workspace_Free( fp_area );
479f2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
479f4: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
479fa: 588f addql #4,%sp <== NOT EXECUTED
#endif
if ( sched )
479fc: 4a84 tstl %d4 <== NOT EXECUTED
479fe: 670a beqs 47a0a <_Thread_Initialize+0x1c2> <== NOT EXECUTED
(void) _Workspace_Free( sched );
47a00: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47a02: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free> <== NOT EXECUTED
47a08: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
47a0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47a0c: 4eb9 0004 808c jsr 4808c <_Thread_Stack_Free> <== NOT EXECUTED
return false;
47a12: 588f addql #4,%sp <== NOT EXECUTED
stack = the_thread->Start.stack;
#else
if ( !stack_area ) {
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
47a14: 4200 clrb %d0
47a16: 6002 bras 47a1a <_Thread_Initialize+0x1d2>
* Mutex provides sufficient protection to let the user extensions
* run safely.
*/
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
47a18: 7001 moveq #1,%d0
_Thread_Stack_Free( the_thread );
return false;
}
47a1a: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2
47a20: 4e5e unlk %fp <== NOT EXECUTED
0004ba80 <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4ba80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ba84: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ba86: 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;
4ba8a: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = the_thread->Start.budget_callout;
4ba90: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED
the_thread->Start.pointer_argument = pointer_argument;
4ba96: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
4ba9c: 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;
4baa2: 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;
4baa8: 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 ) ) {
4baac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4baae: 4eb9 0004 8598 jsr 48598 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
4bab4: 588f addql #4,%sp <== NOT EXECUTED
4bab6: 4a00 tstb %d0 <== NOT EXECUTED
4bab8: 6614 bnes 4bace <_Thread_Reset+0x4e> <== NOT EXECUTED
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4baba: 7002 moveq #2,%d0 <== NOT EXECUTED
4babc: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4bac0: 660c bnes 4bace <_Thread_Reset+0x4e> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4bac2: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4bac6: 4eb9 0004 8eb8 jsr 48eb8 <_Watchdog_Remove> <== NOT EXECUTED
4bacc: 588f addql #4,%sp <== NOT EXECUTED
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4bace: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED
4bad2: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4bad6: 6718 beqs 4baf0 <_Thread_Reset+0x70> <== NOT EXECUTED
the_thread->real_priority = the_thread->Start.initial_priority;
4bad8: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4badc: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4bae0: 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 );
4bae4: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
4bae8: 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 );
4baea: 4ef9 0004 8784 jmp 48784 <_Thread_Set_priority> <== NOT EXECUTED
}
}
4baf0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4baf4: 4e5e unlk %fp <== NOT EXECUTED
00048700 <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
48700: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
48702: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48706: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48708: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4870c: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
if ( !_States_Is_dormant( the_thread->current_state ) ) {
48710: 6664 bnes 48776 <_Thread_Restart+0x76> <== NOT EXECUTED
_Thread_Set_transient( the_thread );
48712: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48714: 4eb9 0004 87f8 jsr 487f8 <_Thread_Set_transient> <== NOT EXECUTED
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
4871a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4871e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
48722: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48724: 4eb9 0004 ba80 jsr 4ba80 <_Thread_Reset> <== NOT EXECUTED
_Thread_Load_environment( the_thread );
4872a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4872c: 4eb9 0004 b7b0 jsr 4b7b0 <_Thread_Load_environment> <== NOT EXECUTED
_Thread_Ready( the_thread );
48732: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48734: 4eb9 0004 ba48 jsr 4ba48 <_Thread_Ready> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
4873a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4873c: 4eb9 0004 8cd8 jsr 48cd8 <_User_extensions_Thread_restart> <== NOT EXECUTED
if ( _Thread_Is_executing ( the_thread ) )
48742: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
48746: b5f9 0005 eaba cmpal 5eaba <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
4874c: 662c bnes 4877a <_Thread_Restart+0x7a> <== 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 )
4874e: 4aaa 00f6 tstl %a2@(246) <== NOT EXECUTED
48752: 670c beqs 48760 <_Thread_Restart+0x60> <== NOT EXECUTED
_Context_Restore_fp( &_Thread_Executing->fp_context );
48754: 486a 00f6 pea %a2@(246) <== NOT EXECUTED
48758: 4eb9 0004 91e0 jsr 491e0 <_CPU_Context_restore_fp> <== NOT EXECUTED
4875e: 588f addql #4,%sp <== NOT EXECUTED
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
48760: 2079 0005 eaba moveal 5eaba <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
48766: 41e8 00c2 lea %a0@(194),%a0 <== NOT EXECUTED
4876a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4876c: 4eb9 0004 908e jsr 4908e <_CPU_Context_Restart_self> <== NOT EXECUTED
48772: 588f addql #4,%sp <== NOT EXECUTED
48774: 6004 bras 4877a <_Thread_Restart+0x7a> <== NOT EXECUTED
_Thread_Restart_self();
return true;
}
return false;
48776: 4200 clrb %d0 <== NOT EXECUTED
48778: 6002 bras 4877c <_Thread_Restart+0x7c> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
4877a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
4877c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48780: 4e5e unlk %fp <== NOT EXECUTED
0004ad58 <_Thread_Resume>:
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4ad58: 203c 0000 0700 movel #1792,%d0
void _Thread_Resume(
Thread_Control *the_thread,
bool force
)
{
4ad5e: 4e56 0000 linkw %fp,#0
4ad62: 206e 0008 moveal %fp@(8),%a0
4ad66: 2f02 movel %d2,%sp@-
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4ad68: 40c2 movew %sr,%d2
4ad6a: 8082 orl %d2,%d0
4ad6c: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4ad6e: 2028 0010 movel %a0@(16),%d0
if ( current_state & STATES_SUSPENDED ) {
4ad72: 0800 0001 btst #1,%d0
4ad76: 671c beqs 4ad94 <_Thread_Resume+0x3c> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
4ad78: 72fd moveq #-3,%d1
4ad7a: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
4ad7c: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4ad80: 6612 bnes 4ad94 <_Thread_Resume+0x3c> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.unblock( the_scheduler, the_thread );
4ad82: 2f08 movel %a0,%sp@-
4ad84: 4879 0006 0f56 pea 60f56 <_Scheduler>
4ad8a: 2079 0006 0f66 moveal 60f66 <_Scheduler+0x10>,%a0
4ad90: 4e90 jsr %a0@
4ad92: 508f addql #8,%sp
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4ad94: 46c2 movew %d2,%sr
}
4ad96: 242e fffc movel %fp@(-4),%d2
4ad9a: 4e5e unlk %fp
...
00047f48 <_Thread_Set_priority>:
void _Thread_Set_priority(
Thread_Control *the_thread,
Priority_Control new_priority
)
{
47f48: 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 );
47f4c: 203c 0005 db8e movel #383886,%d0
47f52: 206e 0008 moveal %fp@(8),%a0
the_thread->current_priority = new_priority;
47f56: 216e 000c 0014 movel %fp@(12),%a0@(20)
47f5c: 2279 0005 dbaa moveal 5dbaa <_Scheduler+0x1c>,%a1
47f62: 2d48 000c movel %a0,%fp@(12)
47f66: 2d40 0008 movel %d0,%fp@(8)
_Scheduler_Thread_scheduler_update(&_Scheduler, the_thread);
}
47f6a: 4e5e unlk %fp
47f6c: 4ed1 jmp %a1@
...
00047f70 <_Thread_Set_state>:
States_Control state
)
{
ISR_Level level;
_ISR_Disable( level );
47f70: 203c 0000 0700 movel #1792,%d0
void _Thread_Set_state(
Thread_Control *the_thread,
States_Control state
)
{
47f76: 4e56 0000 linkw %fp,#0
47f7a: 206e 0008 moveal %fp@(8),%a0
47f7e: 2f02 movel %d2,%sp@-
47f80: 222e 000c movel %fp@(12),%d1
ISR_Level level;
_ISR_Disable( level );
47f84: 40c2 movew %sr,%d2
47f86: 8082 orl %d2,%d0
47f88: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
47f8a: 2028 0010 movel %a0@(16),%d0
47f8e: 670a beqs 47f9a <_Thread_Set_state+0x2a> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
47f90: 8280 orl %d0,%d1 <== NOT EXECUTED
47f92: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
47f96: 46c2 movew %d2,%sr <== NOT EXECUTED
return;
47f98: 6018 bras 47fb2 <_Thread_Set_state+0x42> <== NOT EXECUTED
}
the_thread->current_state = state;
47f9a: 2141 0010 movel %d1,%a0@(16)
RTEMS_INLINE_ROUTINE void _Scheduler_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.block( the_scheduler, the_thread );
47f9e: 2f08 movel %a0,%sp@-
47fa0: 4879 0005 db8e pea 5db8e <_Scheduler>
47fa6: 2079 0005 db9a moveal 5db9a <_Scheduler+0xc>,%a0
47fac: 4e90 jsr %a0@
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
47fae: 46c2 movew %d2,%sr
47fb0: 508f addql #8,%sp
}
47fb2: 242e fffc movel %fp@(-4),%d2
47fb6: 4e5e unlk %fp
...
00047fbc <_Thread_Set_transient>:
)
{
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
47fbc: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
47fc2: 4e56 0000 linkw %fp,#0
47fc6: 226e 0008 moveal %fp@(8),%a1
47fca: 2f0a movel %a2,%sp@-
47fcc: 2f02 movel %d2,%sp@-
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
47fce: 40c1 movew %sr,%d1
47fd0: 8081 orl %d1,%d0
47fd2: 46c0 movew %d0,%sr
old_state = the_thread->current_state;
47fd4: 2029 0010 movel %a1@(16),%d0
47fd8: 7404 moveq #4,%d2
47fda: 8480 orl %d0,%d2
47fdc: 2342 0010 movel %d2,%a1@(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 ) ) {
47fe0: 4a80 tstl %d0
47fe2: 6650 bnes 48034 <_Thread_Set_transient+0x78>
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract(
Thread_Control *the_thread
)
{
Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
47fe4: 2069 008a moveal %a1@(138),%a0
47fe8: 2050 moveal %a0@,%a0
if ( _Chain_Has_only_one_node( ready ) ) {
47fea: 2028 0008 movel %a0@(8),%d0
47fee: b090 cmpl %a0@,%d0
47ff0: 6636 bnes 48028 <_Thread_Set_transient+0x6c> <== 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 );
47ff2: 2408 movel %a0,%d2
47ff4: 5882 addql #4,%d2
head->next = tail;
head->previous = NULL;
47ff6: 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 );
47ffa: 2082 movel %d2,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
47ffc: 2148 0008 movel %a0,%a0@(8)
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
48000: 2069 008a moveal %a1@(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;
48004: 2268 0004 moveal %a0@(4),%a1
48008: 3028 000e movew %a0@(14),%d0
4800c: 3411 movew %a1@,%d2
4800e: c082 andl %d2,%d0
48010: 3280 movew %d0,%a1@
if ( *the_priority_map->minor == 0 )
48012: 6620 bnes 48034 <_Thread_Set_transient+0x78>
_Priority_Major_bit_map &= the_priority_map->block_major;
48014: 3039 0005 dfa0 movew 5dfa0 <_Priority_Major_bit_map>,%d0
4801a: 3428 000c movew %a0@(12),%d2
4801e: c082 andl %d2,%d0
48020: 33c0 0005 dfa0 movew %d0,5dfa0 <_Priority_Major_bit_map>
48026: 600c bras 48034 <_Thread_Set_transient+0x78>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
48028: 2451 moveal %a1@,%a2 <== NOT EXECUTED
previous = the_node->previous;
4802a: 2069 0004 moveal %a1@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4802e: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
previous->next = next;
48032: 208a movel %a2,%a0@ <== NOT EXECUTED
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
48034: 46c1 movew %d1,%sr
}
48036: 241f movel %sp@+,%d2
48038: 245f moveal %sp@+,%a2
4803a: 4e5e unlk %fp
...
0004808c <_Thread_Stack_Free>:
*/
void _Thread_Stack_Free(
Thread_Control *the_thread
)
{
4808c: 4e56 0000 linkw %fp,#0
48090: 206e 0008 moveal %fp@(8),%a0
#if defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
/*
* If the API provided the stack space, then don't free it.
*/
if ( !the_thread->Start.core_allocated_stack )
48094: 4a28 00b0 tstb %a0@(176)
48098: 6722 beqs 480bc <_Thread_Stack_Free+0x30> <== NEVER TAKEN
* Call ONLY the CPU table stack free hook, or the
* the RTEMS workspace free. This is so the free
* routine properly matches the allocation of the stack.
*/
if ( Configuration.stack_free_hook )
4809a: 2279 0005 c27c moveal 5c27c <Configuration+0x28>,%a1
480a0: 4a89 tstl %a1
480a2: 670a beqs 480ae <_Thread_Stack_Free+0x22> <== ALWAYS TAKEN
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
480a4: 2d68 00b6 0008 movel %a0@(182),%fp@(8) <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
480aa: 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 );
480ac: 4ed1 jmp %a1@ <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
480ae: 2d68 00b6 0008 movel %a0@(182),%fp@(8)
}
480b4: 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 );
480b6: 4ef9 0004 87b0 jmp 487b0 <_Workspace_Free>
}
480bc: 4e5e unlk %fp <== NOT EXECUTED
00048110 <_Thread_Start>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
48110: 7001 moveq #1,%d0
Thread_Start_types the_prototype,
void *entry_point,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
48112: 4e56 0000 linkw %fp,#0
48116: 2f0a movel %a2,%sp@-
48118: 246e 0008 moveal %fp@(8),%a2
4811c: c0aa 0010 andl %a2@(16),%d0
if ( _States_Is_dormant( the_thread->current_state ) ) {
48120: 6738 beqs 4815a <_Thread_Start+0x4a> <== NEVER TAKEN
the_thread->Start.entry_point = (Thread_Entry) entry_point;
48122: 256e 0010 008e movel %fp@(16),%a2@(142)
the_thread->Start.prototype = the_prototype;
48128: 256e 000c 0092 movel %fp@(12),%a2@(146)
the_thread->Start.pointer_argument = pointer_argument;
4812e: 256e 0014 0096 movel %fp@(20),%a2@(150)
the_thread->Start.numeric_argument = numeric_argument;
48134: 256e 0018 009a movel %fp@(24),%a2@(154)
_Thread_Load_environment( the_thread );
4813a: 2f0a movel %a2,%sp@-
4813c: 4eb9 0004 af34 jsr 4af34 <_Thread_Load_environment>
_Thread_Ready( the_thread );
48142: 2f0a movel %a2,%sp@-
48144: 4eb9 0004 b1cc jsr 4b1cc <_Thread_Ready>
_User_extensions_Thread_start( the_thread );
4814a: 2f0a movel %a2,%sp@-
4814c: 4eb9 0004 849c jsr 4849c <_User_extensions_Thread_start>
return true;
48152: 4fef 000c lea %sp@(12),%sp
48156: 7001 moveq #1,%d0
48158: 6002 bras 4815c <_Thread_Start+0x4c>
}
return false;
4815a: 4200 clrb %d0 <== NOT EXECUTED
}
4815c: 246e fffc moveal %fp@(-4),%a2
48160: 4e5e unlk %fp <== NOT EXECUTED
00048164 <_Thread_Suspend>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
48164: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Suspend(
Thread_Control *the_thread
)
{
4816a: 4e56 0000 linkw %fp,#0
4816e: 206e 0008 moveal %fp@(8),%a0
48172: 2f02 movel %d2,%sp@-
ISR_Level level;
_ISR_Disable( level );
48174: 40c2 movew %sr,%d2
48176: 8082 orl %d2,%d0
48178: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
4817a: 2028 0010 movel %a0@(16),%d0
4817e: 670c beqs 4818c <_Thread_Suspend+0x28> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
48180: 7202 moveq #2,%d1 <== NOT EXECUTED
48182: 8280 orl %d0,%d1 <== NOT EXECUTED
48184: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
48188: 46c2 movew %d2,%sr <== NOT EXECUTED
return;
4818a: 601a bras 481a6 <_Thread_Suspend+0x42> <== NOT EXECUTED
}
the_thread->current_state = STATES_SUSPENDED;
4818c: 7002 moveq #2,%d0
4818e: 2140 0010 movel %d0,%a0@(16)
48192: 2f08 movel %a0,%sp@-
48194: 4879 0005 db8e pea 5db8e <_Scheduler>
4819a: 2079 0005 db9a moveal 5db9a <_Scheduler+0xc>,%a0
481a0: 4e90 jsr %a0@
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
481a2: 46c2 movew %d2,%sr
481a4: 508f addql #8,%sp
}
481a6: 242e fffc movel %fp@(-4),%d2
481aa: 4e5e unlk %fp
...
000481b0 <_Thread_Tickle_timeslice>:
*
* Output parameters: NONE
*/
void _Thread_Tickle_timeslice( void )
{
481b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481b4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Thread_Control *executing;
executing = _Thread_Executing;
481b6: 2479 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
/*
* If the thread is not preemptible or is not ready, then
* just return.
*/
if ( !executing->is_preemptible )
481bc: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED
481c0: 675e beqs 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED
return;
if ( !_States_Is_ready( executing->current_state ) )
481c2: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
481c6: 6658 bnes 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED
/*
* The cpu budget algorithm determines what happens next.
*/
switch ( executing->budget_algorithm ) {
481c8: 202a 007a movel %a2@(122),%d0 <== NOT EXECUTED
481cc: 7201 moveq #1,%d1 <== NOT EXECUTED
481ce: b280 cmpl %d0,%d1 <== NOT EXECUTED
481d0: 624e bhis 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED
481d2: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
481d6: b280 cmpl %d0,%d1 <== NOT EXECUTED
481d8: 640a bccs 481e4 <_Thread_Tickle_timeslice+0x34> <== NOT EXECUTED
481da: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
481de: b280 cmpl %d0,%d1 <== NOT EXECUTED
481e0: 663e bnes 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED
481e2: 6026 bras 4820a <_Thread_Tickle_timeslice+0x5a> <== 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 ) {
481e4: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED
481e8: 5380 subql #1,%d0 <== NOT EXECUTED
481ea: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
481ee: 6e30 bgts 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
481f0: 4879 0005 db8e pea 5db8e <_Scheduler> <== NOT EXECUTED
481f6: 2079 0005 db96 moveal 5db96 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
481fc: 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;
481fe: 41f9 0005 dac0 lea 5dac0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
48204: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
48208: 6014 bras 4821e <_Thread_Tickle_timeslice+0x6e> <== NOT EXECUTED
}
break;
#if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
if ( --executing->cpu_time_budget == 0 )
4820a: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED
4820e: 5380 subql #1,%d0 <== NOT EXECUTED
48210: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
48214: 660a bnes 48220 <_Thread_Tickle_timeslice+0x70> <== NOT EXECUTED
(*executing->budget_callout)( executing );
48216: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48218: 206a 007e moveal %a2@(126),%a0 <== NOT EXECUTED
4821c: 4e90 jsr %a0@ <== NOT EXECUTED
4821e: 588f addql #4,%sp <== NOT EXECUTED
break;
#endif
}
}
48220: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48224: 4e5e unlk %fp <== NOT EXECUTED
000472b0 <_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 ) ) {
472b0: 7202 moveq #2,%d1 <== NOT EXECUTED
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
472b2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
472b6: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
472ba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472bc: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
472c0: 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 ) ) {
472c4: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
472c8: 6618 bnes 472e2 <_Thread_blocking_operation_Cancel+0x32><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
472ca: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
472ce: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
472d2: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
472d4: 486a 0048 pea %a2@(72) <== NOT EXECUTED
472d8: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
472de: 588f addql #4,%sp <== NOT EXECUTED
472e0: 6002 bras 472e4 <_Thread_blocking_operation_Cancel+0x34><== NOT EXECUTED
} else
_ISR_Enable( level );
472e2: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
472e4: 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
}
472e8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
472ec: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
472f2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
472f6: 4e5e unlk %fp <== NOT EXECUTED
472f8: 4ef9 0004 743c jmp 4743c <_Thread_Clear_state> <== NOT EXECUTED
...
00047abc <_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;
47abc: 41f9 0004 afb0 lea 4afb0 <_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 )
47ac2: 7001 moveq #1,%d0
*/
Thread_Control *_Thread_queue_Dequeue(
Thread_queue_Control *the_thread_queue
)
{
47ac4: 4e56 fff4 linkw %fp,#-12
47ac8: 48d7 040c moveml %d2-%d3/%a2,%sp@
47acc: 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 )
47ad0: b0aa 0034 cmpl %a2@(52),%d0
47ad4: 6606 bnes 47adc <_Thread_queue_Dequeue+0x20>
dequeue_p = _Thread_queue_Dequeue_priority;
47ad6: 41f9 0004 7b18 lea 47b18 <_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 );
47adc: 2f0a movel %a2,%sp@-
47ade: 4e90 jsr %a0@
_ISR_Disable( level );
47ae0: 223c 0000 0700 movel #1792,%d1
47ae6: 40c2 movew %sr,%d2
47ae8: 8282 orl %d2,%d1
47aea: 46c1 movew %d1,%sr
if ( !the_thread ) {
47aec: 588f addql #4,%sp
47aee: 4a80 tstl %d0
47af0: 661a bnes 47b0c <_Thread_queue_Dequeue+0x50>
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
47af2: 222a 0030 movel %a2@(48),%d1
47af6: 7601 moveq #1,%d3
47af8: 5381 subql #1,%d1
47afa: b681 cmpl %d1,%d3
47afc: 650e bcss 47b0c <_Thread_queue_Dequeue+0x50> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
47afe: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
47b02: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
the_thread = _Thread_Executing;
47b06: 2039 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
}
}
_ISR_Enable( level );
47b0c: 46c2 movew %d2,%sr
return the_thread;
}
47b0e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
47b14: 4e5e unlk %fp <== NOT EXECUTED
0004afb0 <_Thread_queue_Dequeue_fifo>:
)
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4afb0: 223c 0000 0700 movel #1792,%d1
*/
Thread_Control *_Thread_queue_Dequeue_fifo(
Thread_queue_Control *the_thread_queue
)
{
4afb6: 4e56 fff4 linkw %fp,#-12
4afba: 206e 0008 moveal %fp@(8),%a0
4afbe: 48d7 1c00 moveml %a2-%a4,%sp@
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4afc2: 40c0 movew %sr,%d0
4afc4: 8280 orl %d0,%d1
4afc6: 46c1 movew %d1,%sr
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4afc8: 2248 moveal %a0,%a1
4afca: 2459 moveal %a1@+,%a2
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
4afcc: b3ca cmpal %a2,%a1
4afce: 674e beqs 4b01e <_Thread_queue_Dequeue_fifo+0x6e><== 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;
4afd0: 2252 moveal %a2@,%a1 <== NOT EXECUTED
the_thread = (Thread_Control *)
4afd2: 264a moveal %a2,%a3 <== NOT EXECUTED
4afd4: 49f9 0004 743c lea 4743c <_Thread_Clear_state>,%a4 <== NOT EXECUTED
_Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo );
the_thread->Wait.queue = NULL;
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4afda: 7202 moveq #2,%d1 <== NOT EXECUTED
head->next = new_first;
4afdc: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first->previous = head;
4afde: 2348 0004 movel %a0,%a1@(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;
4afe2: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4afe6: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
4afea: 6710 beqs 4affc <_Thread_queue_Dequeue_fifo+0x4c><== NOT EXECUTED
_ISR_Enable( level );
4afec: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4afee: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4aff4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4aff6: 4e94 jsr %a4@ <== NOT EXECUTED
4aff8: 508f addql #8,%sp <== NOT EXECUTED
4affa: 6026 bras 4b022 <_Thread_queue_Dequeue_fifo+0x72><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4affc: 7203 moveq #3,%d1 <== NOT EXECUTED
4affe: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4b002: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4b004: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4b008: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
4b00e: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4b014: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b016: 4e94 jsr %a4@ <== NOT EXECUTED
4b018: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b01c: 6004 bras 4b022 <_Thread_queue_Dequeue_fifo+0x72><== NOT EXECUTED
#endif
return the_thread;
}
_ISR_Enable( level );
4b01e: 46c0 movew %d0,%sr
return NULL;
4b020: 97cb subal %a3,%a3
}
4b022: 200b movel %a3,%d0
4b024: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4
4b02a: 4e5e unlk %fp
...
00047b18 <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
47b18: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
47b1e: 4e56 ffe8 linkw %fp,#-24
47b22: 226e 0008 moveal %fp@(8),%a1
47b26: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
47b2a: 40c1 movew %sr,%d1
47b2c: 8081 orl %d1,%d0
47b2e: 46c0 movew %d0,%sr
for( index=0 ;
47b30: 4280 clrl %d0
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
47b32: 2049 moveal %a1,%a0
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
47b34: 2600 movel %d0,%d3
47b36: 2400 movel %d0,%d2
47b38: e58b lsll #2,%d3
47b3a: e98a lsll #4,%d2
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
47b3c: 2450 moveal %a0@,%a2
47b3e: 9483 subl %d3,%d2
47b40: 47f1 2804 lea %a1@(00000004,%d2:l),%a3
_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 ] ) ) {
47b44: b7ca cmpal %a2,%a3
47b46: 671e beqs 47b66 <_Thread_queue_Dequeue_priority+0x4e>
47b48: 200a movel %a2,%d0
the_thread = (Thread_Control *) _Chain_First(
47b4a: 240a movel %a2,%d2
47b4c: 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 );
}
47b52: 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;
47b56: 2252 moveal %a2@,%a1
previous_node = the_thread->Object.Node.previous;
47b58: 266a 0004 moveal %a2@(4),%a3
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
47b5c: 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 ) ) {
47b60: b088 cmpl %a0,%d0
47b62: 6614 bnes 47b78 <_Thread_queue_Dequeue_priority+0x60><== NEVER TAKEN
47b64: 6046 bras 47bac <_Thread_queue_Dequeue_priority+0x94>
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
47b66: 5280 addql #1,%d0
47b68: 41e8 000c lea %a0@(12),%a0
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
47b6c: 7404 moveq #4,%d2
47b6e: b480 cmpl %d0,%d2
47b70: 66c2 bnes 47b34 <_Thread_queue_Dequeue_priority+0x1c>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
47b72: 46c1 movew %d1,%sr
return NULL;
47b74: 4202 clrb %d2
47b76: 6078 bras 47bf0 <_Thread_queue_Dequeue_priority+0xd8>
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
47b78: 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;
47b7c: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
47b7e: 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;
47b82: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
47b84: 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;
47b88: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
47b8a: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED
47b8e: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED
47b92: 671e beqs 47bb2 <_Thread_queue_Dequeue_priority+0x9a><== NOT EXECUTED
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
47b94: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
47b98: 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;
47b9c: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
tail->previous = last_node;
47ba0: 214c 0040 movel %a4,%a0@(64) <== 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 );
47ba4: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED
47ba8: 2888 movel %a0,%a4@ <== NOT EXECUTED
47baa: 6006 bras 47bb2 <_Thread_queue_Dequeue_priority+0x9a><== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
47bac: 2689 movel %a1,%a3@
next_node->previous = previous_node;
47bae: 234b 0004 movel %a3,%a1@(4)
47bb2: 47f9 0004 743c lea 4743c <_Thread_Clear_state>,%a3
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
47bb8: 7002 moveq #2,%d0
47bba: b0aa 0050 cmpl %a2@(80),%d0
47bbe: 6710 beqs 47bd0 <_Thread_queue_Dequeue_priority+0xb8><== NEVER TAKEN
_ISR_Enable( level );
47bc0: 46c1 movew %d1,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
47bc2: 2f3c 1003 fff8 movel #268697592,%sp@-
47bc8: 2f0a movel %a2,%sp@-
47bca: 4e93 jsr %a3@
47bcc: 508f addql #8,%sp
47bce: 6020 bras 47bf0 <_Thread_queue_Dequeue_priority+0xd8>
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
47bd0: 7003 moveq #3,%d0 <== NOT EXECUTED
47bd2: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
47bd6: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
47bd8: 486a 0048 pea %a2@(72) <== NOT EXECUTED
47bdc: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
47be2: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
47be8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47bea: 4e93 jsr %a3@ <== NOT EXECUTED
47bec: 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 );
}
47bf0: 2002 movel %d2,%d0
47bf2: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
47bf8: 4e5e unlk %fp <== NOT EXECUTED
0004b030 <_Thread_queue_Enqueue_fifo>:
)
{
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4b030: 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
)
{
4b036: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b03a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b03e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b040: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4b044: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4b046: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b048: 8081 orl %d1,%d0 <== NOT EXECUTED
4b04a: 46c0 movew %d0,%sr <== NOT EXECUTED
sync_state = the_thread_queue->sync_state;
4b04c: 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) {
4b050: 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;
4b052: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4b056: b480 cmpl %d0,%d2 <== NOT EXECUTED
4b058: 661c bnes 4b076 <_Thread_queue_Enqueue_fifo+0x46><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4b05a: 2408 movel %a0,%d2 <== NOT EXECUTED
4b05c: 5882 addql #4,%d2 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
4b05e: 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 );
4b062: 2282 movel %d2,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4b064: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
old_last->next = the_node;
4b068: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
4b06a: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
_Chain_Append_unprotected(
&the_thread_queue->Queues.Fifo,
&the_thread->Object.Node
);
the_thread->Wait.queue = the_thread_queue;
4b06e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
_ISR_Enable( level );
4b072: 46c1 movew %d1,%sr <== NOT EXECUTED
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4b074: 6006 bras 4b07c <_Thread_queue_Enqueue_fifo+0x4c><== 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;
4b076: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
4b07a: 2081 movel %d1,%a0@ <== NOT EXECUTED
return sync_state;
}
4b07c: 241f movel %sp@+,%d2 <== NOT EXECUTED
4b07e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4b080: 4e5e unlk %fp <== NOT EXECUTED
00047c94 <_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
)
{
47c94: 4e56 ffe0 linkw %fp,#-32
47c98: 206e 000c moveal %fp@(12),%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 );
47c9c: 43e8 003c lea %a0@(60),%a1
47ca0: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
47ca4: 246e 0008 moveal %fp@(8),%a2
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47ca8: 49e8 0038 lea %a0@(56),%a4
Priority_Control priority;
States_Control block_state;
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
priority = the_thread->current_priority;
47cac: 2028 0014 movel %a0@(20),%d0
RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number (
Priority_Control the_priority
)
{
return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);
47cb0: 2200 movel %d0,%d1
47cb2: ec89 lsrl #6,%d1
header_index = _Thread_queue_Header_number( priority );
header = &the_thread_queue->Queues.Priority[ header_index ];
block_state = the_thread_queue->state;
47cb4: 2a2a 0038 movel %a2@(56),%d5
Chain_Node *tail = _Chain_Tail( the_chain );
47cb8: 2149 0038 movel %a1,%a0@(56)
head->next = tail;
head->previous = NULL;
47cbc: 42a8 003c clrl %a0@(60)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47cc0: 214c 0040 movel %a4,%a0@(64)
if ( _Thread_queue_Is_reverse_search( priority ) )
47cc4: 0800 0005 btst #5,%d0
47cc8: 6670 bnes 47d3a <_Thread_queue_Enqueue_priority+0xa6>
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
47cca: 2401 movel %d1,%d2
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
47ccc: 367c 0700 moveaw #1792,%a3
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
47cd0: e58a lsll #2,%d2
47cd2: e989 lsll #4,%d1
47cd4: 9282 subl %d2,%d1
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
47cd6: 49f2 1804 lea %a2@(00000004,%d1:l),%a4
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
47cda: 260b movel %a3,%d3
47cdc: 40c2 movew %sr,%d2
47cde: 8682 orl %d2,%d3
47ce0: 46c3 movew %d3,%sr
47ce2: 2602 movel %d2,%d3
search_thread = (Thread_Control *) _Chain_First( header );
47ce4: 2272 1800 moveal %a2@(00000000,%d1:l),%a1
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
47ce8: 78ff moveq #-1,%d4
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
47cea: 601e bras 47d0a <_Thread_queue_Enqueue_priority+0x76>
search_priority = search_thread->current_priority;
47cec: 2829 0014 movel %a1@(20),%d4
if ( priority <= search_priority )
47cf0: b880 cmpl %d0,%d4
47cf2: 641a bccs 47d0e <_Thread_queue_Enqueue_priority+0x7a>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
47cf4: 2c0b movel %a3,%d6
47cf6: 46c2 movew %d2,%sr
47cf8: 8c82 orl %d2,%d6
47cfa: 46c6 movew %d6,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
47cfc: 2c05 movel %d5,%d6
47cfe: cca9 0010 andl %a1@(16),%d6
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
47d02: 6604 bnes 47d08 <_Thread_queue_Enqueue_priority+0x74><== ALWAYS TAKEN
_ISR_Enable( level );
47d04: 46c2 movew %d2,%sr <== NOT EXECUTED
goto restart_forward_search;
47d06: 60d2 bras 47cda <_Thread_queue_Enqueue_priority+0x46><== NOT EXECUTED
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
47d08: 2251 moveal %a1@,%a1
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 ) ) {
47d0a: b9c9 cmpal %a1,%a4
47d0c: 66de bnes 47cec <_Thread_queue_Enqueue_priority+0x58>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
47d0e: 7201 moveq #1,%d1
47d10: b2aa 0030 cmpl %a2@(48),%d1
47d14: 6600 00b8 bnew 47dce <_Thread_queue_Enqueue_priority+0x13a>
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
47d18: 42aa 0030 clrl %a2@(48)
if ( priority == search_priority )
47d1c: b880 cmpl %d0,%d4
47d1e: 6700 0092 beqw 47db2 <_Thread_queue_Enqueue_priority+0x11e>
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
47d22: 2669 0004 moveal %a1@(4),%a3
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
47d26: 2089 movel %a1,%a0@
the_node->previous = previous_node;
47d28: 214b 0004 movel %a3,%a0@(4)
previous_node->next = the_node;
47d2c: 2688 movel %a0,%a3@
search_node->previous = the_node;
47d2e: 2348 0004 movel %a0,%a1@(4)
the_thread->Wait.queue = the_thread_queue;
47d32: 214a 0044 movel %a2,%a0@(68)
_ISR_Enable( level );
47d36: 46c2 movew %d2,%sr
47d38: 6074 bras 47dae <_Thread_queue_Enqueue_priority+0x11a>
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
47d3a: 2401 movel %d1,%d2
47d3c: 280a movel %a2,%d4
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
47d3e: 367c 0700 moveaw #1792,%a3
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
47d42: e58a lsll #2,%d2
47d44: e989 lsll #4,%d1
47d46: 9282 subl %d2,%d1
47d48: d881 addl %d1,%d4
47d4a: 2844 moveal %d4,%a4
47d4c: 508c addql #8,%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;
47d4e: 4282 clrl %d2
47d50: 1439 0005 c252 moveb 5c252 <rtems_maximum_priority>,%d2
_ISR_Disable( level );
47d56: 260b movel %a3,%d3
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
47d58: 5282 addql #1,%d2
_ISR_Disable( level );
47d5a: 40c1 movew %sr,%d1
47d5c: 8681 orl %d1,%d3
47d5e: 46c3 movew %d3,%sr
47d60: 2601 movel %d1,%d3
search_thread = (Thread_Control *) _Chain_Last( header );
47d62: 2254 moveal %a4@,%a1
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
47d64: 6020 bras 47d86 <_Thread_queue_Enqueue_priority+0xf2>
search_priority = search_thread->current_priority;
47d66: 2429 0014 movel %a1@(20),%d2
if ( priority >= search_priority )
47d6a: b480 cmpl %d0,%d2
47d6c: 631c blss 47d8a <_Thread_queue_Enqueue_priority+0xf6><== ALWAYS TAKEN
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
47d6e: 2c0b movel %a3,%d6 <== NOT EXECUTED
47d70: 46c1 movew %d1,%sr <== NOT EXECUTED
47d72: 8c81 orl %d1,%d6 <== NOT EXECUTED
47d74: 46c6 movew %d6,%sr <== NOT EXECUTED
47d76: 2c05 movel %d5,%d6 <== NOT EXECUTED
47d78: cca9 0010 andl %a1@(16),%d6 <== NOT EXECUTED
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
47d7c: 6604 bnes 47d82 <_Thread_queue_Enqueue_priority+0xee><== NOT EXECUTED
_ISR_Enable( level );
47d7e: 46c1 movew %d1,%sr <== NOT EXECUTED
goto restart_reverse_search;
47d80: 60cc bras 47d4e <_Thread_queue_Enqueue_priority+0xba><== NOT EXECUTED
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
47d82: 2269 0004 moveal %a1@(4),%a1 <== 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 ) ) {
47d86: b889 cmpl %a1,%d4
47d88: 66dc bnes 47d66 <_Thread_queue_Enqueue_priority+0xd2>
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
47d8a: 7801 moveq #1,%d4
47d8c: b8aa 0030 cmpl %a2@(48),%d4
47d90: 663c bnes 47dce <_Thread_queue_Enqueue_priority+0x13a><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
47d92: 42aa 0030 clrl %a2@(48)
if ( priority == search_priority )
47d96: b480 cmpl %d0,%d2
47d98: 6718 beqs 47db2 <_Thread_queue_Enqueue_priority+0x11e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
47d9a: 2651 moveal %a1@,%a3
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
47d9c: 2149 0004 movel %a1,%a0@(4)
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
47da0: 208b movel %a3,%a0@
the_node->previous = search_node;
search_node->next = the_node;
next_node->previous = the_node;
47da2: 2748 0004 movel %a0,%a3@(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;
47da6: 2288 movel %a0,%a1@
next_node->previous = the_node;
the_thread->Wait.queue = the_thread_queue;
47da8: 214a 0044 movel %a2,%a0@(68)
_ISR_Enable( level );
47dac: 46c1 movew %d1,%sr
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
47dae: 7001 moveq #1,%d0
47db0: 6026 bras 47dd8 <_Thread_queue_Enqueue_priority+0x144>
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
47db2: 49e9 003c lea %a1@(60),%a4 <== NOT EXECUTED
previous_node = search_node->previous;
47db6: 2669 0040 moveal %a1@(64),%a3 <== 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 );
47dba: 208c movel %a4,%a0@ <== NOT EXECUTED
previous_node = search_node->previous;
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
the_node->previous = previous_node;
47dbc: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
previous_node->next = the_node;
47dc0: 2688 movel %a0,%a3@ <== NOT EXECUTED
search_node->previous = the_node;
47dc2: 2348 0040 movel %a0,%a1@(64) <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
47dc6: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
_ISR_Enable( level );
47dca: 46c3 movew %d3,%sr <== NOT EXECUTED
47dcc: 60e0 bras 47dae <_Thread_queue_Enqueue_priority+0x11a><== 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;
47dce: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
return the_thread_queue->sync_state;
47dd2: 202a 0030 movel %a2@(48),%d0 <== 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;
47dd6: 2083 movel %d3,%a0@ <== NOT EXECUTED
return the_thread_queue->sync_state;
}
47dd8: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
47ddc: 4e5e unlk %fp <== NOT EXECUTED
00047bfc <_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
)
{
47bfc: 4e56 fff0 linkw %fp,#-16
47c00: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
47c04: 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 );
47c08: 2f2b 0038 movel %a3@(56),%sp@-
Thread_queue_Control *,
Thread_Control *,
ISR_Level *
);
the_thread = _Thread_Executing;
47c0c: 2479 0005 df92 moveal 5df92 <_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
)
{
47c12: 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 );
47c16: 2f0a movel %a2,%sp@-
47c18: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state>
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
47c1e: 508f addql #8,%sp
47c20: 4a82 tstl %d2
47c22: 672c beqs 47c50 <_Thread_queue_Enqueue_with_handler+0x54><== ALWAYS TAKEN
_Watchdog_Initialize(
47c24: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
47c28: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
47c2e: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
47c32: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47c36: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
47c3a: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
47c3e: 486a 0048 pea %a2@(72) <== NOT EXECUTED
47c42: 4879 0005 dbe8 pea 5dbe8 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47c48: 4eb9 0004 8514 jsr 48514 <_Watchdog_Insert> <== NOT EXECUTED
47c4e: 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;
47c50: 41f9 0004 b030 lea 4b030 <_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 )
47c56: 7001 moveq #1,%d0
47c58: b0ab 0034 cmpl %a3@(52),%d0
47c5c: 6606 bnes 47c64 <_Thread_queue_Enqueue_with_handler+0x68><== NEVER TAKEN
enqueue_p = _Thread_queue_Enqueue_priority;
47c5e: 41f9 0004 7c94 lea 47c94 <_Thread_queue_Enqueue_priority>,%a0
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
enqueue_p = _Thread_queue_Enqueue_fifo;
sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level );
47c64: 486e fffc pea %fp@(-4)
47c68: 2f0a movel %a2,%sp@-
47c6a: 2f0b movel %a3,%sp@-
47c6c: 4e90 jsr %a0@
if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
47c6e: 4fef 000c lea %sp@(12),%sp
47c72: 7201 moveq #1,%d1
47c74: b280 cmpl %d0,%d1
47c76: 6712 beqs 47c8a <_Thread_queue_Enqueue_with_handler+0x8e><== ALWAYS TAKEN
_Thread_blocking_operation_Cancel( sync_state, the_thread, level );
47c78: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
47c7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47c7e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47c80: 4eb9 0004 72b0 jsr 472b0 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
47c86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
47c8a: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
47c90: 4e5e unlk %fp <== NOT EXECUTED
0004b084 <_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 )
4b084: 7201 moveq #1,%d1 <== NOT EXECUTED
void _Thread_queue_Extract(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4b086: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b08a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4b08e: 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 )
4b092: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED
4b096: 6614 bnes 4b0ac <_Thread_queue_Extract+0x28> <== NOT EXECUTED
_Thread_queue_Extract_priority( the_thread_queue, the_thread );
4b098: 42a7 clrl %sp@- <== NOT EXECUTED
4b09a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b09c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b09e: 4eb9 0004 b0bc jsr 4b0bc <_Thread_queue_Extract_priority_helper><== NOT EXECUTED
4b0a4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
}
4b0a8: 4e5e unlk %fp <== NOT EXECUTED
4b0aa: 4e75 rts <== 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 );
4b0ac: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4b0b0: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4b0b4: 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 );
4b0b6: 4ef9 0004 c80c jmp 4c80c <_Thread_queue_Extract_fifo> <== NOT EXECUTED
0004c80c <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4c80c: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
void _Thread_queue_Extract_fifo(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread
)
{
4c812: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c816: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c818: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4c81c: 40c0 movew %sr,%d0 <== NOT EXECUTED
4c81e: 8280 orl %d0,%d1 <== NOT EXECUTED
4c820: 46c1 movew %d1,%sr <== NOT EXECUTED
4c822: 222a 0010 movel %a2@(16),%d1 <== NOT EXECUTED
4c826: 0281 0003 bee0 andil #245472,%d1 <== NOT EXECUTED
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4c82c: 660a bnes 4c838 <_Thread_queue_Extract_fifo+0x2c><== NOT EXECUTED
_ISR_Enable( level );
4c82e: 46c0 movew %d0,%sr <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4c830: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c834: 4e5e unlk %fp <== NOT EXECUTED
4c836: 4e75 rts <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4c838: 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 ) ) {
4c83a: 7202 moveq #2,%d1 <== NOT EXECUTED
previous = the_node->previous;
4c83c: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4c840: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4c844: 2089 movel %a1,%a0@ <== NOT EXECUTED
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4c846: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4c84a: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
4c84e: 6704 beqs 4c854 <_Thread_queue_Extract_fifo+0x48><== NOT EXECUTED
_ISR_Enable( level );
4c850: 46c0 movew %d0,%sr <== NOT EXECUTED
4c852: 6014 bras 4c868 <_Thread_queue_Extract_fifo+0x5c><== NOT EXECUTED
4c854: 7203 moveq #3,%d1 <== NOT EXECUTED
4c856: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4c85a: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4c85c: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4c860: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
4c866: 588f addql #4,%sp <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4c868: 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
}
4c86c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c870: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4c876: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4c87a: 4e5e unlk %fp <== NOT EXECUTED
4c87c: 4ef9 0004 743c jmp 4743c <_Thread_Clear_state> <== NOT EXECUTED
...
0004b0bc <_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 );
4b0bc: 223c 0000 0700 movel #1792,%d1
void _Thread_queue_Extract_priority_helper(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread,
bool requeuing
)
{
4b0c2: 4e56 ffec linkw %fp,#-20
4b0c6: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4b0ca: 246e 000c moveal %fp@(12),%a2
4b0ce: 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 );
4b0d2: 40c0 movew %sr,%d0
4b0d4: 8280 orl %d0,%d1
4b0d6: 46c1 movew %d1,%sr
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
4b0d8: 222a 0010 movel %a2@(16),%d1
4b0dc: 0281 0003 bee0 andil #245472,%d1
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4b0e2: 6606 bnes 4b0ea <_Thread_queue_Extract_priority_helper+0x2e><== ALWAYS TAKEN
_ISR_Enable( level );
4b0e4: 46c0 movew %d0,%sr <== NOT EXECUTED
return;
4b0e6: 6000 0096 braw 4b17e <_Thread_queue_Extract_priority_helper+0xc2><== 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 );
4b0ea: 220a movel %a2,%d1
4b0ec: 0681 0000 003c addil #60,%d1
/*
* The thread was actually waiting on a thread queue so let's remove it.
*/
next_node = the_node->next;
4b0f2: 2252 moveal %a2@,%a1
previous_node = the_node->previous;
4b0f4: 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
}
4b0f8: 206a 0038 moveal %a2@(56),%a0
*/
next_node = the_node->next;
previous_node = the_node->previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4b0fc: b288 cmpl %a0,%d1
4b0fe: 6734 beqs 4b134 <_Thread_queue_Extract_priority_helper+0x78><== ALWAYS TAKEN
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4b100: 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;
4b104: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4b106: 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;
4b10a: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4b10c: 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;
4b110: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4b112: 222a 0040 movel %a2@(64),%d1 <== NOT EXECUTED
4b116: b2aa 0038 cmpl %a2@(56),%d1 <== NOT EXECUTED
4b11a: 671e beqs 4b13a <_Thread_queue_Extract_priority_helper+0x7e><== NOT EXECUTED
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
4b11c: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
4b120: 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;
4b124: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
tail->previous = last_node;
4b128: 214c 0040 movel %a4,%a0@(64) <== 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 );
4b12c: 41e8 003c lea %a0@(60),%a0 <== NOT EXECUTED
4b130: 2888 movel %a0,%a4@ <== NOT EXECUTED
4b132: 6006 bras 4b13a <_Thread_queue_Extract_priority_helper+0x7e><== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4b134: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4b136: 234b 0004 movel %a3,%a1@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4b13a: 4a02 tstb %d2
4b13c: 6704 beqs 4b142 <_Thread_queue_Extract_priority_helper+0x86><== NEVER TAKEN
_ISR_Enable( level );
4b13e: 46c0 movew %d0,%sr
4b140: 603c bras 4b17e <_Thread_queue_Extract_priority_helper+0xc2>
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4b142: 7202 moveq #2,%d1 <== NOT EXECUTED
4b144: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
4b148: 6704 beqs 4b14e <_Thread_queue_Extract_priority_helper+0x92><== NOT EXECUTED
_ISR_Enable( level );
4b14a: 46c0 movew %d0,%sr <== NOT EXECUTED
4b14c: 6014 bras 4b162 <_Thread_queue_Extract_priority_helper+0xa6><== NOT EXECUTED
4b14e: 7203 moveq #3,%d1 <== NOT EXECUTED
4b150: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4b154: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4b156: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4b15a: 4eb9 0004 863c jsr 4863c <_Watchdog_Remove> <== NOT EXECUTED
4b160: 588f addql #4,%sp <== NOT EXECUTED
4b162: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
4b166: 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
}
4b16c: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4b172: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4b176: 4e5e unlk %fp <== NOT EXECUTED
4b178: 4ef9 0004 743c jmp 4743c <_Thread_Clear_state> <== NOT EXECUTED
4b17e: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4b184: 4e5e unlk %fp <== NOT EXECUTED
00047de0 <_Thread_queue_Extract_with_proxy>:
*/
bool _Thread_queue_Extract_with_proxy(
Thread_Control *the_thread
)
{
47de0: 4e56 0000 linkw %fp,#0
47de4: 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);
47de8: 2028 0010 movel %a0@(16),%d0
47dec: 0280 0003 bee0 andil #245472,%d0
States_Control state;
state = the_thread->current_state;
if ( _States_Is_waiting_on_thread_queue( state ) ) {
47df2: 6712 beqs 47e06 <_Thread_queue_Extract_with_proxy+0x26><== ALWAYS TAKEN
if ( proxy_extract_callout )
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
47df4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47df6: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED
47dfa: 4eb9 0004 b084 jsr 4b084 <_Thread_queue_Extract> <== NOT EXECUTED
return true;
47e00: 508f addql #8,%sp <== NOT EXECUTED
47e02: 7001 moveq #1,%d0 <== NOT EXECUTED
47e04: 6002 bras 47e08 <_Thread_queue_Extract_with_proxy+0x28><== NOT EXECUTED
}
return false;
47e06: 4200 clrb %d0
}
47e08: 4e5e unlk %fp <== NOT EXECUTED
00049a48 <_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;
49a48: 43f9 0004 ce7c lea 4ce7c <_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 )
49a4e: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First(
Thread_queue_Control *the_thread_queue
)
{
49a50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49a54: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
49a58: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
49a5c: 6606 bnes 49a64 <_Thread_queue_First+0x1c> <== NOT EXECUTED
first_p = _Thread_queue_First_priority;
49a5e: 43f9 0004 9a6c lea 49a6c <_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 );
49a64: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
49a68: 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 );
49a6a: 4ed1 jmp %a1@ <== NOT EXECUTED
0004ce7c <_Thread_queue_First_fifo>:
*/
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
4ce7c: 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;
}
4ce80: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4ce84: 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 ) )
4ce86: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
4ce88: 6602 bnes 4ce8c <_Thread_queue_First_fifo+0x10> <== NOT EXECUTED
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
4ce8a: 4280 clrl %d0 <== NOT EXECUTED
}
4ce8c: 4e5e unlk %fp <== NOT EXECUTED
00049a6c <_Thread_queue_First_priority>:
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
49a6c: 4281 clrl %d1 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
49a6e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
49a72: 226e 0008 moveal %fp@(8),%a1 <== 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;
49a76: 2049 moveal %a1,%a0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
49a78: 48d7 040c moveml %d2-%d3/%a2,%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 );
49a7c: 2601 movel %d1,%d3 <== NOT EXECUTED
49a7e: 2401 movel %d1,%d2 <== NOT EXECUTED
49a80: e58b lsll #2,%d3 <== NOT EXECUTED
49a82: e98a lsll #4,%d2 <== NOT EXECUTED
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
}
49a84: 2010 movel %a0@,%d0 <== NOT EXECUTED
49a86: 9483 subl %d3,%d2 <== NOT EXECUTED
49a88: 45f1 2804 lea %a1@(00000004,%d2:l),%a2 <== NOT EXECUTED
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
49a8c: b5c0 cmpal %d0,%a2 <== NOT EXECUTED
49a8e: 660e bnes 49a9e <_Thread_queue_First_priority+0x32><== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
49a90: 5281 addql #1,%d1 <== NOT EXECUTED
49a92: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
49a96: 7004 moveq #4,%d0 <== NOT EXECUTED
49a98: b081 cmpl %d1,%d0 <== NOT EXECUTED
49a9a: 66e0 bnes 49a7c <_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;
49a9c: 4200 clrb %d0 <== NOT EXECUTED
}
49a9e: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
49aa2: 4e5e unlk %fp <== NOT EXECUTED
...
0004b188 <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4b188: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b18c: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4b190: 2069 0044 moveal %a1@(68),%a0 <== 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 &&
4b194: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
4b198: 671c beqs 4b1b6 <_Thread_queue_Process_timeout+0x2e><== NOT EXECUTED
4b19a: b3f9 0005 df92 cmpal 5df92 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4b1a0: 6614 bnes 4b1b6 <_Thread_queue_Process_timeout+0x2e><== NOT EXECUTED
_Thread_Is_executing( the_thread ) ) {
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
4b1a2: 7203 moveq #3,%d1 <== NOT EXECUTED
4b1a4: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b1a6: 6720 beqs 4b1c8 <_Thread_queue_Process_timeout+0x40><== NOT EXECUTED
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4b1a8: 7002 moveq #2,%d0 <== 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;
4b1aa: 2368 003c 0034 movel %a0@(60),%a1@(52) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4b1b0: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
4b1b4: 6012 bras 4b1c8 <_Thread_queue_Process_timeout+0x40><== NOT EXECUTED
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
4b1b6: 2368 003c 0034 movel %a0@(60),%a1@(52) <== NOT EXECUTED
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4b1bc: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4b1be: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b1c0: 4eb9 0004 b084 jsr 4b084 <_Thread_queue_Extract> <== NOT EXECUTED
4b1c6: 508f addql #8,%sp <== NOT EXECUTED
}
}
4b1c8: 4e5e unlk %fp <== NOT EXECUTED
00047eac <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
47eac: 4e56 fff0 linkw %fp,#-16
47eb0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
47eb4: 246e 0008 moveal %fp@(8),%a2
47eb8: 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 )
47ebc: 4a8a tstl %a2
47ebe: 6746 beqs 47f06 <_Thread_queue_Requeue+0x5a> <== 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 ) {
47ec0: 7001 moveq #1,%d0
47ec2: b0aa 0034 cmpl %a2@(52),%d0
47ec6: 663e bnes 47f06 <_Thread_queue_Requeue+0x5a> <== NEVER TAKEN
Thread_queue_Control *tq = the_thread_queue;
ISR_Level level;
ISR_Level level_ignored;
_ISR_Disable( level );
47ec8: 303c 0700 movew #1792,%d0
47ecc: 40c2 movew %sr,%d2
47ece: 8082 orl %d2,%d0
47ed0: 46c0 movew %d0,%sr
47ed2: 202b 0010 movel %a3@(16),%d0
47ed6: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
47edc: 6726 beqs 47f04 <_Thread_queue_Requeue+0x58> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
47ede: 7001 moveq #1,%d0
47ee0: 2540 0030 movel %d0,%a2@(48)
_Thread_queue_Enter_critical_section( tq );
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
47ee4: 4878 0001 pea 1 <ADD>
47ee8: 2f0b movel %a3,%sp@-
47eea: 2f0a movel %a2,%sp@-
47eec: 4eb9 0004 b0bc jsr 4b0bc <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
47ef2: 486e fffc pea %fp@(-4)
47ef6: 2f0b movel %a3,%sp@-
47ef8: 2f0a movel %a2,%sp@-
47efa: 4eb9 0004 7c94 jsr 47c94 <_Thread_queue_Enqueue_priority>
47f00: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
47f04: 46c2 movew %d2,%sr
}
}
47f06: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
47f0c: 4e5e unlk %fp <== NOT EXECUTED
00047f10 <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
47f10: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
47f14: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47f18: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47f1c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
47f22: 508f addql #8,%sp <== NOT EXECUTED
47f24: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47f28: 6618 bnes 47f42 <_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 );
47f2a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47f2c: 4eb9 0004 b188 jsr 4b188 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
47f32: 588f addql #4,%sp <== NOT EXECUTED
47f34: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47f3a: 5380 subql #1,%d0 <== NOT EXECUTED
47f3c: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
47f42: 4e5e unlk %fp <== NOT EXECUTED
...
00051fa2 <_Timer_server_Body>:
* @a arg points to the corresponding timer server control block.
*/
static rtems_task _Timer_server_Body(
rtems_task_argument arg
)
{
51fa2: 4e56 ffb4 linkw %fp,#-76 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
51fa6: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED
51faa: 200e movel %fp,%d0 <== NOT EXECUTED
51fac: 220e movel %fp,%d1 <== NOT EXECUTED
51fae: 5181 subql #8,%d1 <== NOT EXECUTED
51fb0: 0680 ffff fff4 addil #-12,%d0 <== NOT EXECUTED
51fb6: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
51fba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
51fbe: 260e movel %fp,%d3 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail(
const Chain_Control *the_chain
)
{
return &the_chain->Tail.Node;
51fc0: 2808 movel %a0,%d4 <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
51fc2: 2c0a movel %a2,%d6 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
51fc4: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
51fca: 0686 0000 0040 addil #64,%d6 <== NOT EXECUTED
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
watchdogs->last_snapshot = snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
51fd0: 2a0a movel %a2,%d5 <== 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 );
51fd2: 240a movel %a2,%d2 <== NOT EXECUTED
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
watchdogs->last_snapshot = snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
51fd4: 0685 0000 0030 addil #48,%d5 <== NOT EXECUTED
51fda: 47f9 0005 5e1c lea 55e1c <_Watchdog_Adjust_to_chain>,%a3 <== 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 );
51fe0: 0682 0000 0068 addil #104,%d2 <== NOT EXECUTED
51fe6: 4bf9 0005 5d9c lea 55d9c <_Watchdog_Adjust>,%a5 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail(
const Chain_Control *the_chain
)
{
return &the_chain->Tail.Node;
51fec: 2e01 movel %d1,%d7 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
51fee: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
51ff2: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED
51ff6: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
head->previous = NULL;
51ffa: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
tail->previous = head;
51ffe: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
52002: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED
tail->previous = head;
52006: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
5200a: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
5200e: 2d46 ffe0 movel %d6,%fp@(-32) <== 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;
52012: 41ee fff4 lea %fp@(-12),%a0 <== 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 );
52016: 49f9 0005 5eac lea 55eac <_Watchdog_Insert>,%a4 <== 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;
5201c: 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;
52020: 2039 0007 66d6 movel 766d6 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
52026: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
5202a: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
5202e: 9081 subl %d1,%d0 <== NOT EXECUTED
52030: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52032: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52034: 2f05 movel %d5,%sp@- <== NOT EXECUTED
52036: 4e93 jsr %a3@ <== 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();
52038: 2039 0007 6656 movel 76656 <_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 ) {
5203e: 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;
52042: 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 ) {
52046: b280 cmpl %d0,%d1 <== NOT EXECUTED
52048: 6412 bccs 5205c <_Timer_server_Body+0xba> <== 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 );
5204a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5204c: 2c00 movel %d0,%d6 <== NOT EXECUTED
5204e: 9c81 subl %d1,%d6 <== NOT EXECUTED
52050: 2f06 movel %d6,%sp@- <== NOT EXECUTED
52052: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
52056: 2f02 movel %d2,%sp@- <== NOT EXECUTED
52058: 4e93 jsr %a3@ <== NOT EXECUTED
5205a: 6014 bras 52070 <_Timer_server_Body+0xce> <== NOT EXECUTED
} else if ( snapshot < last_snapshot ) {
5205c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5205e: 6318 blss 52078 <_Timer_server_Body+0xd6> <== 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 );
52060: 9280 subl %d0,%d1 <== NOT EXECUTED
52062: 2f01 movel %d1,%sp@- <== NOT EXECUTED
52064: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
52068: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
5206c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5206e: 4e95 jsr %a5@ <== NOT EXECUTED
52070: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
52074: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
watchdogs->last_snapshot = snapshot;
52078: 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 );
5207c: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
52080: 2f00 movel %d0,%sp@- <== NOT EXECUTED
52082: 4eb9 0005 2aa4 jsr 52aa4 <_Chain_Get> <== NOT EXECUTED
if ( timer == NULL ) {
52088: 588f addql #4,%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 );
5208a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( timer == NULL ) {
5208c: 4a80 tstl %d0 <== NOT EXECUTED
5208e: 6724 beqs 520b4 <_Timer_server_Body+0x112> <== NOT EXECUTED
static void _Timer_server_Insert_timer(
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
52090: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
52094: 7201 moveq #1,%d1 <== NOT EXECUTED
52096: b280 cmpl %d0,%d1 <== NOT EXECUTED
52098: 6608 bnes 520a2 <_Timer_server_Body+0x100> <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
5209a: 4868 0010 pea %a0@(16) <== NOT EXECUTED
5209e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
520a0: 600c bras 520ae <_Timer_server_Body+0x10c> <== NOT EXECUTED
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
520a2: 7c03 moveq #3,%d6 <== NOT EXECUTED
520a4: bc80 cmpl %d0,%d6 <== NOT EXECUTED
520a6: 66d4 bnes 5207c <_Timer_server_Body+0xda> <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
520a8: 4868 0010 pea %a0@(16) <== NOT EXECUTED
520ac: 2f02 movel %d2,%sp@- <== NOT EXECUTED
520ae: 4e94 jsr %a4@ <== NOT EXECUTED
520b0: 508f addql #8,%sp <== NOT EXECUTED
520b2: 60c8 bras 5207c <_Timer_server_Body+0xda> <== 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 );
520b4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
520ba: 40c1 movew %sr,%d1 <== NOT EXECUTED
520bc: 8081 orl %d1,%d0 <== NOT EXECUTED
520be: 46c0 movew %d0,%sr <== NOT EXECUTED
tmp = ts->insert_chain;
520c0: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
if ( _Chain_Is_empty( insert_chain ) ) {
520c4: beae fff4 cmpl %fp@(-12),%d7 <== NOT EXECUTED
520c8: 6608 bnes 520d2 <_Timer_server_Body+0x130> <== NOT EXECUTED
ts->insert_chain = NULL;
520ca: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED
do_loop = false;
520ce: 4200 clrb %d0 <== NOT EXECUTED
520d0: 6002 bras 520d4 <_Timer_server_Body+0x132> <== NOT EXECUTED
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
tmp = ts->insert_chain;
if ( _Chain_Is_empty( insert_chain ) ) {
520d2: 7001 moveq #1,%d0 <== NOT EXECUTED
ts->insert_chain = NULL;
do_loop = false;
}
_ISR_Enable( level );
520d4: 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 ) {
520d6: 4a00 tstb %d0 <== NOT EXECUTED
520d8: 6600 ff46 bnew 52020 <_Timer_server_Body+0x7e> <== 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 ) ) {
520dc: b8ae ffe8 cmpl %fp@(-24),%d4 <== NOT EXECUTED
520e0: 6742 beqs 52124 <_Timer_server_Body+0x182> <== 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 );
520e2: 2c3c 0000 0700 movel #1792,%d6 <== NOT EXECUTED
520e8: 2006 movel %d6,%d0 <== NOT EXECUTED
520ea: 40c1 movew %sr,%d1 <== NOT EXECUTED
520ec: 8081 orl %d1,%d0 <== NOT EXECUTED
520ee: 46c0 movew %d0,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
520f0: 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))
520f4: b888 cmpl %a0,%d4 <== NOT EXECUTED
520f6: 6726 beqs 5211e <_Timer_server_Body+0x17c> <== 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;
520f8: 2250 moveal %a0@,%a1 <== NOT EXECUTED
head->next = new_first;
520fa: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED
new_first->previous = head;
520fe: 2343 0004 movel %d3,%a1@(4) <== 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 );
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
52102: 4a88 tstl %a0 <== NOT EXECUTED
52104: 6718 beqs 5211e <_Timer_server_Body+0x17c> <== NOT EXECUTED
watchdog->state = WATCHDOG_INACTIVE;
52106: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
_ISR_Enable( level );
5210a: 46c1 movew %d1,%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 );
5210c: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED
52110: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED
52114: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
52118: 4e90 jsr %a0@ <== NOT EXECUTED
}
5211a: 508f addql #8,%sp <== NOT EXECUTED
5211c: 60ca bras 520e8 <_Timer_server_Body+0x146> <== NOT EXECUTED
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
_ISR_Enable( level );
} else {
_ISR_Enable( level );
5211e: 46c1 movew %d1,%sr <== NOT EXECUTED
52120: 6000 fef0 braw 52012 <_Timer_server_Body+0x70> <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
52124: 49f9 0005 5fd4 lea 55fd4 <_Watchdog_Remove>,%a4 <== NOT EXECUTED
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
}
} else {
ts->active = false;
5212a: 4200 clrb %d0 <== NOT EXECUTED
5212c: 1540 007c moveb %d0,%a2@(124) <== NOT EXECUTED
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
52130: 4eba fd96 jsr %pc@(51ec8 <_Thread_Disable_dispatch>) <== NOT EXECUTED
_Thread_Set_state( ts->thread, STATES_DELAYING );
52134: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
52138: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5213a: 4eb9 0005 5758 jsr 55758 <_Thread_Set_state> <== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
52140: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52142: 4eba fd9a jsr %pc@(51ede <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
52146: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52148: 4eba fdf4 jsr %pc@(51f3e <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
_Thread_Enable_dispatch();
5214c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
ts->active = true;
52152: 7201 moveq #1,%d1 <== NOT EXECUTED
52154: 1541 007c moveb %d1,%a2@(124) <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
52158: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED
5215c: 4e94 jsr %a4@ <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
5215e: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
52162: 4e94 jsr %a4@ <== NOT EXECUTED
52164: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
52168: 6000 fea8 braw 52012 <_Timer_server_Body+0x70> <== NOT EXECUTED
00051ede <_Timer_server_Reset_interval_system_watchdog>:
}
static void _Timer_server_Reset_interval_system_watchdog(
Timer_server_Control *ts
)
{
51ede: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
51ee2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51ee4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
51ee8: 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 );
51eea: 240a movel %a2,%d2 <== NOT EXECUTED
51eec: 5082 addql #8,%d2 <== NOT EXECUTED
51eee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51ef0: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
51ef6: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
51efc: 40c1 movew %sr,%d1 <== NOT EXECUTED
51efe: 8081 orl %d1,%d0 <== NOT EXECUTED
51f00: 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 );
51f02: 200a movel %a2,%d0 <== NOT EXECUTED
51f04: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
51f0a: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
51f0c: 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 ) ) {
51f10: b088 cmpl %a0,%d0 <== NOT EXECUTED
51f12: 671c beqs 51f30 <_Timer_server_Reset_interval_system_watchdog+0x52><== NOT EXECUTED
Watchdog_Interval delta_interval =
51f14: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
51f18: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
51f1a: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
51f1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51f20: 4879 0007 668c pea 7668c <_Watchdog_Ticks_chain> <== NOT EXECUTED
51f26: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED
51f2c: 508f addql #8,%sp <== NOT EXECUTED
51f2e: 6002 bras 51f32 <_Timer_server_Reset_interval_system_watchdog+0x54><== NOT EXECUTED
_Watchdog_Insert_ticks(
&ts->Interval_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
51f30: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
51f32: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
51f36: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
51f3a: 4e5e unlk %fp <== NOT EXECUTED
00051f3e <_Timer_server_Reset_tod_system_watchdog>:
}
static void _Timer_server_Reset_tod_system_watchdog(
Timer_server_Control *ts
)
{
51f3e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
51f42: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51f44: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
51f48: 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 );
51f4a: 240a movel %a2,%d2 <== NOT EXECUTED
51f4c: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED
51f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51f54: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
51f5a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
51f60: 40c1 movew %sr,%d1 <== NOT EXECUTED
51f62: 8081 orl %d1,%d0 <== NOT EXECUTED
51f64: 46c0 movew %d0,%sr <== NOT EXECUTED
51f66: 200a movel %a2,%d0 <== NOT EXECUTED
51f68: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
51f6e: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
51f70: 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 ) ) {
51f74: b088 cmpl %a0,%d0 <== NOT EXECUTED
51f76: 671c beqs 51f94 <_Timer_server_Reset_tod_system_watchdog+0x56><== NOT EXECUTED
Watchdog_Interval delta_interval =
51f78: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
51f7c: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
51f7e: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
51f82: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51f84: 4879 0007 6680 pea 76680 <_Watchdog_Seconds_chain> <== NOT EXECUTED
51f8a: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED
51f90: 508f addql #8,%sp <== NOT EXECUTED
51f92: 6002 bras 51f96 <_Timer_server_Reset_tod_system_watchdog+0x58><== NOT EXECUTED
_Watchdog_Insert_seconds(
&ts->TOD_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
51f94: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
51f96: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
51f9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
51f9e: 4e5e unlk %fp <== NOT EXECUTED
0005216c <_Timer_server_Schedule_operation_method>:
static void _Timer_server_Schedule_operation_method(
Timer_server_Control *ts,
Timer_Control *timer
)
{
5216c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
52170: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
52174: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
52178: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
if ( ts->insert_chain == NULL ) {
5217c: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
52180: 6600 00ea bnew 5226c <_Timer_server_Schedule_operation_method+0x100><== NOT EXECUTED
* is the reference point for the delta chain. Thus if we do not update the
* reference point we have to add DT to the initial delta of the watchdog
* being inserted. This could result in an integer overflow.
*/
_Thread_Disable_dispatch();
52184: 4eba fd42 jsr %pc@(51ec8 <_Thread_Disable_dispatch>) <== NOT EXECUTED
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
52188: 202b 0038 movel %a3@(56),%d0 <== NOT EXECUTED
5218c: 7201 moveq #1,%d1 <== NOT EXECUTED
5218e: b280 cmpl %d0,%d1 <== NOT EXECUTED
52190: 665c bnes 521ee <_Timer_server_Schedule_operation_method+0x82><== NOT EXECUTED
/*
* We have to advance the last known ticks value of the server and update
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
52192: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
52198: 40c2 movew %sr,%d2 <== NOT EXECUTED
5219a: 8082 orl %d2,%d0 <== NOT EXECUTED
5219c: 46c0 movew %d0,%sr <== NOT EXECUTED
snapshot = _Watchdog_Ticks_since_boot;
5219e: 2039 0007 66d6 movel 766d6 <_Watchdog_Ticks_since_boot>,%d0<== 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 );
521a4: 43ea 0034 lea %a2@(52),%a1 <== NOT EXECUTED
last_snapshot = ts->Interval_watchdogs.last_snapshot;
521a8: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
521ac: 206a 0030 moveal %a2@(48),%a0 <== 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 ) ) {
521b0: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
521b2: 6716 beqs 521ca <_Timer_server_Schedule_operation_method+0x5e><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
/*
* We assume adequate unsigned arithmetic here.
*/
delta = snapshot - last_snapshot;
521b4: 2240 moveal %d0,%a1 <== NOT EXECUTED
521b6: 93c1 subal %d1,%a1 <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
521b8: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
if (delta_interval > delta) {
521bc: b3c1 cmpal %d1,%a1 <== NOT EXECUTED
521be: 6404 bccs 521c4 <_Timer_server_Schedule_operation_method+0x58><== NOT EXECUTED
delta_interval -= delta;
521c0: 9289 subl %a1,%d1 <== NOT EXECUTED
521c2: 6002 bras 521c6 <_Timer_server_Schedule_operation_method+0x5a><== NOT EXECUTED
} else {
delta_interval = 0;
521c4: 4281 clrl %d1 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
521c6: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
}
ts->Interval_watchdogs.last_snapshot = snapshot;
521ca: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_ISR_Enable( level );
521ce: 46c2 movew %d2,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
521d0: 486b 0010 pea %a3@(16) <== NOT EXECUTED
521d4: 486a 0030 pea %a2@(48) <== NOT EXECUTED
521d8: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
521de: 508f addql #8,%sp <== NOT EXECUTED
521e0: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED
521e4: 6678 bnes 5225e <_Timer_server_Schedule_operation_method+0xf2><== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
521e6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
521e8: 4eba fcf4 jsr %pc@(51ede <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
521ec: 606e bras 5225c <_Timer_server_Schedule_operation_method+0xf0><== NOT EXECUTED
}
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
521ee: 7203 moveq #3,%d1 <== NOT EXECUTED
521f0: b280 cmpl %d0,%d1 <== NOT EXECUTED
521f2: 666a bnes 5225e <_Timer_server_Schedule_operation_method+0xf2><== NOT EXECUTED
/*
* We have to advance the last known seconds value of the server and update
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
521f4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
521fa: 40c2 movew %sr,%d2 <== NOT EXECUTED
521fc: 8082 orl %d2,%d0 <== NOT EXECUTED
521fe: 46c0 movew %d0,%sr <== NOT EXECUTED
52200: 200a movel %a2,%d0 <== NOT EXECUTED
52202: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
52208: 2239 0007 6656 movel 76656 <_TOD_Now>,%d1 <== NOT EXECUTED
last_snapshot = ts->TOD_watchdogs.last_snapshot;
5220e: 226a 0074 moveal %a2@(116),%a1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
52212: 206a 0068 moveal %a2@(104),%a0 <== 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 ) ) {
52216: b088 cmpl %a0,%d0 <== NOT EXECUTED
52218: 6720 beqs 5223a <_Timer_server_Schedule_operation_method+0xce><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
delta_interval = first_watchdog->delta_interval;
5221a: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
if ( snapshot > last_snapshot ) {
5221e: b3c1 cmpal %d1,%a1 <== NOT EXECUTED
52220: 640c bccs 5222e <_Timer_server_Schedule_operation_method+0xc2><== NOT EXECUTED
/*
* We advanced in time.
*/
delta = snapshot - last_snapshot;
52222: 2841 moveal %d1,%a4 <== NOT EXECUTED
52224: 99c9 subal %a1,%a4 <== NOT EXECUTED
if (delta_interval > delta) {
52226: b9c0 cmpal %d0,%a4 <== NOT EXECUTED
52228: 640a bccs 52234 <_Timer_server_Schedule_operation_method+0xc8><== NOT EXECUTED
delta_interval -= delta;
5222a: 908c subl %a4,%d0 <== NOT EXECUTED
5222c: 6008 bras 52236 <_Timer_server_Schedule_operation_method+0xca><== NOT EXECUTED
}
} else {
/*
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
5222e: d089 addl %a1,%d0 <== NOT EXECUTED
delta_interval += delta;
52230: 9081 subl %d1,%d0 <== NOT EXECUTED
52232: 6002 bras 52236 <_Timer_server_Schedule_operation_method+0xca><== NOT EXECUTED
*/
delta = snapshot - last_snapshot;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
52234: 4280 clrl %d0 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
52236: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
}
ts->TOD_watchdogs.last_snapshot = snapshot;
5223a: 2541 0074 movel %d1,%a2@(116) <== NOT EXECUTED
_ISR_Enable( level );
5223e: 46c2 movew %d2,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
52240: 486b 0010 pea %a3@(16) <== NOT EXECUTED
52244: 486a 0068 pea %a2@(104) <== NOT EXECUTED
52248: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
5224e: 508f addql #8,%sp <== NOT EXECUTED
52250: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED
52254: 6608 bnes 5225e <_Timer_server_Schedule_operation_method+0xf2><== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
52256: 2f0a movel %a2,%sp@- <== NOT EXECUTED
52258: 4eba fce4 jsr %pc@(51f3e <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
5225c: 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 );
}
}
5225e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
52264: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
52266: 4ef9 0005 4eb6 jmp 54eb6 <_Thread_Enable_dispatch> <== 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 );
5226c: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
52270: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
}
}
52274: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== 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 );
5227a: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
5227e: 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 );
52280: 4ef9 0005 2a44 jmp 52a44 <_Chain_Append> <== NOT EXECUTED
00048228 <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
48228: 4e56 0000 linkw %fp,#0
4822c: 226e 000c moveal %fp@(12),%a1
48230: 206e 0008 moveal %fp@(8),%a0
uint32_t seconds = add->tv_sec;
48234: 2011 movel %a1@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
48236: d190 addl %d0,%a0@
time->tv_nsec += add->tv_nsec;
48238: 2229 0004 movel %a1@(4),%d1
4823c: d3a8 0004 addl %d1,%a0@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
48240: 600e bras 48250 <_Timespec_Add_to+0x28>
time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
time->tv_sec++;
48242: 5290 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;
48244: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED
time->tv_sec++;
seconds++;
4824a: 5280 addql #1,%d0 <== 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;
4824c: 2141 0004 movel %d1,%a0@(4) <== 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 ) {
48250: 2228 0004 movel %a0@(4),%d1
48254: 0c81 3b9a c9ff cmpil #999999999,%d1
4825a: 62e6 bhis 48242 <_Timespec_Add_to+0x1a> <== NEVER TAKEN
time->tv_sec++;
seconds++;
}
return seconds;
}
4825c: 4e5e unlk %fp <== NOT EXECUTED
00049654 <_Timespec_Divide>:
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
49654: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
49658: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4965c: 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;
49660: 2a10 movel %a0@,%d5 <== NOT EXECUTED
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
49662: 49f9 0005 a16c lea 5a16c <__muldi3>,%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;
49668: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4966c: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
49672: 2a6e 000c moveal %fp@(12),%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;
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
49676: 42a7 clrl %sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
49678: 266e 0010 moveal %fp@(16),%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;
4967c: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
4967e: 5bc0 smi %d0 <== NOT EXECUTED
49680: 49c0 extbl %d0 <== NOT EXECUTED
49682: 2f00 movel %d0,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
49684: 246e 0014 moveal %fp@(20),%a2 <== 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;
49688: 4e94 jsr %a4@ <== NOT EXECUTED
4968a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4968e: 2040 moveal %d0,%a0 <== NOT EXECUTED
49690: 2241 moveal %d1,%a1 <== NOT EXECUTED
right += rhs->tv_nsec;
49692: 262d 0004 movel %a5@(4),%d3 <== NOT EXECUTED
49696: 5bc2 smi %d2 <== NOT EXECUTED
49698: 49c2 extbl %d2 <== NOT EXECUTED
4969a: 2208 movel %a0,%d1 <== NOT EXECUTED
4969c: d689 addl %a1,%d3 <== NOT EXECUTED
4969e: d581 addxl %d1,%d2 <== NOT EXECUTED
if ( right == 0 ) {
496a0: 6606 bnes 496a8 <_Timespec_Divide+0x54> <== NOT EXECUTED
*ival_percentage = 0;
496a2: 4293 clrl %a3@ <== NOT EXECUTED
*fval_percentage = 0;
496a4: 4292 clrl %a2@ <== NOT EXECUTED
return;
496a6: 607a bras 49722 <_Timespec_Divide+0xce> <== 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;
496a8: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
496ae: 42a7 clrl %sp@- <== NOT EXECUTED
496b0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
496b2: 5bc1 smi %d1 <== NOT EXECUTED
496b4: 49c1 extbl %d1 <== NOT EXECUTED
496b6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
left += lhs->tv_nsec;
496b8: 2a04 movel %d4,%d5 <== NOT EXECUTED
496ba: 5bc4 smi %d4 <== NOT EXECUTED
496bc: 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;
496be: 4e94 jsr %a4@ <== NOT EXECUTED
496c0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
496c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
496c6: 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;
496c8: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED
496ce: 2008 movel %a0,%d0 <== NOT EXECUTED
496d0: 2209 movel %a1,%d1 <== NOT EXECUTED
496d2: 42a7 clrl %sp@- <== NOT EXECUTED
496d4: d285 addl %d5,%d1 <== NOT EXECUTED
496d6: d184 addxl %d4,%d0 <== NOT EXECUTED
496d8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
496da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
496dc: 4e94 jsr %a4@ <== NOT EXECUTED
496de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
496e2: 49f9 0005 a9b8 lea 5a9b8 <__udivdi3>,%a4 <== NOT EXECUTED
496e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
496ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
496ec: 2f01 movel %d1,%sp@- <== NOT EXECUTED
496ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED
496f0: 4e94 jsr %a4@ <== NOT EXECUTED
496f2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
496f6: 2400 movel %d0,%d2 <== NOT EXECUTED
*ival_percentage = answer / 1000;
496f8: 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;
496fc: 2601 movel %d1,%d3 <== NOT EXECUTED
*ival_percentage = answer / 1000;
496fe: 42a7 clrl %sp@- <== NOT EXECUTED
49700: 2f01 movel %d1,%sp@- <== NOT EXECUTED
49702: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49704: 4e94 jsr %a4@ <== NOT EXECUTED
49706: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4970a: 2681 movel %d1,%a3@ <== NOT EXECUTED
*fval_percentage = answer % 1000;
4970c: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED
49710: 42a7 clrl %sp@- <== NOT EXECUTED
49712: 2f03 movel %d3,%sp@- <== NOT EXECUTED
49714: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49716: 4eb9 0005 ad44 jsr 5ad44 <__umoddi3> <== NOT EXECUTED
4971c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
49720: 2481 movel %d1,%a2@ <== NOT EXECUTED
}
49722: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
49728: 4e5e unlk %fp <== NOT EXECUTED
00049888 <_Timespec_Divide_by_integer>:
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
49888: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4988c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%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;
49890: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
49896: 266e 0008 moveal %fp@(8),%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;
4989a: 42a7 clrl %sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4989c: 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;
498a0: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
498a2: 5bc0 smi %d0 <== NOT EXECUTED
498a4: 49c0 extbl %d0 <== NOT EXECUTED
498a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
498a8: 4eb9 0005 9e38 jsr 59e38 <__muldi3> <== NOT EXECUTED
498ae: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
498b2: 2040 moveal %d0,%a0 <== NOT EXECUTED
498b4: 2241 moveal %d1,%a1 <== NOT EXECUTED
t += time->tv_nsec;
498b6: 222b 0004 movel %a3@(4),%d1 <== NOT EXECUTED
498ba: 5bc0 smi %d0 <== NOT EXECUTED
498bc: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
498be: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
498c2: 47f9 0005 a684 lea 5a684 <__udivdi3>,%a3 <== NOT EXECUTED
498c8: 2408 movel %a0,%d2 <== NOT EXECUTED
498ca: 2609 movel %a1,%d3 <== NOT EXECUTED
498cc: 42a7 clrl %sp@- <== NOT EXECUTED
498ce: d681 addl %d1,%d3 <== NOT EXECUTED
498d0: d580 addxl %d0,%d2 <== NOT EXECUTED
498d2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
498d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
498d6: 4e93 jsr %a3@ <== NOT EXECUTED
498d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
498dc: 2400 movel %d0,%d2 <== NOT EXECUTED
498de: 2601 movel %d1,%d3 <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
498e0: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
498e6: 42a7 clrl %sp@- <== NOT EXECUTED
498e8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
498ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
498ec: 4e93 jsr %a3@ <== NOT EXECUTED
498ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
498f2: 2481 movel %d1,%a2@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
498f4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
498fa: 42a7 clrl %sp@- <== NOT EXECUTED
498fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
498fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49900: 4eb9 0005 aa10 jsr 5aa10 <__umoddi3> <== NOT EXECUTED
49906: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4990a: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
4990e: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
49914: 4e5e unlk %fp <== NOT EXECUTED
0005ab64 <_Timespec_From_ticks>:
struct timespec *time
)
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5ab64: 43f9 0005 d0b0 lea 5d0b0 <Configuration+0xc>,%a1 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5ab6a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
5ab6e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5ab72: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5ab76: 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;
5ab78: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
5ab7e: 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;
5ab82: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED
5ab86: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
TOD_NANOSECONDS_PER_MICROSECOND;
}
5ab8a: 241f movel %sp@+,%d2 <== NOT EXECUTED
5ab8c: 4e5e unlk %fp <== NOT EXECUTED
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
5ab8e: 2080 movel %d0,%a0@ <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
5ab90: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
5ab96: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
5ab9a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
TOD_NANOSECONDS_PER_MICROSECOND;
}
000488d8 <_Timespec_Greater_than>:
bool _Timespec_Greater_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
488d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
488dc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
488e0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
488e4: 2211 movel %a1@,%d1 <== NOT EXECUTED
488e6: 2010 movel %a0@,%d0 <== NOT EXECUTED
488e8: b081 cmpl %d1,%d0 <== NOT EXECUTED
488ea: 6d10 blts 488fc <_Timespec_Greater_than+0x24> <== NOT EXECUTED
return true;
if ( lhs->tv_sec < rhs->tv_sec )
488ec: 6e12 bgts 48900 <_Timespec_Greater_than+0x28> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
488ee: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
488f2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
488f6: 5dc0 slt %d0 <== NOT EXECUTED
488f8: 4480 negl %d0 <== NOT EXECUTED
488fa: 6006 bras 48902 <_Timespec_Greater_than+0x2a> <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
488fc: 7001 moveq #1,%d0 <== NOT EXECUTED
488fe: 6002 bras 48902 <_Timespec_Greater_than+0x2a> <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
return false;
48900: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
48902: 4e5e unlk %fp <== NOT EXECUTED
...
0005aba0 <_Timespec_Is_valid>:
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
const struct timespec *time
)
{
5aba0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5aba4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !time )
5aba8: 4a88 tstl %a0 <== NOT EXECUTED
5abaa: 6716 beqs 5abc2 <_Timespec_Is_valid+0x22> <== NOT EXECUTED
return false;
if ( time->tv_sec < 0 )
5abac: 4a90 tstl %a0@ <== NOT EXECUTED
5abae: 6d12 blts 5abc2 <_Timespec_Is_valid+0x22> <== NOT EXECUTED
return false;
if ( time->tv_nsec < 0 )
5abb0: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
5abb4: 6d0c blts 5abc2 <_Timespec_Is_valid+0x22> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
5abb6: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
5abbc: 53c0 sls %d0 <== NOT EXECUTED
5abbe: 4480 negl %d0 <== NOT EXECUTED
5abc0: 6002 bras 5abc4 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
if ( time->tv_sec < 0 )
return false;
if ( time->tv_nsec < 0 )
return false;
5abc2: 4200 clrb %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
5abc4: 4e5e unlk %fp <== NOT EXECUTED
0004ae98 <_Timespec_Less_than>:
bool _Timespec_Less_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4ae98: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ae9c: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4aea0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
4aea4: 2211 movel %a1@,%d1 <== NOT EXECUTED
4aea6: 2010 movel %a0@,%d0 <== NOT EXECUTED
4aea8: b081 cmpl %d1,%d0 <== NOT EXECUTED
4aeaa: 6e10 bgts 4aebc <_Timespec_Less_than+0x24> <== NOT EXECUTED
return true;
if ( lhs->tv_sec > rhs->tv_sec )
4aeac: 6d12 blts 4aec0 <_Timespec_Less_than+0x28> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4aeae: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4aeb2: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
4aeb6: 5ec0 sgt %d0 <== NOT EXECUTED
4aeb8: 4480 negl %d0 <== NOT EXECUTED
4aeba: 6006 bras 4aec2 <_Timespec_Less_than+0x2a> <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
4aebc: 7001 moveq #1,%d0 <== NOT EXECUTED
4aebe: 6002 bras 4aec2 <_Timespec_Less_than+0x2a> <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
return false;
4aec0: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4aec2: 4e5e unlk %fp <== NOT EXECUTED
...
00048260 <_Timespec_Subtract>:
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
48260: 4e56 0000 linkw %fp,#0
48264: 226e 0008 moveal %fp@(8),%a1
48268: 2f0a movel %a2,%sp@-
4826a: 246e 000c moveal %fp@(12),%a2
4826e: 206e 0010 moveal %fp@(16),%a0
if (end->tv_nsec < start->tv_nsec) {
48272: 222a 0004 movel %a2@(4),%d1
48276: 2029 0004 movel %a1@(4),%d0
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
4827a: 2f02 movel %d2,%sp@-
if (end->tv_nsec < start->tv_nsec) {
4827c: b081 cmpl %d1,%d0
4827e: 6f10 bles 48290 <_Timespec_Subtract+0x30> <== ALWAYS TAKEN
result->tv_sec = end->tv_sec - start->tv_sec - 1;
48280: 2452 moveal %a2@,%a2 <== NOT EXECUTED
48282: 538a subql #1,%a2 <== NOT EXECUTED
48284: 95d1 subal %a1@,%a2 <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
48286: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
4828c: 208a movel %a2,%a0@ <== NOT EXECUTED
4828e: 6006 bras 48296 <_Timespec_Subtract+0x36> <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
48290: 2412 movel %a2@,%d2
48292: 9491 subl %a1@,%d2
48294: 2082 movel %d2,%a0@
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
48296: 241f movel %sp@+,%d2
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;
48298: 9280 subl %d0,%d1
}
}
4829a: 245f moveal %sp@+,%a2
4829c: 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;
4829e: 2141 0004 movel %d1,%a0@(4)
}
}
0004b204 <_Timespec_To_ticks>:
*/
uint32_t _Timespec_To_ticks(
const struct timespec *time
)
{
4b204: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b208: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4b20c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
4b210: 2412 movel %a2@,%d2 <== NOT EXECUTED
4b212: 6606 bnes 4b21a <_Timespec_To_ticks+0x16> <== NOT EXECUTED
4b214: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
4b218: 672c beqs 4b246 <_Timespec_To_ticks+0x42> <== NOT EXECUTED
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4b21a: 4eb9 0004 c74c jsr 4c74c <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4b220: 2239 0005 c260 movel 5c260 <Configuration+0xc>,%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;
4b226: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4b22a: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
4b230: 4c02 1800 mulsl %d2,%d1 <== NOT EXECUTED
4b234: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
4b238: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED
4b23c: d083 addl %d3,%d0 <== NOT EXECUTED
if (ticks)
4b23e: 6608 bnes 4b248 <_Timespec_To_ticks+0x44> <== NOT EXECUTED
return ticks;
return 1;
4b240: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
4b244: 6002 bras 4b248 <_Timespec_To_ticks+0x44> <== NOT EXECUTED
)
{
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
4b246: 4280 clrl %d0 <== NOT EXECUTED
if (ticks)
return ticks;
return 1;
}
4b248: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4b24e: 4e5e unlk %fp <== NOT EXECUTED
...
000483ca <_User_extensions_Fatal>:
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
483ca: 4e56 fff0 linkw %fp,#-16
483ce: 48d7 041c moveml %d2-%d4/%a2,%sp@
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 );
483d2: 4282 clrl %d2
483d4: 142e 000f moveb %fp@(15),%d2
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
483d8: 282e 0008 movel %fp@(8),%d4
483dc: 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 );
}
}
483e0: 2479 0005 dc80 moveal 5dc80 <_User_extensions_List+0x8>,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
483e6: 6018 bras 48400 <_User_extensions_Fatal+0x36>
!_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 )
483e8: 206a 0030 moveal %a2@(48),%a0
483ec: 4a88 tstl %a0
483ee: 670c beqs 483fc <_User_extensions_Fatal+0x32>
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
483f0: 2f03 movel %d3,%sp@-
483f2: 2f02 movel %d2,%sp@-
483f4: 2f04 movel %d4,%sp@-
483f6: 4e90 jsr %a0@
483f8: 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 ) {
483fc: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
48400: b5fc 0005 dc78 cmpal #384120,%a2
48406: 66e0 bnes 483e8 <_User_extensions_Fatal+0x1e> <== 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 );
}
}
48408: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
4840e: 4e5e unlk %fp <== NOT EXECUTED
...
000482a4 <_User_extensions_Handler_initialization>:
#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _User_extensions_Handler_initialization(void)
{
482a4: 4e56 ffe8 linkw %fp,#-24
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
482a8: 203c 0005 dc7c movel #384124,%d0
482ae: 23c0 0005 dc78 movel %d0,5dc78 <_User_extensions_List>
head->previous = NULL;
tail->previous = head;
482b4: 203c 0005 dc78 movel #384120,%d0
482ba: 23c0 0005 dc80 movel %d0,5dc80 <_User_extensions_List+0x8>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
482c0: 203c 0005 db10 movel #383760,%d0
482c6: 23c0 0005 db0c movel %d0,5db0c <_User_extensions_Switches_list>
head->previous = NULL;
tail->previous = head;
482cc: 203c 0005 db0c movel #383756,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
482d2: 42b9 0005 dc7c clrl 5dc7c <_User_extensions_List+0x4>
482d8: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%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;
482dc: 2839 0005 c28e movel 5c28e <Configuration+0x3a>,%d4
initial_extensions = Configuration.User_extension_table;
482e2: 2639 0005 c292 movel 5c292 <Configuration+0x3e>,%d3
482e8: 42b9 0005 db10 clrl 5db10 <_User_extensions_Switches_list+0x4>
tail->previous = head;
482ee: 23c0 0005 db14 movel %d0,5db14 <_User_extensions_Switches_list+0x8>
_Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list );
if ( initial_extensions ) {
482f4: 4a83 tstl %d3
482f6: 6754 beqs 4834c <_User_extensions_Handler_initialization+0xa8><== NEVER TAKEN
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
482f8: 7434 moveq #52,%d2
482fa: 4c04 2800 mulsl %d4,%d2
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
482fe: 49f9 0004 d1f8 lea 4d1f8 <memcpy>,%a4
_User_extensions_Add_set( extension );
48304: 47f9 0004 b254 lea 4b254 <_User_extensions_Add_set>,%a3
4830a: 2f02 movel %d2,%sp@-
4830c: 4eb9 0004 87c8 jsr 487c8 <_Workspace_Allocate_or_fatal_error>
48312: 2440 moveal %d0,%a2
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
48314: 2f02 movel %d2,%sp@-
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
48316: 4282 clrl %d2
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
48318: 42a7 clrl %sp@-
4831a: 2f00 movel %d0,%sp@-
4831c: 4eb9 0004 d268 jsr 4d268 <memset>
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
48322: 4fef 0010 lea %sp@(16),%sp
48326: 6020 bras 48348 <_User_extensions_Handler_initialization+0xa4>
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
48328: 4878 0020 pea 20 <OPER2+0xc>
4832c: 5282 addql #1,%d2
4832e: 2f03 movel %d3,%sp@-
48330: 486a 0014 pea %a2@(20)
48334: 0683 0000 0020 addil #32,%d3
4833a: 4e94 jsr %a4@
_User_extensions_Add_set( extension );
4833c: 2f0a movel %a2,%sp@-
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
4833e: 45ea 0034 lea %a2@(52),%a2
48342: 4e93 jsr %a3@
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
48344: 4fef 0010 lea %sp@(16),%sp
48348: b882 cmpl %d2,%d4
4834a: 62dc bhis 48328 <_User_extensions_Handler_initialization+0x84>
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
}
}
}
4834c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
48352: 4e5e unlk %fp
...
00049438 <_User_extensions_Remove_set>:
#include <rtems/score/userext.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
49438: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4943c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4943e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
_Chain_Extract( &the_extension->Node );
49442: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49444: 4eb9 0004 704c jsr 4704c <_Chain_Extract> <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
4944a: 588f addql #4,%sp <== NOT EXECUTED
4944c: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED
49450: 6712 beqs 49464 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED
_Chain_Extract( &the_extension->Switch.Node );
49452: 508a addql #8,%a2 <== NOT EXECUTED
49454: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
49458: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4945c: 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 );
4945e: 4ef9 0004 704c jmp 4704c <_Chain_Extract> <== NOT EXECUTED
}
49464: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49468: 4e5e unlk %fp <== NOT EXECUTED
00048414 <_User_extensions_Thread_create>:
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
48414: 4e56 0000 linkw %fp,#0
48418: 2f0a movel %a2,%sp@-
return false;
}
}
return true;
}
4841a: 2479 0005 dc78 moveal 5dc78 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
48420: 2f02 movel %d2,%sp@-
48422: 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 );
48426: 601a bras 48442 <_User_extensions_Thread_create+0x2e>
!_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 ) {
48428: 206a 0014 moveal %a2@(20),%a0
4842c: 4a88 tstl %a0
4842e: 6710 beqs 48440 <_User_extensions_Thread_create+0x2c>
status = (*the_extension->Callouts.thread_create)(
48430: 2f02 movel %d2,%sp@-
48432: 2f39 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%sp@-
48438: 4e90 jsr %a0@
_Thread_Executing,
the_thread
);
if ( !status )
4843a: 508f addql #8,%sp
4843c: 4a00 tstb %d0
4843e: 670e beqs 4844e <_User_extensions_Thread_create+0x3a><== 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 ) {
48440: 2452 moveal %a2@,%a2
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
48442: b5fc 0005 dc7c cmpal #384124,%a2
48448: 66de bnes 48428 <_User_extensions_Thread_create+0x14>
if ( !status )
return false;
}
}
return true;
4844a: 7001 moveq #1,%d0
4844c: 6002 bras 48450 <_User_extensions_Thread_create+0x3c>
status = (*the_extension->Callouts.thread_create)(
_Thread_Executing,
the_thread
);
if ( !status )
return false;
4844e: 4200 clrb %d0 <== NOT EXECUTED
}
}
return true;
}
48450: 242e fff8 movel %fp@(-8),%d2
48454: 246e fffc moveal %fp@(-4),%a2
48458: 4e5e unlk %fp <== NOT EXECUTED
0004845c <_User_extensions_Thread_delete>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
4845c: 4e56 0000 linkw %fp,#0
48460: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
48462: 2479 0005 dc80 moveal 5dc80 <_User_extensions_List+0x8>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
48468: 2f02 movel %d2,%sp@-
4846a: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4846e: 6018 bras 48488 <_User_extensions_Thread_delete+0x2c>
!_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 )
48470: 206a 0020 moveal %a2@(32),%a0
48474: 4a88 tstl %a0
48476: 670c beqs 48484 <_User_extensions_Thread_delete+0x28><== NEVER TAKEN
(*the_extension->Callouts.thread_delete)(
48478: 2f02 movel %d2,%sp@-
4847a: 2f39 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%sp@-
48480: 4e90 jsr %a0@
48482: 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 ) {
48484: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
48488: b5fc 0005 dc78 cmpal #384120,%a2
4848e: 66e0 bnes 48470 <_User_extensions_Thread_delete+0x14>
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
48490: 242e fff8 movel %fp@(-8),%d2
48494: 246e fffc moveal %fp@(-4),%a2
48498: 4e5e unlk %fp <== NOT EXECUTED
00048cd8 <_User_extensions_Thread_restart>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
48cd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48cdc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
48cde: 2479 0005 e7a0 moveal 5e7a0 <_User_extensions_List>,%a2 <== NOT EXECUTED
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
48ce4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48ce6: 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 );
48cea: 6016 bras 48d02 <_User_extensions_Thread_restart+0x2a><== 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 )
48cec: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
48cf0: 4a88 tstl %a0 <== NOT EXECUTED
48cf2: 670c beqs 48d00 <_User_extensions_Thread_restart+0x28><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
48cf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48cf6: 2f39 0005 eaba movel 5eaba <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
48cfc: 4e90 jsr %a0@ <== NOT EXECUTED
48cfe: 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 ) {
48d00: 2452 moveal %a2@,%a2 <== NOT EXECUTED
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
48d02: b5fc 0005 e7a4 cmpal #386980,%a2 <== NOT EXECUTED
48d08: 66e2 bnes 48cec <_User_extensions_Thread_restart+0x14><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
48d0a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48d0e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d12: 4e5e unlk %fp <== NOT EXECUTED
...
00049a24 <_Watchdog_Adjust>:
Watchdog_Interval units
)
{
ISR_Level level;
_ISR_Disable( level );
49a24: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED
49a28: 2209 movel %a1,%d1 <== NOT EXECUTED
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
49a2a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
49a2e: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
49a32: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
49a36: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
49a3a: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
49a3e: 40c0 movew %sr,%d0 <== NOT EXECUTED
49a40: 8280 orl %d0,%d1 <== NOT EXECUTED
49a42: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
49a44: 244b moveal %a3,%a2 <== NOT EXECUTED
49a46: 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 ) ) {
49a48: b5c8 cmpal %a0,%a2 <== NOT EXECUTED
49a4a: 674c beqs 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED
switch ( direction ) {
49a4c: 4a83 tstl %d3 <== NOT EXECUTED
49a4e: 673c beqs 49a8c <_Watchdog_Adjust+0x68> <== NOT EXECUTED
49a50: 7201 moveq #1,%d1 <== NOT EXECUTED
49a52: b283 cmpl %d3,%d1 <== NOT EXECUTED
49a54: 6642 bnes 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
49a56: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED
break;
49a5a: 603c bras 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
49a5c: 2053 moveal %a3@,%a0 <== NOT EXECUTED
case WATCHDOG_FORWARD:
while ( units ) {
if ( units < _Watchdog_First( header )->delta_interval ) {
49a5e: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
49a62: b682 cmpl %d2,%d3 <== NOT EXECUTED
49a64: 6308 blss 49a6e <_Watchdog_Adjust+0x4a> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
49a66: 9682 subl %d2,%d3 <== NOT EXECUTED
49a68: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED
break;
49a6c: 602a bras 49a98 <_Watchdog_Adjust+0x74> <== NOT EXECUTED
} else {
units -= _Watchdog_First( header )->delta_interval;
_Watchdog_First( header )->delta_interval = 1;
49a6e: 7201 moveq #1,%d1 <== NOT EXECUTED
49a70: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
_ISR_Enable( level );
49a74: 46c0 movew %d0,%sr <== NOT EXECUTED
_Watchdog_Tickle( header );
49a76: 2f0b movel %a3,%sp@- <== NOT EXECUTED
49a78: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
49a7a: 2204 movel %d4,%d1 <== NOT EXECUTED
49a7c: 40c0 movew %sr,%d0 <== NOT EXECUTED
49a7e: 8280 orl %d0,%d1 <== NOT EXECUTED
49a80: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
49a82: 588f addql #4,%sp <== NOT EXECUTED
49a84: b5d3 cmpal %a3@,%a2 <== NOT EXECUTED
49a86: 6710 beqs 49a98 <_Watchdog_Adjust+0x74> <== 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;
49a88: 9483 subl %d3,%d2 <== NOT EXECUTED
49a8a: 6008 bras 49a94 <_Watchdog_Adjust+0x70> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval = 1;
_ISR_Enable( level );
_Watchdog_Tickle( header );
49a8c: 49f9 0004 9c48 lea 49c48 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED
_ISR_Disable( level );
49a92: 2809 movel %a1,%d4 <== NOT EXECUTED
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
49a94: 4a82 tstl %d2 <== NOT EXECUTED
49a96: 66c4 bnes 49a5c <_Watchdog_Adjust+0x38> <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
49a98: 46c0 movew %d0,%sr <== NOT EXECUTED
}
49a9a: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
49aa0: 4e5e unlk %fp <== NOT EXECUTED
00055e1c <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
55e1c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
55e20: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
55e24: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
55e28: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
55e2c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
if ( units <= 0 ) {
55e30: 4a80 tstl %d0 <== NOT EXECUTED
55e32: 6770 beqs 55ea4 <_Watchdog_Adjust_to_chain+0x88> <== NOT EXECUTED
return;
}
_ISR_Disable( level );
55e34: 307c 0700 moveaw #1792,%a0 <== NOT EXECUTED
55e38: 2208 movel %a0,%d1 <== NOT EXECUTED
55e3a: 40c2 movew %sr,%d2 <== NOT EXECUTED
55e3c: 8282 orl %d2,%d1 <== NOT EXECUTED
55e3e: 46c1 movew %d1,%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 );
55e40: 260a movel %a2,%d3 <== NOT EXECUTED
55e42: 5883 addql #4,%d3 <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
55e44: 2808 movel %a0,%d4 <== NOT EXECUTED
55e46: 6004 bras 55e4c <_Watchdog_Adjust_to_chain+0x30> <== NOT EXECUTED
}
_ISR_Disable( level );
while ( 1 ) {
if ( units <= 0 ) {
55e48: 4a80 tstl %d0 <== NOT EXECUTED
55e4a: 6756 beqs 55ea2 <_Watchdog_Adjust_to_chain+0x86> <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
}
55e4c: 2252 moveal %a2@,%a1 <== NOT EXECUTED
while ( 1 ) {
if ( units <= 0 ) {
break;
}
if ( _Chain_Is_empty( header ) ) {
55e4e: b689 cmpl %a1,%d3 <== NOT EXECUTED
55e50: 6750 beqs 55ea2 <_Watchdog_Adjust_to_chain+0x86> <== 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 ) {
55e52: 2229 0010 movel %a1@(16),%d1 <== NOT EXECUTED
55e56: 2049 moveal %a1,%a0 <== NOT EXECUTED
55e58: b280 cmpl %d0,%d1 <== NOT EXECUTED
55e5a: 6308 blss 55e64 <_Watchdog_Adjust_to_chain+0x48> <== NOT EXECUTED
first->delta_interval -= units;
55e5c: 9280 subl %d0,%d1 <== NOT EXECUTED
55e5e: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
break;
55e62: 603e bras 55ea2 <_Watchdog_Adjust_to_chain+0x86> <== 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;
55e64: 9081 subl %d1,%d0 <== NOT EXECUTED
first->delta_interval = 0;
55e66: 42a9 0010 clrl %a1@(16) <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
55e6a: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
55e6e: 220b movel %a3,%d1 <== NOT EXECUTED
55e70: 5881 addql #4,%d1 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
55e72: 2850 moveal %a0@,%a4 <== NOT EXECUTED
previous = the_node->previous;
next->previous = previous;
previous->next = next;
55e74: 228c movel %a4,%a1@ <== NOT EXECUTED
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
55e76: 2949 0004 movel %a1,%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;
55e7a: 226b 0008 moveal %a3@(8),%a1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
55e7e: 2081 movel %d1,%a0@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
55e80: 2748 0008 movel %a0,%a3@(8) <== NOT EXECUTED
old_last->next = the_node;
55e84: 2288 movel %a0,%a1@ <== NOT EXECUTED
the_node->previous = old_last;
55e86: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
55e8a: 2204 movel %d4,%d1 <== NOT EXECUTED
55e8c: 46c2 movew %d2,%sr <== NOT EXECUTED
55e8e: 8282 orl %d2,%d1 <== NOT EXECUTED
55e90: 46c1 movew %d1,%sr <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
}
55e92: 2212 movel %a2@,%d1 <== NOT EXECUTED
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
if ( _Chain_Is_empty( header ) )
55e94: b681 cmpl %d1,%d3 <== NOT EXECUTED
55e96: 67b0 beqs 55e48 <_Watchdog_Adjust_to_chain+0x2c> <== NOT EXECUTED
55e98: 2041 moveal %d1,%a0 <== NOT EXECUTED
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
55e9a: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED
55e9e: 67ca beqs 55e6a <_Watchdog_Adjust_to_chain+0x4e> <== NOT EXECUTED
55ea0: 60a6 bras 55e48 <_Watchdog_Adjust_to_chain+0x2c> <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
55ea2: 46c2 movew %d2,%sr <== NOT EXECUTED
}
55ea4: 4cd7 1c1c moveml %sp@,%d2-%d4/%a2-%a4 <== NOT EXECUTED
55ea8: 4e5e unlk %fp <== NOT EXECUTED
00048514 <_Watchdog_Insert>:
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
48514: 327c 0700 moveaw #1792,%a1
48518: 2009 movel %a1,%d0
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
4851a: 4e56 ffec linkw %fp,#-20
4851e: 206e 000c moveal %fp@(12),%a0
48522: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
48526: 266e 0008 moveal %fp@(8),%a3
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
4852a: 2439 0005 df8e movel 5df8e <_Per_CPU_Information+0x8>,%d2
_ISR_Disable( level );
48530: 40c1 movew %sr,%d1
48532: 8081 orl %d1,%d0
48534: 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 ) {
48536: 4aa8 0008 tstl %a0@(8)
4853a: 6706 beqs 48542 <_Watchdog_Insert+0x2e> <== ALWAYS TAKEN
_ISR_Enable( level );
4853c: 46c1 movew %d1,%sr <== NOT EXECUTED
return;
4853e: 6000 009a braw 485da <_Watchdog_Insert+0xc6> <== NOT EXECUTED
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
48542: 7001 moveq #1,%d0
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
48544: 2449 moveal %a1,%a2
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
48546: 2140 0008 movel %d0,%a0@(8)
_Watchdog_Sync_count++;
4854a: 2039 0005 dc2e movel 5dc2e <_Watchdog_Sync_count>,%d0
48550: 5280 addql #1,%d0
48552: 23c0 0005 dc2e movel %d0,5dc2e <_Watchdog_Sync_count>
restart:
delta_interval = the_watchdog->initial;
48558: 2028 000c movel %a0@(12),%d0
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
4855c: 2253 moveal %a3@,%a1
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4855e: 4a80 tstl %d0
48560: 673c beqs 4859e <_Watchdog_Insert+0x8a> <== NEVER TAKEN
48562: 4a91 tstl %a1@
48564: 6738 beqs 4859e <_Watchdog_Insert+0x8a> <== ALWAYS TAKEN
break;
if ( delta_interval < after->delta_interval ) {
48566: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED
4856a: b680 cmpl %d0,%d3 <== NOT EXECUTED
4856c: 6308 blss 48576 <_Watchdog_Insert+0x62> <== NOT EXECUTED
after->delta_interval -= delta_interval;
4856e: 9680 subl %d0,%d3 <== NOT EXECUTED
48570: 2343 0010 movel %d3,%a1@(16) <== NOT EXECUTED
break;
48574: 6028 bras 4859e <_Watchdog_Insert+0x8a> <== NOT EXECUTED
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
48576: 280a movel %a2,%d4 <== NOT EXECUTED
48578: 46c1 movew %d1,%sr <== NOT EXECUTED
4857a: 8881 orl %d1,%d4 <== NOT EXECUTED
4857c: 46c4 movew %d4,%sr <== NOT EXECUTED
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
4857e: 7801 moveq #1,%d4 <== NOT EXECUTED
48580: b8a8 0008 cmpl %a0@(8),%d4 <== NOT EXECUTED
48584: 663e bnes 485c4 <_Watchdog_Insert+0xb0> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
48586: 2839 0005 dbcc movel 5dbcc <_Watchdog_Sync_level>,%d4 <== NOT EXECUTED
4858c: b484 cmpl %d4,%d2 <== NOT EXECUTED
4858e: 6408 bccs 48598 <_Watchdog_Insert+0x84> <== NOT EXECUTED
_Watchdog_Sync_level = insert_isr_nest_level;
48590: 23c2 0005 dbcc movel %d2,5dbcc <_Watchdog_Sync_level> <== NOT EXECUTED
goto restart;
48596: 60c0 bras 48558 <_Watchdog_Insert+0x44> <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
48598: 2251 moveal %a1@,%a1 <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
4859a: 9083 subl %d3,%d0 <== NOT EXECUTED
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
_Watchdog_Sync_level = insert_isr_nest_level;
goto restart;
}
}
4859c: 60c0 bras 4855e <_Watchdog_Insert+0x4a> <== NOT EXECUTED
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
4859e: 2269 0004 moveal %a1@(4),%a1
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
485a2: 7602 moveq #2,%d3
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
485a4: 2451 moveal %a1@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
485a6: 2140 0010 movel %d0,%a0@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
485aa: 2039 0005 dc32 movel 5dc32 <_Watchdog_Ticks_since_boot>,%d0
485b0: 2143 0008 movel %d3,%a0@(8)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
485b4: 2149 0004 movel %a1,%a0@(4)
before_node = after_node->next;
after_node->next = the_node;
485b8: 2288 movel %a0,%a1@
the_node->next = before_node;
before_node->previous = the_node;
485ba: 2548 0004 movel %a0,%a2@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
485be: 208a movel %a2,%a0@
485c0: 2140 0014 movel %d0,%a0@(20)
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
485c4: 23c2 0005 dbcc movel %d2,5dbcc <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
485ca: 2039 0005 dc2e movel 5dc2e <_Watchdog_Sync_count>,%d0
485d0: 5380 subql #1,%d0
485d2: 23c0 0005 dc2e movel %d0,5dc2e <_Watchdog_Sync_count>
_ISR_Enable( level );
485d8: 46c1 movew %d1,%sr
}
485da: 4cd7 0c1c moveml %sp@,%d2-%d4/%a2-%a3
485de: 4e5e unlk %fp
...
0004863c <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
4863c: 203c 0000 0700 movel #1792,%d0
*/
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
48642: 4e56 0000 linkw %fp,#0
48646: 206e 0008 moveal %fp@(8),%a0
4864a: 2f0a movel %a2,%sp@-
4864c: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
4864e: 40c1 movew %sr,%d1
48650: 8081 orl %d1,%d0
48652: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
48654: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
48658: 7401 moveq #1,%d2
4865a: b480 cmpl %d0,%d2
4865c: 670c beqs 4866a <_Watchdog_Remove+0x2e> <== NEVER TAKEN
4865e: 6242 bhis 486a2 <_Watchdog_Remove+0x66> <== NEVER TAKEN
48660: 143c 0003 moveb #3,%d2
48664: b480 cmpl %d0,%d2
48666: 653a bcss 486a2 <_Watchdog_Remove+0x66> <== NEVER TAKEN
48668: 6006 bras 48670 <_Watchdog_Remove+0x34>
/*
* 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;
4866a: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
break;
4866e: 6032 bras 486a2 <_Watchdog_Remove+0x66> <== NOT EXECUTED
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
48670: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
48672: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
48676: 4a91 tstl %a1@
48678: 6708 beqs 48682 <_Watchdog_Remove+0x46> <== ALWAYS TAKEN
next_watchdog->delta_interval += the_watchdog->delta_interval;
4867a: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED
4867e: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED
if ( _Watchdog_Sync_count )
48682: 2479 0005 dc2e moveal 5dc2e <_Watchdog_Sync_count>,%a2
48688: 4a8a tstl %a2
4868a: 670c beqs 48698 <_Watchdog_Remove+0x5c> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
4868c: 45f9 0005 df8e lea 5df8e <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED
48692: 23d2 0005 dbcc movel %a2@,5dbcc <_Watchdog_Sync_level> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
48698: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
4869c: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
486a0: 2489 movel %a1,%a2@
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
486a2: 2279 0005 dc32 moveal 5dc32 <_Watchdog_Ticks_since_boot>,%a1
486a8: 2149 0018 movel %a1,%a0@(24)
_ISR_Enable( level );
486ac: 46c1 movew %d1,%sr
return( previous_state );
}
486ae: 241f movel %sp@+,%d2
486b0: 245f moveal %sp@+,%a2
486b2: 4e5e unlk %fp
...
000496a8 <_Watchdog_Report>:
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
496a8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
printk(
496ac: 223c 0005 cd7d movel #380285,%d1 <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
496b2: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
496b6: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
496ba: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
printk(
496be: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED
496c2: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED
496c6: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED
496ca: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
496ce: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
496d2: 4a80 tstl %d0 <== NOT EXECUTED
496d4: 6608 bnes 496de <_Watchdog_Report+0x36> <== NOT EXECUTED
496d6: 223c 0005 cd82 movel #380290,%d1 <== NOT EXECUTED
496dc: 2001 movel %d1,%d0 <== NOT EXECUTED
496de: 2f05 movel %d5,%sp@- <== NOT EXECUTED
496e0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
496e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
496e4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
496e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
496e8: 2f09 movel %a1,%sp@- <== NOT EXECUTED
496ea: 2f01 movel %d1,%sp@- <== NOT EXECUTED
496ec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
496ee: 4879 0005 cf0c pea 5cf0c <C.0.4121+0x44> <== NOT EXECUTED
496f4: 4eb9 0004 3dec jsr 43dec <printk> <== NOT EXECUTED
496fa: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
496fe: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
49704: 4e5e unlk %fp <== NOT EXECUTED
00049634 <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
49634: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4963a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4963e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
49642: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
49646: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4964a: 40c3 movew %sr,%d3 <== NOT EXECUTED
4964c: 8083 orl %d3,%d0 <== NOT EXECUTED
4964e: 46c0 movew %d0,%sr <== NOT EXECUTED
printk( "Watchdog Chain: %s %p\n", name, header );
49650: 2f0b movel %a3,%sp@- <== NOT EXECUTED
49652: 49f9 0004 3dec lea 43dec <printk>,%a4 <== NOT EXECUTED
49658: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4965a: 4879 0005 ced6 pea 5ced6 <C.0.4121+0xe> <== NOT EXECUTED
49660: 4e94 jsr %a4@ <== NOT EXECUTED
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
}
49662: 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 ) ) {
49664: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49668: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4966a: 6726 beqs 49692 <_Watchdog_Report_chain+0x5e> <== NOT EXECUTED
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4966c: 49f9 0004 96a8 lea 496a8 <_Watchdog_Report>,%a4 <== NOT EXECUTED
49672: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49674: 42a7 clrl %sp@- <== NOT EXECUTED
49676: 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 )
49678: 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 ) ;
4967a: 508f addql #8,%sp <== NOT EXECUTED
4967c: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4967e: 66f2 bnes 49672 <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
49680: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49682: 4879 0005 ceed pea 5ceed <C.0.4121+0x25> <== NOT EXECUTED
49688: 4eb9 0004 3dec jsr 43dec <printk> <== NOT EXECUTED
4968e: 508f addql #8,%sp <== NOT EXECUTED
49690: 600a bras 4969c <_Watchdog_Report_chain+0x68> <== NOT EXECUTED
} else {
printk( "Chain is empty\n" );
49692: 4879 0005 cefc pea 5cefc <C.0.4121+0x34> <== NOT EXECUTED
49698: 4e94 jsr %a4@ <== NOT EXECUTED
4969a: 588f addql #4,%sp <== NOT EXECUTED
}
_ISR_Enable( level );
4969c: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4969e: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
496a4: 4e5e unlk %fp <== NOT EXECUTED
000486b8 <_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 );
486b8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _Watchdog_Tickle(
Chain_Control *header
)
{
486be: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
486c2: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
486c6: 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 );
486ca: 40c2 movew %sr,%d2 <== NOT EXECUTED
486cc: 8082 orl %d2,%d0 <== NOT EXECUTED
486ce: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
486d0: 264c moveal %a4,%a3 <== NOT EXECUTED
486d2: 245b moveal %a3@+,%a2 <== NOT EXECUTED
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
486d4: b7ca cmpal %a2,%a3 <== NOT EXECUTED
486d6: 674c beqs 48724 <_Watchdog_Tickle+0x6c> <== 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) {
486d8: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
486dc: 6708 beqs 486e6 <_Watchdog_Tickle+0x2e> <== NOT EXECUTED
the_watchdog->delta_interval--;
486de: 5380 subql #1,%d0 <== NOT EXECUTED
486e0: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
486e4: 663e bnes 48724 <_Watchdog_Tickle+0x6c> <== NOT EXECUTED
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
486e6: 4bf9 0004 863c lea 4863c <_Watchdog_Remove>,%a5 <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
486ec: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
486f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
486f4: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
486f6: 46c2 movew %d2,%sr <== NOT EXECUTED
switch( watchdog_state ) {
486f8: 7202 moveq #2,%d1 <== NOT EXECUTED
486fa: 588f addql #4,%sp <== NOT EXECUTED
486fc: b280 cmpl %d0,%d1 <== NOT EXECUTED
486fe: 6610 bnes 48710 <_Watchdog_Tickle+0x58> <== NOT EXECUTED
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
48700: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
48704: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
48708: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
4870c: 4e90 jsr %a0@ <== NOT EXECUTED
the_watchdog->id,
the_watchdog->user_data
);
break;
4870e: 508f addql #8,%sp <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
48710: 2003 movel %d3,%d0 <== NOT EXECUTED
48712: 40c2 movew %sr,%d2 <== NOT EXECUTED
48714: 8082 orl %d2,%d0 <== NOT EXECUTED
48716: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
48718: 2454 moveal %a4@,%a2 <== NOT EXECUTED
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
4871a: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4871c: 6706 beqs 48724 <_Watchdog_Tickle+0x6c> <== NOT EXECUTED
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
4871e: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
48722: 67ce beqs 486f2 <_Watchdog_Tickle+0x3a> <== NOT EXECUTED
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
48724: 46c2 movew %d2,%sr <== NOT EXECUTED
}
48726: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4872c: 4e5e unlk %fp <== NOT EXECUTED
00055d8c <__env_lock>:
55d8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
55d90: 4e5e unlk %fp <== NOT EXECUTED
00055d94 <__env_unlock>:
55d94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
55d98: 4e5e unlk %fp <== NOT EXECUTED
00042dc8 <__getpid>:
#endif
#include <unistd.h>
pid_t __getpid(void)
{
42dc8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid();
}
42dcc: 4e5e unlk %fp <== NOT EXECUTED
#include <unistd.h>
pid_t __getpid(void)
{
return getpid();
42dce: 4ef9 0004 2dd4 jmp 42dd4 <getpid> <== NOT EXECUTED
00059bd0 <_calloc_r>:
void *_calloc_r(
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
59bd0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59bd4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return calloc( elements, size );
59bd8: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
59bde: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
59be2: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
size_t elements,
size_t size
)
{
return calloc( elements, size );
59be4: 4ef9 0004 241c jmp 4241c <calloc> <== NOT EXECUTED
...
00043c00 <_chown_helper>:
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
43c00: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
43c04: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
43c08: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &loc, follow_link ) )
43c0c: 240e movel %fp,%d2 <== NOT EXECUTED
43c0e: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
43c14: 2f03 movel %d3,%sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
43c16: 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 ) )
43c1a: 4eb9 0005 0600 jsr 50600 <strlen> <== NOT EXECUTED
43c20: 2eae 0014 movel %fp@(20),%sp@ <== NOT EXECUTED
43c24: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const char *path,
uid_t owner,
gid_t group,
int follow_link
)
{
43c26: 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 ) )
43c2a: 42a7 clrl %sp@- <== NOT EXECUTED
43c2c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43c30: 4eb9 0004 3f04 jsr 43f04 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
43c36: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43c3a: 4a80 tstl %d0 <== NOT EXECUTED
43c3c: 662a bnes 43c68 <_chown_helper+0x68> <== NOT EXECUTED
return -1;
result = (*loc.ops->chown_h)( &loc, owner, group );
43c3e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
43c42: 3f05 movew %d5,%sp@- <== NOT EXECUTED
43c44: 4267 clrw %sp@- <== NOT EXECUTED
43c46: 3f04 movew %d4,%sp@- <== NOT EXECUTED
43c48: 4267 clrw %sp@- <== NOT EXECUTED
43c4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43c4c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43c50: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
43c52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43c54: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
43c58: 4eb9 0004 3fd0 jsr 43fd0 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
43c5e: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
43c62: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
43c66: 6002 bras 43c6a <_chown_helper+0x6a> <== NOT EXECUTED
{
rtems_filesystem_location_info_t loc;
int result;
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x00, &loc, follow_link ) )
return -1;
43c68: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->chown_h)( &loc, owner, group );
rtems_filesystem_freenode( &loc );
return result;
}
43c6a: 4cee 003c ffd8 moveml %fp@(-40),%d2-%d5 <== NOT EXECUTED
43c70: 4e5e unlk %fp <== NOT EXECUTED
00049778 <_close_r>:
int _close_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
49778: 4e56 0000 linkw %fp,#0
return close( fd );
4977c: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
49782: 4e5e unlk %fp
int _close_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return close( fd );
49784: 4ef9 0004 9708 jmp 49708 <close>
...
0005aca4 <_execve>:
int _execve(
const char *path __attribute__((unused)),
char *const argv[] __attribute__((unused)),
char *const envp[] __attribute__((unused))
)
{
5aca4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
5aca8: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
5acae: 4e5e unlk %fp <== NOT EXECUTED
const char *path __attribute__((unused)),
char *const argv[] __attribute__((unused)),
char *const envp[] __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
5acb0: 2040 moveal %d0,%a0 <== NOT EXECUTED
5acb2: 7058 moveq #88,%d0 <== NOT EXECUTED
5acb4: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
5acb6: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00042f58 <_exit>:
extern void FINI_SYMBOL( void );
#endif
void EXIT_SYMBOL(int status)
{
42f58: 4e56 0000 linkw %fp,#0
/*
* If the toolset uses init/fini sections, then we need to
* run the global destructors now.
*/
#if defined(__USE_INIT_FINI__)
FINI_SYMBOL();
42f5c: 4eb9 0005 a704 jsr 5a704 <_fini>
* We need to do the exit processing on the global reentrancy structure.
* This has already been done on the per task reentrancy structure
* associated with this task.
*/
libc_wrapup();
42f62: 4eb9 0004 2ef4 jsr 42ef4 <libc_wrapup>
rtems_shutdown_executive(status);
42f68: 2f2e 0008 movel %fp@(8),%sp@-
42f6c: 4eb9 0004 5c38 jsr 45c38 <rtems_shutdown_executive>
...
00043242 <_fcntl_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
int cmd,
int arg
)
{
43242: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43246: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
4324a: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return fcntl( fd, cmd, arg );
4324e: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED
43254: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
43258: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4325c: 4e5e unlk %fp <== NOT EXECUTED
int fd,
int cmd,
int arg
)
{
return fcntl( fd, cmd, arg );
4325e: 4ef9 0004 30dc jmp 430dc <fcntl> <== NOT EXECUTED
00059bec <_free_r>:
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
59bec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free( ptr );
59bf0: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
59bf6: 4e5e unlk %fp <== NOT EXECUTED
void _free_r(
struct _reent *ignored __attribute__((unused)),
void *ptr
)
{
free( ptr );
59bf8: 4ef9 0004 27b4 jmp 427b4 <free> <== NOT EXECUTED
...
00059cb6 <_getpid_r>:
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
return getpid();
}
59cb6: 7001 moveq #1,%d0 <== NOT EXECUTED
#include <reent.h>
pid_t _getpid_r(
struct _reent *ptr __attribute__((unused))
)
{
59cb8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid();
}
59cbc: 4e5e unlk %fp <== NOT EXECUTED
000428b4 <_gettimeofday>:
int _gettimeofday(
struct timeval *tp,
struct timezone *tzp
)
{
428b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return gettimeofday( tp, tzp );
}
428b8: 4e5e unlk %fp <== NOT EXECUTED
int _gettimeofday(
struct timeval *tp,
struct timezone *tzp
)
{
return gettimeofday( tp, tzp );
428ba: 4ef9 0004 283c jmp 4283c <gettimeofday> <== NOT EXECUTED
0004289a <_gettimeofday_r>:
int _gettimeofday_r(
struct _reent *ignored_reentrancy_stuff __attribute__((unused)),
struct timeval *tp,
struct timezone *tzp
)
{
4289a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4289e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return gettimeofday( tp, tzp );
428a2: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
428a8: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
428ac: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored_reentrancy_stuff __attribute__((unused)),
struct timeval *tp,
struct timezone *tzp
)
{
return gettimeofday( tp, tzp );
428ae: 4ef9 0004 283c jmp 4283c <gettimeofday> <== NOT EXECUTED
00059cc0 <_isatty_r>:
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
59cc0: 4e56 0000 linkw %fp,#0
return isatty( fd );
59cc4: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
59cca: 4e5e unlk %fp
int _isatty_r(
struct _reent *ptr __attribute__((unused)),
int fd
)
{
return isatty( fd );
59ccc: 4ef9 0005 a65c jmp 5a65c <isatty>
...
00059eec <_kill_r>:
int _kill_r(
struct _reent *ptr,
pid_t pid,
int sig
)
{
59eec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59ef0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
59ef4: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
59ef8: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
59efc: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED
59f00: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
}
59f04: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr,
pid_t pid,
int sig
)
{
return killinfo( pid, sig, NULL );
59f06: 4ef9 0005 a088 jmp 5a088 <killinfo> <== NOT EXECUTED
00045a50 <_link_r>:
int _link_r(
struct _reent *ptr __attribute__((unused)),
const char *existing,
const char *new
)
{
45a50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45a54: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return link( existing, new );
45a58: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
45a5e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45a62: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *existing,
const char *new
)
{
return link( existing, new );
45a64: 4ef9 0004 5978 jmp 45978 <link> <== NOT EXECUTED
...
00059dac <_lseek_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
off_t offset,
int whence
)
{
59dac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59db0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
59db4: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
59db8: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
return lseek( fd, offset, whence );
59dbc: 2d6e 0018 0014 movel %fp@(24),%fp@(20) <== NOT EXECUTED
59dc2: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
59dc6: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
59dca: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
59dce: 4e5e unlk %fp <== NOT EXECUTED
int fd,
off_t offset,
int whence
)
{
return lseek( fd, offset, whence );
59dd0: 4ef9 0005 9cd4 jmp 59cd4 <lseek> <== NOT EXECUTED
...
0004456a <_lstat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
4456a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4456e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
44572: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
44578: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4457c: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
4457e: 4ef9 0004 44e4 jmp 444e4 <lstat> <== NOT EXECUTED
00059dd8 <_malloc_r>:
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
59dd8: 4e56 0000 linkw %fp,#0
return malloc( size );
59ddc: 2d6e 000c 0008 movel %fp@(12),%fp@(8)
}
59de2: 4e5e unlk %fp
void *_malloc_r(
struct _reent *ignored __attribute__((unused)),
size_t size
)
{
return malloc( size );
59de4: 4ef9 0004 2a9c jmp 42a9c <malloc>
...
0004342a <_open_r>:
struct _reent *ptr __attribute__((unused)),
const char *buf,
int flags,
int mode
)
{
4342a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4342e: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
43432: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return open( buf, flags, mode );
43436: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED
4343c: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
43440: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43444: 4e5e unlk %fp <== NOT EXECUTED
const char *buf,
int flags,
int mode
)
{
return open( buf, flags, mode );
43446: 4ef9 0004 3238 jmp 43238 <open> <== NOT EXECUTED
00059e88 <_read_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
void *buf,
size_t nbytes
)
{
59e88: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59e8c: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
59e90: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return read( fd, buf, nbytes );
59e94: 2d6e 0014 0010 movel %fp@(20),%fp@(16) <== NOT EXECUTED
59e9a: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
59e9e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
59ea2: 4e5e unlk %fp <== NOT EXECUTED
int fd,
void *buf,
size_t nbytes
)
{
return read( fd, buf, nbytes );
59ea4: 4ef9 0005 9dec jmp 59dec <read> <== NOT EXECUTED
...
00059eac <_realloc_r>:
void *_realloc_r(
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
59eac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59eb0: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return realloc( ptr, size );
59eb4: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
59eba: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
59ebe: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ignored __attribute__((unused)),
void *ptr,
size_t size
)
{
return realloc( ptr, size );
59ec0: 4ef9 0005 9f0c jmp 59f0c <realloc> <== NOT EXECUTED
...
0004675c <_rename_r>:
int _rename_r(
struct _reent *ptr __attribute__((unused)),
const char *old,
const char *new
)
{
4675c: 4e56 ffa4 linkw %fp,#-92 <== NOT EXECUTED
46760: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED
46764: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
46768: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED
/*
* Get the parent node of the old path to be renamed. Find the parent path.
*/
old_parent_pathlen = rtems_filesystem_dirname ( old );
4676c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4676e: 4eb9 0004 5378 jsr 45378 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( old_parent_pathlen == 0 )
46774: 588f addql #4,%sp <== NOT EXECUTED
/*
* Get the parent node of the old path to be renamed. Find the parent path.
*/
old_parent_pathlen = rtems_filesystem_dirname ( old );
46776: 2440 moveal %d0,%a2 <== NOT EXECUTED
46778: 200e movel %fp,%d0 <== NOT EXECUTED
4677a: 0680 ffff ffd0 addil #-48,%d0 <== NOT EXECUTED
if ( old_parent_pathlen == 0 )
46780: 4a8a tstl %a2 <== NOT EXECUTED
46782: 6616 bnes 4679a <_rename_r+0x3e> <== NOT EXECUTED
rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );
46784: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46786: 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;
4678a: 4204 clrb %d4 <== NOT EXECUTED
*/
old_parent_pathlen = rtems_filesystem_dirname ( old );
if ( old_parent_pathlen == 0 )
rtems_filesystem_get_start_loc( old, &i, &old_parent_loc );
4678c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4678e: 4eb9 0004 6ab8 jsr 46ab8 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
46794: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46798: 601e bras 467b8 <_rename_r+0x5c> <== NOT EXECUTED
else {
result = rtems_filesystem_evaluate_path( old, old_parent_pathlen,
4679a: 42a7 clrl %sp@- <== NOT EXECUTED
4679c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4679e: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
467a2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
467a4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
467a6: 4eb9 0004 532c jsr 4532c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&old_parent_loc,
false );
if ( result != 0 )
467ac: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
467b0: 4a80 tstl %d0 <== NOT EXECUTED
467b2: 6600 012e bnew 468e2 <_rename_r+0x186> <== NOT EXECUTED
return -1;
free_old_parentloc = true;
467b6: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
old_loc = old_parent_loc;
467b8: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
467bc: 240e movel %fp,%d2 <== NOT EXECUTED
467be: 0682 ffff ffd0 addil #-48,%d2 <== NOT EXECUTED
467c4: 2a0e movel %fp,%d5 <== NOT EXECUTED
467c6: 0685 ffff ffe4 addil #-28,%d5 <== NOT EXECUTED
name = old + old_parent_pathlen;
467cc: d68a addl %a2,%d3 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
467ce: 45f9 0005 30bc lea 530bc <strlen>,%a2 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
old_loc = old_parent_loc;
467d4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
467d6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
467d8: 4eb9 0005 19d8 jsr 519d8 <memcpy> <== NOT EXECUTED
name = old + old_parent_pathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
467de: 2f03 movel %d3,%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;
467e0: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
467e4: 4e92 jsr %a2@ <== NOT EXECUTED
467e6: 2e80 movel %d0,%sp@ <== NOT EXECUTED
467e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
467ea: 4eb9 0004 53ba jsr 453ba <rtems_filesystem_prefix_separators><== NOT EXECUTED
467f0: d680 addl %d0,%d3 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
467f2: 2f03 movel %d3,%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 ) );
467f4: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
467f8: 4e92 jsr %a2@ <== NOT EXECUTED
467fa: 4297 clrl %sp@ <== NOT EXECUTED
467fc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
467fe: 42a7 clrl %sp@- <== NOT EXECUTED
46800: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46802: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46804: 4eb9 0004 52bc jsr 452bc <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &old_loc, false );
if ( result != 0 ) {
4680a: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
4680e: 4a80 tstl %d0 <== NOT EXECUTED
46810: 670a beqs 4681c <_rename_r+0xc0> <== NOT EXECUTED
if ( free_old_parentloc )
46812: 4a04 tstb %d4 <== NOT EXECUTED
46814: 6700 00cc beqw 468e2 <_rename_r+0x186> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
46818: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4681a: 604e bras 4686a <_rename_r+0x10e> <== NOT EXECUTED
/*
* Get the parent of the new node we are renaming to.
*/
rtems_filesystem_get_start_loc( new, &i, &new_parent_loc );
4681c: 260e movel %fp,%d3 <== NOT EXECUTED
4681e: 0683 ffff ffbc addil #-68,%d3 <== NOT EXECUTED
46824: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46826: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4682a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4682c: 4eb9 0004 6ab8 jsr 46ab8 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*new_parent_loc.ops->evalformake_h)( &new[i], &new_parent_loc, &name );
46832: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
46836: dcae fffc addl %fp@(-4),%d6 <== NOT EXECUTED
4683a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4683c: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
46840: 2f06 movel %d6,%sp@- <== NOT EXECUTED
46842: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
46846: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 ) {
46848: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4684c: 4a80 tstl %d0 <== NOT EXECUTED
4684e: 6722 beqs 46872 <_rename_r+0x116> <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
46850: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46852: 45f9 0004 5580 lea 45580 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
46858: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_old_parentloc )
4685a: 588f addql #4,%sp <== NOT EXECUTED
4685c: 4a04 tstb %d4 <== NOT EXECUTED
4685e: 6706 beqs 46866 <_rename_r+0x10a> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
46860: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46862: 4e92 jsr %a2@ <== NOT EXECUTED
46864: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
46866: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
4686a: 4eb9 0004 5580 jsr 45580 <rtems_filesystem_freenode> <== NOT EXECUTED
46870: 6036 bras 468a8 <_rename_r+0x14c> <== 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 ) {
46872: 202e ffcc movel %fp@(-52),%d0 <== NOT EXECUTED
46876: 45f9 0004 5580 lea 45580 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
4687c: b0ae ffe0 cmpl %fp@(-32),%d0 <== NOT EXECUTED
46880: 672a beqs 468ac <_rename_r+0x150> <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
46882: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46884: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_old_parentloc )
46886: 588f addql #4,%sp <== NOT EXECUTED
46888: 4a04 tstb %d4 <== NOT EXECUTED
4688a: 6706 beqs 46892 <_rename_r+0x136> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
4688c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4688e: 4e92 jsr %a2@ <== NOT EXECUTED
46890: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
46892: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
46896: 4eb9 0004 5580 jsr 45580 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
4689c: 4eb9 0005 014c jsr 5014c <__errno> <== NOT EXECUTED
468a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
468a4: 7012 moveq #18,%d0 <== NOT EXECUTED
468a6: 2080 movel %d0,%a0@ <== NOT EXECUTED
468a8: 588f addql #4,%sp <== NOT EXECUTED
468aa: 6036 bras 468e2 <_rename_r+0x186> <== NOT EXECUTED
}
result = (*new_parent_loc.ops->rename_h)( &old_parent_loc, &old_loc, &new_parent_loc, name );
468ac: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
468b0: 206e ffc8 moveal %fp@(-56),%a0 <== NOT EXECUTED
468b4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
468b6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
468b8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
468ba: 2068 0040 moveal %a0@(64),%a0 <== NOT EXECUTED
468be: 4e90 jsr %a0@ <== NOT EXECUTED
468c0: 2a00 movel %d0,%d5 <== NOT EXECUTED
rtems_filesystem_freenode( &new_parent_loc );
468c2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
468c4: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_old_parentloc )
468c6: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
468ca: 4a04 tstb %d4 <== NOT EXECUTED
468cc: 6706 beqs 468d4 <_rename_r+0x178> <== NOT EXECUTED
rtems_filesystem_freenode( &old_parent_loc );
468ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
468d0: 4e92 jsr %a2@ <== NOT EXECUTED
468d2: 588f addql #4,%sp <== NOT EXECUTED
rtems_filesystem_freenode( &old_loc );
468d4: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
468d8: 4eb9 0004 5580 jsr 45580 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
468de: 588f addql #4,%sp <== NOT EXECUTED
468e0: 6002 bras 468e4 <_rename_r+0x188> <== 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 );
return -1;
468e2: 7aff moveq #-1,%d5 <== NOT EXECUTED
if ( free_old_parentloc )
rtems_filesystem_freenode( &old_parent_loc );
rtems_filesystem_freenode( &old_loc );
return result;
}
468e4: 2005 movel %d5,%d0 <== NOT EXECUTED
468e6: 4cee 047c ffa4 moveml %fp@(-92),%d2-%d6/%a2 <== NOT EXECUTED
468ec: 4e5e unlk %fp <== NOT EXECUTED
00043354 <_stat_r>:
int _STAT_R_NAME(
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
43354: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43358: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
return _STAT_NAME( path, buf );
4335c: 2d6e 0010 000c movel %fp@(16),%fp@(12) <== NOT EXECUTED
43362: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43366: 4e5e unlk %fp <== NOT EXECUTED
struct _reent *ptr __attribute__((unused)),
const char *path,
struct stat *buf
)
{
return _STAT_NAME( path, buf );
43368: 4ef9 0004 32cc jmp 432cc <stat> <== NOT EXECUTED
...
00044f1c <_times>:
#endif
clock_t _times(
struct tms *ptms
)
{
44f1c: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
44f20: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
44f24: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_interval ticks;
if ( !ptms )
44f28: 4a8a tstl %a2 <== NOT EXECUTED
44f2a: 6610 bnes 44f3c <_times+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
44f2c: 4eb9 0004 cbd0 jsr 4cbd0 <__errno> <== NOT EXECUTED
44f32: 2040 moveal %d0,%a0 <== NOT EXECUTED
44f34: 700e moveq #14,%d0 <== NOT EXECUTED
44f36: 2080 movel %d0,%a0@ <== NOT EXECUTED
44f38: 70ff moveq #-1,%d0 <== NOT EXECUTED
44f3a: 606a bras 44fa6 <_times+0x8a> <== NOT EXECUTED
/*
* This call does not depend on TOD being initialized and can't fail.
*/
ticks = rtems_clock_get_ticks_since_boot();
44f3c: 4eb9 0004 5244 jsr 45244 <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
44f42: 2239 0005 c580 movel 5c580 <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();
44f48: 2400 movel %d0,%d2 <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
44f4a: 2601 movel %d1,%d3 <== NOT EXECUTED
44f4c: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
44f52: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
44f56: 486e fffc pea %fp@(-4) <== NOT EXECUTED
44f5a: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
44f5e: 2079 0005 e2b2 moveal 5e2b2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
44f64: 41e8 0082 lea %a0@(130),%a0 <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
44f68: 4c44 3003 remul %d4,%d3,%d3 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
44f6c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
{
Timestamp_Control per_tick;
uint32_t ticks;
uint32_t fractional_ticks;
_Timestamp_Set(
44f6e: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
44f74: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
44f78: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
44f7c: 263c 3b9a ca00 movel #1000000000,%d3 <== NOT EXECUTED
44f82: 4c43 1004 remul %d3,%d4,%d1 <== NOT EXECUTED
44f86: 2d44 fff4 movel %d4,%fp@(-12) <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND,
(rtems_configuration_get_nanoseconds_per_tick() %
TOD_NANOSECONDS_PER_SECOND)
);
_Timestamp_Divide(
44f8a: 4eb9 0004 840c jsr 4840c <_Timespec_Divide> <== NOT EXECUTED
&_Thread_Executing->cpu_time_used,
&per_tick,
&ticks,
&fractional_ticks
);
ptms->tms_utime = ticks;
44f90: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
#endif
ptms->tms_stime = ticks;
ptms->tms_cutime = 0;
ptms->tms_cstime = 0;
return ticks;
44f94: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44f98: 2002 movel %d2,%d0 <== NOT EXECUTED
ptms->tms_utime = ticks;
}
#else
ptms->tms_utime = _Thread_Executing->cpu_time_used;
#endif
ptms->tms_stime = ticks;
44f9a: 2542 0004 movel %d2,%a2@(4) <== NOT EXECUTED
ptms->tms_cutime = 0;
44f9e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
ptms->tms_cstime = 0;
44fa2: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
return ticks;
}
44fa6: 4cee 041c ffe0 moveml %fp@(-32),%d2-%d4/%a2 <== NOT EXECUTED
44fac: 4e5e unlk %fp <== NOT EXECUTED
00044fbc <_times_r>:
clock_t _times_r(
struct _reent *ptr __attribute__((unused)),
struct tms *ptms
)
{
44fbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _times( ptms );
44fc0: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
44fc6: 4e5e unlk %fp <== NOT EXECUTED
clock_t _times_r(
struct _reent *ptr __attribute__((unused)),
struct tms *ptms
)
{
return _times( ptms );
44fc8: 4ef9 0004 4f1c jmp 44f1c <_times> <== NOT EXECUTED
...
00045c18 <_unlink_r>:
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
45c18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return unlink( path );
45c1c: 2d6e 000c 0008 movel %fp@(12),%fp@(8) <== NOT EXECUTED
}
45c22: 4e5e unlk %fp <== NOT EXECUTED
int _unlink_r(
struct _reent *ptr __attribute__((unused)),
const char *path
)
{
return unlink( path );
45c24: 4ef9 0004 5af4 jmp 45af4 <unlink> <== NOT EXECUTED
...
00059ec8 <_write_r>:
struct _reent *ptr __attribute__((unused)),
int fd,
const void *buf,
size_t nbytes
)
{
59ec8: 4e56 0000 linkw %fp,#0
59ecc: 222e 0010 movel %fp@(16),%d1
59ed0: 202e 000c movel %fp@(12),%d0
return write( fd, buf, nbytes );
59ed4: 2d6e 0014 0010 movel %fp@(20),%fp@(16)
59eda: 2d41 000c movel %d1,%fp@(12)
59ede: 2d40 0008 movel %d0,%fp@(8)
}
59ee2: 4e5e unlk %fp
int fd,
const void *buf,
size_t nbytes
)
{
return write( fd, buf, nbytes );
59ee4: 4ef9 0005 9fec jmp 59fec <write>
...
00043ec0 <access>:
int access(
const char *path,
int amode
)
{
43ec0: 4e56 ffb8 linkw %fp,#-72 <== NOT EXECUTED
43ec4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
struct stat statbuf;
if ( stat(path, &statbuf) )
43ec6: 486e ffba pea %fp@(-70) <== NOT EXECUTED
43eca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
int access(
const char *path,
int amode
)
{
43ece: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
struct stat statbuf;
if ( stat(path, &statbuf) )
43ed2: 4eb9 0004 5668 jsr 45668 <stat> <== NOT EXECUTED
43ed8: 508f addql #8,%sp <== NOT EXECUTED
43eda: 4a80 tstl %d0 <== NOT EXECUTED
43edc: 6634 bnes 43f12 <access+0x52> <== NOT EXECUTED
return -1;
if ( amode & R_OK ) {
43ede: 44c2 movew %d2,%ccr <== NOT EXECUTED
43ee0: 660c bnes 43eee <access+0x2e> <== NOT EXECUTED
if (!( statbuf.st_mode & S_IREAD ))
43ee2: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
43ee6: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED
43eec: 6724 beqs 43f12 <access+0x52> <== NOT EXECUTED
return -1;
}
if ( amode & W_OK ) {
43eee: 0802 0001 btst #1,%d2 <== NOT EXECUTED
43ef2: 670c beqs 43f00 <access+0x40> <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IWRITE ) )
43ef4: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
43ef8: 0280 0000 0080 andil #128,%d0 <== NOT EXECUTED
43efe: 6712 beqs 43f12 <access+0x52> <== NOT EXECUTED
return -1;
}
if ( amode & X_OK ) {
43f00: 0802 0000 btst #0,%d2 <== NOT EXECUTED
43f04: 6710 beqs 43f16 <access+0x56> <== NOT EXECUTED
if ( !( statbuf.st_mode & S_IEXEC ) )
43f06: 7040 moveq #64,%d0 <== NOT EXECUTED
43f08: c0ae ffc6 andl %fp@(-58),%d0 <== NOT EXECUTED
return -1;
}
return 0;
43f0c: 57c0 seq %d0 <== NOT EXECUTED
43f0e: 49c0 extbl %d0 <== NOT EXECUTED
43f10: 6006 bras 43f18 <access+0x58> <== NOT EXECUTED
return -1;
}
if ( amode & W_OK ) {
if ( !( statbuf.st_mode & S_IWRITE ) )
return -1;
43f12: 70ff moveq #-1,%d0 <== NOT EXECUTED
43f14: 6002 bras 43f18 <access+0x58> <== NOT EXECUTED
if ( amode & X_OK ) {
if ( !( statbuf.st_mode & S_IEXEC ) )
return -1;
}
return 0;
43f16: 4280 clrl %d0 <== NOT EXECUTED
}
43f18: 242e ffb4 movel %fp@(-76),%d2 <== NOT EXECUTED
43f1c: 4e5e unlk %fp <== NOT EXECUTED
000455fc <adjtime>:
int adjtime(
struct timeval *delta,
struct timeval *olddelta
)
{
455fc: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
45600: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45602: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
45606: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45608: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
long adjustment;
/*
* Simple validations
*/
if ( !delta )
4560c: 4a8a tstl %a2 <== NOT EXECUTED
4560e: 670c beqs 4561c <adjtime+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )
45610: 203c 000f 423f movel #999999,%d0 <== NOT EXECUTED
45616: b0aa 0004 cmpl %a2@(4),%d0 <== NOT EXECUTED
4561a: 6412 bccs 4562e <adjtime+0x32> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4561c: 4eb9 0004 d38c jsr 4d38c <__errno> <== NOT EXECUTED
45622: 2040 moveal %d0,%a0 <== NOT EXECUTED
45624: 7016 moveq #22,%d0 <== NOT EXECUTED
45626: 2080 movel %d0,%a0@ <== NOT EXECUTED
45628: 70ff moveq #-1,%d0 <== NOT EXECUTED
4562a: 6000 00ae braw 456da <adjtime+0xde> <== NOT EXECUTED
if ( olddelta ) {
4562e: 4a8b tstl %a3 <== NOT EXECUTED
45630: 6706 beqs 45638 <adjtime+0x3c> <== NOT EXECUTED
olddelta->tv_sec = 0;
45632: 4293 clrl %a3@ <== NOT EXECUTED
olddelta->tv_usec = 0;
45634: 42ab 0004 clrl %a3@(4) <== NOT EXECUTED
}
/* convert delta to microseconds */
adjustment = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);
45638: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
4563e: 4c12 0800 mulsl %a2@,%d0 <== NOT EXECUTED
adjustment += delta->tv_usec;
45642: d0aa 0004 addl %a2@(4),%d0 <== NOT EXECUTED
/* too small to account for */
if ( adjustment < rtems_configuration_get_microseconds_per_tick() )
45646: b0b9 0005 d700 cmpl 5d700 <Configuration+0xc>,%d0 <== NOT EXECUTED
4564c: 6500 008a bcsw 456d8 <adjtime+0xdc> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45650: 2039 0005 f0d0 movel 5f0d0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45656: 5280 addql #1,%d0 <== NOT EXECUTED
45658: 23c0 0005 f0d0 movel %d0,5f0d0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* This prevents context switches while we are adjusting the TOD
*/
_Thread_Disable_dispatch();
_TOD_Get( &ts );
4565e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45662: 4eb9 0004 6cac jsr 46cac <_TOD_Get> <== NOT EXECUTED
ts.tv_sec += delta->tv_sec;
45668: 2012 movel %a2@,%d0 <== NOT EXECUTED
4566a: d1ae fff8 addl %d0,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
4566e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
45674: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Get( &ts );
ts.tv_sec += delta->tv_sec;
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
45676: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4567a: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Get( &ts );
ts.tv_sec += delta->tv_sec;
4567e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;
45682: d0ae fffc addl %fp@(-4),%d0 <== NOT EXECUTED
/* if adjustment is too much positive */
while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
45686: 6006 bras 4568e <adjtime+0x92> <== NOT EXECUTED
45688: 0680 c465 3600 addil #-1000000000,%d0 <== NOT EXECUTED
4568e: 2208 movel %a0,%d1 <== NOT EXECUTED
45690: 5288 addql #1,%a0 <== NOT EXECUTED
45692: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
45698: 62ee bhis 45688 <adjtime+0x8c> <== NOT EXECUTED
4569a: 6006 bras 456a2 <adjtime+0xa6> <== NOT EXECUTED
4569c: 0680 3b9a ca00 addil #1000000000,%d0 <== NOT EXECUTED
456a2: 2041 moveal %d1,%a0 <== NOT EXECUTED
456a4: 5381 subql #1,%d1 <== NOT EXECUTED
ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec++;
}
/* if adjustment is too much negative */
while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {
456a6: 0c80 c465 3600 cmpil #-1000000000,%d0 <== NOT EXECUTED
456ac: 63ee blss 4569c <adjtime+0xa0> <== NOT EXECUTED
ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec--;
}
_TOD_Set( &ts );
456ae: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec++;
}
/* if adjustment is too much negative */
while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {
456b2: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
456b6: 2d48 fff8 movel %a0,%fp@(-8) <== NOT EXECUTED
ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;
ts.tv_sec--;
}
_TOD_Set( &ts );
456ba: 4eb9 0004 6d40 jsr 46d40 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
456c0: 4eb9 0004 80b6 jsr 480b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
/* set the user's output */
if ( olddelta )
456c6: 588f addql #4,%sp <== NOT EXECUTED
456c8: 4a8b tstl %a3 <== NOT EXECUTED
456ca: 670c beqs 456d8 <adjtime+0xdc> <== NOT EXECUTED
*olddelta = *delta;
456cc: 2012 movel %a2@,%d0 <== NOT EXECUTED
456ce: 222a 0004 movel %a2@(4),%d1 <== NOT EXECUTED
456d2: 2680 movel %d0,%a3@ <== NOT EXECUTED
456d4: 2741 0004 movel %d1,%a3@(4) <== NOT EXECUTED
return 0;
456d8: 4280 clrl %d0 <== NOT EXECUTED
}
456da: 246e fff0 moveal %fp@(-16),%a2 <== NOT EXECUTED
456de: 266e fff4 moveal %fp@(-12),%a3 <== NOT EXECUTED
456e2: 4e5e unlk %fp <== NOT EXECUTED
...
00045d34 <aio_cancel>:
* operation(s) cannot be canceled
*/
int aio_cancel(int fildes, struct aiocb *aiocbp)
{
45d34: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
45d38: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_aio_request_chain *r_chain;
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
45d3c: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45d42: 49f9 0004 6ddc lea 46ddc <pthread_mutex_lock>,%a4 <== NOT EXECUTED
* operation(s) cannot be canceled
*/
int aio_cancel(int fildes, struct aiocb *aiocbp)
{
45d48: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
45d4c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
rtems_aio_request_chain *r_chain;
int result;
pthread_mutex_lock (&aio_request_queue.mutex);
45d50: 4e94 jsr %a4@ <== NOT EXECUTED
if (fcntl (fildes, F_GETFD) < 0) {
45d52: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45d56: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45d58: 4eb9 0004 c03c jsr 4c03c <fcntl> <== NOT EXECUTED
45d5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45d62: 4a80 tstl %d0 <== NOT EXECUTED
45d64: 6c1c bges 45d82 <aio_cancel+0x4e> <== NOT EXECUTED
pthread_mutex_unlock(&aio_request_queue.mutex);
45d66: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45d6c: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EBADF);
45d72: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
45d78: 7209 moveq #9,%d1 <== NOT EXECUTED
45d7a: 2040 moveal %d0,%a0 <== NOT EXECUTED
45d7c: 2081 movel %d1,%a0@ <== NOT EXECUTED
45d7e: 6000 00f2 braw 45e72 <aio_cancel+0x13e> <== NOT EXECUTED
}
/* if aiocbp is NULL remove all request for given file descriptor */
if (aiocbp == NULL) {
45d82: 4a8b tstl %a3 <== NOT EXECUTED
45d84: 6600 00ce bnew 45e54 <aio_cancel+0x120> <== NOT EXECUTED
AIO_printf ("Cancel all requests\n");
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
45d88: 42a7 clrl %sp@- <== NOT EXECUTED
45d8a: 47f9 0004 60b2 lea 460b2 <rtems_aio_search_fd>,%a3 <== NOT EXECUTED
45d90: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45d92: 4879 0006 04d0 pea 604d0 <aio_request_queue+0x48> <== NOT EXECUTED
45d98: 4e93 jsr %a3@ <== NOT EXECUTED
if (r_chain == NULL) {
45d9a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/* if aiocbp is NULL remove all request for given file descriptor */
if (aiocbp == NULL) {
AIO_printf ("Cancel all requests\n");
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
45d9e: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (r_chain == NULL) {
45da0: 4a80 tstl %d0 <== NOT EXECUTED
45da2: 6678 bnes 45e1c <aio_cancel+0xe8> <== NOT EXECUTED
AIO_printf ("Request chain not on [WQ]\n");
if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {
45da4: 203c 0006 04e0 movel #394464,%d0 <== NOT EXECUTED
45daa: b0b9 0006 04dc cmpl 604dc <aio_request_queue+0x54>,%d0 <== NOT EXECUTED
45db0: 6700 0130 beqw 45ee2 <aio_cancel+0x1ae> <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
45db4: 42a7 clrl %sp@- <== NOT EXECUTED
45db6: 45f9 0004 6e74 lea 46e74 <pthread_mutex_unlock>,%a2 <== NOT EXECUTED
45dbc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45dbe: 4879 0006 04dc pea 604dc <aio_request_queue+0x54> <== NOT EXECUTED
45dc4: 4e93 jsr %a3@ <== NOT EXECUTED
if (r_chain == NULL) {
45dc6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
if (r_chain == NULL) {
AIO_printf ("Request chain not on [WQ]\n");
if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
45dca: 2400 movel %d0,%d2 <== NOT EXECUTED
if (r_chain == NULL) {
45dcc: 6612 bnes 45de0 <aio_cancel+0xac> <== NOT EXECUTED
pthread_mutex_unlock(&aio_request_queue.mutex);
45dce: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
return AIO_ALLDONE;
45dd4: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
AIO_printf ("Request chain not on [WQ]\n");
if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
if (r_chain == NULL) {
pthread_mutex_unlock(&aio_request_queue.mutex);
45dd8: 4e92 jsr %a2@ <== NOT EXECUTED
return AIO_ALLDONE;
45dda: 588f addql #4,%sp <== NOT EXECUTED
45ddc: 6000 0114 braw 45ef2 <aio_cancel+0x1be> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
45de0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
AIO_printf ("Request chain on [IQ]\n");
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
pthread_mutex_destroy (&r_chain->mutex);
45de2: 2642 moveal %d2,%a3 <== NOT EXECUTED
45de4: 47eb 001c lea %a3@(28),%a3 <== NOT EXECUTED
45de8: 4eb9 0004 8638 jsr 48638 <_Chain_Extract> <== NOT EXECUTED
}
AIO_printf ("Request chain on [IQ]\n");
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
45dee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45df0: 4eb9 0004 6406 jsr 46406 <rtems_aio_remove_fd> <== NOT EXECUTED
pthread_mutex_destroy (&r_chain->mutex);
45df6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45df8: 4eb9 0004 6ba4 jsr 46ba4 <pthread_mutex_destroy> <== NOT EXECUTED
pthread_cond_destroy (&r_chain->mutex);
45dfe: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45e00: 4eb9 0004 68a0 jsr 468a0 <pthread_cond_destroy> <== NOT EXECUTED
free (r_chain);
45e06: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45e08: 4eb9 0004 31fc jsr 431fc <free> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
45e0e: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45e14: 4e92 jsr %a2@ <== NOT EXECUTED
return AIO_CANCELED;
45e16: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45e1a: 6032 bras 45e4e <aio_cancel+0x11a> <== NOT EXECUTED
return AIO_ALLDONE;
}
AIO_printf ("Request chain on [WQ]\n");
pthread_mutex_lock (&r_chain->mutex);
45e1c: 2400 movel %d0,%d2 <== NOT EXECUTED
45e1e: 0682 0000 001c addil #28,%d2 <== NOT EXECUTED
45e24: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45e26: 4e94 jsr %a4@ <== NOT EXECUTED
45e28: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45e2a: 4eb9 0004 8638 jsr 48638 <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
45e30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
45e32: 45f9 0004 6e74 lea 46e74 <pthread_mutex_unlock>,%a2 <== NOT EXECUTED
AIO_printf ("Request chain on [WQ]\n");
pthread_mutex_lock (&r_chain->mutex);
rtems_chain_extract (&r_chain->next_fd);
rtems_aio_remove_fd (r_chain);
45e38: 4eb9 0004 6406 jsr 46406 <rtems_aio_remove_fd> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
45e3e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45e40: 4e92 jsr %a2@ <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
45e42: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45e48: 4e92 jsr %a2@ <== NOT EXECUTED
return AIO_CANCELED;
45e4a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45e4e: 4282 clrl %d2 <== NOT EXECUTED
45e50: 6000 00a0 braw 45ef2 <aio_cancel+0x1be> <== NOT EXECUTED
} else {
AIO_printf ("Cancel request\n");
if (aiocbp->aio_fildes != fildes) {
45e54: 2453 moveal %a3@,%a2 <== NOT EXECUTED
45e56: b48a cmpl %a2,%d2 <== NOT EXECUTED
45e58: 671e beqs 45e78 <aio_cancel+0x144> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
45e5a: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45e60: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
45e66: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
45e6c: 2040 moveal %d0,%a0 <== NOT EXECUTED
45e6e: 7016 moveq #22,%d0 <== NOT EXECUTED
45e70: 2080 movel %d0,%a0@ <== NOT EXECUTED
45e72: 588f addql #4,%sp <== NOT EXECUTED
45e74: 74ff moveq #-1,%d2 <== NOT EXECUTED
45e76: 607a bras 45ef2 <aio_cancel+0x1be> <== NOT EXECUTED
}
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
45e78: 42a7 clrl %sp@- <== NOT EXECUTED
45e7a: 49f9 0004 60b2 lea 460b2 <rtems_aio_search_fd>,%a4 <== NOT EXECUTED
45e80: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45e82: 4879 0006 04d0 pea 604d0 <aio_request_queue+0x48> <== NOT EXECUTED
45e88: 4e94 jsr %a4@ <== NOT EXECUTED
if (r_chain == NULL) {
45e8a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45e8e: 4a80 tstl %d0 <== NOT EXECUTED
45e90: 665e bnes 45ef0 <aio_cancel+0x1bc> <== NOT EXECUTED
if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {
45e92: 203c 0006 04e0 movel #394464,%d0 <== NOT EXECUTED
45e98: b0b9 0006 04dc cmpl 604dc <aio_request_queue+0x54>,%d0 <== NOT EXECUTED
45e9e: 6742 beqs 45ee2 <aio_cancel+0x1ae> <== NOT EXECUTED
r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
45ea0: 42a7 clrl %sp@- <== NOT EXECUTED
45ea2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45ea4: 4879 0006 04dc pea 604dc <aio_request_queue+0x54> <== NOT EXECUTED
45eaa: 45f9 0004 6e74 lea 46e74 <pthread_mutex_unlock>,%a2 <== NOT EXECUTED
45eb0: 4e94 jsr %a4@ <== NOT EXECUTED
if (r_chain == NULL) {
45eb2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45eb6: 4a80 tstl %d0 <== NOT EXECUTED
45eb8: 660a bnes 45ec4 <aio_cancel+0x190> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
45eba: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45ec0: 4e92 jsr %a2@ <== NOT EXECUTED
45ec2: 60a2 bras 45e66 <aio_cancel+0x132> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
}
AIO_printf ("Request on [IQ]\n");
result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);
45ec4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45ec6: 2040 moveal %d0,%a0 <== NOT EXECUTED
45ec8: 4868 0008 pea %a0@(8) <== NOT EXECUTED
45ecc: 4eb9 0004 645c jsr 4645c <rtems_aio_remove_req> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
45ed2: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one (EINVAL);
}
AIO_printf ("Request on [IQ]\n");
result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);
45ed8: 2400 movel %d0,%d2 <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
45eda: 4e92 jsr %a2@ <== NOT EXECUTED
return result;
45edc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45ee0: 6010 bras 45ef2 <aio_cancel+0x1be> <== NOT EXECUTED
} else {
pthread_mutex_unlock (&aio_request_queue.mutex);
45ee2: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
45ee8: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
return AIO_ALLDONE;
45eee: 588f addql #4,%sp <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_unlock (&aio_request_queue.mutex);
return result;
}
}
return AIO_ALLDONE;
45ef0: 7402 moveq #2,%d2 <== NOT EXECUTED
}
45ef2: 2002 movel %d2,%d0 <== NOT EXECUTED
45ef4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
45efa: 4e5e unlk %fp <== NOT EXECUTED
...
00045f00 <aio_error>:
*/
int
aio_error (const struct aiocb *aiocbp)
{
45f00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return aiocbp->error_code;
}
45f04: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45f08: 4e5e unlk %fp <== NOT EXECUTED
45f0a: 2028 0030 movel %a0@(48),%d0 <== NOT EXECUTED
00045f10 <aio_fsync>:
)
{
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
45f10: 203c 0000 2000 movel #8192,%d0 <== NOT EXECUTED
int aio_fsync(
int op,
struct aiocb *aiocbp
)
{
45f16: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45f1a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f1c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
if (op != O_SYNC)
45f20: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
45f24: 671a beqs 45f40 <aio_fsync+0x30> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
45f26: 7216 moveq #22,%d1 <== NOT EXECUTED
45f28: 70ff moveq #-1,%d0 <== NOT EXECUTED
45f2a: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
45f2e: 2540 0034 movel %d0,%a2@(52) <== NOT EXECUTED
45f32: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
45f38: 2040 moveal %d0,%a0 <== NOT EXECUTED
45f3a: 7016 moveq #22,%d0 <== NOT EXECUTED
45f3c: 2080 movel %d0,%a0@ <== NOT EXECUTED
45f3e: 607e bras 45fbe <aio_fsync+0xae> <== NOT EXECUTED
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
45f40: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
45f44: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
45f46: 4eb9 0004 c03c jsr 4c03c <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
45f4c: 508f addql #8,%sp <== NOT EXECUTED
45f4e: 7203 moveq #3,%d1 <== NOT EXECUTED
45f50: c081 andl %d1,%d0 <== NOT EXECUTED
45f52: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
45f56: 5380 subql #1,%d0 <== NOT EXECUTED
45f58: b280 cmpl %d0,%d1 <== NOT EXECUTED
45f5a: 641a bccs 45f76 <aio_fsync+0x66> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
45f5c: 72ff moveq #-1,%d1 <== NOT EXECUTED
45f5e: 7009 moveq #9,%d0 <== NOT EXECUTED
45f60: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
45f64: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
45f68: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
45f6e: 7209 moveq #9,%d1 <== NOT EXECUTED
45f70: 2040 moveal %d0,%a0 <== NOT EXECUTED
45f72: 2081 movel %d1,%a0@ <== NOT EXECUTED
45f74: 6048 bras 45fbe <aio_fsync+0xae> <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
45f76: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
45f7a: 4eb9 0004 3724 jsr 43724 <malloc> <== NOT EXECUTED
if (req == NULL)
45f80: 588f addql #4,%sp <== NOT EXECUTED
45f82: 4a80 tstl %d0 <== NOT EXECUTED
45f84: 661c bnes 45fa2 <aio_fsync+0x92> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
45f86: 103c 000b moveb #11,%d0 <== NOT EXECUTED
45f8a: 72ff moveq #-1,%d1 <== NOT EXECUTED
45f8c: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
45f90: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
45f94: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
45f9a: 2040 moveal %d0,%a0 <== NOT EXECUTED
45f9c: 700b moveq #11,%d0 <== NOT EXECUTED
45f9e: 2080 movel %d0,%a0@ <== NOT EXECUTED
45fa0: 601c bras 45fbe <aio_fsync+0xae> <== NOT EXECUTED
req->aiocbp = aiocbp;
45fa2: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_SYNC;
45fa4: 7203 moveq #3,%d1 <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
45fa6: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_SYNC;
45faa: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
45fae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
45fb2: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45fb6: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_SYNC;
return rtems_aio_enqueue (req);
45fb8: 4ef9 0004 64b8 jmp 464b8 <rtems_aio_enqueue> <== NOT EXECUTED
}
45fbe: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
45fc2: 70ff moveq #-1,%d0 <== NOT EXECUTED
45fc4: 4e5e unlk %fp <== NOT EXECUTED
000466b4 <aio_read>:
* 0 - otherwise
*/
int
aio_read (struct aiocb *aiocbp)
{
466b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
466b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
466ba: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
* 0 - otherwise
*/
int
aio_read (struct aiocb *aiocbp)
{
466be: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
466c2: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
466c4: 4eb9 0004 c03c jsr 4c03c <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
466ca: 508f addql #8,%sp <== NOT EXECUTED
466cc: 7203 moveq #3,%d1 <== NOT EXECUTED
466ce: c081 andl %d1,%d0 <== NOT EXECUTED
466d0: 6722 beqs 466f4 <aio_read+0x40> <== NOT EXECUTED
466d2: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
466d6: b280 cmpl %d0,%d1 <== NOT EXECUTED
466d8: 671a beqs 466f4 <aio_read+0x40> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
466da: 7009 moveq #9,%d0 <== NOT EXECUTED
466dc: 72ff moveq #-1,%d1 <== NOT EXECUTED
466de: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
466e2: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
466e6: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
466ec: 2040 moveal %d0,%a0 <== NOT EXECUTED
466ee: 7009 moveq #9,%d0 <== NOT EXECUTED
466f0: 2080 movel %d0,%a0@ <== NOT EXECUTED
466f2: 606e bras 46762 <aio_read+0xae> <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
466f4: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
466f8: 6606 bnes 46700 <aio_read+0x4c> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
466fa: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
466fe: 6a1a bpls 4671a <aio_read+0x66> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
46700: 72ff moveq #-1,%d1 <== NOT EXECUTED
46702: 7016 moveq #22,%d0 <== NOT EXECUTED
46704: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
46708: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4670c: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
46712: 7216 moveq #22,%d1 <== NOT EXECUTED
46714: 2040 moveal %d0,%a0 <== NOT EXECUTED
46716: 2081 movel %d1,%a0@ <== NOT EXECUTED
46718: 6048 bras 46762 <aio_read+0xae> <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
4671a: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
4671e: 4eb9 0004 3724 jsr 43724 <malloc> <== NOT EXECUTED
if (req == NULL)
46724: 588f addql #4,%sp <== NOT EXECUTED
46726: 4a80 tstl %d0 <== NOT EXECUTED
46728: 661c bnes 46746 <aio_read+0x92> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
4672a: 103c 000b moveb #11,%d0 <== NOT EXECUTED
4672e: 72ff moveq #-1,%d1 <== NOT EXECUTED
46730: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
46734: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
46738: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
4673e: 2040 moveal %d0,%a0 <== NOT EXECUTED
46740: 700b moveq #11,%d0 <== NOT EXECUTED
46742: 2080 movel %d0,%a0@ <== NOT EXECUTED
46744: 601c bras 46762 <aio_read+0xae> <== NOT EXECUTED
req->aiocbp = aiocbp;
46746: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_READ;
46748: 7201 moveq #1,%d1 <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
4674a: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_READ;
4674e: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
46752: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
46756: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
4675a: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_READ;
return rtems_aio_enqueue (req);
4675c: 4ef9 0004 64b8 jmp 464b8 <rtems_aio_enqueue> <== NOT EXECUTED
}
46762: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46766: 70ff moveq #-1,%d0 <== NOT EXECUTED
46768: 4e5e unlk %fp <== NOT EXECUTED
0004676c <aio_return>:
* aiocbp->return_value
*/
ssize_t
aio_return (const struct aiocb *aiocbp)
{
4676c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return aiocbp->return_value;
}
46770: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46774: 4e5e unlk %fp <== NOT EXECUTED
46776: 2028 0034 movel %a0@(52),%d0 <== NOT EXECUTED
000453f0 <aio_suspend>:
int aio_suspend(
const struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
const struct timespec *timeout __attribute__((unused))
)
{
453f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
453f4: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
453fa: 4e5e unlk %fp <== NOT EXECUTED
const struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
const struct timespec *timeout __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
453fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
453fe: 7058 moveq #88,%d0 <== NOT EXECUTED
45400: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
45402: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004677c <aio_write>:
* 0 - otherwise
*/
int
aio_write (struct aiocb *aiocbp)
{
4677c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46780: 2f0a movel %a2,%sp@- <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
46782: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
* 0 - otherwise
*/
int
aio_write (struct aiocb *aiocbp)
{
46786: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_aio_request *req;
int mode;
mode = fcntl (aiocbp->aio_fildes, F_GETFL);
4678a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4678c: 4eb9 0004 c03c jsr 4c03c <fcntl> <== NOT EXECUTED
if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
46792: 508f addql #8,%sp <== NOT EXECUTED
46794: 7203 moveq #3,%d1 <== NOT EXECUTED
46796: c081 andl %d1,%d0 <== NOT EXECUTED
46798: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
4679c: 5380 subql #1,%d0 <== NOT EXECUTED
4679e: b280 cmpl %d0,%d1 <== NOT EXECUTED
467a0: 641a bccs 467bc <aio_write+0x40> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);
467a2: 7009 moveq #9,%d0 <== NOT EXECUTED
467a4: 72ff moveq #-1,%d1 <== NOT EXECUTED
467a6: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
467aa: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
467ae: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
467b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
467b6: 7009 moveq #9,%d0 <== NOT EXECUTED
467b8: 2080 movel %d0,%a0@ <== NOT EXECUTED
467ba: 606e bras 4682a <aio_write+0xae> <== NOT EXECUTED
if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
467bc: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
467c0: 6606 bnes 467c8 <aio_write+0x4c> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
if (aiocbp->aio_offset < 0)
467c2: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
467c6: 6a1a bpls 467e2 <aio_write+0x66> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);
467c8: 72ff moveq #-1,%d1 <== NOT EXECUTED
467ca: 7016 moveq #22,%d0 <== NOT EXECUTED
467cc: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
467d0: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
467d4: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
467da: 7216 moveq #22,%d1 <== NOT EXECUTED
467dc: 2040 moveal %d0,%a0 <== NOT EXECUTED
467de: 2081 movel %d1,%a0@ <== NOT EXECUTED
467e0: 6048 bras 4682a <aio_write+0xae> <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
467e2: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
467e6: 4eb9 0004 3724 jsr 43724 <malloc> <== NOT EXECUTED
if (req == NULL)
467ec: 588f addql #4,%sp <== NOT EXECUTED
467ee: 4a80 tstl %d0 <== NOT EXECUTED
467f0: 661c bnes 4680e <aio_write+0x92> <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
467f2: 103c 000b moveb #11,%d0 <== NOT EXECUTED
467f6: 72ff moveq #-1,%d1 <== NOT EXECUTED
467f8: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
467fc: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
46800: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
46806: 2040 moveal %d0,%a0 <== NOT EXECUTED
46808: 700b moveq #11,%d0 <== NOT EXECUTED
4680a: 2080 movel %d0,%a0@ <== NOT EXECUTED
4680c: 601c bras 4682a <aio_write+0xae> <== NOT EXECUTED
req->aiocbp = aiocbp;
4680e: 2040 moveal %d0,%a0 <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_WRITE;
46810: 7202 moveq #2,%d1 <== NOT EXECUTED
req = malloc (sizeof (rtems_aio_request));
if (req == NULL)
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
46812: 214a 0014 movel %a2,%a0@(20) <== NOT EXECUTED
req->aiocbp->aio_lio_opcode = LIO_WRITE;
46816: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
return rtems_aio_enqueue (req);
}
4681a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
4681e: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
46822: 4e5e unlk %fp <== NOT EXECUTED
rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);
req->aiocbp = aiocbp;
req->aiocbp->aio_lio_opcode = LIO_WRITE;
return rtems_aio_enqueue (req);
46824: 4ef9 0004 64b8 jmp 464b8 <rtems_aio_enqueue> <== NOT EXECUTED
}
4682a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4682e: 70ff moveq #-1,%d0 <== NOT EXECUTED
46830: 4e5e unlk %fp <== NOT EXECUTED
00046dc4 <alarm>:
}
unsigned int alarm(
unsigned int seconds
)
{
46dc4: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
46dc8: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
46dcc: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
/*
* Initialize the timer used to implement alarm().
*/
if ( !the_timer->routine ) {
46dd0: 4ab9 0006 1efc tstl 61efc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED
46dd6: 6620 bnes 46df8 <alarm+0x34> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46dd8: 42b9 0006 1ee8 clrl 61ee8 <_POSIX_signals_Alarm_timer+0x8> <== NOT EXECUTED
the_watchdog->routine = routine;
46dde: 203c 0004 6da8 movel #290216,%d0 <== NOT EXECUTED
the_watchdog->id = id;
46de4: 42b9 0006 1f00 clrl 61f00 <_POSIX_signals_Alarm_timer+0x20><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
46dea: 23c0 0006 1efc movel %d0,61efc <_POSIX_signals_Alarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id;
the_watchdog->user_data = user_data;
46df0: 42b9 0006 1f04 clrl 61f04 <_POSIX_signals_Alarm_timer+0x24><== NOT EXECUTED
46df6: 6036 bras 46e2e <alarm+0x6a> <== NOT EXECUTED
_Watchdog_Initialize( the_timer, _POSIX_signals_Alarm_TSR, 0, NULL );
} else {
Watchdog_States state;
state = _Watchdog_Remove( the_timer );
46df8: 4879 0006 1ee0 pea 61ee0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED
46dfe: 4eb9 0004 b580 jsr 4b580 <_Watchdog_Remove> <== NOT EXECUTED
if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
46e04: 588f addql #4,%sp <== NOT EXECUTED
46e06: 7201 moveq #1,%d1 <== NOT EXECUTED
46e08: 5580 subql #2,%d0 <== NOT EXECUTED
46e0a: b280 cmpl %d0,%d1 <== NOT EXECUTED
46e0c: 6520 bcss 46e2e <alarm+0x6a> <== NOT EXECUTED
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
remaining = the_timer->initial -
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
46e0e: 2839 0006 1ef8 movel 61ef8 <_POSIX_signals_Alarm_timer+0x18>,%d4<== NOT EXECUTED
46e14: 98b9 0006 1ef4 subl 61ef4 <_POSIX_signals_Alarm_timer+0x14>,%d4<== NOT EXECUTED
* The stop_time and start_time fields are snapshots of ticks since
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
remaining = the_timer->initial -
46e1a: 2439 0006 1eec movel 61eec <_POSIX_signals_Alarm_timer+0xc>,%d2<== NOT EXECUTED
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
46e20: 4eb9 0004 92f4 jsr 492f4 <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
46e26: 4c40 4004 remul %d0,%d4,%d4 <== NOT EXECUTED
* The stop_time and start_time fields are snapshots of ticks since
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
remaining = the_timer->initial -
46e2a: 9484 subl %d4,%d2 <== NOT EXECUTED
46e2c: 6002 bras 46e30 <alarm+0x6c> <== NOT EXECUTED
unsigned int alarm(
unsigned int seconds
)
{
unsigned int remaining = 0;
46e2e: 4282 clrl %d2 <== NOT EXECUTED
remaining = the_timer->initial -
((the_timer->stop_time - the_timer->start_time) / TOD_TICKS_PER_SECOND);
}
}
if ( seconds )
46e30: 4a83 tstl %d3 <== NOT EXECUTED
46e32: 671a beqs 46e4e <alarm+0x8a> <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
46e34: 4879 0006 1ee0 pea 61ee0 <_POSIX_signals_Alarm_timer> <== NOT EXECUTED
46e3a: 4879 0006 2244 pea 62244 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46e40: 23c3 0006 1eec movel %d3,61eec <_POSIX_signals_Alarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
46e46: 4eb9 0004 b458 jsr 4b458 <_Watchdog_Insert> <== NOT EXECUTED
46e4c: 508f addql #8,%sp <== NOT EXECUTED
_Watchdog_Insert_seconds( the_timer, seconds );
return remaining;
}
46e4e: 2002 movel %d2,%d0 <== NOT EXECUTED
46e50: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED
46e56: 4e5e unlk %fp <== NOT EXECUTED
...
0004241c <calloc>:
void *calloc(
size_t nelem,
size_t elsize
)
{
4241c: 4e56 0000 linkw %fp,#0
register char *cptr;
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
42420: 41ee 0008 lea %fp@(8),%a0
)
{
register char *cptr;
size_t length;
MSBUMP(calloc_calls, 1);
42424: 52b9 0005 d9e0 addql #1,5d9e0 <rtems_malloc_statistics+0x14>
void *calloc(
size_t nelem,
size_t elsize
)
{
4242a: 2f03 movel %d3,%sp@-
register char *cptr;
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
4242c: 262e 000c movel %fp@(12),%d3
42430: 4c10 3800 mulsl %a0@,%d3
void *calloc(
size_t nelem,
size_t elsize
)
{
42434: 2f02 movel %d2,%sp@-
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
cptr = malloc( length );
42436: 2f03 movel %d3,%sp@-
42438: 4eb9 0004 2a9c jsr 42a9c <malloc>
if ( cptr )
4243e: 588f addql #4,%sp
size_t length;
MSBUMP(calloc_calls, 1);
length = nelem * elsize;
cptr = malloc( length );
42440: 2400 movel %d0,%d2
if ( cptr )
42442: 6710 beqs 42454 <calloc+0x38> <== NEVER TAKEN
memset( cptr, '\0', length );
42444: 2f03 movel %d3,%sp@-
42446: 42a7 clrl %sp@-
42448: 2f00 movel %d0,%sp@-
4244a: 4eb9 0004 d268 jsr 4d268 <memset>
42450: 4fef 000c lea %sp@(12),%sp
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
return cptr;
}
42454: 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 */
42456: 53b9 0005 d9d0 subql #1,5d9d0 <rtems_malloc_statistics+0x4>
return cptr;
}
4245c: 242e fff8 movel %fp@(-8),%d2
42460: 262e fffc movel %fp@(-4),%d3
42464: 4e5e unlk %fp <== NOT EXECUTED
000437f8 <cfgetispeed>:
speed_t cfgetispeed(
const struct termios *tp
)
{
return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD;
437f8: 4280 clrl %d0 <== NOT EXECUTED
#include <termios.h>
speed_t cfgetispeed(
const struct termios *tp
)
{
437fa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD;
437fe: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
}
43802: 4e5e unlk %fp <== NOT EXECUTED
speed_t cfgetispeed(
const struct termios *tp
)
{
return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD;
43804: 3028 0008 movew %a0@(8),%d0 <== NOT EXECUTED
}
43808: 0280 0000 100f andil #4111,%d0 <== NOT EXECUTED
00043810 <cfgetospeed>:
#include <termios.h>
speed_t cfgetospeed(
const struct termios *tp
)
{
43810: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return tp->c_cflag & CBAUD;
}
43814: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
43818: 4e5e unlk %fp <== NOT EXECUTED
4381a: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
4381e: 0280 0000 100f andil #4111,%d0 <== NOT EXECUTED
...
00043828 <cfsetispeed>:
int cfsetispeed(
struct termios *tp,
speed_t speed
)
{
43828: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4382c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( speed & ~CBAUD )
43830: 2200 movel %d0,%d1 <== NOT EXECUTED
43832: 0281 ffff eff0 andil #-4112,%d1 <== NOT EXECUTED
int cfsetispeed(
struct termios *tp,
speed_t speed
)
{
43838: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( speed & ~CBAUD )
4383c: 6710 beqs 4384e <cfsetispeed+0x26> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4383e: 4eb9 0004 e100 jsr 4e100 <__errno> <== NOT EXECUTED
43844: 2040 moveal %d0,%a0 <== NOT EXECUTED
43846: 7016 moveq #22,%d0 <== NOT EXECUTED
43848: 2080 movel %d0,%a0@ <== NOT EXECUTED
4384a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4384c: 6016 bras 43864 <cfsetispeed+0x3c> <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));
4384e: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
43852: 4840 swap %d0 <== NOT EXECUTED
43854: 4240 clrw %d0 <== NOT EXECUTED
43856: 0281 eff0 ffff andil #-269418497,%d1 <== NOT EXECUTED
4385c: 8081 orl %d1,%d0 <== NOT EXECUTED
4385e: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
return 0;
43862: 4280 clrl %d0 <== NOT EXECUTED
}
43864: 4e5e unlk %fp <== NOT EXECUTED
00043868 <cfsetospeed>:
int cfsetospeed(
struct termios *tp,
speed_t speed
)
{
43868: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4386c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( speed & ~CBAUD )
43870: 2200 movel %d0,%d1 <== NOT EXECUTED
43872: 0281 ffff eff0 andil #-4112,%d1 <== NOT EXECUTED
int cfsetospeed(
struct termios *tp,
speed_t speed
)
{
43878: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( speed & ~CBAUD )
4387c: 6710 beqs 4388e <cfsetospeed+0x26> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4387e: 4eb9 0004 e100 jsr 4e100 <__errno> <== NOT EXECUTED
43884: 2040 moveal %d0,%a0 <== NOT EXECUTED
43886: 7016 moveq #22,%d0 <== NOT EXECUTED
43888: 2080 movel %d0,%a0@ <== NOT EXECUTED
4388a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4388c: 6012 bras 438a0 <cfsetospeed+0x38> <== NOT EXECUTED
tp->c_cflag = (tp->c_cflag & ~CBAUD) | speed;
4388e: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
43892: 0281 ffff eff0 andil #-4112,%d1 <== NOT EXECUTED
43898: 8081 orl %d1,%d0 <== NOT EXECUTED
4389a: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
return 0;
4389e: 4280 clrl %d0 <== NOT EXECUTED
}
438a0: 4e5e unlk %fp <== NOT EXECUTED
0004a0c0 <chdir>:
#include <rtems/seterr.h>
int chdir(
const char *pathname
)
{
4a0c0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4a0c4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a0c6: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4a0ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if ( !pathname )
4a0cc: 4a83 tstl %d3 <== NOT EXECUTED
4a0ce: 6610 bnes 4a0e0 <chdir+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
4a0d0: 4eb9 0004 d0f8 jsr 4d0f8 <__errno> <== NOT EXECUTED
4a0d6: 740e moveq #14,%d2 <== NOT EXECUTED
4a0d8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a0da: 2082 movel %d2,%a0@ <== NOT EXECUTED
4a0dc: 6000 0086 braw 4a164 <chdir+0xa4> <== NOT EXECUTED
/*
* Get the node where we wish to go.
*/
result = rtems_filesystem_evaluate_path(
4a0e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a0e2: 240e movel %fp,%d2 <== NOT EXECUTED
4a0e4: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
4a0ea: 4eb9 0004 e49c jsr 4e49c <strlen> <== NOT EXECUTED
4a0f0: 7201 moveq #1,%d1 <== NOT EXECUTED
4a0f2: 2e81 movel %d1,%sp@ <== NOT EXECUTED
4a0f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a0f6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4a0fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a0fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a0fe: 4eb9 0004 2b18 jsr 42b18 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
pathname, strlen( pathname ), RTEMS_LIBIO_PERMS_SEARCH, &loc, true );
if ( result != 0 )
4a104: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4a108: 4a80 tstl %d0 <== NOT EXECUTED
4a10a: 6658 bnes 4a164 <chdir+0xa4> <== NOT EXECUTED
return -1;
/*
* Verify you can change directory into this node.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
4a10c: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
4a110: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a112: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4a116: 4e90 jsr %a0@ <== NOT EXECUTED
4a118: 588f addql #4,%sp <== NOT EXECUTED
4a11a: 41f9 0004 2be4 lea 42be4 <rtems_filesystem_freenode>,%a0 <== NOT EXECUTED
4a120: 7201 moveq #1,%d1 <== NOT EXECUTED
4a122: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a124: 6714 beqs 4a13a <chdir+0x7a> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4a126: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a128: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
4a12a: 4eb9 0004 d0f8 jsr 4d0f8 <__errno> <== NOT EXECUTED
4a130: 588f addql #4,%sp <== NOT EXECUTED
4a132: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a134: 7014 moveq #20,%d0 <== NOT EXECUTED
4a136: 2080 movel %d0,%a0@ <== NOT EXECUTED
4a138: 602a bras 4a164 <chdir+0xa4> <== NOT EXECUTED
}
rtems_filesystem_freenode( &rtems_filesystem_current );
4a13a: 2039 0005 cbc8 movel 5cbc8 <rtems_current_user_env>,%d0 <== NOT EXECUTED
4a140: 5880 addql #4,%d0 <== NOT EXECUTED
4a142: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a144: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_current = loc;
4a146: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
4a14a: 2239 0005 cbc8 movel 5cbc8 <rtems_current_user_env>,%d1 <== NOT EXECUTED
4a150: 5881 addql #4,%d1 <== NOT EXECUTED
4a152: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a154: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4a156: 4eb9 0004 d9a4 jsr 4d9a4 <memcpy> <== NOT EXECUTED
return 0;
4a15c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4a160: 4280 clrl %d0 <== NOT EXECUTED
4a162: 6002 bras 4a166 <chdir+0xa6> <== 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;
4a164: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &rtems_filesystem_current );
rtems_filesystem_current = loc;
return 0;
}
4a166: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
4a16a: 262e ffe8 movel %fp@(-24),%d3 <== NOT EXECUTED
4a16e: 4e5e unlk %fp <== NOT EXECUTED
...
00043b94 <chmod>:
int chmod(
const char *path,
mode_t mode
)
{
43b94: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
43b98: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43b9a: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
43b9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
rtems_filesystem_location_info_t loc;
int result;
status = rtems_filesystem_evaluate_path( path, strlen( path ), 0, &loc, true );
43ba0: 240e movel %fp,%d2 <== NOT EXECUTED
43ba2: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
43ba8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43baa: 4eb9 0005 0600 jsr 50600 <strlen> <== NOT EXECUTED
43bb0: 7201 moveq #1,%d1 <== NOT EXECUTED
43bb2: 2e81 movel %d1,%sp@ <== NOT EXECUTED
43bb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43bb6: 42a7 clrl %sp@- <== NOT EXECUTED
43bb8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43bba: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43bbc: 4eb9 0004 3f04 jsr 43f04 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
if ( status != 0 )
43bc2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43bc6: 4a80 tstl %d0 <== NOT EXECUTED
43bc8: 6626 bnes 43bf0 <chmod+0x5c> <== NOT EXECUTED
return -1;
result = (*loc.handlers->fchmod_h)( &loc, mode );
43bca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43bce: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
43bd2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43bd4: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
43bd8: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
43bda: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43bdc: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
43be0: 4eb9 0004 3fd0 jsr 43fd0 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
43be6: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
43bea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43bee: 6002 bras 43bf2 <chmod+0x5e> <== 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;
43bf0: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.handlers->fchmod_h)( &loc, mode );
rtems_filesystem_freenode( &loc );
return result;
}
43bf2: 242e ffe0 movel %fp@(-32),%d2 <== NOT EXECUTED
43bf6: 262e ffe4 movel %fp@(-28),%d3 <== NOT EXECUTED
43bfa: 4e5e unlk %fp <== NOT EXECUTED
...
00043c74 <chown>:
const char *path,
uid_t owner,
gid_t group
)
{
return _chown_helper( path, owner, group, true );
43c74: 4280 clrl %d0 <== NOT EXECUTED
int chown(
const char *path,
uid_t owner,
gid_t group
)
{
43c76: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _chown_helper( path, owner, group, true );
43c7a: 302e 0012 movew %fp@(18),%d0 <== NOT EXECUTED
43c7e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43c82: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c84: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
43c88: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c8a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
43c8e: 4eb9 0004 3c00 jsr 43c00 <_chown_helper> <== NOT EXECUTED
}
43c94: 4e5e unlk %fp <== NOT EXECUTED
00042768 <chroot>:
#include <rtems/seterr.h>
int chroot(
const char *pathname
)
{
42768: 4e56 ffe0 linkw %fp,#-32 <== 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) {
4276c: 203c 0005 e204 movel #385540,%d0 <== NOT EXECUTED
#include <rtems/seterr.h>
int chroot(
const char *pathname
)
{
42772: 48d7 0c04 moveml %d2/%a2-%a3,%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) {
42776: b0b9 0005 cbc8 cmpl 5cbc8 <rtems_current_user_env>,%d0 <== NOT EXECUTED
4277c: 6624 bnes 427a2 <chroot+0x3a> <== NOT EXECUTED
rtems_libio_set_private_env(); /* try to set a new private env*/
4277e: 4eb9 0004 3b4c jsr 43b4c <rtems_libio_set_private_env> <== NOT EXECUTED
if (rtems_current_user_env == &rtems_global_user_env) /* not ok */
42784: 41f9 0005 e204 lea 5e204 <rtems_global_user_env>,%a0 <== NOT EXECUTED
4278a: b1f9 0005 cbc8 cmpal 5cbc8 <rtems_current_user_env>,%a0 <== NOT EXECUTED
42790: 6610 bnes 427a2 <chroot+0x3a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTSUP );
42792: 4eb9 0004 d0f8 jsr 4d0f8 <__errno> <== NOT EXECUTED
42798: 2040 moveal %d0,%a0 <== NOT EXECUTED
4279a: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
427a0: 6020 bras 427c2 <chroot+0x5a> <== NOT EXECUTED
}
result = chdir(pathname);
427a2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
427a6: 4eb9 0004 a0c0 jsr 4a0c0 <chdir> <== NOT EXECUTED
if (result) {
427ac: 588f addql #4,%sp <== NOT EXECUTED
427ae: 4a80 tstl %d0 <== NOT EXECUTED
427b0: 6714 beqs 427c6 <chroot+0x5e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( errno );
427b2: 45f9 0004 d0f8 lea 4d0f8 <__errno>,%a2 <== NOT EXECUTED
427b8: 4e92 jsr %a2@ <== NOT EXECUTED
427ba: 2640 moveal %d0,%a3 <== NOT EXECUTED
427bc: 4e92 jsr %a2@ <== NOT EXECUTED
427be: 2040 moveal %d0,%a0 <== NOT EXECUTED
427c0: 2690 movel %a0@,%a3@ <== NOT EXECUTED
427c2: 70ff moveq #-1,%d0 <== NOT EXECUTED
427c4: 6056 bras 4281c <chroot+0xb4> <== NOT EXECUTED
}
/* clone the new root location */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
427c6: 42a7 clrl %sp@- <== NOT EXECUTED
427c8: 240e movel %fp,%d2 <== NOT EXECUTED
427ca: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
427d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
427d2: 42a7 clrl %sp@- <== NOT EXECUTED
427d4: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
427d8: 4879 0005 bd8c pea 5bd8c <dotdotname+0x4> <== NOT EXECUTED
427de: 4eb9 0004 2b18 jsr 42b18 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
427e4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
427e8: 4a80 tstl %d0 <== NOT EXECUTED
427ea: 66c6 bnes 427b2 <chroot+0x4a> <== 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);
427ec: 2079 0005 cbc8 moveal 5cbc8 <rtems_current_user_env>,%a0 <== NOT EXECUTED
427f2: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
427f6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
427f8: 4eb9 0004 2be4 jsr 42be4 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_root = loc;
427fe: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
42802: 2079 0005 cbc8 moveal 5cbc8 <rtems_current_user_env>,%a0 <== NOT EXECUTED
42808: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
4280c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4280e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42810: 4eb9 0004 d9a4 jsr 4d9a4 <memcpy> <== NOT EXECUTED
return 0;
42816: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4281a: 4280 clrl %d0 <== NOT EXECUTED
}
4281c: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED
42822: 4e5e unlk %fp <== NOT EXECUTED
...
00045408 <clock_getcpuclockid>:
int clock_getcpuclockid(
pid_t pid,
clockid_t *clock_id
)
{
45408: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4540c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
45412: 4e5e unlk %fp <== NOT EXECUTED
int clock_getcpuclockid(
pid_t pid,
clockid_t *clock_id
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
45414: 2040 moveal %d0,%a0 <== NOT EXECUTED
45416: 7058 moveq #88,%d0 <== NOT EXECUTED
45418: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4541a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00045420 <clock_getenable_attr>:
int clock_getenable_attr(
clockid_t clock_id,
int *attr
)
{
45420: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
45424: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
4542a: 4e5e unlk %fp <== NOT EXECUTED
int clock_getenable_attr(
clockid_t clock_id,
int *attr
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4542c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4542e: 7058 moveq #88,%d0 <== NOT EXECUTED
45430: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
45432: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004591c <clock_getres>:
int clock_getres(
clockid_t clock_id,
struct timespec *res
)
{
4591c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45920: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
45924: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45926: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !res )
45928: 4a88 tstl %a0 <== NOT EXECUTED
4592a: 6732 beqs 4595e <clock_getres+0x42> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
switch ( clock_id ) {
4592c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45930: 7202 moveq #2,%d1 <== NOT EXECUTED
45932: 5380 subql #1,%d0 <== NOT EXECUTED
45934: b280 cmpl %d0,%d1 <== NOT EXECUTED
45936: 6526 bcss 4595e <clock_getres+0x42> <== NOT EXECUTED
case CLOCK_REALTIME:
case CLOCK_PROCESS_CPUTIME:
case CLOCK_THREAD_CPUTIME:
if ( res ) {
res->tv_sec = rtems_configuration_get_microseconds_per_tick() /
45938: 2039 0005 e1c0 movel 5e1c0 <Configuration+0xc>,%d0 <== NOT EXECUTED
4593e: 2400 movel %d0,%d2 <== NOT EXECUTED
45940: 263c 000f 4240 movel #1000000,%d3 <== NOT EXECUTED
45946: 4c43 2002 remul %d3,%d2,%d2 <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND;
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
4594a: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
45950: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
}
return 0;
45954: 4280 clrl %d0 <== NOT EXECUTED
case CLOCK_REALTIME:
case CLOCK_PROCESS_CPUTIME:
case CLOCK_THREAD_CPUTIME:
if ( res ) {
res->tv_sec = rtems_configuration_get_microseconds_per_tick() /
45956: 2082 movel %d2,%a0@ <== NOT EXECUTED
TOD_MICROSECONDS_PER_SECOND;
res->tv_nsec = rtems_configuration_get_nanoseconds_per_tick();
45958: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
4595c: 600e bras 4596c <clock_getres+0x50> <== NOT EXECUTED
}
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4595e: 4eb9 0004 d654 jsr 4d654 <__errno> <== NOT EXECUTED
45964: 2040 moveal %d0,%a0 <== NOT EXECUTED
45966: 7016 moveq #22,%d0 <== NOT EXECUTED
45968: 2080 movel %d0,%a0@ <== NOT EXECUTED
4596a: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
return 0;
}
4596c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
45970: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
45974: 4e5e unlk %fp <== NOT EXECUTED
0004546c <clock_gettime>:
int clock_gettime(
clockid_t clock_id,
struct timespec *tp
)
{
4546c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45470: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
45474: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
45478: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !tp )
4547a: 4a80 tstl %d0 <== NOT EXECUTED
4547c: 6608 bnes 45486 <clock_gettime+0x1a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4547e: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
45484: 6042 bras 454c8 <clock_gettime+0x5c> <== NOT EXECUTED
if ( clock_id == CLOCK_REALTIME ) {
45486: 7401 moveq #1,%d2 <== NOT EXECUTED
45488: b481 cmpl %d1,%d2 <== NOT EXECUTED
4548a: 660a bnes 45496 <clock_gettime+0x2a> <== NOT EXECUTED
_TOD_Get(tp);
4548c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4548e: 4eb9 0004 70f4 jsr 470f4 <_TOD_Get> <== NOT EXECUTED
45494: 6014 bras 454aa <clock_gettime+0x3e> <== NOT EXECUTED
return 0;
}
#ifdef CLOCK_MONOTONIC
if ( clock_id == CLOCK_MONOTONIC ) {
45496: 7404 moveq #4,%d2 <== NOT EXECUTED
45498: b481 cmpl %d1,%d2 <== NOT EXECUTED
4549a: 6706 beqs 454a2 <clock_gettime+0x36> <== NOT EXECUTED
return 0;
}
#endif
#ifdef _POSIX_CPUTIME
if ( clock_id == CLOCK_PROCESS_CPUTIME ) {
4549c: 7402 moveq #2,%d2 <== NOT EXECUTED
4549e: b481 cmpl %d1,%d2 <== NOT EXECUTED
454a0: 660e bnes 454b0 <clock_gettime+0x44> <== NOT EXECUTED
_TOD_Get_uptime_as_timespec( tp );
454a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
454a4: 4eb9 0004 7158 jsr 47158 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
return 0;
454aa: 588f addql #4,%sp <== NOT EXECUTED
454ac: 4280 clrl %d0 <== NOT EXECUTED
454ae: 6020 bras 454d0 <clock_gettime+0x64> <== NOT EXECUTED
454b0: 41f9 0004 d7dc lea 4d7dc <__errno>,%a0 <== NOT EXECUTED
}
#endif
#ifdef _POSIX_THREAD_CPUTIME
if ( clock_id == CLOCK_THREAD_CPUTIME )
454b6: 7003 moveq #3,%d0 <== NOT EXECUTED
454b8: b081 cmpl %d1,%d0 <== NOT EXECUTED
454ba: 660a bnes 454c6 <clock_gettime+0x5a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
454bc: 4e90 jsr %a0@ <== NOT EXECUTED
454be: 7258 moveq #88,%d1 <== NOT EXECUTED
454c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
454c2: 2081 movel %d1,%a0@ <== NOT EXECUTED
454c4: 6008 bras 454ce <clock_gettime+0x62> <== NOT EXECUTED
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
454c6: 4e90 jsr %a0@ <== NOT EXECUTED
454c8: 2040 moveal %d0,%a0 <== NOT EXECUTED
454ca: 7016 moveq #22,%d0 <== NOT EXECUTED
454cc: 2080 movel %d0,%a0@ <== NOT EXECUTED
454ce: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
454d0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
454d4: 4e5e unlk %fp <== NOT EXECUTED
00045438 <clock_setenable_attr>:
int clock_setenable_attr(
clockid_t clock_id,
int attr
)
{
45438: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4543c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
45442: 4e5e unlk %fp <== NOT EXECUTED
int clock_setenable_attr(
clockid_t clock_id,
int attr
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
45444: 2040 moveal %d0,%a0 <== NOT EXECUTED
45446: 7058 moveq #88,%d0 <== NOT EXECUTED
45448: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4544a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
000454d8 <clock_settime>:
int clock_settime(
clockid_t clock_id,
const struct timespec *tp
)
{
454d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
454dc: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
454e0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( !tp )
454e4: 4a88 tstl %a0 <== NOT EXECUTED
454e6: 6710 beqs 454f8 <clock_settime+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( clock_id == CLOCK_REALTIME ) {
454e8: 7001 moveq #1,%d0 <== NOT EXECUTED
454ea: b081 cmpl %d1,%d0 <== NOT EXECUTED
454ec: 6634 bnes 45522 <clock_settime+0x4a> <== NOT EXECUTED
if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 )
454ee: 203c 21da e4ff movel #567993599,%d0 <== NOT EXECUTED
454f4: b090 cmpl %a0@,%d0 <== NOT EXECUTED
454f6: 6508 bcss 45500 <clock_settime+0x28> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
454f8: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
454fe: 6048 bras 45548 <clock_settime+0x70> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45500: 2039 0005 f7b8 movel 5f7b8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45506: 5280 addql #1,%d0 <== NOT EXECUTED
45508: 23c0 0005 f7b8 movel %d0,5f7b8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( tp );
4550e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
45510: 4eb9 0004 71b0 jsr 471b0 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
45516: 4eb9 0004 8526 jsr 48526 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
return 0;
4551c: 588f addql #4,%sp <== NOT EXECUTED
4551e: 4280 clrl %d0 <== NOT EXECUTED
45520: 602e bras 45550 <clock_settime+0x78> <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( tp );
_Thread_Enable_dispatch();
}
#ifdef _POSIX_CPUTIME
else if ( clock_id == CLOCK_PROCESS_CPUTIME )
45522: 7002 moveq #2,%d0 <== NOT EXECUTED
45524: b081 cmpl %d1,%d0 <== NOT EXECUTED
45526: 6608 bnes 45530 <clock_settime+0x58> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
45528: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
4552e: 600e bras 4553e <clock_settime+0x66> <== NOT EXECUTED
45530: 41f9 0004 d7dc lea 4d7dc <__errno>,%a0 <== NOT EXECUTED
#endif
#ifdef _POSIX_THREAD_CPUTIME
else if ( clock_id == CLOCK_THREAD_CPUTIME )
45536: 7003 moveq #3,%d0 <== NOT EXECUTED
45538: b081 cmpl %d1,%d0 <== NOT EXECUTED
4553a: 660a bnes 45546 <clock_settime+0x6e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4553c: 4e90 jsr %a0@ <== NOT EXECUTED
4553e: 2040 moveal %d0,%a0 <== NOT EXECUTED
45540: 7258 moveq #88,%d1 <== NOT EXECUTED
45542: 2081 movel %d1,%a0@ <== NOT EXECUTED
45544: 6008 bras 4554e <clock_settime+0x76> <== NOT EXECUTED
#endif
else
rtems_set_errno_and_return_minus_one( EINVAL );
45546: 4e90 jsr %a0@ <== NOT EXECUTED
45548: 2040 moveal %d0,%a0 <== NOT EXECUTED
4554a: 7016 moveq #22,%d0 <== NOT EXECUTED
4554c: 2080 movel %d0,%a0@ <== NOT EXECUTED
4554e: 70ff moveq #-1,%d0 <== NOT EXECUTED
return 0;
}
45550: 4e5e unlk %fp <== NOT EXECUTED
00049708 <close>:
#include <rtems/libio_.h>
int close(
int fd
)
{
49708: 4e56 fffc linkw %fp,#-4
4970c: 202e 0008 movel %fp@(8),%d0
49710: 2f0a movel %a2,%sp@-
rtems_libio_t *iop;
rtems_status_code rc;
rtems_libio_check_fd(fd);
49712: b0b9 0005 c1a4 cmpl 5c1a4 <rtems_libio_number_iops>,%d0
49718: 641c bccs 49736 <close+0x2e> <== NEVER TAKEN
iop = rtems_libio_iop(fd);
4971a: 2200 movel %d0,%d1
4971c: ed88 lsll #6,%d0
4971e: e789 lsll #3,%d1
49720: 2479 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a2
49726: 9081 subl %d1,%d0
49728: d5c0 addal %d0,%a2
rtems_libio_check_is_open(iop);
4972a: 202a 0014 movel %a2@(20),%d0
4972e: 0280 0000 0100 andil #256,%d0
49734: 6610 bnes 49746 <close+0x3e> <== ALWAYS TAKEN
49736: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4973c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4973e: 7009 moveq #9,%d0 <== NOT EXECUTED
49740: 2080 movel %d0,%a0@ <== NOT EXECUTED
49742: 70ff moveq #-1,%d0 <== NOT EXECUTED
49744: 602a bras 49770 <close+0x68> <== NOT EXECUTED
rc = RTEMS_SUCCESSFUL;
rc = (*iop->pathinfo.handlers->close_h)( iop );
49746: 206a 0020 moveal %a2@(32),%a0
4974a: 2f0a movel %a2,%sp@-
4974c: 2068 0004 moveal %a0@(4),%a0
49750: 4e90 jsr %a0@
rtems_filesystem_freenode( &iop->pathinfo );
49752: 486a 0018 pea %a2@(24)
49756: 2d40 fffc movel %d0,%fp@(-4)
4975a: 4eb9 0004 27a0 jsr 427a0 <rtems_filesystem_freenode>
rtems_libio_free( iop );
49760: 2f0a movel %a2,%sp@-
49762: 4eb9 0004 99be jsr 499be <rtems_libio_free>
return rc;
49768: 202e fffc movel %fp@(-4),%d0
4976c: 4fef 000c lea %sp@(12),%sp
}
49770: 246e fff8 moveal %fp@(-8),%a2
49774: 4e5e unlk %fp <== NOT EXECUTED
000426fc <ctermid>:
static char *ctermid_name = "/dev/console";
char *ctermid(
char *s
)
{
426fc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42700: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42702: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !s )
42706: 6712 beqs 4271a <ctermid+0x1e> <== 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 );
42708: 4879 0005 8e9c pea 58e9c <CSWTCH.55+0x100> <== NOT EXECUTED
4270e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42710: 4eb9 0004 c1a4 jsr 4c1a4 <strcpy> <== NOT EXECUTED
return s;
42716: 508f addql #8,%sp <== NOT EXECUTED
42718: 6006 bras 42720 <ctermid+0x24> <== NOT EXECUTED
char *ctermid(
char *s
)
{
if ( !s )
return ctermid_name;
4271a: 243c 0005 8e9c movel #364188,%d2 <== 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;
}
42720: 2002 movel %d2,%d0 <== NOT EXECUTED
42722: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42726: 4e5e unlk %fp <== NOT EXECUTED
...
00041f90 <devFS_Show>:
#include <rtems/seterr.h>
#include "devfs.h"
int devFS_Show(void)
{
41f90: 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;
41f94: 2079 0005 9e00 moveal 59e00 <rtems_current_user_env>,%a0 <== NOT EXECUTED
#include <rtems/seterr.h>
#include "devfs.h"
int devFS_Show(void)
{
41f9a: 48d7 0c04 moveml %d2/%a2-%a3,%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;
41f9e: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
if (!device_name_table)
41fa2: 4a8a tstl %a2 <== NOT EXECUTED
41fa4: 670a beqs 41fb0 <devFS_Show+0x20> <== NOT EXECUTED
41fa6: 4282 clrl %d2 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
for (i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name){
printk("/%s %d %d\n", device_name_table[i].device_name,
41fa8: 47f9 0004 30bc lea 430bc <printk>,%a3 <== NOT EXECUTED
41fae: 6030 bras 41fe0 <devFS_Show+0x50> <== 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 );
41fb0: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
41fb6: 2040 moveal %d0,%a0 <== NOT EXECUTED
41fb8: 700e moveq #14,%d0 <== NOT EXECUTED
41fba: 2080 movel %d0,%a0@ <== NOT EXECUTED
41fbc: 70ff moveq #-1,%d0 <== NOT EXECUTED
41fbe: 602a bras 41fea <devFS_Show+0x5a> <== NOT EXECUTED
for (i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name){
41fc0: 2012 movel %a2@,%d0 <== NOT EXECUTED
41fc2: 6716 beqs 41fda <devFS_Show+0x4a> <== NOT EXECUTED
printk("/%s %d %d\n", device_name_table[i].device_name,
41fc4: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
41fc8: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
41fcc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
41fce: 4879 0005 8866 pea 58866 <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
41fd4: 4e93 jsr %a3@ <== NOT EXECUTED
41fd6: 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++){
41fda: 5282 addql #1,%d2 <== NOT EXECUTED
41fdc: 45ea 0014 lea %a2@(20),%a2 <== NOT EXECUTED
41fe0: b4b9 0005 9b68 cmpl 59b68 <rtems_device_table_size>,%d2 <== NOT EXECUTED
41fe6: 65d8 bcss 41fc0 <devFS_Show+0x30> <== 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;
41fe8: 4280 clrl %d0 <== NOT EXECUTED
}
41fea: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
41ff0: 4e5e unlk %fp <== NOT EXECUTED
000486d0 <devFS_close>:
#include "devfs.h"
int devFS_close(
rtems_libio_t *iop
)
{
486d0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
486d4: 226e 0008 moveal %fp@(8),%a1 <== 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;
486d8: 2069 0018 moveal %a1@(24),%a0 <== NOT EXECUTED
args.iop = iop;
args.flags = 0;
args.mode = 0;
status = rtems_io_close(
486dc: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
486e0: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
486e4: 2f28 0008 movel %a0@(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;
486e8: 2d49 fff4 movel %a1,%fp@(-12) <== NOT EXECUTED
args.flags = 0;
486ec: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
args.mode = 0;
486f0: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_close(
486f4: 4eb9 0004 9d18 jsr 49d18 <rtems_io_close> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
return rtems_deviceio_errno(status);
486fa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
486fc: 4eb9 0004 87cc jsr 487cc <rtems_deviceio_errno> <== NOT EXECUTED
}
48702: 4e5e unlk %fp <== NOT EXECUTED
...
00048708 <devFS_evaluate_path>:
{
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
48708: 70f8 moveq #-8,%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
4870a: 4e56 ffe4 linkw %fp,#-28
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
4870e: c0ae 0010 andl %fp@(16),%d0
const char *pathname,
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc
)
{
48712: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@
48716: 282e 0008 movel %fp@(8),%d4
4871a: 262e 000c movel %fp@(12),%d3
4871e: 246e 0014 moveal %fp@(20),%a2
int i;
rtems_device_name_t *device_name_table;
/* see if 'flags' is valid */
if ( !rtems_libio_is_valid_perms( flags ) )
48722: 4a80 tstl %d0
48724: 670e beqs 48734 <devFS_evaluate_path+0x2c> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EPERM );
48726: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
4872c: 7401 moveq #1,%d2 <== NOT EXECUTED
4872e: 2040 moveal %d0,%a0 <== NOT EXECUTED
48730: 2082 movel %d2,%a0@ <== NOT EXECUTED
48732: 607a bras 487ae <devFS_evaluate_path+0xa6> <== NOT EXECUTED
/* get the device name table */
device_name_table = (rtems_device_name_t *)pathloc->node_access;
48734: 2652 moveal %a2@,%a3
if (!device_name_table)
48736: 4a8b tstl %a3
48738: 670a beqs 48744 <devFS_evaluate_path+0x3c> <== NEVER TAKEN
4873a: 4282 clrl %d2
for (i = 0; i < rtems_device_table_size; i++) {
if (!device_name_table[i].device_name)
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
4873c: 4bf9 0004 c108 lea 4c108 <strncmp>,%a5
48742: 6056 bras 4879a <devFS_evaluate_path+0x92>
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 );
48744: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
4874a: 720e moveq #14,%d1 <== NOT EXECUTED
4874c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4874e: 2081 movel %d1,%a0@ <== NOT EXECUTED
48750: 605c bras 487ae <devFS_evaluate_path+0xa6> <== NOT EXECUTED
for (i = 0; i < rtems_device_table_size; i++) {
if (!device_name_table[i].device_name)
48752: 2853 moveal %a3@,%a4
48754: 4a8c tstl %a4
48756: 673c beqs 48794 <devFS_evaluate_path+0x8c>
continue;
if (strncmp(pathname, device_name_table[i].device_name, pathnamelen) != 0)
48758: 2f03 movel %d3,%sp@-
4875a: 2f0c movel %a4,%sp@-
4875c: 2f04 movel %d4,%sp@-
4875e: 4e95 jsr %a5@
48760: 4fef 000c lea %sp@(12),%sp
48764: 4a80 tstl %d0
48766: 662c bnes 48794 <devFS_evaluate_path+0x8c>
continue;
if (device_name_table[i].device_name[pathnamelen] != '\0')
48768: 4a34 3800 tstb %a4@(00000000,%d3:l)
4876c: 6626 bnes 48794 <devFS_evaluate_path+0x8c> <== NEVER TAKEN
continue;
/* find the device, set proper values */
pathloc->node_access = (void *)&device_name_table[i];
pathloc->handlers = &devFS_file_handlers;
pathloc->ops = &devFS_ops;
4876e: 41f9 0005 9c64 lea 59c64 <devFS_ops>,%a0
48774: 2548 000c movel %a0,%a2@(12)
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
48778: 2079 0005 9e00 moveal 59e00 <rtems_current_user_env>,%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;
4877e: 203c 0005 9cac movel #367788,%d0
pathloc->ops = &devFS_ops;
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
48784: 2568 0028 0010 movel %a0@(40),%a2@(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;
4878a: 2540 0008 movel %d0,%a2@(8)
pathloc->ops = &devFS_ops;
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
return 0;
4878e: 4280 clrl %d0
if (device_name_table[i].device_name[pathnamelen] != '\0')
continue;
/* find the device, set proper values */
pathloc->node_access = (void *)&device_name_table[i];
48790: 248b movel %a3,%a2@
pathloc->handlers = &devFS_file_handlers;
pathloc->ops = &devFS_ops;
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
return 0;
48792: 601c bras 487b0 <devFS_evaluate_path+0xa8>
/* 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++) {
48794: 5282 addql #1,%d2
48796: 47eb 0014 lea %a3@(20),%a3
4879a: b4b9 0005 9b68 cmpl 59b68 <rtems_device_table_size>,%d2
487a0: 65b0 bcss 48752 <devFS_evaluate_path+0x4a>
pathloc->mt_entry = rtems_filesystem_root.mt_entry;
return 0;
}
/* no such file or directory */
rtems_set_errno_and_return_minus_one( ENOENT );
487a2: 4eb9 0004 adc8 jsr 4adc8 <__errno>
487a8: 2040 moveal %d0,%a0
487aa: 7002 moveq #2,%d0
487ac: 2080 movel %d0,%a0@
487ae: 70ff moveq #-1,%d0
}
487b0: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5
487b6: 4e5e unlk %fp <== NOT EXECUTED
00041df0 <devFS_initialize>:
int devFS_initialize(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const void *data
)
{
41df0: 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(
41df4: 2039 0005 9b68 movel 59b68 <rtems_device_table_size>,%d0
41dfa: 2200 movel %d0,%d1
int devFS_initialize(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const void *data
)
{
41dfc: 2f0a movel %a2,%sp@-
41dfe: 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(
41e02: e989 lsll #4,%d1
int devFS_initialize(
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
const void *data
)
{
41e04: 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(
41e06: 2041 moveal %d1,%a0
41e08: 4870 0c00 pea %a0@(00000000,%d0:l:4)
41e0c: 4eb9 0004 831c jsr 4831c <_Workspace_Allocate>
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
41e12: 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(
41e14: 2400 movel %d0,%d2
sizeof( rtems_device_name_t ) * ( rtems_device_table_size )
);
/* no memory for device filesystem */
if (!device_name_table)
41e16: 6610 bnes 41e28 <devFS_initialize+0x38> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( ENOMEM );
41e18: 4eb9 0004 adc8 jsr 4adc8 <__errno>
41e1e: 2040 moveal %d0,%a0 <== NOT EXECUTED
41e20: 700c moveq #12,%d0 <== NOT EXECUTED
41e22: 2080 movel %d0,%a0@ <== NOT EXECUTED
41e24: 70ff moveq #-1,%d0 <== NOT EXECUTED
41e26: 6038 bras 41e60 <devFS_initialize+0x70> <== NOT EXECUTED
memset(
41e28: 2039 0005 9b68 movel 59b68 <rtems_device_table_size>,%d0
41e2e: 2200 movel %d0,%d1
41e30: e989 lsll #4,%d1
41e32: 2041 moveal %d1,%a0
41e34: 4870 0c00 pea %a0@(00000000,%d0:l:4)
41e38: 42a7 clrl %sp@-
41e3a: 2f02 movel %d2,%sp@-
41e3c: 4eb9 0004 b6e4 jsr 4b6e4 <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;
41e42: 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;
41e46: 203c 0005 9cac movel #367788,%d0
temp_mt_entry->mt_fs_root.ops = &devFS_ops;
41e4c: 41f9 0005 9c64 lea 59c64 <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;
41e52: 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;
41e56: 4280 clrl %d0
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;
41e58: 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;
41e5c: 2542 001c movel %d2,%a2@(28)
return 0;
}
41e60: 242e fff8 movel %fp@(-8),%d2
41e64: 246e fffc moveal %fp@(-4),%a2
41e68: 4e5e unlk %fp <== NOT EXECUTED
00041ff4 <devFS_ioctl>:
int devFS_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
41ff4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
41ff8: 226e 0008 moveal %fp@(8),%a1 <== 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;
41ffc: 2069 0018 moveal %a1@(24),%a0 <== NOT EXECUTED
args.iop = iop;
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
42000: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
42004: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.command = command;
42008: 2d6e 000c fff4 movel %fp@(12),%fp@(-12) <== NOT EXECUTED
args.buffer = buffer;
status = rtems_io_control(
4200e: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.command = command;
args.buffer = buffer;
42012: 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;
42018: 2d49 fff0 movel %a1,%fp@(-16) <== NOT EXECUTED
args.command = command;
args.buffer = buffer;
status = rtems_io_control(
4201c: 4eb9 0004 58d8 jsr 458d8 <rtems_io_control> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
if ( status )
42022: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
42026: 4a80 tstl %d0 <== NOT EXECUTED
42028: 670c beqs 42036 <devFS_ioctl+0x42> <== NOT EXECUTED
return rtems_deviceio_errno(status);
4202a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4202c: 4eb9 0004 87cc jsr 487cc <rtems_deviceio_errno> <== NOT EXECUTED
42032: 588f addql #4,%sp <== NOT EXECUTED
42034: 6004 bras 4203a <devFS_ioctl+0x46> <== NOT EXECUTED
return args.ioctl_return;
42036: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4203a: 4e5e unlk %fp <== NOT EXECUTED
...
00041e6c <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') &&
41e6c: 7264 moveq #100,%d1
const char *path,
mode_t mode,
dev_t dev,
rtems_filesystem_location_info_t *pathloc
)
{
41e6e: 4e56 ffdc linkw %fp,#-36
41e72: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
41e76: 246e 0008 moveal %fp@(8),%a2
* 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') &&
41e7a: 1012 moveb %a2@,%d0
const char *path,
mode_t mode,
dev_t dev,
rtems_filesystem_location_info_t *pathloc
)
{
41e7c: 282e 000c movel %fp@(12),%d4
* 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') &&
41e80: 49c0 extbl %d0
const char *path,
mode_t mode,
dev_t dev,
rtems_filesystem_location_info_t *pathloc
)
{
41e82: 2c2e 0010 movel %fp@(16),%d6
41e86: 2a2e 0014 movel %fp@(20),%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') &&
41e8a: b280 cmpl %d0,%d1
41e8c: 6624 bnes 41eb2 <devFS_mknod+0x46> <== NEVER TAKEN
41e8e: 123c 0065 moveb #101,%d1
41e92: 102a 0001 moveb %a2@(1),%d0
41e96: 49c0 extbl %d0
41e98: b280 cmpl %d0,%d1
41e9a: 6616 bnes 41eb2 <devFS_mknod+0x46> <== NEVER TAKEN
41e9c: 123c 0076 moveb #118,%d1
41ea0: 102a 0002 moveb %a2@(2),%d0
41ea4: 49c0 extbl %d0
41ea6: b280 cmpl %d0,%d1
41ea8: 6608 bnes 41eb2 <devFS_mknod+0x46> <== NEVER TAKEN
(path[2] == 'v') && (path[3] == '\0'))
41eaa: 4a2a 0003 tstb %a2@(3)
41eae: 6700 00c8 beqw 41f78 <devFS_mknod+0x10c>
return 0;
/* must be a character device or a block device */
if (!S_ISBLK(mode) && !S_ISCHR(mode))
41eb2: 2004 movel %d4,%d0
41eb4: 0280 0000 f000 andil #61440,%d0
41eba: 0c80 0000 6000 cmpil #24576,%d0
41ec0: 6716 beqs 41ed8 <devFS_mknod+0x6c> <== NEVER TAKEN
41ec2: 0c80 0000 2000 cmpil #8192,%d0
41ec8: 670e beqs 41ed8 <devFS_mknod+0x6c> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
41eca: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
41ed0: 7616 moveq #22,%d3 <== NOT EXECUTED
41ed2: 2040 moveal %d0,%a0 <== NOT EXECUTED
41ed4: 2083 movel %d3,%a0@ <== NOT EXECUTED
41ed6: 6066 bras 41f3e <devFS_mknod+0xd2> <== NOT EXECUTED
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;
41ed8: 206e 0018 moveal %fp@(24),%a0
41edc: 2650 moveal %a0@,%a3
if (!device_name_table)
41ede: 4a8b tstl %a3
41ee0: 670e beqs 41ef0 <devFS_mknod+0x84> <== NEVER TAKEN
41ee2: 284b moveal %a3,%a4
41ee4: 74ff moveq #-1,%d2
41ee6: 4283 clrl %d3
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name == NULL)
slot = i;
else
if (strcmp(path, device_name_table[i].device_name) == 0)
41ee8: 4bf9 0004 bc14 lea 4bc14 <strcmp>,%a5
41eee: 6034 bras 41f24 <devFS_mknod+0xb8>
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 );
41ef0: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
41ef6: 740e moveq #14,%d2 <== NOT EXECUTED
41ef8: 2240 moveal %d0,%a1 <== NOT EXECUTED
41efa: 2282 movel %d2,%a1@ <== NOT EXECUTED
41efc: 6040 bras 41f3e <devFS_mknod+0xd2> <== NOT EXECUTED
for (slot = -1, i = 0; i < rtems_device_table_size; i++){
if (device_name_table[i].device_name == NULL)
41efe: 2014 movel %a4@,%d0
41f00: 671a beqs 41f1c <devFS_mknod+0xb0>
slot = i;
else
if (strcmp(path, device_name_table[i].device_name) == 0)
41f02: 2f00 movel %d0,%sp@-
41f04: 2f0a movel %a2,%sp@-
41f06: 4e95 jsr %a5@
41f08: 508f addql #8,%sp
41f0a: 4a80 tstl %d0
41f0c: 6610 bnes 41f1e <devFS_mknod+0xb2> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EEXIST );
41f0e: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
41f14: 7211 moveq #17,%d1 <== NOT EXECUTED
41f16: 2040 moveal %d0,%a0 <== NOT EXECUTED
41f18: 2081 movel %d1,%a0@ <== NOT EXECUTED
41f1a: 6022 bras 41f3e <devFS_mknod+0xd2> <== NOT EXECUTED
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)
slot = i;
41f1c: 2403 movel %d3,%d2
/* 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++){
41f1e: 5283 addql #1,%d3
41f20: 49ec 0014 lea %a4@(20),%a4
41f24: b6b9 0005 9b68 cmpl 59b68 <rtems_device_table_size>,%d3
41f2a: 65d2 bcss 41efe <devFS_mknod+0x92>
else
if (strcmp(path, device_name_table[i].device_name) == 0)
rtems_set_errno_and_return_minus_one( EEXIST );
}
if (slot == -1)
41f2c: 70ff moveq #-1,%d0
41f2e: b082 cmpl %d2,%d0
41f30: 6610 bnes 41f42 <devFS_mknod+0xd6> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( ENOMEM );
41f32: 4eb9 0004 adc8 jsr 4adc8 <__errno> <== NOT EXECUTED
41f38: 2040 moveal %d0,%a0 <== NOT EXECUTED
41f3a: 700c moveq #12,%d0 <== NOT EXECUTED
41f3c: 2080 movel %d0,%a0@ <== NOT EXECUTED
41f3e: 70ff moveq #-1,%d0 <== NOT EXECUTED
41f40: 6038 bras 41f7a <devFS_mknod+0x10e> <== NOT EXECUTED
_ISR_Disable(level);
41f42: 203c 0000 0700 movel #1792,%d0
41f48: 40c3 movew %sr,%d3
41f4a: 8083 orl %d3,%d0
41f4c: 46c0 movew %d0,%sr
device_name_table[slot].device_name = (char *)path;
41f4e: 2002 movel %d2,%d0
41f50: e988 lsll #4,%d0
41f52: 2240 moveal %d0,%a1
41f54: 41f1 2c00 lea %a1@(00000000,%d2:l:4),%a0
41f58: d7c8 addal %a0,%a3
41f5a: 268a movel %a2,%a3@
device_name_table[slot].device_name_length = strlen(path);
41f5c: 2f0a movel %a2,%sp@-
41f5e: 4eb9 0004 c0f0 jsr 4c0f0 <strlen>
41f64: 588f addql #4,%sp
41f66: 2740 0004 movel %d0,%a3@(4)
device_name_table[slot].major = major;
41f6a: 2746 0008 movel %d6,%a3@(8)
device_name_table[slot].minor = minor;
41f6e: 2745 000c movel %d5,%a3@(12)
device_name_table[slot].mode = mode;
41f72: 2744 0010 movel %d4,%a3@(16)
_ISR_Enable(level);
41f76: 46c3 movew %d3,%sr
* indicate we are OK.
*/
if ((path[0] == 'd') && (path[1] == 'e') &&
(path[2] == 'v') && (path[3] == '\0'))
return 0;
41f78: 4280 clrl %d0
device_name_table[slot].minor = minor;
device_name_table[slot].mode = mode;
_ISR_Enable(level);
return 0;
}
41f7a: 4cee 3c7c ffdc moveml %fp@(-36),%d2-%d6/%a2-%a5
41f80: 4e5e unlk %fp <== NOT EXECUTED
0004207c <devFS_read>:
ssize_t devFS_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4207c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
42080: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
42084: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== 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;
4208a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.offset = iop->offset;
4208e: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
42092: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
42096: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
4209a: 2f29 000c movel %a1@(12),%sp@- <== NOT EXECUTED
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4209e: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
420a4: 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;
args.count = count;
420a8: 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;
420ae: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
420b2: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
420b6: 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;
420ba: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_read(
420be: 4eb9 0004 5a28 jsr 45a28 <rtems_io_read> <== NOT EXECUTED
np->major,
np->minor,
(void *) &args
);
if ( status )
420c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
420c8: 4a80 tstl %d0 <== NOT EXECUTED
420ca: 670c beqs 420d8 <devFS_read+0x5c> <== NOT EXECUTED
return rtems_deviceio_errno(status);
420cc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
420ce: 4eb9 0004 87cc jsr 487cc <rtems_deviceio_errno> <== NOT EXECUTED
420d4: 588f addql #4,%sp <== NOT EXECUTED
420d6: 6004 bras 420dc <devFS_read+0x60> <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
420d8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
420dc: 4e5e unlk %fp <== NOT EXECUTED
00042108 <devFS_write>:
ssize_t devFS_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
42108: 4e56 ffe4 linkw %fp,#-28
4210c: 206e 0008 moveal %fp@(8),%a0
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
42110: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
{
rtems_libio_rw_args_t args;
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
42116: 2268 0018 moveal %a0@(24),%a1
args.iop = iop;
args.offset = iop->offset;
4211a: 2028 000c movel %a0@(12),%d0
4211e: 2228 0010 movel %a0@(16),%d1
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
42122: 486e ffe4 pea %fp@(-28)
42126: 2f29 000c movel %a1@(12),%sp@-
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4212a: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
42130: 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;
args.count = count;
42134: 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;
4213a: 2d40 ffe8 movel %d0,%fp@(-24)
4213e: 2d41 ffec movel %d1,%fp@(-20)
rtems_status_code status;
rtems_device_name_t *np;
np = (rtems_device_name_t *)iop->pathinfo.node_access;
args.iop = iop;
42142: 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;
42146: 42ae fffc clrl %fp@(-4)
status = rtems_io_write(
4214a: 4eb9 0004 5a6c jsr 45a6c <rtems_io_write>
np->major,
np->minor,
(void *) &args
);
if ( status )
42150: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
42154: 4a80 tstl %d0 <== NOT EXECUTED
42156: 670c beqs 42164 <devFS_write+0x5c> <== NOT EXECUTED
return rtems_deviceio_errno(status);
42158: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4215a: 4eb9 0004 87cc jsr 487cc <rtems_deviceio_errno> <== NOT EXECUTED
42160: 588f addql #4,%sp <== NOT EXECUTED
42162: 6004 bras 42168 <devFS_write+0x60> <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
42164: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
42168: 4e5e unlk %fp <== NOT EXECUTED
0004be18 <device_ftruncate>:
rtems_libio_t *iop,
rtems_off64_t length
)
{
return 0;
}
4be18: 4280 clrl %d0 <== NOT EXECUTED
int device_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4be1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4be1e: 4e5e unlk %fp <== NOT EXECUTED
...
0004bdbe <device_ioctl>:
int device_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4bdbe: 4e56 fff0 linkw %fp,#-16
4bdc2: 206e 0008 moveal %fp@(8),%a0
rtems_libio_ioctl_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
4bdc6: 2d48 fff0 movel %a0,%fp@(-16)
args.command = command;
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
4bdca: 2068 0018 moveal %a0@(24),%a0
status = rtems_io_control(
4bdce: 486e fff0 pea %fp@(-16)
4bdd2: 2f28 0050 movel %a0@(80),%sp@-
rtems_libio_ioctl_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
4bdd6: 2d6e 000c fff4 movel %fp@(12),%fp@(-12)
args.buffer = buffer;
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4bddc: 2f28 004c movel %a0@(76),%sp@-
rtems_status_code status;
IMFS_jnode_t *the_jnode;
args.iop = iop;
args.command = command;
args.buffer = buffer;
4bde0: 2d6e 0010 fff8 movel %fp@(16),%fp@(-8)
the_jnode = iop->pathinfo.node_access;
status = rtems_io_control(
4bde6: 4eb9 0004 c63c jsr 4c63c <rtems_io_control>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4bdec: 4fef 000c lea %sp@(12),%sp
4bdf0: 4a80 tstl %d0
4bdf2: 670c beqs 4be00 <device_ioctl+0x42> <== ALWAYS TAKEN
return rtems_deviceio_errno(status);
4bdf4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bdf6: 4eb9 0004 c884 jsr 4c884 <rtems_deviceio_errno> <== NOT EXECUTED
4bdfc: 588f addql #4,%sp <== NOT EXECUTED
4bdfe: 6004 bras 4be04 <device_ioctl+0x46> <== NOT EXECUTED
return args.ioctl_return;
4be00: 202e fffc movel %fp@(-4),%d0
}
4be04: 4e5e unlk %fp <== NOT EXECUTED
0004be08 <device_lseek>:
rtems_off64_t device_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4be08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return offset;
}
4be0c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4be10: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
4be14: 4e5e unlk %fp <== NOT EXECUTED
0004bcf6 <device_read>:
ssize_t device_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4bcf6: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4bcfa: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
4bcfe: 2d68 0014 fff8 movel %a0@(20),%fp@(-8) <== NOT EXECUTED
{
rtems_libio_rw_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4bd04: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
args.iop = iop;
args.offset = iop->offset;
4bd08: 2028 000c movel %a0@(12),%d0 <== NOT EXECUTED
4bd0c: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
args.buffer = buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
4bd10: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
4bd14: 2f29 0050 movel %a1@(80),%sp@- <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
4bd18: 2d6e 000c fff0 movel %fp@(12),%fp@(-16) <== NOT EXECUTED
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_read(
4bd1e: 2f29 004c movel %a1@(76),%sp@- <== NOT EXECUTED
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = buffer;
args.count = count;
4bd22: 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;
4bd28: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
4bd2c: 2d41 ffec movel %d1,%fp@(-20) <== NOT EXECUTED
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4bd30: 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;
4bd34: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
status = rtems_io_read(
4bd38: 4eb9 0004 c6c4 jsr 4c6c4 <rtems_io_read> <== NOT EXECUTED
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4bd3e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bd42: 4a80 tstl %d0 <== NOT EXECUTED
4bd44: 670c beqs 4bd52 <device_read+0x5c> <== NOT EXECUTED
return rtems_deviceio_errno(status);
4bd46: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bd48: 4eb9 0004 c884 jsr 4c884 <rtems_deviceio_errno> <== NOT EXECUTED
4bd4e: 588f addql #4,%sp <== NOT EXECUTED
4bd50: 6004 bras 4bd56 <device_read+0x60> <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
4bd52: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4bd56: 4e5e unlk %fp <== NOT EXECUTED
0004bd5a <device_write>:
ssize_t device_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4bd5a: 4e56 ffe4 linkw %fp,#-28
4bd5e: 206e 0008 moveal %fp@(8),%a0
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
4bd62: 2d68 0014 fff8 movel %a0@(20),%fp@(-8)
{
rtems_libio_rw_args_t args;
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4bd68: 2268 0018 moveal %a0@(24),%a1
args.iop = iop;
args.offset = iop->offset;
4bd6c: 2028 000c movel %a0@(12),%d0
4bd70: 2228 0010 movel %a0@(16),%d1
args.buffer = (void *) buffer;
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
4bd74: 486e ffe4 pea %fp@(-28)
4bd78: 2f29 0050 movel %a1@(80),%sp@-
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
4bd7c: 2d6e 000c fff0 movel %fp@(12),%fp@(-16)
args.count = count;
args.flags = iop->flags;
args.bytes_moved = 0;
status = rtems_io_write(
4bd82: 2f29 004c movel %a1@(76),%sp@-
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
args.offset = iop->offset;
args.buffer = (void *) buffer;
args.count = count;
4bd86: 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;
4bd8c: 2d40 ffe8 movel %d0,%fp@(-24)
4bd90: 2d41 ffec movel %d1,%fp@(-20)
rtems_status_code status;
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
args.iop = iop;
4bd94: 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;
4bd98: 42ae fffc clrl %fp@(-4)
status = rtems_io_write(
4bd9c: 4eb9 0004 c708 jsr 4c708 <rtems_io_write>
the_jnode->info.device.major,
the_jnode->info.device.minor,
(void *) &args
);
if ( status )
4bda2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bda6: 4a80 tstl %d0 <== NOT EXECUTED
4bda8: 670c beqs 4bdb6 <device_write+0x5c> <== NOT EXECUTED
return rtems_deviceio_errno(status);
4bdaa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bdac: 4eb9 0004 c884 jsr 4c884 <rtems_deviceio_errno> <== NOT EXECUTED
4bdb2: 588f addql #4,%sp <== NOT EXECUTED
4bdb4: 6004 bras 4bdba <device_write+0x60> <== NOT EXECUTED
return (ssize_t) args.bytes_moved;
4bdb6: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
}
4bdba: 4e5e unlk %fp <== NOT EXECUTED
00043560 <drainOutput>:
/*
* Drain output queue
*/
static void
drainOutput (struct rtems_termios_tty *tty)
{
43560: 4e56 fff4 linkw %fp,#-12
43564: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
43568: 246e 0008 moveal %fp@(8),%a2
rtems_interrupt_level level;
rtems_status_code sc;
if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {
4356c: 4aaa 00b4 tstl %a2@(180)
43570: 674e beqs 435c0 <drainOutput+0x60> <== NEVER TAKEN
rtems_interrupt_disable (level);
43572: 243c 0000 0700 movel #1792,%d2
43578: 2202 movel %d2,%d1
4357a: 40c0 movew %sr,%d0
4357c: 8280 orl %d0,%d1
4357e: 46c1 movew %d1,%sr
while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {
tty->rawOutBufState = rob_wait;
rtems_interrupt_enable (level);
sc = rtems_semaphore_obtain(
43580: 47f9 0004 55f4 lea 455f4 <rtems_semaphore_obtain>,%a3
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) {
43586: 602a bras 435b2 <drainOutput+0x52>
tty->rawOutBufState = rob_wait;
43588: 7202 moveq #2,%d1 <== NOT EXECUTED
4358a: 2541 0094 movel %d1,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable (level);
4358e: 46c0 movew %d0,%sr <== NOT EXECUTED
sc = rtems_semaphore_obtain(
43590: 42a7 clrl %sp@- <== NOT EXECUTED
43592: 42a7 clrl %sp@- <== NOT EXECUTED
43594: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
43598: 4e93 jsr %a3@ <== NOT EXECUTED
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
4359a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4359e: 4a80 tstl %d0 <== NOT EXECUTED
435a0: 6708 beqs 435aa <drainOutput+0x4a> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
435a2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
435a4: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred> <== NOT EXECUTED
rtems_interrupt_disable (level);
435aa: 2202 movel %d2,%d1 <== NOT EXECUTED
435ac: 40c0 movew %sr,%d0 <== NOT EXECUTED
435ae: 8280 orl %d0,%d1 <== NOT EXECUTED
435b0: 46c1 movew %d1,%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) {
435b2: 206a 0084 moveal %a2@(132),%a0
435b6: 222a 0080 movel %a2@(128),%d1
435ba: b288 cmpl %a0,%d1
435bc: 66ca bnes 43588 <drainOutput+0x28> <== NEVER TAKEN
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);
435be: 46c0 movew %d0,%sr
}
}
435c0: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
435c6: 4e5e unlk %fp <== NOT EXECUTED
00042d8c <dup>:
#include <fcntl.h>
int dup(
int fildes
)
{
42d8c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return fcntl( fildes, F_DUPFD, 0 );
42d90: 42a7 clrl %sp@- <== NOT EXECUTED
42d92: 42a7 clrl %sp@- <== NOT EXECUTED
42d94: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42d98: 4eb9 0004 30dc jsr 430dc <fcntl> <== NOT EXECUTED
}
42d9e: 4e5e unlk %fp <== NOT EXECUTED
...
00042d34 <dup2>:
int dup2(
int fildes,
int fildes2
)
{
42d34: 4e56 ffa8 linkw %fp,#-88 <== NOT EXECUTED
42d38: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
/*
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
42d3c: 280e movel %fp,%d4 <== NOT EXECUTED
42d3e: 0684 ffff ffba addil #-70,%d4 <== NOT EXECUTED
42d44: 45f9 0004 3430 lea 43430 <fstat>,%a2 <== NOT EXECUTED
42d4a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
int dup2(
int fildes,
int fildes2
)
{
42d4c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
42d50: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* If fildes is not valid, then fildes2 should not be closed.
*/
status = fstat( fildes, &buf );
42d54: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42d56: 4e92 jsr %a2@ <== NOT EXECUTED
if ( status == -1 )
42d58: 508f addql #8,%sp <== NOT EXECUTED
42d5a: 72ff moveq #-1,%d1 <== NOT EXECUTED
42d5c: b280 cmpl %d0,%d1 <== NOT EXECUTED
42d5e: 6720 beqs 42d80 <dup2+0x4c> <== NOT EXECUTED
/*
* If fildes2 is not valid, then we should not do anything either.
*/
status = fstat( fildes2, &buf );
42d60: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42d62: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42d64: 4e92 jsr %a2@ <== NOT EXECUTED
if ( status == -1 )
42d66: 508f addql #8,%sp <== NOT EXECUTED
42d68: 72ff moveq #-1,%d1 <== NOT EXECUTED
42d6a: b280 cmpl %d0,%d1 <== NOT EXECUTED
42d6c: 6712 beqs 42d80 <dup2+0x4c> <== NOT EXECUTED
/*
* This fcntl handles everything else.
*/
return fcntl( fildes, F_DUPFD, fildes2 );
42d6e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42d70: 42a7 clrl %sp@- <== NOT EXECUTED
42d72: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42d74: 4eb9 0004 30dc jsr 430dc <fcntl> <== NOT EXECUTED
42d7a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
42d7e: 6002 bras 42d82 <dup2+0x4e> <== NOT EXECUTED
* If fildes2 is not valid, then we should not do anything either.
*/
status = fstat( fildes2, &buf );
if ( status == -1 )
return -1;
42d80: 70ff moveq #-1,%d0 <== NOT EXECUTED
/*
* This fcntl handles everything else.
*/
return fcntl( fildes, F_DUPFD, fildes2 );
}
42d82: 4cee 041c ffa8 moveml %fp@(-88),%d2-%d4/%a2 <== NOT EXECUTED
42d88: 4e5e unlk %fp <== NOT EXECUTED
00044094 <echo>:
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
44094: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
44098: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4409c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
440a0: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
440a4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
440a8: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
/*
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
440ae: 1202 moveb %d2,%d1 <== NOT EXECUTED
if ((tty->termios.c_lflag & ECHOCTL) &&
440b0: 4a80 tstl %d0 <== NOT EXECUTED
440b2: 674e beqs 44102 <echo+0x6e> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
440b4: 4280 clrl %d0 <== NOT EXECUTED
440b6: 1002 moveb %d2,%d0 <== NOT EXECUTED
440b8: 2079 0005 c484 moveal 5c484 <__ctype_ptr__>,%a0 <== NOT EXECUTED
440be: 1630 0801 moveb %a0@(00000001,%d0:l),%d3 <== NOT EXECUTED
440c2: 49c3 extbl %d3 <== NOT EXECUTED
* Echo a typed character
*/
static void
echo (unsigned char c, struct rtems_termios_tty *tty)
{
if ((tty->termios.c_lflag & ECHOCTL) &&
440c4: 0803 0005 btst #5,%d3 <== NOT EXECUTED
440c8: 6738 beqs 44102 <echo+0x6e> <== NOT EXECUTED
iscntrl(c) && (c != '\t') && (c != '\n')) {
440ca: 7609 moveq #9,%d3 <== NOT EXECUTED
440cc: b680 cmpl %d0,%d3 <== NOT EXECUTED
440ce: 6732 beqs 44102 <echo+0x6e> <== NOT EXECUTED
440d0: 163c 000a moveb #10,%d3 <== NOT EXECUTED
440d4: b680 cmpl %d0,%d3 <== NOT EXECUTED
440d6: 672a beqs 44102 <echo+0x6e> <== NOT EXECUTED
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
440d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
440da: 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;
440de: 163c 0040 moveb #64,%d3 <== NOT EXECUTED
rtems_termios_puts (echobuf, 2, tty);
440e2: 486e fffe pea %fp@(-2) <== NOT EXECUTED
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
440e6: 705e moveq #94,%d0 <== NOT EXECUTED
echobuf[1] = c ^ 0x40;
440e8: b782 eorl %d3,%d2 <== NOT EXECUTED
{
if ((tty->termios.c_lflag & ECHOCTL) &&
iscntrl(c) && (c != '\t') && (c != '\n')) {
char echobuf[2];
echobuf[0] = '^';
440ea: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
echobuf[1] = c ^ 0x40;
440ee: 1d42 ffff moveb %d2,%fp@(-1) <== NOT EXECUTED
rtems_termios_puts (echobuf, 2, tty);
440f2: 4eb9 0004 3e52 jsr 43e52 <rtems_termios_puts> <== 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')) {
440f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
char echobuf[2];
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
440fc: 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')) {
44100: 6010 bras 44112 <echo+0x7e> <== NOT EXECUTED
echobuf[0] = '^';
echobuf[1] = c ^ 0x40;
rtems_termios_puts (echobuf, 2, tty);
tty->column += 2;
} else {
oproc (c, tty);
44102: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44104: 0281 0000 00ff andil #255,%d1 <== NOT EXECUTED
4410a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4410c: 4eba fe3c jsr %pc@(43f4a <oproc>) <== NOT EXECUTED
44110: 508f addql #8,%sp <== NOT EXECUTED
}
}
44112: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
44118: 4e5e unlk %fp <== NOT EXECUTED
000435e6 <endgrent>:
void endgrent(void)
{
435e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (group_fp != NULL)
435ea: 2039 0005 eac0 movel 5eac0 <group_fp>,%d0 <== NOT EXECUTED
435f0: 670a beqs 435fc <endgrent+0x16> <== NOT EXECUTED
fclose(group_fp);
435f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
435f4: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
435fa: 588f addql #4,%sp <== NOT EXECUTED
}
435fc: 4e5e unlk %fp <== NOT EXECUTED
000434a0 <endpwent>:
void endpwent(void)
{
434a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (passwd_fp != NULL)
434a4: 2039 0005 eb9a movel 5eb9a <passwd_fp>,%d0 <== NOT EXECUTED
434aa: 670a beqs 434b6 <endpwent+0x16> <== NOT EXECUTED
fclose(passwd_fp);
434ac: 2f00 movel %d0,%sp@- <== NOT EXECUTED
434ae: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
434b4: 588f addql #4,%sp <== NOT EXECUTED
}
434b6: 4e5e unlk %fp <== NOT EXECUTED
0004411c <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)
{
4411c: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
44120: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
44124: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
44128: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
if (tty->ccount == 0)
4412c: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED
44130: 6700 0172 beqw 442a4 <erase+0x188> <== NOT EXECUTED
return;
if (lineFlag) {
44134: 4a83 tstl %d3 <== NOT EXECUTED
44136: 6700 015c beqw 44294 <erase+0x178> <== NOT EXECUTED
if (!(tty->termios.c_lflag & ECHO)) {
4413a: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
4413e: 44c0 movew %d0,%ccr <== NOT EXECUTED
44140: 6b08 bmis 4414a <erase+0x2e> <== NOT EXECUTED
tty->ccount = 0;
44142: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
return;
44146: 6000 015c braw 442a4 <erase+0x188> <== NOT EXECUTED
}
if (!(tty->termios.c_lflag & ECHOE)) {
4414a: 0800 0004 btst #4,%d0 <== NOT EXECUTED
4414e: 6600 0144 bnew 44294 <erase+0x178> <== NOT EXECUTED
tty->ccount = 0;
44152: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
echo (tty->termios.c_cc[VKILL], tty);
44156: 4280 clrl %d0 <== NOT EXECUTED
44158: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4415a: 102a 0044 moveb %a2@(68),%d0 <== NOT EXECUTED
4415e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44160: 4eba ff32 jsr %pc@(44094 <echo>) <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOK)
44164: 508f addql #8,%sp <== NOT EXECUTED
44166: 7020 moveq #32,%d0 <== NOT EXECUTED
44168: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
4416c: 6700 0136 beqw 442a4 <erase+0x188> <== NOT EXECUTED
echo ('\n', tty);
44170: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
44174: 700a moveq #10,%d0 <== NOT EXECUTED
44176: 602c bras 441a4 <erase+0x88> <== NOT EXECUTED
return;
}
}
while (tty->ccount) {
unsigned char c = tty->cbuf[--tty->ccount];
44178: 5388 subql #1,%a0 <== NOT EXECUTED
4417a: 286a 001c moveal %a2@(28),%a4 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO) {
4417e: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
return;
}
}
while (tty->ccount) {
unsigned char c = tty->cbuf[--tty->ccount];
44182: 2548 0020 movel %a0,%a2@(32) <== NOT EXECUTED
44186: 1434 8800 moveb %a4@(00000000,%a0:l),%d2 <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO) {
4418a: 44c0 movew %d0,%ccr <== NOT EXECUTED
4418c: 6a00 0100 bplw 4428e <erase+0x172> <== NOT EXECUTED
if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {
44190: 4a83 tstl %d3 <== NOT EXECUTED
44192: 6620 bnes 441b4 <erase+0x98> <== NOT EXECUTED
44194: 0800 0004 btst #4,%d0 <== NOT EXECUTED
44198: 661a bnes 441b4 <erase+0x98> <== NOT EXECUTED
echo (tty->termios.c_cc[VERASE], tty);
4419a: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
4419e: 4280 clrl %d0 <== NOT EXECUTED
441a0: 102a 0043 moveb %a2@(67),%d0 <== NOT EXECUTED
441a4: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
441a8: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
441ae: 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);
441b0: 6000 fee2 braw 44094 <echo> <== NOT EXECUTED
441b4: 2279 0005 c484 moveal 5c484 <__ctype_ptr__>,%a1 <== NOT EXECUTED
} else if (c == '\t') {
441ba: 7209 moveq #9,%d1 <== NOT EXECUTED
441bc: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
441c2: b282 cmpl %d2,%d1 <== NOT EXECUTED
441c4: 665a bnes 44220 <erase+0x104> <== NOT EXECUTED
int col = tty->read_start_column;
441c6: 242a 002c movel %a2@(44),%d2 <== NOT EXECUTED
int i = 0;
441ca: 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)
441cc: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
441d2: 6028 bras 441fc <erase+0xe0> <== NOT EXECUTED
c = tty->cbuf[i++];
if (c == '\t') {
441d4: 4284 clrl %d4 <== NOT EXECUTED
441d6: 181c moveb %a4@+,%d4 <== NOT EXECUTED
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
c = tty->cbuf[i++];
441d8: 5281 addql #1,%d1 <== NOT EXECUTED
if (c == '\t') {
441da: 7a09 moveq #9,%d5 <== NOT EXECUTED
441dc: ba84 cmpl %d4,%d5 <== NOT EXECUTED
441de: 6606 bnes 441e6 <erase+0xca> <== NOT EXECUTED
col = (col | 7) + 1;
441e0: 7807 moveq #7,%d4 <== NOT EXECUTED
441e2: 8484 orl %d4,%d2 <== NOT EXECUTED
441e4: 6014 bras 441fa <erase+0xde> <== NOT EXECUTED
} else if (iscntrl (c)) {
441e6: 1831 4801 moveb %a1@(00000001,%d4:l),%d4 <== NOT EXECUTED
441ea: 49c4 extbl %d4 <== NOT EXECUTED
441ec: 0804 0005 btst #5,%d4 <== NOT EXECUTED
441f0: 6708 beqs 441fa <erase+0xde> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHOCTL)
441f2: 4a80 tstl %d0 <== NOT EXECUTED
441f4: 6706 beqs 441fc <erase+0xe0> <== NOT EXECUTED
col += 2;
441f6: 5482 addql #2,%d2 <== NOT EXECUTED
441f8: 6002 bras 441fc <erase+0xe0> <== NOT EXECUTED
} else {
col++;
441fa: 5282 addql #1,%d2 <== NOT EXECUTED
int i = 0;
/*
* Find the character before the tab
*/
while (i != tty->ccount) {
441fc: b1c1 cmpal %d1,%a0 <== NOT EXECUTED
441fe: 66d4 bnes 441d4 <erase+0xb8> <== NOT EXECUTED
44200: 6016 bras 44218 <erase+0xfc> <== NOT EXECUTED
/*
* Back up over the tab
*/
while (tty->column > col) {
rtems_termios_puts ("\b", 1, tty);
44202: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44204: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44208: 4879 0005 b2cf pea 5b2cf <rtems_filesystem_default_pathconf+0xb3><== NOT EXECUTED
4420e: 4e93 jsr %a3@ <== NOT EXECUTED
tty->column--;
44210: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44214: 53aa 0028 subql #1,%a2@(40) <== NOT EXECUTED
}
/*
* Back up over the tab
*/
while (tty->column > col) {
44218: b4aa 0028 cmpl %a2@(40),%d2 <== NOT EXECUTED
4421c: 6de4 blts 44202 <erase+0xe6> <== NOT EXECUTED
4421e: 606e bras 4428e <erase+0x172> <== NOT EXECUTED
rtems_termios_puts ("\b", 1, tty);
tty->column--;
}
}
else {
if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {
44220: 5282 addql #1,%d2 <== NOT EXECUTED
44222: 1231 2800 moveb %a1@(00000000,%d2:l),%d1 <== NOT EXECUTED
44226: 49c1 extbl %d1 <== NOT EXECUTED
44228: 0801 0005 btst #5,%d1 <== NOT EXECUTED
4422c: 6724 beqs 44252 <erase+0x136> <== NOT EXECUTED
4422e: 0800 0009 btst #9,%d0 <== NOT EXECUTED
44232: 671e beqs 44252 <erase+0x136> <== NOT EXECUTED
rtems_termios_puts ("\b \b", 3, tty);
44234: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44236: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
4423a: 4879 0005 b2cd pea 5b2cd <rtems_filesystem_default_pathconf+0xb1><== NOT EXECUTED
44240: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->column)
44242: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44246: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4424a: 6706 beqs 44252 <erase+0x136> <== NOT EXECUTED
tty->column--;
4424c: 5380 subql #1,%d0 <== NOT EXECUTED
4424e: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {
44252: 2079 0005 c484 moveal 5c484 <__ctype_ptr__>,%a0 <== NOT EXECUTED
44258: 1030 2800 moveb %a0@(00000000,%d2:l),%d0 <== NOT EXECUTED
4425c: 49c0 extbl %d0 <== NOT EXECUTED
4425e: 0800 0005 btst #5,%d0 <== NOT EXECUTED
44262: 670c beqs 44270 <erase+0x154> <== NOT EXECUTED
44264: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
44268: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
4426e: 671e beqs 4428e <erase+0x172> <== NOT EXECUTED
rtems_termios_puts ("\b \b", 3, tty);
44270: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44272: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
44276: 4879 0005 b2cd pea 5b2cd <rtems_filesystem_default_pathconf+0xb1><== NOT EXECUTED
4427c: 4e93 jsr %a3@ <== NOT EXECUTED
if (tty->column)
4427e: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44282: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44286: 6706 beqs 4428e <erase+0x172> <== NOT EXECUTED
tty->column--;
44288: 5380 subql #1,%d0 <== NOT EXECUTED
4428a: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
}
}
}
if (!lineFlag)
4428e: 4a83 tstl %d3 <== NOT EXECUTED
44290: 6608 bnes 4429a <erase+0x17e> <== NOT EXECUTED
44292: 6010 bras 442a4 <erase+0x188> <== NOT EXECUTED
rtems_termios_puts ("\b \b", 3, tty);
if (tty->column)
tty->column--;
}
if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {
rtems_termios_puts ("\b \b", 3, tty);
44294: 47f9 0004 3e52 lea 43e52 <rtems_termios_puts>,%a3 <== NOT EXECUTED
echo ('\n', tty);
return;
}
}
while (tty->ccount) {
4429a: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
4429e: 4a88 tstl %a0 <== NOT EXECUTED
442a0: 6600 fed6 bnew 44178 <erase+0x5c> <== NOT EXECUTED
}
}
if (!lineFlag)
break;
}
}
442a4: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
442aa: 4e5e unlk %fp <== NOT EXECUTED
00043254 <fchdir>:
#include <rtems/seterr.h>
int fchdir(
int fd
)
{
43254: 4e56 ffc8 linkw %fp,#-56 <== NOT EXECUTED
43258: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
4325c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc, saved;
rtems_libio_check_fd( fd );
43260: b8b9 0005 d4e4 cmpl 5d4e4 <rtems_libio_number_iops>,%d4 <== NOT EXECUTED
43266: 641a bccs 43282 <fchdir+0x2e> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43268: 2004 movel %d4,%d0 <== NOT EXECUTED
4326a: ed8c lsll #6,%d4 <== NOT EXECUTED
4326c: e788 lsll #3,%d0 <== NOT EXECUTED
4326e: 2079 0005 ecf4 moveal 5ecf4 <rtems_libio_iops>,%a0 <== NOT EXECUTED
43274: 9880 subl %d0,%d4 <== NOT EXECUTED
43276: d1c4 addal %d4,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43278: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
4327c: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43280: 6610 bnes 43292 <fchdir+0x3e> <== NOT EXECUTED
43282: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
43288: 7409 moveq #9,%d2 <== NOT EXECUTED
4328a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4328c: 2082 movel %d2,%a0@ <== NOT EXECUTED
4328e: 6000 00a8 braw 43338 <fchdir+0xe4> <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
43292: 0800 0001 btst #1,%d0 <== NOT EXECUTED
43296: 6610 bnes 432a8 <fchdir+0x54> <== NOT EXECUTED
43298: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
4329e: 7216 moveq #22,%d1 <== NOT EXECUTED
432a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
432a2: 2081 movel %d1,%a0@ <== NOT EXECUTED
432a4: 6000 0092 braw 43338 <fchdir+0xe4> <== NOT EXECUTED
/*
* Verify you can change directory into this node.
*/
if ( (*iop->pathinfo.ops->node_type_h)( &iop->pathinfo ) !=
432a8: 2268 0024 moveal %a0@(36),%a1 <== NOT EXECUTED
432ac: 2808 movel %a0,%d4 <== NOT EXECUTED
432ae: 0684 0000 0018 addil #24,%d4 <== NOT EXECUTED
432b4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432b6: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
432ba: 4e90 jsr %a0@ <== NOT EXECUTED
432bc: 588f addql #4,%sp <== NOT EXECUTED
432be: 7201 moveq #1,%d1 <== NOT EXECUTED
432c0: b280 cmpl %d0,%d1 <== NOT EXECUTED
432c2: 670e beqs 432d2 <fchdir+0x7e> <== NOT EXECUTED
RTEMS_FILESYSTEM_DIRECTORY ) {
rtems_set_errno_and_return_minus_one( ENOTDIR );
432c4: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
432ca: 2040 moveal %d0,%a0 <== NOT EXECUTED
432cc: 7014 moveq #20,%d0 <== NOT EXECUTED
432ce: 2080 movel %d0,%a0@ <== NOT EXECUTED
432d0: 6066 bras 43338 <fchdir+0xe4> <== NOT EXECUTED
* but note the race condition. Threads who
* share their rtems_filesystem_current better
* be synchronized!
*/
saved = rtems_filesystem_current;
432d2: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
432d6: 240e movel %fp,%d2 <== NOT EXECUTED
432d8: 0682 ffff ffd8 addil #-40,%d2 <== NOT EXECUTED
432de: 45f9 0004 dfe0 lea 4dfe0 <memcpy>,%a2 <== NOT EXECUTED
432e4: 2639 0005 d700 movel 5d700 <rtems_current_user_env>,%d3 <== NOT EXECUTED
432ea: 5883 addql #4,%d3 <== NOT EXECUTED
432ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED
432ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
432f0: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_filesystem_current = iop->pathinfo;
432f2: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
432f6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
/* clone the current node */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
432fa: 260e movel %fp,%d3 <== NOT EXECUTED
432fc: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
* share their rtems_filesystem_current better
* be synchronized!
*/
saved = rtems_filesystem_current;
rtems_filesystem_current = iop->pathinfo;
43302: 4e92 jsr %a2@ <== NOT EXECUTED
/* clone the current node */
if (rtems_filesystem_evaluate_path(".", 1, 0, &loc, 0)) {
43304: 42a7 clrl %sp@- <== NOT EXECUTED
43306: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43308: 42a7 clrl %sp@- <== NOT EXECUTED
4330a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4330e: 4879 0005 c8ac pea 5c8ac <dotdotname+0x4> <== NOT EXECUTED
43314: 4eb9 0004 3188 jsr 43188 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
4331a: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
4331e: 4a80 tstl %d0 <== NOT EXECUTED
43320: 671a beqs 4333c <fchdir+0xe8> <== NOT EXECUTED
/* cloning failed; restore original and bail out */
rtems_filesystem_current = saved;
43322: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
43326: 2039 0005 d700 movel 5d700 <rtems_current_user_env>,%d0 <== NOT EXECUTED
4332c: 5880 addql #4,%d0 <== NOT EXECUTED
4332e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43330: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43332: 4e92 jsr %a2@ <== NOT EXECUTED
return -1;
43334: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43338: 70ff moveq #-1,%d0 <== NOT EXECUTED
4333a: 6020 bras 4335c <fchdir+0x108> <== NOT EXECUTED
}
/* release the old one */
rtems_filesystem_freenode( &saved );
4333c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4333e: 4eb9 0004 3470 jsr 43470 <rtems_filesystem_freenode> <== NOT EXECUTED
rtems_filesystem_current = loc;
43344: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
43348: 2239 0005 d700 movel 5d700 <rtems_current_user_env>,%d1 <== NOT EXECUTED
4334e: 5881 addql #4,%d1 <== NOT EXECUTED
43350: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43352: 2f01 movel %d1,%sp@- <== NOT EXECUTED
43354: 4e92 jsr %a2@ <== NOT EXECUTED
return 0;
43356: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4335a: 4280 clrl %d0 <== NOT EXECUTED
}
4335c: 4cee 041c ffc8 moveml %fp@(-56),%d2-%d4/%a2 <== NOT EXECUTED
43362: 4e5e unlk %fp <== NOT EXECUTED
...
00043368 <fchmod>:
int fchmod(
int fd,
mode_t mode
)
{
43368: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4336c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
43370: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
43374: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
43376: b0b9 0005 d4e4 cmpl 5d4e4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4337c: 641a bccs 43398 <fchmod+0x30> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
4337e: 2400 movel %d0,%d2 <== NOT EXECUTED
43380: ed88 lsll #6,%d0 <== NOT EXECUTED
43382: e78a lsll #3,%d2 <== NOT EXECUTED
43384: 2079 0005 ecf4 moveal 5ecf4 <rtems_libio_iops>,%a0 <== NOT EXECUTED
4338a: 9082 subl %d2,%d0 <== NOT EXECUTED
4338c: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4338e: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
43392: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43396: 660e bnes 433a6 <fchmod+0x3e> <== NOT EXECUTED
43398: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
4339e: 7209 moveq #9,%d1 <== NOT EXECUTED
433a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
433a2: 2081 movel %d1,%a0@ <== NOT EXECUTED
433a4: 602e bras 433d4 <fchmod+0x6c> <== NOT EXECUTED
/*
* Now process the fchmod().
*/
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
433a6: 44c0 movew %d0,%ccr <== NOT EXECUTED
433a8: 670e beqs 433b8 <fchmod+0x50> <== NOT EXECUTED
433aa: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
433b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
433b2: 7016 moveq #22,%d0 <== NOT EXECUTED
433b4: 2080 movel %d0,%a0@ <== NOT EXECUTED
433b6: 601c bras 433d4 <fchmod+0x6c> <== NOT EXECUTED
return (*iop->pathinfo.handlers->fchmod_h)( &iop->pathinfo, mode );
433b8: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED
433bc: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
}
433c0: 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 );
433c4: 2d41 000c movel %d1,%fp@(12) <== NOT EXECUTED
433c8: 2269 001c moveal %a1@(28),%a1 <== NOT EXECUTED
433cc: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
433d0: 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 );
433d2: 4ed1 jmp %a1@ <== NOT EXECUTED
}
433d4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
433d8: 70ff moveq #-1,%d0 <== NOT EXECUTED
433da: 4e5e unlk %fp <== NOT EXECUTED
...
000433e0 <fchown>:
int fchown(
int fd,
uid_t owner,
gid_t group
)
{
433e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
433e4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
433e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
433ea: 322e 000e movew %fp@(14),%d1 <== NOT EXECUTED
433ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
433f0: 342e 0012 movew %fp@(18),%d2 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
433f4: b0b9 0005 d4e4 cmpl 5d4e4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
433fa: 641a bccs 43416 <fchown+0x36> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
433fc: 2600 movel %d0,%d3 <== NOT EXECUTED
433fe: ed88 lsll #6,%d0 <== NOT EXECUTED
43400: e78b lsll #3,%d3 <== NOT EXECUTED
43402: 2079 0005 ecf4 moveal 5ecf4 <rtems_libio_iops>,%a0 <== NOT EXECUTED
43408: 9083 subl %d3,%d0 <== NOT EXECUTED
4340a: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4340c: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
43410: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43414: 660e bnes 43424 <fchown+0x44> <== NOT EXECUTED
43416: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
4341c: 7209 moveq #9,%d1 <== NOT EXECUTED
4341e: 2040 moveal %d0,%a0 <== NOT EXECUTED
43420: 2081 movel %d1,%a0@ <== NOT EXECUTED
43422: 603c bras 43460 <fchown+0x80> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43424: 44c0 movew %d0,%ccr <== NOT EXECUTED
43426: 670e beqs 43436 <fchown+0x56> <== NOT EXECUTED
43428: 4eb9 0004 d734 jsr 4d734 <__errno> <== NOT EXECUTED
4342e: 2040 moveal %d0,%a0 <== NOT EXECUTED
43430: 7016 moveq #22,%d0 <== NOT EXECUTED
43432: 2080 movel %d0,%a0@ <== NOT EXECUTED
43434: 602a bras 43460 <fchown+0x80> <== NOT EXECUTED
return (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group );
43436: 4280 clrl %d0 <== NOT EXECUTED
43438: 2268 0024 moveal %a0@(36),%a1 <== NOT EXECUTED
4343c: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
43440: 3002 movew %d2,%d0 <== NOT EXECUTED
}
43442: 242e fff8 movel %fp@(-8),%d2 <== 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 );
43446: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
4344a: 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 );
4344e: 3001 movew %d1,%d0 <== NOT EXECUTED
43450: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
43454: 2269 0018 moveal %a1@(24),%a1 <== NOT EXECUTED
43458: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
4345c: 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 );
4345e: 4ed1 jmp %a1@ <== NOT EXECUTED
}
43460: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
43464: 70ff moveq #-1,%d0 <== NOT EXECUTED
43466: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4346a: 4e5e unlk %fp <== NOT EXECUTED
...
000430dc <fcntl>:
int fcntl(
int fd,
int cmd,
...
)
{
430dc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
430e0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
int ret;
va_list ap;
va_start( ap, cmd );
430e4: 41ee 0010 lea %fp@(16),%a0 <== NOT EXECUTED
int fcntl(
int fd,
int cmd,
...
)
{
430e8: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
430ec: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
int fd2;
int flags;
int mask;
int ret = 0;
rtems_libio_check_fd( fd );
430f0: 2239 0005 dc04 movel 5dc04 <rtems_libio_number_iops>,%d1 <== NOT EXECUTED
430f6: b280 cmpl %d0,%d1 <== NOT EXECUTED
430f8: 631c blss 43116 <fcntl+0x3a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
430fa: 2400 movel %d0,%d2 <== NOT EXECUTED
430fc: ed88 lsll #6,%d0 <== NOT EXECUTED
430fe: e78a lsll #3,%d2 <== NOT EXECUTED
43100: 2679 0005 f414 moveal 5f414 <rtems_libio_iops>,%a3 <== NOT EXECUTED
43106: 9082 subl %d2,%d0 <== NOT EXECUTED
43108: 45f3 0800 lea %a3@(00000000,%d0:l),%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
4310c: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
43110: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43114: 6610 bnes 43126 <fcntl+0x4a> <== NOT EXECUTED
43116: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
4311c: 7209 moveq #9,%d1 <== NOT EXECUTED
4311e: 2040 moveal %d0,%a0 <== NOT EXECUTED
43120: 2081 movel %d1,%a0@ <== NOT EXECUTED
43122: 6000 0110 braw 43234 <fcntl+0x158> <== NOT EXECUTED
/*
* This switch should contain all the cases from POSIX.
*/
switch ( cmd ) {
43126: 7409 moveq #9,%d2 <== NOT EXECUTED
43128: b483 cmpl %d3,%d2 <== NOT EXECUTED
4312a: 6500 00d8 bcsw 43204 <fcntl+0x128> <== NOT EXECUTED
4312e: 327b 3a06 moveaw %pc@(43136 <fcntl+0x5a>,%d3:l:2),%a1 <== NOT EXECUTED
43132: 4efb 9802 jmp %pc@(43136 <fcntl+0x5a>,%a1:l) <== NOT EXECUTED
43136: 0014 .short 0x0014 <== NOT EXECUTED
43138: 006c .short 0x006c <== NOT EXECUTED
4313a: 0078 .short 0x0078 <== NOT EXECUTED
4313c: 008c 009a 00be oril #10092734,%d4 <== NOT EXECUTED
43142: 00be 00be 00be oril #12452030,%d6 <== NOT EXECUTED
43148: 00be 2410 6710 oril #605054736,%d6 <== NOT EXECUTED
case F_DUPFD: /* dup */
fd2 = va_arg( ap, int );
if ( fd2 )
diop = rtems_libio_iop( fd2 );
4314e: b282 cmpl %d2,%d1 <== NOT EXECUTED
43150: 631c blss 4316e <fcntl+0x92> <== NOT EXECUTED
43152: 2002 movel %d2,%d0 <== NOT EXECUTED
43154: ed8a lsll #6,%d2 <== NOT EXECUTED
43156: e788 lsll #3,%d0 <== NOT EXECUTED
43158: 9480 subl %d0,%d2 <== NOT EXECUTED
4315a: d7c2 addal %d2,%a3 <== NOT EXECUTED
4315c: 6012 bras 43170 <fcntl+0x94> <== NOT EXECUTED
else {
/* allocate a file control block */
diop = rtems_libio_allocate();
4315e: 4eb9 0004 3718 jsr 43718 <rtems_libio_allocate> <== NOT EXECUTED
43164: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( diop == 0 ) {
43166: 4a80 tstl %d0 <== NOT EXECUTED
43168: 6606 bnes 43170 <fcntl+0x94> <== NOT EXECUTED
4316a: 6000 00c8 braw 43234 <fcntl+0x158> <== NOT EXECUTED
switch ( cmd ) {
case F_DUPFD: /* dup */
fd2 = va_arg( ap, int );
if ( fd2 )
diop = rtems_libio_iop( fd2 );
4316e: 97cb subal %a3,%a3 <== NOT EXECUTED
}
}
diop->flags = iop->flags;
diop->pathinfo = iop->pathinfo;
ret = (int) (diop - rtems_libio_iops);
43170: 240b movel %a3,%d2 <== NOT EXECUTED
ret = -1;
break;
}
}
diop->flags = iop->flags;
43172: 276a 0014 0014 movel %a2@(20),%a3@(20) <== NOT EXECUTED
diop->pathinfo = iop->pathinfo;
43178: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
4317c: 486a 0018 pea %a2@(24) <== NOT EXECUTED
43180: 486b 0018 pea %a3@(24) <== NOT EXECUTED
43184: 4eb9 0004 eb0c jsr 4eb0c <memcpy> <== NOT EXECUTED
ret = (int) (diop - rtems_libio_iops);
4318a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4318e: 94b9 0005 f414 subl 5f414 <rtems_libio_iops>,%d2 <== NOT EXECUTED
43194: 203c b6db 6db7 movel #-1227133513,%d0 <== NOT EXECUTED
4319a: e682 asrl #3,%d2 <== NOT EXECUTED
4319c: 4c00 2800 mulsl %d0,%d2 <== NOT EXECUTED
431a0: 6070 bras 43212 <fcntl+0x136> <== NOT EXECUTED
break;
case F_GETFD: /* get f_flags */
ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);
431a2: 0800 000b btst #11,%d0 <== NOT EXECUTED
431a6: 56c2 sne %d2 <== NOT EXECUTED
431a8: 49c2 extbl %d2 <== NOT EXECUTED
431aa: 4482 negl %d2 <== NOT EXECUTED
431ac: 6068 bras 43216 <fcntl+0x13a> <== 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 ) )
431ae: 4a90 tstl %a0@ <== NOT EXECUTED
431b0: 6706 beqs 431b8 <fcntl+0xdc> <== NOT EXECUTED
iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;
431b2: 08c0 000b bset #11,%d0 <== NOT EXECUTED
431b6: 6004 bras 431bc <fcntl+0xe0> <== NOT EXECUTED
else
iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;
431b8: 0880 000b bclr #11,%d0 <== NOT EXECUTED
431bc: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
431c0: 602e bras 431f0 <fcntl+0x114> <== NOT EXECUTED
break;
case F_GETFL: /* more flags (cloexec) */
ret = rtems_libio_to_fcntl_flags( iop->flags );
431c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
431c4: 4eb9 0004 36ca jsr 436ca <rtems_libio_to_fcntl_flags> <== NOT EXECUTED
431ca: 588f addql #4,%sp <== NOT EXECUTED
431cc: 2400 movel %d0,%d2 <== NOT EXECUTED
431ce: 6042 bras 43212 <fcntl+0x136> <== NOT EXECUTED
break;
case F_SETFL:
flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );
431d0: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
431d2: 4eb9 0004 368a jsr 4368a <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);
431d8: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
431dc: 588f addql #4,%sp <== NOT EXECUTED
431de: 0280 0000 0201 andil #513,%d0 <== NOT EXECUTED
431e4: 0281 ffff fdfe andil #-514,%d1 <== NOT EXECUTED
431ea: 8081 orl %d1,%d0 <== NOT EXECUTED
431ec: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_t *diop;
int fd2;
int flags;
int mask;
int ret = 0;
431f0: 4282 clrl %d2 <== NOT EXECUTED
431f2: 6022 bras 43216 <fcntl+0x13a> <== NOT EXECUTED
errno = ENOTSUP;
ret = -1;
break;
case F_GETOWN: /* for sockets. */
errno = ENOTSUP;
431f4: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
431fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
431fc: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
43202: 6030 bras 43234 <fcntl+0x158> <== NOT EXECUTED
ret = -1;
break;
default:
errno = EINVAL;
43204: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
4320a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4320c: 7016 moveq #22,%d0 <== NOT EXECUTED
4320e: 2080 movel %d0,%a0@ <== NOT EXECUTED
43210: 6022 bras 43234 <fcntl+0x158> <== NOT EXECUTED
/*
* If we got this far successfully, then we give the optional
* filesystem specific handler a chance to process this.
*/
if (ret >= 0) {
43212: 4a82 tstl %d2 <== NOT EXECUTED
43214: 6d20 blts 43236 <fcntl+0x15a> <== NOT EXECUTED
int err = (*iop->pathinfo.handlers->fcntl_h)( cmd, iop );
43216: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
4321a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4321c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4321e: 2068 0030 moveal %a0@(48),%a0 <== NOT EXECUTED
43222: 4e90 jsr %a0@ <== NOT EXECUTED
if (err) {
43224: 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 );
43226: 2600 movel %d0,%d3 <== NOT EXECUTED
if (err) {
43228: 670c beqs 43236 <fcntl+0x15a> <== NOT EXECUTED
errno = err;
4322a: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
43230: 2040 moveal %d0,%a0 <== NOT EXECUTED
43232: 2083 movel %d3,%a0@ <== NOT EXECUTED
ret = -1;
43234: 74ff moveq #-1,%d2 <== NOT EXECUTED
va_list ap;
va_start( ap, cmd );
ret = vfcntl(fd,cmd,ap);
va_end(ap);
return ret;
}
43236: 2002 movel %d2,%d0 <== NOT EXECUTED
43238: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4323e: 4e5e unlk %fp <== NOT EXECUTED
00043264 <fdatasync>:
#include <rtems/seterr.h>
int fdatasync(
int fd
)
{
43264: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43268: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
4326c: b0b9 0005 dc04 cmpl 5dc04 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
43272: 641a bccs 4328e <fdatasync+0x2a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
43274: 2200 movel %d0,%d1 <== NOT EXECUTED
43276: ed88 lsll #6,%d0 <== NOT EXECUTED
43278: e789 lsll #3,%d1 <== NOT EXECUTED
4327a: 2079 0005 f414 moveal 5f414 <rtems_libio_iops>,%a0 <== NOT EXECUTED
43280: 9081 subl %d1,%d0 <== NOT EXECUTED
43282: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
43284: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
43288: 0800 0008 btst #8,%d0 <== NOT EXECUTED
4328c: 660e bnes 4329c <fdatasync+0x38> <== NOT EXECUTED
4328e: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
43294: 7209 moveq #9,%d1 <== NOT EXECUTED
43296: 2040 moveal %d0,%a0 <== NOT EXECUTED
43298: 2081 movel %d1,%a0@ <== NOT EXECUTED
4329a: 6022 bras 432be <fdatasync+0x5a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
4329c: 44c0 movew %d0,%ccr <== NOT EXECUTED
4329e: 670e beqs 432ae <fdatasync+0x4a> <== NOT EXECUTED
432a0: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
432a6: 2040 moveal %d0,%a0 <== NOT EXECUTED
432a8: 7016 moveq #22,%d0 <== NOT EXECUTED
432aa: 2080 movel %d0,%a0@ <== NOT EXECUTED
432ac: 6010 bras 432be <fdatasync+0x5a> <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
432ae: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED
432b2: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
432b6: 4e5e unlk %fp <== NOT EXECUTED
/*
* Now process the fdatasync().
*/
return (*iop->pathinfo.handlers->fdatasync_h)( iop );
432b8: 2269 002c moveal %a1@(44),%a1 <== NOT EXECUTED
432bc: 4ed1 jmp %a1@ <== NOT EXECUTED
}
432be: 70ff moveq #-1,%d0 <== NOT EXECUTED
432c0: 4e5e unlk %fp <== NOT EXECUTED
0004b33a <fifo_open>:
*/
int fifo_open(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4b33a: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
4b33e: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
4b342: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
4b346: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
static rtems_status_code pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (pipe_semaphore == RTEMS_ID_NONE) {
4b34a: 4ab9 0005 f668 tstl 5f668 <pipe_semaphore> <== NOT EXECUTED
4b350: 6654 bnes 4b3a6 <fifo_open+0x6c> <== 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 );
4b352: 42a7 clrl %sp@- <== NOT EXECUTED
4b354: 42a7 clrl %sp@- <== NOT EXECUTED
4b356: 2f39 0005 fd60 movel 5fd60 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b35c: 4eb9 0004 733c jsr 4733c <rtems_semaphore_obtain> <== NOT EXECUTED
rtems_libio_lock();
if (pipe_semaphore == RTEMS_ID_NONE) {
4b362: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b366: 4ab9 0005 f668 tstl 5f668 <pipe_semaphore> <== NOT EXECUTED
4b36c: 6624 bnes 4b392 <fifo_open+0x58> <== NOT EXECUTED
sc = rtems_semaphore_create(
4b36e: 4879 0005 f668 pea 5f668 <pipe_semaphore> <== NOT EXECUTED
4b374: 42a7 clrl %sp@- <== NOT EXECUTED
4b376: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f> <== NOT EXECUTED
4b37a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b37e: 2f3c 5049 5045 movel #1346981957,%sp@- <== NOT EXECUTED
4b384: 4eb9 0004 7104 jsr 47104 <rtems_semaphore_create> <== NOT EXECUTED
4b38a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4b38e: 2400 movel %d0,%d2 <== NOT EXECUTED
4b390: 6002 bras 4b394 <fifo_open+0x5a> <== NOT EXECUTED
free(pipe);
}
static rtems_status_code pipe_lock(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
4b392: 4282 clrl %d2 <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
4b394: 2f39 0005 fd60 movel 5fd60 <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
4b39a: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
}
rtems_libio_unlock();
}
if (sc == RTEMS_SUCCESSFUL) {
4b3a0: 588f addql #4,%sp <== NOT EXECUTED
4b3a2: 4a82 tstl %d2 <== NOT EXECUTED
4b3a4: 6618 bnes 4b3be <fifo_open+0x84> <== NOT EXECUTED
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
4b3a6: 42a7 clrl %sp@- <== NOT EXECUTED
4b3a8: 42a7 clrl %sp@- <== NOT EXECUTED
4b3aa: 2f39 0005 f668 movel 5f668 <pipe_semaphore>,%sp@- <== NOT EXECUTED
4b3b0: 4eb9 0004 733c jsr 4733c <rtems_semaphore_obtain> <== NOT EXECUTED
}
if (sc == RTEMS_SUCCESSFUL) {
4b3b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b3ba: 4a80 tstl %d0 <== NOT EXECUTED
4b3bc: 6704 beqs 4b3c2 <fifo_open+0x88> <== NOT EXECUTED
return 0;
} else {
return -ENOMEM;
4b3be: 74f4 moveq #-12,%d2 <== NOT EXECUTED
4b3c0: 6002 bras 4b3c4 <fifo_open+0x8a> <== NOT EXECUTED
if (sc == RTEMS_SUCCESSFUL) {
sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
}
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4b3c2: 4282 clrl %d2 <== NOT EXECUTED
{
pipe_control_t *pipe;
int err = 0;
err = pipe_lock();
if (err)
4b3c4: 4a82 tstl %d2 <== NOT EXECUTED
4b3c6: 6600 0342 bnew 4b70a <fifo_open+0x3d0> <== NOT EXECUTED
return err;
pipe = *pipep;
4b3ca: 2453 moveal %a3@,%a2 <== NOT EXECUTED
if (pipe == NULL) {
4b3cc: 4a8a tstl %a2 <== NOT EXECUTED
4b3ce: 6600 0166 bnew 4b536 <fifo_open+0x1fc> <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4b3d2: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
4b3d6: 263c 0004 46e4 movel #280292,%d3 <== NOT EXECUTED
4b3dc: 2043 moveal %d3,%a0 <== NOT EXECUTED
4b3de: 4e90 jsr %a0@ <== NOT EXECUTED
if (pipe == NULL)
4b3e0: 588f addql #4,%sp <== NOT EXECUTED
{
static char c = 'a';
pipe_control_t *pipe;
int err = -ENOMEM;
pipe = malloc(sizeof(pipe_control_t));
4b3e2: 2440 moveal %d0,%a2 <== NOT EXECUTED
4b3e4: 2a40 moveal %d0,%a5 <== NOT EXECUTED
if (pipe == NULL)
4b3e6: 4a80 tstl %d0 <== NOT EXECUTED
4b3e8: 6700 0148 beqw 4b532 <fifo_open+0x1f8> <== NOT EXECUTED
return err;
memset(pipe, 0, sizeof(pipe_control_t));
4b3ec: 4878 0034 pea 34 <OPER2+0x20> <== NOT EXECUTED
4b3f0: 42a7 clrl %sp@- <== NOT EXECUTED
4b3f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b3f4: 4eb9 0004 f8d0 jsr 4f8d0 <memset> <== NOT EXECUTED
pipe->Size = PIPE_BUF;
4b3fa: 203c 0000 0200 movel #512,%d0 <== NOT EXECUTED
pipe->Buffer = malloc(pipe->Size);
4b400: 2043 moveal %d3,%a0 <== NOT EXECUTED
pipe = malloc(sizeof(pipe_control_t));
if (pipe == NULL)
return err;
memset(pipe, 0, sizeof(pipe_control_t));
pipe->Size = PIPE_BUF;
4b402: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
pipe->Buffer = malloc(pipe->Size);
4b406: 4878 0200 pea 200 <DBL_MANT_DIG+0x1cb> <== NOT EXECUTED
4b40a: 4e90 jsr %a0@ <== NOT EXECUTED
if (! pipe->Buffer)
4b40c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if (pipe == NULL)
return err;
memset(pipe, 0, sizeof(pipe_control_t));
pipe->Size = PIPE_BUF;
pipe->Buffer = malloc(pipe->Size);
4b410: 2480 movel %d0,%a2@ <== NOT EXECUTED
if (! pipe->Buffer)
4b412: 6700 0114 beqw 4b528 <fifo_open+0x1ee> <== NOT EXECUTED
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4b416: 486a 002c pea %a2@(44) <== NOT EXECUTED
4b41a: 263c 0004 cc68 movel #314472,%d3 <== NOT EXECUTED
4b420: 2043 moveal %d3,%a0 <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4b422: 1039 0005 e758 moveb 5e758 <c.6472>,%d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4b428: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'r', c),
4b42a: 49c0 extbl %d0 <== NOT EXECUTED
if (! pipe->Buffer)
goto err_buf;
err = -ENOMEM;
if (rtems_barrier_create(
4b42c: 42a7 clrl %sp@- <== NOT EXECUTED
4b42e: 0080 5049 7200 oril #1346990592,%d0 <== NOT EXECUTED
4b434: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b436: 4e90 jsr %a0@ <== NOT EXECUTED
4b438: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b43c: 4a80 tstl %d0 <== NOT EXECUTED
4b43e: 6600 00de bnew 4b51e <fifo_open+0x1e4> <== 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(
4b442: 486a 0030 pea %a2@(48) <== NOT EXECUTED
4b446: 2043 moveal %d3,%a0 <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4b448: 1039 0005 e758 moveb 5e758 <c.6472>,%d0 <== NOT EXECUTED
if (rtems_barrier_create(
rtems_build_name ('P', 'I', 'r', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->readBarrier) != RTEMS_SUCCESSFUL)
goto err_rbar;
if (rtems_barrier_create(
4b44e: 42a7 clrl %sp@- <== NOT EXECUTED
rtems_build_name ('P', 'I', 'w', c),
4b450: 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(
4b452: 42a7 clrl %sp@- <== NOT EXECUTED
4b454: 0080 5049 7700 oril #1346991872,%d0 <== NOT EXECUTED
4b45a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b45c: 4e90 jsr %a0@ <== NOT EXECUTED
4b45e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b462: 4a80 tstl %d0 <== NOT EXECUTED
4b464: 6600 00ac bnew 4b512 <fifo_open+0x1d8> <== 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(
4b468: 486a 0028 pea %a2@(40) <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4b46c: 1039 0005 e758 moveb 5e758 <c.6472>,%d0 <== NOT EXECUTED
if (rtems_barrier_create(
rtems_build_name ('P', 'I', 'w', c),
RTEMS_BARRIER_MANUAL_RELEASE, 0,
&pipe->writeBarrier) != RTEMS_SUCCESSFUL)
goto err_wbar;
if (rtems_semaphore_create(
4b472: 42a7 clrl %sp@- <== NOT EXECUTED
4b474: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
rtems_build_name ('P', 'I', 's', c), 1,
4b478: 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(
4b47a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b47e: 0080 5049 7300 oril #1346990848,%d0 <== NOT EXECUTED
4b484: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b486: 4eb9 0004 7104 jsr 47104 <rtems_semaphore_create> <== NOT EXECUTED
4b48c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4b490: 4a80 tstl %d0 <== NOT EXECUTED
4b492: 6672 bnes 4b506 <fifo_open+0x1cc> <== NOT EXECUTED
/* Set barriers to be interruptible by signals. */
static void pipe_interruptible(pipe_control_t *pipe)
{
Objects_Locations location;
_Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
4b494: 280e movel %fp,%d4 <== NOT EXECUTED
4b496: 5184 subql #8,%d4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4b498: 263c 0004 89bc movel #297404,%d3 <== NOT EXECUTED
4b49e: 2043 moveal %d3,%a0 <== NOT EXECUTED
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Thread_Enable_dispatch();
4b4a0: 4bf9 0004 9452 lea 49452 <_Thread_Enable_dispatch>,%a5 <== NOT EXECUTED
4b4a6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b4a8: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b4ac: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4b4b2: 4e90 jsr %a0@ <== NOT EXECUTED
static void pipe_interruptible(pipe_control_t *pipe)
{
Objects_Locations location;
_Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
4b4b4: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED
4b4ba: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b4bc: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4b4c0: 4e95 jsr %a5@ <== NOT EXECUTED
4b4c2: 2043 moveal %d3,%a0 <== NOT EXECUTED
4b4c4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b4c6: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b4ca: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4b4d0: 4e90 jsr %a0@ <== NOT EXECUTED
_Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
4b4d2: 223c 1000 0000 movel #268435456,%d1 <== NOT EXECUTED
4b4d8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b4da: 83a8 004c orl %d1,%a0@(76) <== NOT EXECUTED
_Thread_Enable_dispatch();
4b4de: 4e95 jsr %a5@ <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
pipe_interruptible(pipe);
#endif
*pipep = pipe;
if (c ++ == 'z')
4b4e0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b4e4: 1039 0005 e758 moveb 5e758 <c.6472>,%d0 <== NOT EXECUTED
4b4ea: 49c0 extbl %d0 <== NOT EXECUTED
4b4ec: 2200 movel %d0,%d1 <== NOT EXECUTED
4b4ee: 5281 addql #1,%d1 <== NOT EXECUTED
4b4f0: 13c1 0005 e758 moveb %d1,5e758 <c.6472> <== NOT EXECUTED
4b4f6: 727a moveq #122,%d1 <== NOT EXECUTED
4b4f8: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b4fa: 663a bnes 4b536 <fifo_open+0x1fc> <== NOT EXECUTED
c = 'a';
4b4fc: 7061 moveq #97,%d0 <== NOT EXECUTED
4b4fe: 13c0 0005 e758 moveb %d0,5e758 <c.6472> <== NOT EXECUTED
4b504: 6030 bras 4b536 <fifo_open+0x1fc> <== NOT EXECUTED
return 0;
err_sem:
rtems_barrier_delete(pipe->writeBarrier);
4b506: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b50a: 4eb9 0004 cd18 jsr 4cd18 <rtems_barrier_delete> <== NOT EXECUTED
4b510: 588f addql #4,%sp <== NOT EXECUTED
err_wbar:
rtems_barrier_delete(pipe->readBarrier);
4b512: 2f2d 002c movel %a5@(44),%sp@- <== NOT EXECUTED
4b516: 4eb9 0004 cd18 jsr 4cd18 <rtems_barrier_delete> <== NOT EXECUTED
4b51c: 588f addql #4,%sp <== NOT EXECUTED
err_rbar:
free(pipe->Buffer);
4b51e: 2f15 movel %a5@,%sp@- <== NOT EXECUTED
4b520: 4eb9 0004 3fe4 jsr 43fe4 <free> <== NOT EXECUTED
4b526: 588f addql #4,%sp <== NOT EXECUTED
err_buf:
free(pipe);
4b528: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4b52a: 4eb9 0004 3fe4 jsr 43fe4 <free> <== NOT EXECUTED
4b530: 588f addql #4,%sp <== NOT EXECUTED
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
err = -EINTR;
4b532: 74f4 moveq #-12,%d2 <== NOT EXECUTED
4b534: 602c bras 4b562 <fifo_open+0x228> <== NOT EXECUTED
err = pipe_alloc(&pipe);
if (err)
goto out;
}
if (! PIPE_LOCK(pipe))
4b536: 42a7 clrl %sp@- <== NOT EXECUTED
4b538: 42a7 clrl %sp@- <== NOT EXECUTED
4b53a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b53e: 4eb9 0004 733c jsr 4733c <rtems_semaphore_obtain> <== NOT EXECUTED
4b544: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b548: 4a80 tstl %d0 <== NOT EXECUTED
4b54a: 6702 beqs 4b54e <fifo_open+0x214> <== NOT EXECUTED
err = -EINTR;
4b54c: 74fc moveq #-4,%d2 <== NOT EXECUTED
if (*pipep == NULL) {
4b54e: 4a93 tstl %a3@ <== NOT EXECUTED
4b550: 6610 bnes 4b562 <fifo_open+0x228> <== NOT EXECUTED
if (err)
4b552: 4a82 tstl %d2 <== NOT EXECUTED
4b554: 670a beqs 4b560 <fifo_open+0x226> <== NOT EXECUTED
pipe_free(pipe);
4b556: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b558: 4eba fd10 jsr %pc@(4b26a <pipe_free>) <== NOT EXECUTED
4b55c: 588f addql #4,%sp <== NOT EXECUTED
4b55e: 6002 bras 4b562 <fifo_open+0x228> <== NOT EXECUTED
else
*pipep = pipe;
4b560: 268a movel %a2,%a3@ <== NOT EXECUTED
}
out:
pipe_unlock();
4b562: 4eba fcf0 jsr %pc@(4b254 <pipe_unlock>) <== NOT EXECUTED
pipe_control_t *pipe;
unsigned int prevCounter;
int err;
err = pipe_new(pipep);
if (err)
4b566: 4a82 tstl %d2 <== NOT EXECUTED
4b568: 6600 01a0 bnew 4b70a <fifo_open+0x3d0> <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
4b56c: 7006 moveq #6,%d0 <== NOT EXECUTED
4b56e: 7204 moveq #4,%d1 <== NOT EXECUTED
4b570: c0ac 0014 andl %a4@(20),%d0 <== NOT EXECUTED
int err;
err = pipe_new(pipep);
if (err)
return err;
pipe = *pipep;
4b574: 2453 moveal %a3@,%a2 <== NOT EXECUTED
switch (LIBIO_ACCMODE(iop)) {
4b576: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b578: 6700 009c beqw 4b616 <fifo_open+0x2dc> <== NOT EXECUTED
4b57c: 123c 0006 moveb #6,%d1 <== NOT EXECUTED
4b580: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b582: 6700 0122 beqw 4b6a6 <fifo_open+0x36c> <== NOT EXECUTED
4b586: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
4b58a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b58c: 6600 0160 bnew 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4b590: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4b594: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b596: 5288 addql #1,%a0 <== NOT EXECUTED
return err;
pipe = *pipep;
switch (LIBIO_ACCMODE(iop)) {
case LIBIO_FLAGS_READ:
pipe->readerCounter ++;
4b598: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4b59c: 2548 0010 movel %a0,%a2@(16) <== NOT EXECUTED
4b5a0: 4a80 tstl %d0 <== NOT EXECUTED
4b5a2: 6610 bnes 4b5b4 <fifo_open+0x27a> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4b5a4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b5a8: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b5ac: 4eb9 0004 cdb4 jsr 4cdb4 <rtems_barrier_release> <== NOT EXECUTED
4b5b2: 508f addql #8,%sp <== NOT EXECUTED
if (pipe->Writers == 0) {
4b5b4: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4b5b8: 6600 0134 bnew 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
/* Not an error */
if (LIBIO_NODELAY(iop))
4b5bc: 7001 moveq #1,%d0 <== NOT EXECUTED
4b5be: c0ac 0014 andl %a4@(20),%d0 <== NOT EXECUTED
4b5c2: 6600 012a bnew 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
break;
prevCounter = pipe->writerCounter;
4b5c6: 2a2a 0024 movel %a2@(36),%d5 <== NOT EXECUTED
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
goto out_error;
if (! PIPE_LOCK(pipe))
4b5ca: 4bf9 0004 733c lea 4733c <rtems_semaphore_obtain>,%a5 <== NOT EXECUTED
prevCounter = pipe->writerCounter;
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4b5d0: 283c 0004 7444 movel #291908,%d4 <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4b5d6: 263c 0004 ce18 movel #314904,%d3 <== NOT EXECUTED
prevCounter = pipe->writerCounter;
err = -EINTR;
/* Wait until a writer opens the pipe */
do {
PIPE_UNLOCK(pipe);
4b5dc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b5e0: 2044 moveal %d4,%a0 <== NOT EXECUTED
4b5e2: 4e90 jsr %a0@ <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4b5e4: 2043 moveal %d3,%a0 <== NOT EXECUTED
4b5e6: 42a7 clrl %sp@- <== NOT EXECUTED
4b5e8: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b5ec: 4e90 jsr %a0@ <== NOT EXECUTED
4b5ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b5f2: 4a80 tstl %d0 <== NOT EXECUTED
4b5f4: 6600 0106 bnew 4b6fc <fifo_open+0x3c2> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4b5f8: 42a7 clrl %sp@- <== NOT EXECUTED
4b5fa: 42a7 clrl %sp@- <== NOT EXECUTED
4b5fc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b600: 4e95 jsr %a5@ <== NOT EXECUTED
4b602: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b606: 4a80 tstl %d0 <== NOT EXECUTED
4b608: 6600 00f2 bnew 4b6fc <fifo_open+0x3c2> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->writerCounter);
4b60c: baaa 0024 cmpl %a2@(36),%d5 <== NOT EXECUTED
4b610: 67ca beqs 4b5dc <fifo_open+0x2a2> <== NOT EXECUTED
4b612: 6000 00da braw 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4b616: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4b61a: 2200 movel %d0,%d1 <== NOT EXECUTED
4b61c: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->writerCounter);
}
break;
case LIBIO_FLAGS_WRITE:
pipe->writerCounter ++;
4b61e: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4b622: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
4b626: 4a80 tstl %d0 <== NOT EXECUTED
4b628: 6610 bnes 4b63a <fifo_open+0x300> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4b62a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b62e: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b632: 4eb9 0004 cdb4 jsr 4cdb4 <rtems_barrier_release> <== NOT EXECUTED
4b638: 508f addql #8,%sp <== NOT EXECUTED
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
4b63a: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4b63e: 6600 00ae bnew 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
4b642: 7001 moveq #1,%d0 <== NOT EXECUTED
4b644: c0ac 0014 andl %a4@(20),%d0 <== NOT EXECUTED
4b648: 6712 beqs 4b65c <fifo_open+0x322> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4b64a: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
err = -ENXIO;
4b64e: 74fa moveq #-6,%d2 <== NOT EXECUTED
if (pipe->Writers ++ == 0)
PIPE_WAKEUPREADERS(pipe);
if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {
PIPE_UNLOCK(pipe);
4b650: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
err = -ENXIO;
goto out_error;
4b656: 588f addql #4,%sp <== NOT EXECUTED
4b658: 6000 00a4 braw 4b6fe <fifo_open+0x3c4> <== NOT EXECUTED
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
4b65c: 2a2a 0020 movel %a2@(32),%d5 <== NOT EXECUTED
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
goto out_error;
if (! PIPE_LOCK(pipe))
4b660: 4bf9 0004 733c lea 4733c <rtems_semaphore_obtain>,%a5 <== NOT EXECUTED
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4b666: 283c 0004 7444 movel #291908,%d4 <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4b66c: 263c 0004 ce18 movel #314904,%d3 <== NOT EXECUTED
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
do {
PIPE_UNLOCK(pipe);
4b672: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b676: 2044 moveal %d4,%a0 <== NOT EXECUTED
4b678: 4e90 jsr %a0@ <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4b67a: 2043 moveal %d3,%a0 <== NOT EXECUTED
4b67c: 42a7 clrl %sp@- <== NOT EXECUTED
4b67e: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b682: 4e90 jsr %a0@ <== NOT EXECUTED
4b684: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b688: 4a80 tstl %d0 <== NOT EXECUTED
4b68a: 6670 bnes 4b6fc <fifo_open+0x3c2> <== NOT EXECUTED
goto out_error;
if (! PIPE_LOCK(pipe))
4b68c: 42a7 clrl %sp@- <== NOT EXECUTED
4b68e: 42a7 clrl %sp@- <== NOT EXECUTED
4b690: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b694: 4e95 jsr %a5@ <== NOT EXECUTED
4b696: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b69a: 4a80 tstl %d0 <== NOT EXECUTED
4b69c: 665e bnes 4b6fc <fifo_open+0x3c2> <== NOT EXECUTED
goto out_error;
} while (prevCounter == pipe->readerCounter);
4b69e: baaa 0020 cmpl %a2@(32),%d5 <== NOT EXECUTED
4b6a2: 67ce beqs 4b672 <fifo_open+0x338> <== NOT EXECUTED
4b6a4: 6048 bras 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
4b6a6: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4b6aa: 2200 movel %d0,%d1 <== NOT EXECUTED
4b6ac: 5281 addql #1,%d1 <== NOT EXECUTED
} while (prevCounter == pipe->readerCounter);
}
break;
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
4b6ae: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
if (pipe->Readers ++ == 0)
4b6b2: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
4b6b6: 4a80 tstl %d0 <== NOT EXECUTED
4b6b8: 6610 bnes 4b6ca <fifo_open+0x390> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4b6ba: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b6be: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b6c2: 4eb9 0004 cdb4 jsr 4cdb4 <rtems_barrier_release> <== NOT EXECUTED
4b6c8: 508f addql #8,%sp <== NOT EXECUTED
pipe->writerCounter ++;
if (pipe->Writers ++ == 0)
4b6ca: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
4b6ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b6d0: 5288 addql #1,%a0 <== NOT EXECUTED
case LIBIO_FLAGS_READ_WRITE:
pipe->readerCounter ++;
if (pipe->Readers ++ == 0)
PIPE_WAKEUPWRITERS(pipe);
pipe->writerCounter ++;
4b6d2: 52aa 0024 addql #1,%a2@(36) <== NOT EXECUTED
if (pipe->Writers ++ == 0)
4b6d6: 2548 0014 movel %a0,%a2@(20) <== NOT EXECUTED
4b6da: 4a80 tstl %d0 <== NOT EXECUTED
4b6dc: 6610 bnes 4b6ee <fifo_open+0x3b4> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4b6de: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b6e2: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b6e6: 4eb9 0004 cdb4 jsr 4cdb4 <rtems_barrier_release> <== NOT EXECUTED
4b6ec: 508f addql #8,%sp <== NOT EXECUTED
break;
}
PIPE_UNLOCK(pipe);
4b6ee: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b6f2: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
4b6f8: 588f addql #4,%sp <== NOT EXECUTED
4b6fa: 600e bras 4b70a <fifo_open+0x3d0> <== NOT EXECUTED
goto out_error;
}
if (pipe->Readers == 0) {
prevCounter = pipe->readerCounter;
err = -EINTR;
4b6fc: 74fc moveq #-4,%d2 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
out_error:
pipe_release(pipep, iop);
4b6fe: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4b700: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b702: 4eb9 0004 b2b2 jsr 4b2b2 <pipe_release> <== NOT EXECUTED
return err;
4b708: 508f addql #8,%sp <== NOT EXECUTED
}
4b70a: 2002 movel %d2,%d0 <== NOT EXECUTED
4b70c: 4cee 3c3c ffd8 moveml %fp@(-40),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b712: 4e5e unlk %fp <== NOT EXECUTED
00049aac <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)
{
49aac: 4e56 0000 linkw %fp,#0
49ab0: 2f0b movel %a3,%sp@-
49ab2: 266e 0008 moveal %fp@(8),%a3
49ab6: 2f0a movel %a2,%sp@-
49ab8: 246e 000c moveal %fp@(12),%a2
find_arg *fa = arg;
if ( strcmp( entry->type, fa->type ) != 0 ) {
49abc: 2f12 movel %a2@,%sp@-
49abe: 2f13 movel %a3@,%sp@-
49ac0: 4eb9 0004 d84c jsr 4d84c <strcmp>
49ac6: 508f addql #8,%sp
49ac8: 4a80 tstl %d0
49aca: 660a bnes 49ad6 <find_handler+0x2a> <== NEVER TAKEN
return false;
} else {
fa->mount_h = entry->mount_h;
49acc: 256b 0004 0004 movel %a3@(4),%a2@(4)
return true;
49ad2: 7001 moveq #1,%d0
49ad4: 6002 bras 49ad8 <find_handler+0x2c>
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;
49ad6: 4200 clrb %d0 <== NOT EXECUTED
} else {
fa->mount_h = entry->mount_h;
return true;
}
}
49ad8: 246e fff8 moveal %fp@(-8),%a2
49adc: 266e fffc moveal %fp@(-4),%a3
49ae0: 4e5e unlk %fp <== NOT EXECUTED
00042860 <flockfile>:
#include <stdio.h>
/* This is a non-functional stub */
void flockfile(FILE* file)
{
42860: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
42864: 4e5e unlk %fp <== NOT EXECUTED
00045450 <fork>:
#include <sys/types.h>
#include <errno.h>
#include <rtems/seterr.h>
int fork( void )
{
45450: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
45454: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
4545a: 4e5e unlk %fp <== NOT EXECUTED
#include <errno.h>
#include <rtems/seterr.h>
int fork( void )
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4545c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4545e: 7058 moveq #88,%d0 <== NOT EXECUTED
45460: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
45462: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
000432c4 <fpathconf>:
long fpathconf(
int fd,
int name
)
{
432c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
432c8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
432cc: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
432d0: 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);
432d2: b0b9 0005 dc04 cmpl 5dc04 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
432d8: 641a bccs 432f4 <fpathconf+0x30> <== NOT EXECUTED
iop = rtems_libio_iop(fd);
432da: 2400 movel %d0,%d2 <== NOT EXECUTED
432dc: ed88 lsll #6,%d0 <== NOT EXECUTED
432de: e78a lsll #3,%d2 <== NOT EXECUTED
432e0: 2079 0005 f414 moveal 5f414 <rtems_libio_iops>,%a0 <== NOT EXECUTED
432e6: 9082 subl %d2,%d0 <== NOT EXECUTED
432e8: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
432ea: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
432ee: 0800 0008 btst #8,%d0 <== NOT EXECUTED
432f2: 6610 bnes 43304 <fpathconf+0x40> <== NOT EXECUTED
432f4: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
432fa: 7209 moveq #9,%d1 <== NOT EXECUTED
432fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
432fe: 2081 movel %d1,%a0@ <== NOT EXECUTED
43300: 6000 0088 braw 4338a <fpathconf+0xc6> <== NOT EXECUTED
rtems_libio_check_permissions(iop, LIBIO_FLAGS_READ);
43304: 0800 0001 btst #1,%d0 <== NOT EXECUTED
43308: 6774 beqs 4337e <fpathconf+0xba> <== NOT EXECUTED
/*
* Now process the information request.
*/
the_limits = &iop->pathinfo.mt_entry->pathconf_limits_and_options;
4330a: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED
switch ( name ) {
4330e: 700b moveq #11,%d0 <== NOT EXECUTED
43310: b081 cmpl %d1,%d0 <== NOT EXECUTED
43312: 656a bcss 4337e <fpathconf+0xba> <== NOT EXECUTED
43314: 303b 1a08 movew %pc@(4331e <fpathconf+0x5a>,%d1:l:2),%d0<== NOT EXECUTED
43318: 48c0 extl %d0 <== NOT EXECUTED
4331a: 4efb 0802 jmp %pc@(4331e <fpathconf+0x5a>,%d0:l) <== NOT EXECUTED
4331e: 0018 .short 0x0018 <== NOT EXECUTED
43320: 001e .short 0x001e <== NOT EXECUTED
43322: 0024 .short 0x0024 <== NOT EXECUTED
43324: 002a .short 0x002a <== NOT EXECUTED
43326: 0030 .short 0x0030 <== NOT EXECUTED
43328: 0036 .short 0x0036 <== NOT EXECUTED
4332a: 003c .short 0x003c <== NOT EXECUTED
4332c: 0042 .short 0x0042 <== NOT EXECUTED
4332e: 0048 .short 0x0048 <== NOT EXECUTED
43330: 004e .short 0x004e <== NOT EXECUTED
43332: 0054 .short 0x0054 <== NOT EXECUTED
43334: 005a .short 0x005a <== NOT EXECUTED
case _PC_LINK_MAX:
return_value = the_limits->link_max;
43336: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
break;
4333a: 6050 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_MAX_CANON:
return_value = the_limits->max_canon;
4333c: 2028 003c movel %a0@(60),%d0 <== NOT EXECUTED
break;
43340: 604a bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_MAX_INPUT:
return_value = the_limits->max_input;
43342: 2028 0040 movel %a0@(64),%d0 <== NOT EXECUTED
break;
43346: 6044 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_NAME_MAX:
return_value = the_limits->name_max;
43348: 2028 0044 movel %a0@(68),%d0 <== NOT EXECUTED
break;
4334c: 603e bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_PATH_MAX:
return_value = the_limits->path_max;
4334e: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
break;
43352: 6038 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_PIPE_BUF:
return_value = the_limits->pipe_buf;
43354: 2028 004c movel %a0@(76),%d0 <== NOT EXECUTED
break;
43358: 6032 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_CHOWN_RESTRICTED:
return_value = the_limits->posix_chown_restrictions;
4335a: 2028 0054 movel %a0@(84),%d0 <== NOT EXECUTED
break;
4335e: 602c bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_NO_TRUNC:
return_value = the_limits->posix_no_trunc;
43360: 2028 0058 movel %a0@(88),%d0 <== NOT EXECUTED
break;
43364: 6026 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_VDISABLE:
return_value = the_limits->posix_vdisable;
43366: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED
break;
4336a: 6020 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_ASYNC_IO:
return_value = the_limits->posix_async_io;
4336c: 2028 0050 movel %a0@(80),%d0 <== NOT EXECUTED
break;
43370: 601a bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_PRIO_IO:
return_value = the_limits->posix_prio_io;
43372: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
break;
43376: 6014 bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
case _PC_SYNC_IO:
return_value = the_limits->posix_sync_io;
43378: 2028 0060 movel %a0@(96),%d0 <== NOT EXECUTED
break;
4337c: 600e bras 4338c <fpathconf+0xc8> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4337e: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
43384: 2040 moveal %d0,%a0 <== NOT EXECUTED
43386: 7016 moveq #22,%d0 <== NOT EXECUTED
43388: 2080 movel %d0,%a0@ <== NOT EXECUTED
4338a: 70ff moveq #-1,%d0 <== NOT EXECUTED
break;
}
return return_value;
}
4338c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
43390: 4e5e unlk %fp <== NOT EXECUTED
000427b4 <free>:
#include <stdlib.h>
void free(
void *ptr
)
{
427b4: 4e56 0000 linkw %fp,#0
MSBUMP(free_calls, 1);
427b8: 52b9 0005 d9d8 addql #1,5d9d8 <rtems_malloc_statistics+0xc>
#include <stdlib.h>
void free(
void *ptr
)
{
427be: 2f02 movel %d2,%sp@-
427c0: 242e 0008 movel %fp@(8),%d2
MSBUMP(free_calls, 1);
if ( !ptr )
427c4: 676c beqs 42832 <free+0x7e> <== NEVER TAKEN
return;
/*
* Do not attempt to free memory if in a critical section or ISR.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
427c6: 7003 moveq #3,%d0
427c8: b0b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d0
427ce: 661a bnes 427ea <free+0x36> <== NEVER TAKEN
!malloc_is_system_state_OK() ) {
427d0: 4eb9 0004 2958 jsr 42958 <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()) &&
427d6: 4a00 tstb %d0
427d8: 6610 bnes 427ea <free+0x36> <== ALWAYS TAKEN
!malloc_is_system_state_OK() ) {
malloc_deferred_free(ptr);
427da: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
427de: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
427e2: 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);
427e4: 4ef9 0004 29cc jmp 429cc <malloc_deferred_free> <== NOT EXECUTED
}
/*
* If configured, update the statistics
*/
if ( rtems_malloc_statistics_helpers )
427ea: 2079 0005 c946 moveal 5c946 <rtems_malloc_statistics_helpers>,%a0
427f0: 4a88 tstl %a0
427f2: 670a beqs 427fe <free+0x4a> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_free)(ptr);
427f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
427f6: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
427fa: 4e90 jsr %a0@ <== NOT EXECUTED
427fc: 588f addql #4,%sp <== NOT EXECUTED
if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {
427fe: 2f02 movel %d2,%sp@-
42800: 2f39 0005 c1b0 movel 5c1b0 <RTEMS_Malloc_Heap>,%sp@-
42806: 4eb9 0004 6fa8 jsr 46fa8 <_Protected_heap_Free>
4280c: 508f addql #8,%sp
4280e: 4a00 tstb %d0
42810: 6620 bnes 42832 <free+0x7e> <== ALWAYS TAKEN
printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
ptr,
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
42812: 2079 0005 c1b0 moveal 5c1b0 <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",
42818: 2f28 001c movel %a0@(28),%sp@- <== NOT EXECUTED
4281c: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED
42820: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42822: 4879 0005 b1e4 pea 5b1e4 <rtems_status_assoc+0x168> <== NOT EXECUTED
42828: 4eb9 0004 344c jsr 4344c <printk> <== NOT EXECUTED
4282e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
RTEMS_Malloc_Heap->area_begin,
RTEMS_Malloc_Heap->area_end
);
}
}
42832: 242e fffc movel %fp@(-4),%d2
42836: 4e5e unlk %fp
...
00043b04 <free_user_env>:
* NOTE: this must be called with
* thread dispatching disabled!
*/
static void
free_user_env(void *venv)
{
43b04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43b08: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43b0a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43b0c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_user_env_t *env = (rtems_user_env_t*) venv ;
if (env != &rtems_global_user_env
43b10: b5fc 0005 e204 cmpal #385540,%a2 <== NOT EXECUTED
43b16: 6728 beqs 43b40 <free_user_env+0x3c> <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
43b18: 486a 0004 pea %a2@(4) <== NOT EXECUTED
43b1c: 47f9 0004 2be4 lea 42be4 <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
43b22: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_filesystem_freenode( &env->root_directory);
43b24: 486a 0018 pea %a2@(24) <== NOT EXECUTED
43b28: 4e93 jsr %a3@ <== NOT EXECUTED
free(env);
}
}
43b2a: 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);
43b2e: 508f addql #8,%sp <== NOT EXECUTED
43b30: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
43b34: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
43b38: 4e5e unlk %fp <== NOT EXECUTED
&& --env->refcnt <= 0
#endif
) {
rtems_filesystem_freenode( &env->current_directory);
rtems_filesystem_freenode( &env->root_directory);
free(env);
43b3a: 4ef9 0004 2bf8 jmp 42bf8 <free> <== NOT EXECUTED
}
}
43b40: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
43b44: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
43b48: 4e5e unlk %fp <== NOT EXECUTED
00059c00 <fstat>:
int fstat(
int fd,
struct stat *sbuf
)
{
59c00: 4e56 0000 linkw %fp,#0
59c04: 202e 0008 movel %fp@(8),%d0
59c08: 2f0a movel %a2,%sp@-
59c0a: 2f02 movel %d2,%sp@-
59c0c: 242e 000c movel %fp@(12),%d2
rtems_libio_t *iop;
/*
* Check to see if we were passed a valid pointer.
*/
if ( !sbuf )
59c10: 660e bnes 59c20 <fstat+0x20> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
59c12: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59c18: 720e moveq #14,%d1 <== NOT EXECUTED
59c1a: 2040 moveal %d0,%a0 <== NOT EXECUTED
59c1c: 2081 movel %d1,%a0@ <== NOT EXECUTED
59c1e: 6064 bras 59c84 <fstat+0x84> <== NOT EXECUTED
/*
* Now process the stat() request.
*/
iop = rtems_libio_iop( fd );
59c20: b0b9 0005 c1a4 cmpl 5c1a4 <rtems_libio_number_iops>,%d0
59c26: 641c bccs 59c44 <fstat+0x44> <== NEVER TAKEN
59c28: 2200 movel %d0,%d1
59c2a: ed88 lsll #6,%d0
59c2c: e789 lsll #3,%d1
59c2e: 2479 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a2
59c34: 9081 subl %d1,%d0
59c36: d5c0 addal %d0,%a2
rtems_libio_check_fd( fd );
rtems_libio_check_is_open(iop);
59c38: 202a 0014 movel %a2@(20),%d0
59c3c: 0280 0000 0100 andil #256,%d0
59c42: 660e bnes 59c52 <fstat+0x52> <== ALWAYS TAKEN
59c44: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59c4a: 2040 moveal %d0,%a0 <== NOT EXECUTED
59c4c: 7009 moveq #9,%d0 <== NOT EXECUTED
59c4e: 2080 movel %d0,%a0@ <== NOT EXECUTED
59c50: 6032 bras 59c84 <fstat+0x84> <== NOT EXECUTED
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( sbuf, 0, sizeof(struct stat) );
59c52: 4878 0046 pea 46 <DBL_MANT_DIG+0x11>
59c56: 42a7 clrl %sp@-
59c58: 2f02 movel %d2,%sp@-
59c5a: 4eb9 0004 d268 jsr 4d268 <memset>
return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );
59c60: 206a 0020 moveal %a2@(32),%a0
59c64: 45ea 0018 lea %a2@(24),%a2
59c68: 4fef 000c lea %sp@(12),%sp
59c6c: 2d42 000c movel %d2,%fp@(12)
}
59c70: 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 );
59c74: 2d4a 0008 movel %a2,%fp@(8)
}
59c78: 246e fffc moveal %fp@(-4),%a2
59c7c: 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 );
59c7e: 2268 0018 moveal %a0@(24),%a1
59c82: 4ed1 jmp %a1@
}
59c84: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
59c88: 70ff moveq #-1,%d0 <== NOT EXECUTED
59c8a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
59c8e: 4e5e unlk %fp <== NOT EXECUTED
000434dc <fsync>:
#include <rtems/seterr.h>
int fsync(
int fd
)
{
434dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
434e0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
434e4: b0b9 0005 dc04 cmpl 5dc04 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
434ea: 641a bccs 43506 <fsync+0x2a> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
434ec: 2200 movel %d0,%d1 <== NOT EXECUTED
434ee: ed88 lsll #6,%d0 <== NOT EXECUTED
434f0: e789 lsll #3,%d1 <== NOT EXECUTED
434f2: 2079 0005 f414 moveal 5f414 <rtems_libio_iops>,%a0 <== NOT EXECUTED
434f8: 9081 subl %d1,%d0 <== NOT EXECUTED
434fa: d1c0 addal %d0,%a0 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
434fc: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
43500: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43504: 660e bnes 43514 <fsync+0x38> <== NOT EXECUTED
43506: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
4350c: 7209 moveq #9,%d1 <== NOT EXECUTED
4350e: 2040 moveal %d0,%a0 <== NOT EXECUTED
43510: 2081 movel %d1,%a0@ <== NOT EXECUTED
43512: 6022 bras 43536 <fsync+0x5a> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
43514: 44c0 movew %d0,%ccr <== NOT EXECUTED
43516: 670e beqs 43526 <fsync+0x4a> <== NOT EXECUTED
43518: 4eb9 0004 d8b8 jsr 4d8b8 <__errno> <== NOT EXECUTED
4351e: 2040 moveal %d0,%a0 <== NOT EXECUTED
43520: 7016 moveq #22,%d0 <== NOT EXECUTED
43522: 2080 movel %d0,%a0@ <== NOT EXECUTED
43524: 6010 bras 43536 <fsync+0x5a> <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
43526: 2268 0020 moveal %a0@(32),%a1 <== NOT EXECUTED
4352a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4352e: 4e5e unlk %fp <== NOT EXECUTED
/*
* Now process the fsync().
*/
return (*iop->pathinfo.handlers->fsync_h)( iop );
43530: 2269 0028 moveal %a1@(40),%a1 <== NOT EXECUTED
43534: 4ed1 jmp %a1@ <== NOT EXECUTED
}
43536: 70ff moveq #-1,%d0 <== NOT EXECUTED
43538: 4e5e unlk %fp <== NOT EXECUTED
0004978c <ftruncate>:
int ftruncate(
int fd,
off_t length
)
{
4978c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
49790: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
49794: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49796: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_libio_t *iop;
rtems_filesystem_location_info_t loc;
rtems_libio_check_fd( fd );
49798: b0b9 0005 c1a4 cmpl 5c1a4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4979e: 641c bccs 497bc <ftruncate+0x30> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
497a0: 2200 movel %d0,%d1 <== NOT EXECUTED
497a2: ed88 lsll #6,%d0 <== NOT EXECUTED
497a4: e789 lsll #3,%d1 <== NOT EXECUTED
497a6: 2479 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a2 <== NOT EXECUTED
497ac: 9081 subl %d1,%d0 <== NOT EXECUTED
497ae: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
497b0: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
497b4: 0280 0000 0100 andil #256,%d0 <== NOT EXECUTED
497ba: 660e bnes 497ca <ftruncate+0x3e> <== NOT EXECUTED
497bc: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
497c2: 7409 moveq #9,%d2 <== NOT EXECUTED
497c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
497c6: 2082 movel %d2,%a0@ <== NOT EXECUTED
497c8: 6050 bras 4981a <ftruncate+0x8e> <== NOT EXECUTED
/*
* Make sure we are not working on a directory
*/
loc = iop->pathinfo;
497ca: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
497ce: 240e movel %fp,%d2 <== NOT EXECUTED
497d0: 486a 0018 pea %a2@(24) <== NOT EXECUTED
497d4: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
497da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
497dc: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY )
497e2: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
497e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
497e8: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
497ec: 4e90 jsr %a0@ <== NOT EXECUTED
497ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
497f2: 7201 moveq #1,%d1 <== NOT EXECUTED
497f4: b280 cmpl %d0,%d1 <== NOT EXECUTED
497f6: 660e bnes 49806 <ftruncate+0x7a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
497f8: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
497fe: 7215 moveq #21,%d1 <== NOT EXECUTED
49800: 2040 moveal %d0,%a0 <== NOT EXECUTED
49802: 2081 movel %d1,%a0@ <== NOT EXECUTED
49804: 6014 bras 4981a <ftruncate+0x8e> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
49806: 7004 moveq #4,%d0 <== NOT EXECUTED
49808: c0aa 0014 andl %a2@(20),%d0 <== NOT EXECUTED
4980c: 6610 bnes 4981e <ftruncate+0x92> <== NOT EXECUTED
4980e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49814: 2040 moveal %d0,%a0 <== NOT EXECUTED
49816: 7016 moveq #22,%d0 <== NOT EXECUTED
49818: 2080 movel %d0,%a0@ <== NOT EXECUTED
4981a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4981c: 6018 bras 49836 <ftruncate+0xaa> <== NOT EXECUTED
return (*iop->pathinfo.handlers->ftruncate_h)( iop, length );
4981e: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
49822: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49826: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4982a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4982c: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED
49830: 4e90 jsr %a0@ <== NOT EXECUTED
49832: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
49836: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
4983a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4983e: 4e5e unlk %fp <== NOT EXECUTED
...
00042904 <ftrylockfile>:
#include <rtems/seterr.h>
#include <errno.h>
/* This is a non-functional stub */
int ftrylockfile(FILE* file)
{
42904: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTSUP );
42908: 4eb9 0004 c974 jsr 4c974 <__errno> <== NOT EXECUTED
}
4290e: 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 );
42910: 2040 moveal %d0,%a0 <== NOT EXECUTED
}
42912: 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 );
42914: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
}
0004291c <funlockfile>:
#include <stdio.h>
/* This is a non-functional stub */
void funlockfile(FILE* file)
{
4291c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
42920: 4e5e unlk %fp <== NOT EXECUTED
000429dc <getchark>:
#include <rtems.h>
#include <rtems/bspIo.h>
int getchark(void)
{
429dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( BSP_poll_char )
429e0: 2279 0005 d488 moveal 5d488 <BSP_poll_char>,%a1 <== NOT EXECUTED
429e6: 4a89 tstl %a1 <== NOT EXECUTED
429e8: 6704 beqs 429ee <getchark+0x12> <== NOT EXECUTED
return (*BSP_poll_char)();
return -1;
}
429ea: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/bspIo.h>
int getchark(void)
{
if ( BSP_poll_char )
return (*BSP_poll_char)();
429ec: 4ed1 jmp %a1@ <== NOT EXECUTED
return -1;
}
429ee: 70ff moveq #-1,%d0 <== NOT EXECUTED
429f0: 4e5e unlk %fp <== NOT EXECUTED
0005b300 <getdents>:
int getdents(
int dd_fd,
char *dd_buf,
int dd_len
)
{
5b300: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
5b304: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5b308: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b30a: 2f02 movel %d2,%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 );
5b30c: b0b9 0005 e134 cmpl 5e134 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
5b312: 6412 bccs 5b326 <getdents+0x26> <== NOT EXECUTED
5b314: 2200 movel %d0,%d1 <== NOT EXECUTED
5b316: ed88 lsll #6,%d0 <== NOT EXECUTED
5b318: e789 lsll #3,%d1 <== NOT EXECUTED
5b31a: 2479 0005 fa54 moveal 5fa54 <rtems_libio_iops>,%a2 <== NOT EXECUTED
5b320: 9081 subl %d1,%d0 <== NOT EXECUTED
5b322: d5c0 addal %d0,%a2 <== NOT EXECUTED
5b324: 6002 bras 5b328 <getdents+0x28> <== NOT EXECUTED
5b326: 95ca subal %a2,%a2 <== NOT EXECUTED
/*
* Make sure we are working on a directory
*/
loc = iop->pathinfo;
5b328: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
5b32c: 240e movel %fp,%d2 <== NOT EXECUTED
5b32e: 486a 0018 pea %a2@(24) <== NOT EXECUTED
5b332: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
5b338: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b33a: 4eb9 0004 e100 jsr 4e100 <memcpy> <== NOT EXECUTED
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY )
5b340: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
5b344: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b346: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
5b34a: 4e90 jsr %a0@ <== NOT EXECUTED
5b34c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5b350: 7201 moveq #1,%d1 <== NOT EXECUTED
5b352: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b354: 6710 beqs 5b366 <getdents+0x66> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
5b356: 4eb9 0004 d854 jsr 4d854 <__errno> <== NOT EXECUTED
5b35c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5b35e: 7014 moveq #20,%d0 <== NOT EXECUTED
5b360: 2080 movel %d0,%a0@ <== NOT EXECUTED
5b362: 70ff moveq #-1,%d0 <== NOT EXECUTED
5b364: 6018 bras 5b37e <getdents+0x7e> <== 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 );
5b366: 206a 0020 moveal %a2@(32),%a0 <== NOT EXECUTED
5b36a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b36e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5b372: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b374: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
5b378: 4e90 jsr %a0@ <== NOT EXECUTED
5b37a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
5b37e: 242e ffe4 movel %fp@(-28),%d2 <== NOT EXECUTED
5b382: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
5b386: 4e5e unlk %fp <== NOT EXECUTED
...
00042d18 <getgid>:
/*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
gid_t getgid( void )
{
42d18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Gid;
}
42d1c: 2079 0005 dcc0 moveal 5dcc0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
42d22: 4e5e unlk %fp <== NOT EXECUTED
42d24: 3028 0034 movew %a0@(52),%d0 <== NOT EXECUTED
...
000431fc <getgr_r>:
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
431fc: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
43200: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ <== NOT EXECUTED
43204: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
43208: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4320c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
43210: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED
43214: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
FILE *fp;
int match;
init_etc_passwd_group();
43218: 4eb9 0004 311c jsr 4311c <init_etc_passwd_group> <== NOT EXECUTED
if ((fp = fopen("/etc/group", "r")) == NULL)
4321e: 4879 0005 d365 pea 5d365 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43224: 4879 0005 cae8 pea 5cae8 <rtems_status_assoc+0x21a> <== NOT EXECUTED
4322a: 4eb9 0004 def4 jsr 4def4 <fopen> <== NOT EXECUTED
43230: 508f addql #8,%sp <== NOT EXECUTED
43232: 2400 movel %d0,%d2 <== NOT EXECUTED
43234: 660e bnes 43244 <getgr_r+0x48> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43236: 4eb9 0004 d6a8 jsr 4d6a8 <__errno> <== NOT EXECUTED
4323c: 7216 moveq #22,%d1 <== NOT EXECUTED
4323e: 2040 moveal %d0,%a0 <== NOT EXECUTED
43240: 2081 movel %d1,%a0@ <== NOT EXECUTED
43242: 6068 bras 432ac <getgr_r+0xb0> <== NOT EXECUTED
for(;;) {
if (!scangr(fp, grp, buffer, bufsize))
43244: 49fa fcf4 lea %pc@(42f3a <scangr>),%a4 <== NOT EXECUTED
goto error_einval;
if (name) {
match = (strcmp(grp->gr_name, name) == 0);
43248: 47f9 0004 f5f0 lea 4f5f0 <strcmp>,%a3 <== NOT EXECUTED
if ((fp = fopen("/etc/group", "r")) == NULL)
rtems_set_errno_and_return_minus_one( EINVAL );
for(;;) {
if (!scangr(fp, grp, buffer, bufsize))
4324e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
43250: 2f05 movel %d5,%sp@- <== NOT EXECUTED
43252: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43254: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43256: 4e94 jsr %a4@ <== NOT EXECUTED
43258: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4325c: 4a80 tstl %d0 <== NOT EXECUTED
4325e: 6736 beqs 43296 <getgr_r+0x9a> <== NOT EXECUTED
goto error_einval;
if (name) {
43260: 4a83 tstl %d3 <== NOT EXECUTED
43262: 670e beqs 43272 <getgr_r+0x76> <== NOT EXECUTED
match = (strcmp(grp->gr_name, name) == 0);
43264: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43266: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
43268: 4e93 jsr %a3@ <== NOT EXECUTED
4326a: 508f addql #8,%sp <== NOT EXECUTED
4326c: 4a80 tstl %d0 <== NOT EXECUTED
4326e: 57c0 seq %d0 <== NOT EXECUTED
43270: 600a bras 4327c <getgr_r+0x80> <== NOT EXECUTED
} else {
match = (grp->gr_gid == gid);
43272: 4280 clrl %d0 <== NOT EXECUTED
43274: 302a 0008 movew %a2@(8),%d0 <== NOT EXECUTED
43278: b880 cmpl %d0,%d4 <== NOT EXECUTED
4327a: 57c0 seq %d0 <== NOT EXECUTED
4327c: 49c0 extbl %d0 <== NOT EXECUTED
4327e: 4480 negl %d0 <== NOT EXECUTED
}
if (match) {
43280: 67cc beqs 4324e <getgr_r+0x52> <== NOT EXECUTED
fclose(fp);
43282: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43284: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
*result = grp;
4328a: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
return 0;
4328e: 588f addql #4,%sp <== NOT EXECUTED
43290: 4280 clrl %d0 <== NOT EXECUTED
match = (grp->gr_gid == gid);
}
if (match) {
fclose(fp);
*result = grp;
43292: 208a movel %a2,%a0@ <== NOT EXECUTED
return 0;
43294: 6018 bras 432ae <getgr_r+0xb2> <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
43296: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43298: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4329e: 4eb9 0004 d6a8 jsr 4d6a8 <__errno> <== NOT EXECUTED
432a4: 588f addql #4,%sp <== NOT EXECUTED
432a6: 2040 moveal %d0,%a0 <== NOT EXECUTED
432a8: 7016 moveq #22,%d0 <== NOT EXECUTED
432aa: 2080 movel %d0,%a0@ <== NOT EXECUTED
432ac: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
432ae: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
432b4: 4e5e unlk %fp <== NOT EXECUTED
00043572 <getgrent>:
struct group *getgrent(void)
{
43572: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (group_fp == NULL)
43576: 2039 0005 eac0 movel 5eac0 <group_fp>,%d0 <== NOT EXECUTED
4357c: 6728 beqs 435a6 <getgrent+0x34> <== NOT EXECUTED
return NULL;
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
4357e: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43582: 4879 0005 ead2 pea 5ead2 <grbuf> <== NOT EXECUTED
43588: 4879 0005 eac4 pea 5eac4 <grent> <== NOT EXECUTED
4358e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43590: 4eba f9a8 jsr %pc@(42f3a <scangr>) <== NOT EXECUTED
43594: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return NULL;
43598: 4a80 tstl %d0 <== NOT EXECUTED
4359a: 56c0 sne %d0 <== NOT EXECUTED
4359c: 49c0 extbl %d0 <== NOT EXECUTED
4359e: 0280 0005 eac4 andil #387780,%d0 <== NOT EXECUTED
435a4: 6002 bras 435a8 <getgrent+0x36> <== NOT EXECUTED
}
struct group *getgrent(void)
{
if (group_fp == NULL)
return NULL;
435a6: 4280 clrl %d0 <== NOT EXECUTED
if (!scangr(group_fp, &grent, grbuf, sizeof grbuf))
return NULL;
return &grent;
}
435a8: 4e5e unlk %fp <== NOT EXECUTED
00043538 <getgrgid>:
gid_t gid
)
{
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
43538: 4280 clrl %d0 <== NOT EXECUTED
}
struct group *getgrgid(
gid_t gid
)
{
4353a: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
4353e: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
43542: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43546: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
4354a: 4879 0005 ead2 pea 5ead2 <grbuf> <== NOT EXECUTED
43550: 4879 0005 eac4 pea 5eac4 <grent> <== NOT EXECUTED
43556: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43558: 4eb9 0004 3512 jsr 43512 <getgrgid_r> <== NOT EXECUTED
4355e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43562: 4a80 tstl %d0 <== NOT EXECUTED
43564: 6606 bnes 4356c <getgrgid+0x34> <== NOT EXECUTED
return NULL;
return p;
43566: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4356a: 6002 bras 4356e <getgrgid+0x36> <== NOT EXECUTED
)
{
struct group *p;
if(getgrgid_r(gid, &grent, grbuf, sizeof grbuf, &p))
return NULL;
4356c: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
4356e: 4e5e unlk %fp <== NOT EXECUTED
00043512 <getgrgid_r>:
char *buffer,
size_t bufsize,
struct group **result
)
{
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
43512: 4280 clrl %d0 <== NOT EXECUTED
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
43514: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getgr_r(NULL, gid, grp, buffer, bufsize, result);
43518: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4351c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
43520: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43524: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43528: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
4352c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4352e: 42a7 clrl %sp@- <== NOT EXECUTED
43530: 4eba fcca jsr %pc@(431fc <getgr_r>) <== NOT EXECUTED
}
43534: 4e5e unlk %fp <== NOT EXECUTED
000434dc <getgrnam>:
struct group *getgrnam(
const char *name
)
{
434dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
434e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
434e4: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
434e8: 4879 0005 ead2 pea 5ead2 <grbuf> <== NOT EXECUTED
434ee: 4879 0005 eac4 pea 5eac4 <grent> <== NOT EXECUTED
434f4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
434f8: 4eb9 0004 34ba jsr 434ba <getgrnam_r> <== NOT EXECUTED
434fe: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43502: 4a80 tstl %d0 <== NOT EXECUTED
43504: 6606 bnes 4350c <getgrnam+0x30> <== NOT EXECUTED
return NULL;
return p;
43506: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
4350a: 6002 bras 4350e <getgrnam+0x32> <== NOT EXECUTED
)
{
struct group *p;
if(getgrnam_r(name, &grent, grbuf, sizeof grbuf, &p))
return NULL;
4350c: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
4350e: 4e5e unlk %fp <== NOT EXECUTED
000434ba <getgrnam_r>:
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result
)
{
434ba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getgr_r(name, 0, grp, buffer, bufsize, result);
434be: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
434c2: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
434c6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
434ca: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
434ce: 42a7 clrl %sp@- <== NOT EXECUTED
434d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
434d4: 4eba fd26 jsr %pc@(431fc <getgr_r>) <== NOT EXECUTED
}
434d8: 4e5e unlk %fp <== NOT EXECUTED
00042d2c <getgroups>:
int gidsetsize __attribute__((unused)),
gid_t grouplist[] __attribute__((unused))
)
{
return 0; /* no supplemental group ids */
}
42d2c: 4280 clrl %d0 <== NOT EXECUTED
int getgroups(
int gidsetsize __attribute__((unused)),
gid_t grouplist[] __attribute__((unused))
)
{
42d2e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0; /* no supplemental group ids */
}
42d32: 4e5e unlk %fp <== NOT EXECUTED
...
00045288 <getitimer>:
int getitimer(
int which,
struct itimerval *value
)
{
45288: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !value )
4528c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
45290: 660e bnes 452a0 <getitimer+0x18> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
45292: 4eb9 0004 cf50 jsr 4cf50 <__errno> <== NOT EXECUTED
45298: 2040 moveal %d0,%a0 <== NOT EXECUTED
4529a: 700e moveq #14,%d0 <== NOT EXECUTED
4529c: 2080 movel %d0,%a0@ <== NOT EXECUTED
4529e: 6020 bras 452c0 <getitimer+0x38> <== NOT EXECUTED
452a0: 41f9 0004 cf50 lea 4cf50 <__errno>,%a0 <== NOT EXECUTED
switch ( which ) {
452a6: 7002 moveq #2,%d0 <== NOT EXECUTED
452a8: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
452ac: 650a bcss 452b8 <getitimer+0x30> <== NOT EXECUTED
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
452ae: 4e90 jsr %a0@ <== NOT EXECUTED
452b0: 7258 moveq #88,%d1 <== NOT EXECUTED
452b2: 2040 moveal %d0,%a0 <== NOT EXECUTED
452b4: 2081 movel %d1,%a0@ <== NOT EXECUTED
452b6: 6008 bras 452c0 <getitimer+0x38> <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
452b8: 4e90 jsr %a0@ <== NOT EXECUTED
452ba: 2040 moveal %d0,%a0 <== NOT EXECUTED
452bc: 7016 moveq #22,%d0 <== NOT EXECUTED
452be: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
452c0: 70ff moveq #-1,%d0 <== NOT EXECUTED
452c2: 4e5e unlk %fp <== NOT EXECUTED
...
00042d90 <getlogin>:
* 4.2.4 Get User Name, P1003.1b-1993, p. 87
*
* NOTE: P1003.1c/D10, p. 49 adds getlogin_r().
*/
char *getlogin( void )
{
42d90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
(void) getlogin_r( _POSIX_types_Getlogin_buffer, LOGIN_NAME_MAX );
42d94: 2079 0005 dcc0 moveal 5dcc0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
42d9a: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
42d9e: 41e8 003a lea %a0@(58),%a0 <== NOT EXECUTED
42da2: 2f08 movel %a0,%sp@- <== NOT EXECUTED
42da4: 4eb9 0004 2d38 jsr 42d38 <getlogin_r> <== NOT EXECUTED
return _POSIX_types_Getlogin_buffer;
}
42daa: 2039 0005 dcc0 movel 5dcc0 <rtems_current_user_env>,%d0 <== NOT EXECUTED
42db0: 4e5e unlk %fp <== NOT EXECUTED
42db2: 0680 0000 003a addil #58,%d0 <== NOT EXECUTED
...
00042d38 <getlogin_r>:
*/
int getlogin_r(
char *name,
size_t namesize
)
{
42d38: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42d3c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42d3e: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
struct passwd *pw;
char *pname;
if ( !name )
42d42: 673e beqs 42d82 <getlogin_r+0x4a> <== NOT EXECUTED
return EFAULT;
if ( namesize < LOGIN_NAME_MAX )
42d44: 7008 moveq #8,%d0 <== NOT EXECUTED
42d46: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED
42d4a: 643a bccs 42d86 <getlogin_r+0x4e> <== NOT EXECUTED
return ERANGE;
/* Set the pointer to a default name */
pname = "";
pw = getpwuid(getuid());
42d4c: 4eb9 0004 3684 jsr 43684 <getuid> <== NOT EXECUTED
42d52: 3f00 movew %d0,%sp@- <== NOT EXECUTED
42d54: 4267 clrw %sp@- <== NOT EXECUTED
42d56: 4eb9 0004 33f2 jsr 433f2 <getpwuid> <== NOT EXECUTED
if ( pw )
42d5c: 588f addql #4,%sp <== NOT EXECUTED
if ( namesize < LOGIN_NAME_MAX )
return ERANGE;
/* Set the pointer to a default name */
pname = "";
42d5e: 223c 0005 cbd2 movel #379858,%d1 <== NOT EXECUTED
pw = getpwuid(getuid());
if ( pw )
42d64: 4a80 tstl %d0 <== NOT EXECUTED
42d66: 6704 beqs 42d6c <getlogin_r+0x34> <== NOT EXECUTED
pname = pw->pw_name;
42d68: 2040 moveal %d0,%a0 <== NOT EXECUTED
42d6a: 2210 movel %a0@,%d1 <== NOT EXECUTED
strncpy( name, pname, LOGIN_NAME_MAX );
42d6c: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
42d70: 2f01 movel %d1,%sp@- <== NOT EXECUTED
42d72: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42d74: 4eb9 0004 fb60 jsr 4fb60 <strncpy> <== NOT EXECUTED
return 0;
42d7a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
42d7e: 4280 clrl %d0 <== NOT EXECUTED
42d80: 6006 bras 42d88 <getlogin_r+0x50> <== NOT EXECUTED
{
struct passwd *pw;
char *pname;
if ( !name )
return EFAULT;
42d82: 700e moveq #14,%d0 <== NOT EXECUTED
42d84: 6002 bras 42d88 <getlogin_r+0x50> <== NOT EXECUTED
if ( namesize < LOGIN_NAME_MAX )
return ERANGE;
42d86: 7022 moveq #34,%d0 <== NOT EXECUTED
if ( pw )
pname = pw->pw_name;
strncpy( name, pname, LOGIN_NAME_MAX );
return 0;
}
42d88: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42d8c: 4e5e unlk %fp <== NOT EXECUTED
000429d0 <getpagesize>:
* return a reasonable value.
*/
int getpagesize(void)
{
return PAGE_SIZE;
}
429d0: 203c 0000 1000 movel #4096,%d0 <== NOT EXECUTED
* This is not a functional version but the SPARC backend for at least
* gcc 2.8.1 plus gnat 3.13p and gcc 3.0.1 require it to be there and
* return a reasonable value.
*/
int getpagesize(void)
{
429d6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return PAGE_SIZE;
}
429da: 4e5e unlk %fp <== NOT EXECUTED
...
00042dbc <getpgrp>:
* This always succeeds and returns the process group id. For rtems,
* this will always be the local node;
*/
return _Objects_Local_node;
}
42dbc: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.3.1 Get Process Group IDs, P1003.1b-1993, p. 89
*/
pid_t getpgrp( void )
{
42dbe: 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;
}
42dc2: 4e5e unlk %fp <== NOT EXECUTED
...
00059cac <getpid>:
*/
pid_t getpid( void )
{
return _Objects_Local_node;
}
59cac: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getpid( void )
{
59cae: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Local_node;
}
59cb2: 4e5e unlk %fp <== NOT EXECUTED
00042de8 <getppid>:
*
* 4.1.1 Get Process and Parent Process IDs, P1003.1b-1993, p. 83
*/
pid_t getppid( void )
{
42de8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Ppid;
}
42dec: 2039 0005 eabc movel 5eabc <_POSIX_types_Ppid>,%d0 <== NOT EXECUTED
42df2: 4e5e unlk %fp <== NOT EXECUTED
...
000432b8 <getpw_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
432b8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
432bc: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@ <== NOT EXECUTED
432c0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
432c4: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
432c8: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
432cc: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED
432d0: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
FILE *fp;
int match;
init_etc_passwd_group();
432d4: 4eb9 0004 311c jsr 4311c <init_etc_passwd_group> <== NOT EXECUTED
if ((fp = fopen("/etc/passwd", "r")) == NULL)
432da: 4879 0005 d365 pea 5d365 <_global_impure_ptr+0xbf> <== NOT EXECUTED
432e0: 4879 0005 ca73 pea 5ca73 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
432e6: 4eb9 0004 def4 jsr 4def4 <fopen> <== NOT EXECUTED
432ec: 508f addql #8,%sp <== NOT EXECUTED
432ee: 2400 movel %d0,%d2 <== NOT EXECUTED
432f0: 660e bnes 43300 <getpw_r+0x48> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
432f2: 4eb9 0004 d6a8 jsr 4d6a8 <__errno> <== NOT EXECUTED
432f8: 7616 moveq #22,%d3 <== NOT EXECUTED
432fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
432fc: 2083 movel %d3,%a0@ <== NOT EXECUTED
432fe: 6068 bras 43368 <getpw_r+0xb0> <== NOT EXECUTED
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
43300: 49fa fd32 lea %pc@(43034 <scanpw>),%a4 <== NOT EXECUTED
goto error_einval;
if (name) {
match = (strcmp(pwd->pw_name, name) == 0);
43304: 47f9 0004 f5f0 lea 4f5f0 <strcmp>,%a3 <== NOT EXECUTED
if ((fp = fopen("/etc/passwd", "r")) == NULL)
rtems_set_errno_and_return_minus_one( EINVAL );
for(;;) {
if (!scanpw(fp, pwd, buffer, bufsize))
4330a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4330c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4330e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43310: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43312: 4e94 jsr %a4@ <== NOT EXECUTED
43314: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
43318: 4a80 tstl %d0 <== NOT EXECUTED
4331a: 6736 beqs 43352 <getpw_r+0x9a> <== NOT EXECUTED
goto error_einval;
if (name) {
4331c: 4a83 tstl %d3 <== NOT EXECUTED
4331e: 670e beqs 4332e <getpw_r+0x76> <== NOT EXECUTED
match = (strcmp(pwd->pw_name, name) == 0);
43320: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43322: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
43324: 4e93 jsr %a3@ <== NOT EXECUTED
43326: 508f addql #8,%sp <== NOT EXECUTED
43328: 4a80 tstl %d0 <== NOT EXECUTED
4332a: 57c0 seq %d0 <== NOT EXECUTED
4332c: 600a bras 43338 <getpw_r+0x80> <== NOT EXECUTED
} else {
match = (pwd->pw_uid == uid);
4332e: 4280 clrl %d0 <== NOT EXECUTED
43330: 302a 0008 movew %a2@(8),%d0 <== NOT EXECUTED
43334: b880 cmpl %d0,%d4 <== NOT EXECUTED
43336: 57c0 seq %d0 <== NOT EXECUTED
43338: 49c0 extbl %d0 <== NOT EXECUTED
4333a: 4480 negl %d0 <== NOT EXECUTED
}
if (match) {
4333c: 67cc beqs 4330a <getpw_r+0x52> <== NOT EXECUTED
fclose(fp);
4333e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43340: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
*result = pwd;
43346: 206e 001c moveal %fp@(28),%a0 <== NOT EXECUTED
return 0;
4334a: 588f addql #4,%sp <== NOT EXECUTED
4334c: 4280 clrl %d0 <== NOT EXECUTED
match = (pwd->pw_uid == uid);
}
if (match) {
fclose(fp);
*result = pwd;
4334e: 208a movel %a2,%a0@ <== NOT EXECUTED
return 0;
43350: 6018 bras 4336a <getpw_r+0xb2> <== NOT EXECUTED
}
}
error_einval:
fclose(fp);
43352: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
43354: 7416 moveq #22,%d2 <== NOT EXECUTED
*result = pwd;
return 0;
}
}
error_einval:
fclose(fp);
43356: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
4335c: 4eb9 0004 d6a8 jsr 4d6a8 <__errno> <== NOT EXECUTED
43362: 588f addql #4,%sp <== NOT EXECUTED
43364: 2040 moveal %d0,%a0 <== NOT EXECUTED
43366: 2082 movel %d2,%a0@ <== NOT EXECUTED
43368: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4336a: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
43370: 4e5e unlk %fp <== NOT EXECUTED
0004342c <getpwent>:
struct passwd *getpwent(void)
{
4342c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (passwd_fp == NULL)
43430: 2039 0005 eb9a movel 5eb9a <passwd_fp>,%d0 <== NOT EXECUTED
43436: 6728 beqs 43460 <getpwent+0x34> <== NOT EXECUTED
return NULL;
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
43438: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
4343c: 4879 0005 ebba pea 5ebba <pwbuf> <== NOT EXECUTED
43442: 4879 0005 eb9e pea 5eb9e <pwent> <== NOT EXECUTED
43448: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4344a: 4eba fbe8 jsr %pc@(43034 <scanpw>) <== NOT EXECUTED
4344e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return NULL;
43452: 4a80 tstl %d0 <== NOT EXECUTED
43454: 56c0 sne %d0 <== NOT EXECUTED
43456: 49c0 extbl %d0 <== NOT EXECUTED
43458: 0280 0005 eb9e andil #387998,%d0 <== NOT EXECUTED
4345e: 6002 bras 43462 <getpwent+0x36> <== NOT EXECUTED
}
struct passwd *getpwent(void)
{
if (passwd_fp == NULL)
return NULL;
43460: 4280 clrl %d0 <== NOT EXECUTED
if (!scanpw(passwd_fp, &pwent, pwbuf, sizeof pwbuf))
return NULL;
return &pwent;
}
43462: 4e5e unlk %fp <== NOT EXECUTED
00043396 <getpwnam>:
struct passwd *getpwnam(
const char *name
)
{
43396: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct passwd *p;
if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))
4339a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4339e: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
433a2: 4879 0005 ebba pea 5ebba <pwbuf> <== NOT EXECUTED
433a8: 4879 0005 eb9e pea 5eb9e <pwent> <== NOT EXECUTED
433ae: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
433b2: 4eb9 0004 3374 jsr 43374 <getpwnam_r> <== NOT EXECUTED
433b8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
433bc: 4a80 tstl %d0 <== NOT EXECUTED
433be: 6606 bnes 433c6 <getpwnam+0x30> <== NOT EXECUTED
return NULL;
return p;
433c0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
433c4: 6002 bras 433c8 <getpwnam+0x32> <== NOT EXECUTED
)
{
struct passwd *p;
if(getpwnam_r(name, &pwent, pwbuf, sizeof pwbuf, &p))
return NULL;
433c6: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
433c8: 4e5e unlk %fp <== NOT EXECUTED
00043374 <getpwnam_r>:
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
43374: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpw_r(name, 0, pwd, buffer, bufsize, result);
43378: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4337c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
43380: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
43384: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
43388: 42a7 clrl %sp@- <== NOT EXECUTED
4338a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4338e: 4eba ff28 jsr %pc@(432b8 <getpw_r>) <== NOT EXECUTED
}
43392: 4e5e unlk %fp <== NOT EXECUTED
000433f2 <getpwuid>:
uid_t uid
)
{
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
433f2: 4280 clrl %d0 <== NOT EXECUTED
}
struct passwd *getpwuid(
uid_t uid
)
{
433f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
433f8: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
433fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43400: 4878 00c8 pea c8 <DBL_MANT_DIG+0x93> <== NOT EXECUTED
43404: 4879 0005 ebba pea 5ebba <pwbuf> <== NOT EXECUTED
4340a: 4879 0005 eb9e pea 5eb9e <pwent> <== NOT EXECUTED
43410: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43412: 4eb9 0004 33cc jsr 433cc <getpwuid_r> <== NOT EXECUTED
43418: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4341c: 4a80 tstl %d0 <== NOT EXECUTED
4341e: 6606 bnes 43426 <getpwuid+0x34> <== NOT EXECUTED
return NULL;
return p;
43420: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
43424: 6002 bras 43428 <getpwuid+0x36> <== NOT EXECUTED
)
{
struct passwd *p;
if(getpwuid_r(uid, &pwent, pwbuf, sizeof pwbuf, &p))
return NULL;
43426: 4280 clrl %d0 <== NOT EXECUTED
return p;
}
43428: 4e5e unlk %fp <== NOT EXECUTED
000433cc <getpwuid_r>:
char *buffer,
size_t bufsize,
struct passwd **result
)
{
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
433cc: 4280 clrl %d0 <== NOT EXECUTED
struct passwd *pwd,
char *buffer,
size_t bufsize,
struct passwd **result
)
{
433ce: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpw_r(NULL, uid, pwd, buffer, bufsize, result);
433d2: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
433d6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
433da: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
433de: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
433e2: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
433e6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
433e8: 42a7 clrl %sp@- <== NOT EXECUTED
433ea: 4eba fecc jsr %pc@(432b8 <getpw_r>) <== NOT EXECUTED
}
433ee: 4e5e unlk %fp <== NOT EXECUTED
00042a14 <getrusage>:
#include <rtems.h>
#include <rtems/seterr.h>
int getrusage(int who, struct rusage *usage)
{
42a14: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
42a18: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
42a1c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
42a20: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
struct timespec uptime;
struct timeval rtime;
if ( !usage )
42a24: 4a8a tstl %a2 <== NOT EXECUTED
42a26: 660e bnes 42a36 <getrusage+0x22> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
42a28: 4eb9 0004 cb2c jsr 4cb2c <__errno> <== NOT EXECUTED
42a2e: 740e moveq #14,%d2 <== NOT EXECUTED
42a30: 2040 moveal %d0,%a0 <== NOT EXECUTED
42a32: 2082 movel %d2,%a0@ <== NOT EXECUTED
42a34: 6052 bras 42a88 <getrusage+0x74> <== 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) {
42a36: 4a80 tstl %d0 <== NOT EXECUTED
42a38: 6630 bnes 42a6a <getrusage+0x56> <== NOT EXECUTED
rtems_clock_get_uptime( &uptime );
42a3a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
rtime.tv_sec = uptime.tv_sec;
rtime.tv_usec = uptime.tv_nsec / 1000;
42a3e: 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 );
42a44: 4eb9 0004 5240 jsr 45240 <rtems_clock_get_uptime> <== NOT EXECUTED
rtime.tv_sec = uptime.tv_sec;
rtime.tv_usec = uptime.tv_nsec / 1000;
42a4a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
usage->ru_utime = rtime;
usage->ru_stime = rtime;
return 0;
42a4e: 588f addql #4,%sp <== NOT EXECUTED
*/
if (who == RUSAGE_SELF) {
rtems_clock_get_uptime( &uptime );
rtime.tv_sec = uptime.tv_sec;
rtime.tv_usec = uptime.tv_nsec / 1000;
42a50: 4c43 0800 remsl %d3,%d0,%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;
42a54: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
rtime.tv_usec = uptime.tv_nsec / 1000;
42a58: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
42a5c: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
usage->ru_utime = rtime;
usage->ru_stime = rtime;
return 0;
42a60: 4280 clrl %d0 <== NOT EXECUTED
*/
if (who == RUSAGE_SELF) {
rtems_clock_get_uptime( &uptime );
rtime.tv_sec = uptime.tv_sec;
rtime.tv_usec = uptime.tv_nsec / 1000;
42a62: 2481 movel %d1,%a2@ <== NOT EXECUTED
42a64: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
usage->ru_utime = rtime;
usage->ru_stime = rtime;
return 0;
42a68: 6020 bras 42a8a <getrusage+0x76> <== NOT EXECUTED
42a6a: 41f9 0004 cb2c lea 4cb2c <__errno>,%a0 <== NOT EXECUTED
}
if (who == RUSAGE_CHILDREN) {
42a70: 72ff moveq #-1,%d1 <== NOT EXECUTED
42a72: b280 cmpl %d0,%d1 <== NOT EXECUTED
42a74: 660a bnes 42a80 <getrusage+0x6c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
42a76: 4e90 jsr %a0@ <== NOT EXECUTED
42a78: 7258 moveq #88,%d1 <== NOT EXECUTED
42a7a: 2040 moveal %d0,%a0 <== NOT EXECUTED
42a7c: 2081 movel %d1,%a0@ <== NOT EXECUTED
42a7e: 6008 bras 42a88 <getrusage+0x74> <== NOT EXECUTED
}
rtems_set_errno_and_return_minus_one( EINVAL );
42a80: 4e90 jsr %a0@ <== NOT EXECUTED
42a82: 2040 moveal %d0,%a0 <== NOT EXECUTED
42a84: 7016 moveq #22,%d0 <== NOT EXECUTED
42a86: 2080 movel %d0,%a0@ <== NOT EXECUTED
42a88: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
42a8a: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
42a90: 4e5e unlk %fp <== NOT EXECUTED
0004283c <gettimeofday>:
*/
int gettimeofday(
struct timeval *tp,
void * __tz __attribute__((unused))
)
{
4283c: 4e56 fff8 linkw %fp,#-8
42840: 2f0a movel %a2,%sp@-
42842: 246e 0008 moveal %fp@(8),%a2
42846: 2f02 movel %d2,%sp@-
/* struct timezone* tzp = (struct timezone*) __tz; */
if ( !tp )
42848: 4a8a tstl %a2
4284a: 6610 bnes 4285c <gettimeofday+0x20> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EFAULT );
4284c: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42852: 2040 moveal %d0,%a0 <== NOT EXECUTED
42854: 700e moveq #14,%d0 <== NOT EXECUTED
42856: 2080 movel %d0,%a0@ <== NOT EXECUTED
42858: 70ff moveq #-1,%d0 <== NOT EXECUTED
4285a: 6032 bras 4288e <gettimeofday+0x52> <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
4285c: 203c 0000 0700 movel #1792,%d0
42862: 40c2 movew %sr,%d2
42864: 8082 orl %d2,%d0
42866: 46c0 movew %d0,%sr
_TOD_Get( &now );
42868: 486e fff8 pea %fp@(-8)
4286c: 4eb9 0004 6384 jsr 46384 <_TOD_Get>
_ISR_Enable(level);
42872: 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;
42874: 243c 0000 03e8 movel #1000,%d2
* 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;
4287a: 588f addql #4,%sp
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
4287c: 202e fffc movel %fp@(-4),%d0
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
42880: 4c42 0800 remsl %d2,%d0,%d0
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
42884: 24ae fff8 movel %fp@(-8),%a2@
time->tv_usec = useconds;
42888: 2540 0004 movel %d0,%a2@(4)
4288c: 4280 clrl %d0
}
4288e: 242e fff0 movel %fp@(-16),%d2
42892: 246e fff4 moveal %fp@(-12),%a2
42896: 4e5e unlk %fp <== NOT EXECUTED
00043684 <getuid>:
/*
* 4.2.1 Get Real User, Effective User, Ral Group, and Effective Group IDs,
* P1003.1b-1993, p. 84
*/
uid_t getuid( void )
{
43684: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_types_Uid;
}
43688: 2079 0005 dcc0 moveal 5dcc0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4368e: 4e5e unlk %fp <== NOT EXECUTED
43690: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
...
0004bf3c <imfs_dir_close>:
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4bf3c: 4280 clrl %d0 <== NOT EXECUTED
*/
int imfs_dir_close(
rtems_libio_t *iop
)
{
4bf3e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* and associated memory. At present the imfs_dir_close simply
* returns a successful completion status.
*/
return 0;
}
4bf42: 4e5e unlk %fp <== NOT EXECUTED
0004bfc4 <imfs_dir_fstat>:
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4bfc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4bfc8: 4280 clrl %d0 <== NOT EXECUTED
4bfca: 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;
4bfcc: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4bfd0: 2f0a movel %a2,%sp@- <== 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;
4bfd2: 2251 moveal %a1@,%a1 <== NOT EXECUTED
int imfs_dir_fstat(
rtems_filesystem_location_info_t *loc,
struct stat *buf
)
{
4bfd4: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4bfd8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
buf->st_ino = the_jnode->st_ino;
4bfda: 2169 0034 0008 movel %a1@(52),%a0@(8) <== NOT EXECUTED
buf->st_mode = the_jnode->st_mode;
4bfe0: 2169 002e 000c movel %a1@(46),%a0@(12) <== NOT EXECUTED
buf->st_nlink = the_jnode->st_nlink;
4bfe6: 3169 0032 0010 movew %a1@(50),%a0@(16) <== NOT EXECUTED
buf->st_uid = the_jnode->st_uid;
4bfec: 3169 0038 0012 movew %a1@(56),%a0@(18) <== NOT EXECUTED
buf->st_gid = the_jnode->st_gid;
4bff2: 3169 003a 0014 movew %a1@(58),%a0@(20) <== NOT EXECUTED
buf->st_rdev = 0ll;
buf->st_blksize = 0;
buf->st_blocks = 0;
buf->st_atime = the_jnode->stat_atime;
4bff8: 2169 003c 0026 movel %a1@(60),%a0@(38) <== NOT EXECUTED
buf->st_mtime = the_jnode->stat_mtime;
4bffe: 2169 0040 002e movel %a1@(64),%a0@(46) <== NOT EXECUTED
buf->st_ctime = the_jnode->stat_ctime;
4c004: 2169 0044 0036 movel %a1@(68),%a0@(54) <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) loc->node_access;
buf->st_dev = 0ll;
4c00a: 2080 movel %d0,%a0@ <== NOT EXECUTED
4c00c: 2141 0004 movel %d1,%a0@(4) <== 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;
4c010: 2140 0016 movel %d0,%a0@(22) <== NOT EXECUTED
4c014: 2141 001a movel %d1,%a0@(26) <== NOT EXECUTED
buf->st_blksize = 0;
4c018: 42a8 003e clrl %a0@(62) <== 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;
4c01c: 2140 001e movel %d0,%a0@(30) <== NOT EXECUTED
4c020: 2141 0022 movel %d1,%a0@(34) <== 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;
4c024: 42a8 0042 clrl %a0@(66) <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4c028: 2469 004c moveal %a1@(76),%a2 <== 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));
4c02c: 43e9 0050 lea %a1@(80),%a1 <== 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 );
4c030: 6018 bras 4c04a <imfs_dir_fstat+0x86> <== NOT EXECUTED
!rtems_chain_is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
4c032: 2452 moveal %a2@,%a2 <== NOT EXECUTED
buf->st_size = buf->st_size + sizeof( struct dirent );
4c034: 4281 clrl %d1 <== NOT EXECUTED
4c036: 243c 0000 0110 movel #272,%d2 <== NOT EXECUTED
4c03c: d5a8 0022 addl %d2,%a0@(34) <== NOT EXECUTED
4c040: 2028 001e movel %a0@(30),%d0 <== NOT EXECUTED
4c044: d181 addxl %d1,%d0 <== NOT EXECUTED
4c046: 2140 001e movel %d0,%a0@(30) <== 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 );
4c04a: b3ca cmpal %a2,%a1 <== NOT EXECUTED
4c04c: 66e4 bnes 4c032 <imfs_dir_fstat+0x6e> <== NOT EXECUTED
buf->st_size = buf->st_size + sizeof( struct dirent );
}
return 0;
}
4c04e: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c050: 4280 clrl %d0 <== NOT EXECUTED
4c052: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4c054: 4e5e unlk %fp <== NOT EXECUTED
0004bf46 <imfs_dir_lseek>:
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
switch( whence ) {
4bf46: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_off64_t imfs_dir_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4bf48: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4bf4c: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
4bf50: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch( whence ) {
4bf54: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED
4bf58: 654c bcss 4bfa6 <imfs_dir_lseek+0x60> <== NOT EXECUTED
case SEEK_SET: /* absolute move from the start of the file */
case SEEK_CUR: /* relative move */
iop->offset = (iop->offset/sizeof(struct dirent)) *
4bf5a: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
4bf5e: 7a1c moveq #28,%d5 <== NOT EXECUTED
4bf60: 42a7 clrl %sp@- <== NOT EXECUTED
4bf62: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4bf66: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4bf6a: 4eb9 0005 87e8 jsr 587e8 <__divdi3> <== NOT EXECUTED
4bf70: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4bf74: 2600 movel %d0,%d3 <== NOT EXECUTED
4bf76: 2801 movel %d1,%d4 <== NOT EXECUTED
4bf78: eaac lsrl %d5,%d4 <== NOT EXECUTED
4bf7a: 2004 movel %d4,%d0 <== NOT EXECUTED
4bf7c: e98b lsll #4,%d3 <== NOT EXECUTED
4bf7e: e989 lsll #4,%d1 <== NOT EXECUTED
4bf80: 8083 orl %d3,%d0 <== NOT EXECUTED
4bf82: 2801 movel %d1,%d4 <== NOT EXECUTED
4bf84: eaac lsrl %d5,%d4 <== NOT EXECUTED
4bf86: 2400 movel %d0,%d2 <== NOT EXECUTED
4bf88: 2601 movel %d1,%d3 <== NOT EXECUTED
4bf8a: e98a lsll #4,%d2 <== NOT EXECUTED
4bf8c: e98b lsll #4,%d3 <== NOT EXECUTED
4bf8e: 8484 orl %d4,%d2 <== NOT EXECUTED
4bf90: 2800 movel %d0,%d4 <== NOT EXECUTED
4bf92: 2a01 movel %d1,%d5 <== NOT EXECUTED
4bf94: da83 addl %d3,%d5 <== NOT EXECUTED
4bf96: d982 addxl %d2,%d4 <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
4bf98: 4281 clrl %d1 <== NOT EXECUTED
4bf9a: 4282 clrl %d2 <== 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)) *
4bf9c: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED
4bfa0: 2545 0010 movel %d5,%a2@(16) <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
break;
}
return 0;
4bfa4: 6010 bras 4bfb6 <imfs_dir_lseek+0x70> <== 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 );
4bfa6: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4bfac: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bfae: 7016 moveq #22,%d0 <== NOT EXECUTED
4bfb0: 72ff moveq #-1,%d1 <== NOT EXECUTED
4bfb2: 74ff moveq #-1,%d2 <== NOT EXECUTED
4bfb4: 2080 movel %d0,%a0@ <== NOT EXECUTED
break;
}
return 0;
}
4bfb6: 2001 movel %d1,%d0 <== NOT EXECUTED
4bfb8: 2202 movel %d2,%d1 <== NOT EXECUTED
4bfba: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
4bfc0: 4e5e unlk %fp <== NOT EXECUTED
0004be24 <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 )
4be24: 7001 moveq #1,%d0 <== NOT EXECUTED
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4be26: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4be2a: 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 )
4be2e: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
4be32: b0a9 0048 cmpl %a1@(72),%d0 <== NOT EXECUTED
4be36: 6610 bnes 4be48 <imfs_dir_open+0x24> <== NOT EXECUTED
return -1; /* It wasn't a directory --> return error */
iop->offset = 0;
4be38: 4280 clrl %d0 <== NOT EXECUTED
4be3a: 4281 clrl %d1 <== NOT EXECUTED
4be3c: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
4be40: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
return 0;
4be44: 4280 clrl %d0 <== NOT EXECUTED
4be46: 6002 bras 4be4a <imfs_dir_open+0x26> <== 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 */
4be48: 70ff moveq #-1,%d0 <== NOT EXECUTED
iop->offset = 0;
return 0;
}
4be4a: 4e5e unlk %fp <== NOT EXECUTED
0004be4e <imfs_dir_read>:
ssize_t imfs_dir_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4be4e: 4e56 fec4 linkw %fp,#-316 <== NOT EXECUTED
4be52: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
4be56: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4be5a: 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;
4be5e: 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 );
4be62: 2c08 movel %a0,%d6 <== NOT EXECUTED
4be64: 0686 0000 0050 addil #80,%d6 <== NOT EXECUTED
IMFS_create_orphan( the_jnode );
IMFS_check_node_remove( the_jnode );
return 0;
}
4be6a: 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 ) )
4be6e: bc8a cmpl %a2,%d6 <== NOT EXECUTED
4be70: 6700 00ba beqw 4bf2c <imfs_dir_read+0xde> <== 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);
4be74: 243c 0000 0110 movel #272,%d2 <== 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 );
4be7a: 280e movel %fp,%d4 <== NOT EXECUTED
4be7c: 0684 ffff fef0 addil #-272,%d4 <== NOT EXECUTED
4be82: 2a44 moveal %d4,%a5 <== NOT EXECUTED
/* -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 (
current_entry = 0;
4be84: 4283 clrl %d3 <== 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 );
4be86: 4bed 0010 lea %a5@(16),%a5 <== NOT EXECUTED
4be8a: 49f9 0004 d8f8 lea 4d8f8 <strcpy>,%a4 <== 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);
4be90: 4c42 0000 remul %d2,%d0,%d0 <== 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;
4be94: 2a2b 0010 movel %a3@(16),%d5 <== 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);
4be98: 2200 movel %d0,%d1 <== NOT EXECUTED
4be9a: e188 lsll #8,%d0 <== NOT EXECUTED
4be9c: e989 lsll #4,%d1 <== NOT EXECUTED
return 0;
/* Move to the first of the desired directory entries */
the_node = rtems_chain_first( the_chain );
bytes_transferred = 0;
4be9e: 4242 clrw %d2 <== NOT EXECUTED
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);
4bea0: d081 addl %d1,%d0 <== NOT EXECUTED
4bea2: d085 addl %d5,%d0 <== NOT EXECUTED
4bea4: 2d40 feec movel %d0,%fp@(-276) <== NOT EXECUTED
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4bea8: 607a bras 4bf24 <imfs_dir_read+0xd6> <== 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 ) ){
4beaa: bc8a cmpl %a2,%d6 <== NOT EXECUTED
4beac: 6700 0082 beqw 4bf30 <imfs_dir_read+0xe2> <== NOT EXECUTED
/* entry in the read */
return bytes_transferred; /* Indicate that there are no more */
/* entries to return */
}
if( current_entry >= first_entry ) {
4beb0: ba83 cmpl %d3,%d5 <== NOT EXECUTED
4beb2: 6e68 bgts 4bf1c <imfs_dir_read+0xce> <== 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;
4beb4: 2d6a 0034 fef0 movel %a2@(52),%fp@(-272) <== NOT EXECUTED
/* entries to return */
}
if( current_entry >= first_entry ) {
/* Move the entry to the return buffer */
tmp_dirent.d_off = current_entry;
4beba: 2d43 fef8 movel %d3,%fp@(-264) <== NOT EXECUTED
4bebe: 5bc7 smi %d7 <== NOT EXECUTED
4bec0: 49c7 extbl %d7 <== NOT EXECUTED
4bec2: 2d47 fef4 movel %d7,%fp@(-268) <== NOT EXECUTED
tmp_dirent.d_reclen = sizeof( struct dirent );
4bec6: 307c 0110 moveaw #272,%a0 <== 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 );
4beca: 2e0a movel %a2,%d7 <== NOT EXECUTED
4becc: 0687 0000 000c addil #12,%d7 <== NOT EXECUTED
4bed2: 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 );
4bed4: 3d48 fefc movew %a0,%fp@(-260) <== 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 );
4bed8: 4eb9 0004 dda4 jsr 4dda4 <strlen> <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4bede: 2e87 movel %d7,%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 );
4bee0: 3d40 fefe movew %d0,%fp@(-258) <== NOT EXECUTED
strcpy( tmp_dirent.d_name, the_jnode->name );
4bee4: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4bee6: 4e94 jsr %a4@ <== NOT EXECUTED
memcpy(
4bee8: 4878 0110 pea 110 <DBL_MANT_DIG+0xdb> <== NOT EXECUTED
4beec: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4bef0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4bef2: 4870 2800 pea %a0@(00000000,%d2: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 );
4bef6: 0682 0000 0110 addil #272,%d2 <== 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(
4befc: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== 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 );
4bf02: 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);
4bf06: 4280 clrl %d0 <== NOT EXECUTED
4bf08: 223c 0000 0110 movel #272,%d1 <== NOT EXECUTED
4bf0e: d3ab 0010 addl %d1,%a3@(16) <== NOT EXECUTED
4bf12: 2e2b 000c movel %a3@(12),%d7 <== NOT EXECUTED
4bf16: df80 addxl %d0,%d7 <== NOT EXECUTED
4bf18: 2747 000c movel %d7,%a3@(12) <== NOT EXECUTED
bytes_transferred = bytes_transferred + sizeof( struct dirent );
}
the_node = the_node->next;
4bf1c: 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(
4bf1e: 0683 0000 0110 addil #272,%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);
/* The directory was not empty so try to move to the desired entry in chain*/
for (
4bf24: b6ae feec cmpl %fp@(-276),%d3 <== NOT EXECUTED
4bf28: 6d80 blts 4beaa <imfs_dir_read+0x5c> <== NOT EXECUTED
4bf2a: 6004 bras 4bf30 <imfs_dir_read+0xe2> <== 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;
4bf2c: 4280 clrl %d0 <== NOT EXECUTED
4bf2e: 6002 bras 4bf32 <imfs_dir_read+0xe4> <== NOT EXECUTED
for (
current_entry = 0;
current_entry < last_entry;
current_entry = current_entry + sizeof(struct dirent) ){
if ( rtems_chain_is_tail( the_chain, the_node ) ){
4bf30: 2002 movel %d2,%d0 <== NOT EXECUTED
the_node = the_node->next;
}
/* Success */
return bytes_transferred;
}
4bf32: 4cee 3cfc fec4 moveml %fp@(-316),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4bf38: 4e5e unlk %fp <== NOT EXECUTED
0004c058 <imfs_dir_rmnod>:
int imfs_dir_rmnod(
rtems_filesystem_location_info_t *parent_pathloc, /* IN */
rtems_filesystem_location_info_t *pathloc /* IN */
)
{
4c058: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c05c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4c060: 2f0a movel %a2,%sp@- <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
4c062: 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 );
4c064: 200a movel %a2,%d0 <== NOT EXECUTED
4c066: 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 ) )
4c06c: b0aa 004c cmpl %a2@(76),%d0 <== NOT EXECUTED
4c070: 670e beqs 4c080 <imfs_dir_rmnod+0x28> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTEMPTY );
4c072: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4c078: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c07a: 705a moveq #90,%d0 <== NOT EXECUTED
4c07c: 2080 movel %d0,%a0@ <== NOT EXECUTED
4c07e: 6016 bras 4c096 <imfs_dir_rmnod+0x3e> <== NOT EXECUTED
/*
* You cannot remove the file system root node.
*/
if ( pathloc->mt_entry->mt_fs_root.node_access == pathloc->node_access )
4c080: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
4c084: b5e8 001c cmpal %a0@(28),%a2 <== NOT EXECUTED
4c088: 6610 bnes 4c09a <imfs_dir_rmnod+0x42> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
4c08a: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4c090: 7210 moveq #16,%d1 <== NOT EXECUTED
4c092: 2040 moveal %d0,%a0 <== NOT EXECUTED
4c094: 2081 movel %d1,%a0@ <== NOT EXECUTED
4c096: 70ff moveq #-1,%d0 <== NOT EXECUTED
4c098: 601a bras 4c0b4 <imfs_dir_rmnod+0x5c> <== NOT EXECUTED
/*
* You cannot remove a mountpoint.
*/
if ( the_jnode->info.directory.mt_fs != NULL )
4c09a: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED
4c09e: 66ea bnes 4c08a <imfs_dir_rmnod+0x32> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
IMFS_create_orphan( the_jnode );
4c0a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c0a2: 4eb9 0004 9474 jsr 49474 <IMFS_create_orphan> <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4c0a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c0aa: 4eb9 0004 94b8 jsr 494b8 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
4c0b0: 508f addql #8,%sp <== NOT EXECUTED
4c0b2: 4280 clrl %d0 <== NOT EXECUTED
}
4c0b4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4c0b8: 4e5e unlk %fp <== NOT EXECUTED
0004311c <init_etc_passwd_group>:
/*
* Initialize useable but dummy databases
*/
void init_etc_passwd_group(void)
{
4311c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43120: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43122: 2f02 movel %d2,%sp@- <== NOT EXECUTED
FILE *fp;
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
43124: 4a39 0005 ec82 tstb 5ec82 <etc_passwd_initted.6402> <== NOT EXECUTED
4312a: 6600 00c4 bnew 431f0 <init_etc_passwd_group+0xd4> <== NOT EXECUTED
return;
etc_passwd_initted = 1;
mkdir("/etc", 0777);
4312e: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
/*
* Initialize /etc/passwd
*/
if ((fp = fopen("/etc/passwd", "r")) != NULL) {
43132: 45f9 0004 def4 lea 4def4 <fopen>,%a2 <== NOT EXECUTED
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
return;
etc_passwd_initted = 1;
mkdir("/etc", 0777);
43138: 4879 0005 ca6e pea 5ca6e <rtems_status_assoc+0x1a0> <== NOT EXECUTED
FILE *fp;
static char etc_passwd_initted = 0;
if (etc_passwd_initted)
return;
etc_passwd_initted = 1;
4313e: 7001 moveq #1,%d0 <== NOT EXECUTED
43140: 13c0 0005 ec82 moveb %d0,5ec82 <etc_passwd_initted.6402> <== NOT EXECUTED
mkdir("/etc", 0777);
43146: 4eb9 0004 392c jsr 4392c <mkdir> <== NOT EXECUTED
/*
* Initialize /etc/passwd
*/
if ((fp = fopen("/etc/passwd", "r")) != NULL) {
4314c: 4879 0005 d365 pea 5d365 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43152: 4879 0005 ca73 pea 5ca73 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
43158: 4e92 jsr %a2@ <== NOT EXECUTED
4315a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4315e: 4a80 tstl %d0 <== NOT EXECUTED
43160: 670c beqs 4316e <init_etc_passwd_group+0x52> <== NOT EXECUTED
fclose(fp);
43162: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43164: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
4316a: 588f addql #4,%sp <== NOT EXECUTED
4316c: 602e bras 4319c <init_etc_passwd_group+0x80> <== NOT EXECUTED
}
else if ((fp = fopen("/etc/passwd", "w")) != NULL) {
4316e: 4879 0005 ca7f pea 5ca7f <rtems_status_assoc+0x1b1> <== NOT EXECUTED
43174: 4879 0005 ca73 pea 5ca73 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
4317a: 4e92 jsr %a2@ <== NOT EXECUTED
4317c: 508f addql #8,%sp <== NOT EXECUTED
4317e: 2400 movel %d0,%d2 <== NOT EXECUTED
43180: 671a beqs 4319c <init_etc_passwd_group+0x80> <== NOT EXECUTED
fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"
43182: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43184: 4879 0005 ca81 pea 5ca81 <rtems_status_assoc+0x1b3> <== NOT EXECUTED
4318a: 4eb9 0004 dfd4 jsr 4dfd4 <fputs> <== NOT EXECUTED
"rtems:*:1:1:RTEMS Application::/:/bin/sh\n"
"tty:!:2:2:tty owner::/:/bin/false\n" );
fclose(fp);
43190: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43192: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
43198: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Initialize /etc/group
*/
if ((fp = fopen("/etc/group", "r")) != NULL) {
4319c: 4879 0005 d365 pea 5d365 <_global_impure_ptr+0xbf> <== NOT EXECUTED
431a2: 45f9 0004 def4 lea 4def4 <fopen>,%a2 <== NOT EXECUTED
431a8: 4879 0005 cae8 pea 5cae8 <rtems_status_assoc+0x21a> <== NOT EXECUTED
431ae: 4e92 jsr %a2@ <== NOT EXECUTED
431b0: 508f addql #8,%sp <== NOT EXECUTED
431b2: 4a80 tstl %d0 <== NOT EXECUTED
431b4: 670c beqs 431c2 <init_etc_passwd_group+0xa6> <== NOT EXECUTED
fclose(fp);
431b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
431b8: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
431be: 588f addql #4,%sp <== NOT EXECUTED
431c0: 602e bras 431f0 <init_etc_passwd_group+0xd4> <== NOT EXECUTED
}
else if ((fp = fopen("/etc/group", "w")) != NULL) {
431c2: 4879 0005 ca7f pea 5ca7f <rtems_status_assoc+0x1b1> <== NOT EXECUTED
431c8: 4879 0005 cae8 pea 5cae8 <rtems_status_assoc+0x21a> <== NOT EXECUTED
431ce: 4e92 jsr %a2@ <== NOT EXECUTED
431d0: 508f addql #8,%sp <== NOT EXECUTED
431d2: 2400 movel %d0,%d2 <== NOT EXECUTED
431d4: 671a beqs 431f0 <init_etc_passwd_group+0xd4> <== NOT EXECUTED
fprintf( fp, "root:x:0:root\n"
431d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
431d8: 4879 0005 caf3 pea 5caf3 <rtems_status_assoc+0x225> <== NOT EXECUTED
431de: 4eb9 0004 dfd4 jsr 4dfd4 <fputs> <== NOT EXECUTED
"rtems:x:1:rtems\n"
"tty:x:2:tty\n" );
fclose(fp);
431e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
431e6: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
431ec: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
431f0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
431f4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
431f8: 4e5e unlk %fp <== NOT EXECUTED
000455c4 <ioctl>:
int ioctl(
int fd,
ioctl_command_t command,
...
)
{
455c4: 4e56 0000 linkw %fp,#0
455c8: 202e 0008 movel %fp@(8),%d0
va_list ap;
rtems_status_code rc;
rtems_libio_t *iop;
void *buffer;
rtems_libio_check_fd( fd );
455cc: b0b9 0005 f954 cmpl 5f954 <rtems_libio_number_iops>,%d0
455d2: 641c bccs 455f0 <ioctl+0x2c> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
455d4: 2200 movel %d0,%d1
455d6: ed88 lsll #6,%d0
455d8: e789 lsll #3,%d1
455da: 2079 0006 1230 moveal 61230 <rtems_libio_iops>,%a0
455e0: 9081 subl %d1,%d0
455e2: d1c0 addal %d0,%a0
rtems_libio_check_is_open(iop);
455e4: 2028 0014 movel %a0@(20),%d0
455e8: 0280 0000 0100 andil #256,%d0
455ee: 6610 bnes 45600 <ioctl+0x3c> <== ALWAYS TAKEN
455f0: 4eb9 0005 0294 jsr 50294 <__errno> <== NOT EXECUTED
455f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
455f8: 7009 moveq #9,%d0 <== NOT EXECUTED
455fa: 2080 movel %d0,%a0@ <== NOT EXECUTED
455fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
455fe: 6018 bras 45618 <ioctl+0x54> <== NOT EXECUTED
buffer = va_arg(ap, void *);
/*
* Now process the ioctl().
*/
rc = (*iop->pathinfo.handlers->ioctl_h)( iop, command, buffer );
45600: 2268 0020 moveal %a0@(32),%a1
45604: 2f2e 0010 movel %fp@(16),%sp@-
45608: 2f2e 000c movel %fp@(12),%sp@-
4560c: 2f08 movel %a0,%sp@-
4560e: 2069 0010 moveal %a1@(16),%a0
45612: 4e90 jsr %a0@
va_end( ap );
return rc;
45614: 4fef 000c lea %sp@(12),%sp
}
45618: 4e5e unlk %fp <== NOT EXECUTED
000442ae <iproc>:
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
442ae: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
442b2: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
442b6: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
442ba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (tty->termios.c_iflag & ISTRIP)
442be: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
/*
* Process a single input character
*/
static int
iproc (unsigned char c, struct rtems_termios_tty *tty)
{
442c2: 1401 moveb %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & ISTRIP)
442c4: 0800 0005 btst #5,%d0 <== NOT EXECUTED
442c8: 6704 beqs 442ce <iproc+0x20> <== NOT EXECUTED
c &= 0x7f;
442ca: 747f moveq #127,%d2 <== NOT EXECUTED
442cc: c481 andl %d1,%d2 <== NOT EXECUTED
if (tty->termios.c_iflag & IUCLC)
442ce: 0800 0009 btst #9,%d0 <== NOT EXECUTED
442d2: 6724 beqs 442f8 <iproc+0x4a> <== NOT EXECUTED
c = tolower (c);
442d4: 2079 0005 c484 moveal 5c484 <__ctype_ptr__>,%a0 <== NOT EXECUTED
442da: 7603 moveq #3,%d3 <== NOT EXECUTED
442dc: 0282 0000 00ff andil #255,%d2 <== NOT EXECUTED
442e2: 1230 2801 moveb %a0@(00000001,%d2:l),%d1 <== NOT EXECUTED
442e6: 49c1 extbl %d1 <== NOT EXECUTED
442e8: c283 andl %d3,%d1 <== NOT EXECUTED
442ea: 163c 0001 moveb #1,%d3 <== NOT EXECUTED
442ee: b681 cmpl %d1,%d3 <== NOT EXECUTED
442f0: 6606 bnes 442f8 <iproc+0x4a> <== NOT EXECUTED
442f2: 0682 0000 0020 addil #32,%d2 <== NOT EXECUTED
if (c == '\r') {
442f8: 4281 clrl %d1 <== NOT EXECUTED
442fa: 1202 moveb %d2,%d1 <== NOT EXECUTED
442fc: 760d moveq #13,%d3 <== NOT EXECUTED
442fe: b681 cmpl %d1,%d3 <== NOT EXECUTED
44300: 6610 bnes 44312 <iproc+0x64> <== NOT EXECUTED
if (tty->termios.c_iflag & IGNCR)
44302: 4a00 tstb %d0 <== NOT EXECUTED
44304: 6d00 0104 bltw 4440a <iproc+0x15c> <== NOT EXECUTED
return 0;
if (tty->termios.c_iflag & ICRNL)
44308: 0800 0008 btst #8,%d0 <== NOT EXECUTED
4430c: 671a beqs 44328 <iproc+0x7a> <== NOT EXECUTED
c = '\n';
4430e: 740a moveq #10,%d2 <== NOT EXECUTED
44310: 6016 bras 44328 <iproc+0x7a> <== NOT EXECUTED
} else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {
44312: 760a moveq #10,%d3 <== NOT EXECUTED
44314: b681 cmpl %d1,%d3 <== NOT EXECUTED
44316: 660a bnes 44322 <iproc+0x74> <== NOT EXECUTED
44318: 0800 0006 btst #6,%d0 <== NOT EXECUTED
4431c: 670a beqs 44328 <iproc+0x7a> <== NOT EXECUTED
c = '\r';
4431e: 740d moveq #13,%d2 <== NOT EXECUTED
44320: 6006 bras 44328 <iproc+0x7a> <== NOT EXECUTED
}
if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {
44322: 4a02 tstb %d2 <== NOT EXECUTED
44324: 6700 00a8 beqw 443ce <iproc+0x120> <== NOT EXECUTED
44328: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
4432c: 0801 0001 btst #1,%d1 <== NOT EXECUTED
44330: 6700 009c beqw 443ce <iproc+0x120> <== NOT EXECUTED
if (c == tty->termios.c_cc[VERASE]) {
44334: 4283 clrl %d3 <== NOT EXECUTED
44336: 162a 0043 moveb %a2@(67),%d3 <== NOT EXECUTED
4433a: 4280 clrl %d0 <== NOT EXECUTED
4433c: 1002 moveb %d2,%d0 <== NOT EXECUTED
4433e: b680 cmpl %d0,%d3 <== NOT EXECUTED
44340: 6604 bnes 44346 <iproc+0x98> <== NOT EXECUTED
erase (tty, 0);
44342: 42a7 clrl %sp@- <== NOT EXECUTED
44344: 600e bras 44354 <iproc+0xa6> <== NOT EXECUTED
return 0;
}
else if (c == tty->termios.c_cc[VKILL]) {
44346: 4283 clrl %d3 <== NOT EXECUTED
44348: 162a 0044 moveb %a2@(68),%d3 <== NOT EXECUTED
4434c: b680 cmpl %d0,%d3 <== NOT EXECUTED
4434e: 6610 bnes 44360 <iproc+0xb2> <== NOT EXECUTED
erase (tty, 1);
44350: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44354: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44356: 4eba fdc4 jsr %pc@(4411c <erase>) <== NOT EXECUTED
return 0;
4435a: 508f addql #8,%sp <== NOT EXECUTED
4435c: 6000 00ac braw 4440a <iproc+0x15c> <== NOT EXECUTED
}
else if (c == tty->termios.c_cc[VEOF]) {
44360: 4283 clrl %d3 <== NOT EXECUTED
44362: 162a 0045 moveb %a2@(69),%d3 <== NOT EXECUTED
44366: b680 cmpl %d0,%d3 <== NOT EXECUTED
44368: 6700 009c beqw 44406 <iproc+0x158> <== NOT EXECUTED
return 1;
} else if (c == '\n') {
4436c: 760a moveq #10,%d3 <== NOT EXECUTED
4436e: b680 cmpl %d0,%d3 <== NOT EXECUTED
44370: 6622 bnes 44394 <iproc+0xe6> <== NOT EXECUTED
if (tty->termios.c_lflag & (ECHO | ECHONL))
44372: 7048 moveq #72,%d0 <== NOT EXECUTED
44374: c280 andl %d0,%d1 <== NOT EXECUTED
44376: 670c beqs 44384 <iproc+0xd6> <== NOT EXECUTED
echo (c, tty);
44378: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4437a: 4878 000a pea a <LASTO> <== NOT EXECUTED
4437e: 4eba fd14 jsr %pc@(44094 <echo>) <== NOT EXECUTED
44382: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
44384: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
44388: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
4438c: 720a moveq #10,%d1 <== NOT EXECUTED
4438e: 1181 0800 moveb %d1,%a0@(00000000,%d0:l) <== NOT EXECUTED
44392: 6032 bras 443c6 <iproc+0x118> <== NOT EXECUTED
return 1;
} else if ((c == tty->termios.c_cc[VEOL]) ||
44394: 4283 clrl %d3 <== NOT EXECUTED
44396: 162a 004c moveb %a2@(76),%d3 <== NOT EXECUTED
4439a: b680 cmpl %d0,%d3 <== NOT EXECUTED
4439c: 670a beqs 443a8 <iproc+0xfa> <== NOT EXECUTED
4439e: 4283 clrl %d3 <== NOT EXECUTED
443a0: 162a 0051 moveb %a2@(81),%d3 <== NOT EXECUTED
443a4: b680 cmpl %d0,%d3 <== NOT EXECUTED
443a6: 6626 bnes 443ce <iproc+0x120> <== NOT EXECUTED
(c == tty->termios.c_cc[VEOL2])) {
if (tty->termios.c_lflag & ECHO)
443a8: 44c1 movew %d1,%ccr <== NOT EXECUTED
443aa: 6a0e bpls 443ba <iproc+0x10c> <== NOT EXECUTED
echo (c, tty);
443ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
443ae: 4280 clrl %d0 <== NOT EXECUTED
443b0: 1002 moveb %d2,%d0 <== NOT EXECUTED
443b2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
443b4: 4eba fcde jsr %pc@(44094 <echo>) <== NOT EXECUTED
443b8: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
443ba: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
443be: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
443c2: 1182 0800 moveb %d2,%a0@(00000000,%d0:l) <== NOT EXECUTED
443c6: 5280 addql #1,%d0 <== NOT EXECUTED
443c8: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
443cc: 6038 bras 44406 <iproc+0x158> <== NOT EXECUTED
}
/*
* FIXME: Should do IMAXBEL handling somehow
*/
if (tty->ccount < (CBUFSIZE-1)) {
443ce: 2039 0005 c3b0 movel 5c3b0 <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED
443d4: 5380 subql #1,%d0 <== NOT EXECUTED
443d6: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
443da: 6f2e bles 4440a <iproc+0x15c> <== NOT EXECUTED
if (tty->termios.c_lflag & ECHO)
443dc: 7008 moveq #8,%d0 <== NOT EXECUTED
443de: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
443e2: 670e beqs 443f2 <iproc+0x144> <== NOT EXECUTED
echo (c, tty);
443e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
443e6: 4280 clrl %d0 <== NOT EXECUTED
443e8: 1002 moveb %d2,%d0 <== NOT EXECUTED
443ea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
443ec: 4eba fca6 jsr %pc@(44094 <echo>) <== NOT EXECUTED
443f0: 508f addql #8,%sp <== NOT EXECUTED
tty->cbuf[tty->ccount++] = c;
443f2: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
443f6: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
443fa: 1182 0800 moveb %d2,%a0@(00000000,%d0:l) <== NOT EXECUTED
443fe: 5280 addql #1,%d0 <== NOT EXECUTED
44400: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
44404: 6004 bras 4440a <iproc+0x15c> <== 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;
44406: 7001 moveq #1,%d0 <== NOT EXECUTED
44408: 6002 bras 4440c <iproc+0x15e> <== NOT EXECUTED
if (tty->ccount < (CBUFSIZE-1)) {
if (tty->termios.c_lflag & ECHO)
echo (c, tty);
tty->cbuf[tty->ccount++] = c;
}
return 0;
4440a: 4280 clrl %d0 <== NOT EXECUTED
}
4440c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44412: 4e5e unlk %fp <== NOT EXECUTED
00045e50 <is_fs_below_mount_point>:
static bool is_fs_below_mount_point(
const rtems_filesystem_mount_table_entry_t *mt_entry,
void *arg
)
{
45e50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return arg == mt_entry->mt_point_node.mt_entry;
45e54: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45e58: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
45e5c: b1ee 000c cmpal %fp@(12),%a0 <== NOT EXECUTED
45e60: 57c0 seq %d0 <== NOT EXECUTED
}
45e62: 4e5e unlk %fp <== NOT EXECUTED
45e64: 4480 negl %d0 <== NOT EXECUTED
00042c04 <is_node_fs_root>:
static bool is_node_fs_root(
const rtems_filesystem_mount_table_entry_t *mt_entry,
void *arg
)
{
42c04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return arg == mt_entry->mt_fs_root.node_access;
42c08: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
42c0c: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
42c10: b1ee 000c cmpal %fp@(12),%a0 <== NOT EXECUTED
42c14: 57c0 seq %d0 <== NOT EXECUTED
}
42c16: 4e5e unlk %fp <== NOT EXECUTED
42c18: 4480 negl %d0 <== NOT EXECUTED
00043698 <issetugid>:
#if defined(RTEMS_NEWLIB) && !defined(HAVE_ISSETUGID)
int issetugid (void)
{
return 0;
}
43698: 4280 clrl %d0 <== NOT EXECUTED
#include "config.h"
#endif
#if defined(RTEMS_NEWLIB) && !defined(HAVE_ISSETUGID)
int issetugid (void)
{
4369a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
4369e: 4e5e unlk %fp <== NOT EXECUTED
...
00045828 <kill>:
int kill(
pid_t pid,
int sig
)
{
45828: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, sig, NULL );
4582c: 42a7 clrl %sp@- <== NOT EXECUTED
4582e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
45832: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45836: 4eb9 0004 b138 jsr 4b138 <killinfo> <== NOT EXECUTED
}
4583c: 4e5e unlk %fp <== NOT EXECUTED
0005a088 <killinfo>:
int killinfo(
pid_t pid,
int sig,
const union sigval *value
)
{
5a088: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
5a08c: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
5a090: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
5a094: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_signals_Siginfo_node *psiginfo;
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid != getpid() )
5a098: 4eb9 0005 9cac jsr 59cac <getpid> <== NOT EXECUTED
5a09e: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
5a0a2: 6710 beqs 5a0b4 <killinfo+0x2c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
5a0a4: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a0aa: 7403 moveq #3,%d2 <== NOT EXECUTED
5a0ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a0ae: 2082 movel %d2,%a0@ <== NOT EXECUTED
5a0b0: 6000 01ae braw 5a260 <killinfo+0x1d8> <== NOT EXECUTED
/*
* Validate the signal passed.
*/
if ( !sig )
5a0b4: 4a82 tstl %d2 <== NOT EXECUTED
5a0b6: 670a beqs 5a0c2 <killinfo+0x3a> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5a0b8: 2202 movel %d2,%d1 <== NOT EXECUTED
5a0ba: 5381 subql #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5a0bc: 701f moveq #31,%d0 <== NOT EXECUTED
5a0be: b081 cmpl %d1,%d0 <== NOT EXECUTED
5a0c0: 6410 bccs 5a0d2 <killinfo+0x4a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
5a0c2: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a0c8: 7216 moveq #22,%d1 <== NOT EXECUTED
5a0ca: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a0cc: 2081 movel %d1,%a0@ <== NOT EXECUTED
5a0ce: 6000 0190 braw 5a260 <killinfo+0x1d8> <== NOT EXECUTED
/*
* If the signal is being ignored, then we are out of here.
*/
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )
5a0d2: 2602 movel %d2,%d3 <== NOT EXECUTED
5a0d4: 2002 movel %d2,%d0 <== NOT EXECUTED
5a0d6: e58b lsll #2,%d3 <== NOT EXECUTED
5a0d8: e988 lsll #4,%d0 <== NOT EXECUTED
5a0da: 9083 subl %d3,%d0 <== NOT EXECUTED
5a0dc: 0680 0005 dfcc addil #384972,%d0 <== NOT EXECUTED
5a0e2: 7601 moveq #1,%d3 <== NOT EXECUTED
5a0e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a0e6: b690 cmpl %a0@,%d3 <== NOT EXECUTED
5a0e8: 6700 01a6 beqw 5a290 <killinfo+0x208> <== NOT EXECUTED
/*
* P1003.1c/Draft 10, p. 33 says that certain signals should always
* be directed to the executing thread such as those caused by hardware
* faults.
*/
if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )
5a0ec: 7008 moveq #8,%d0 <== NOT EXECUTED
5a0ee: b082 cmpl %d2,%d0 <== NOT EXECUTED
5a0f0: 6710 beqs 5a102 <killinfo+0x7a> <== NOT EXECUTED
5a0f2: 163c 0004 moveb #4,%d3 <== NOT EXECUTED
5a0f6: b682 cmpl %d2,%d3 <== NOT EXECUTED
5a0f8: 6708 beqs 5a102 <killinfo+0x7a> <== NOT EXECUTED
5a0fa: 103c 000b moveb #11,%d0 <== NOT EXECUTED
5a0fe: b082 cmpl %d2,%d0 <== NOT EXECUTED
5a100: 6616 bnes 5a118 <killinfo+0x90> <== NOT EXECUTED
return pthread_kill( pthread_self(), sig );
5a102: 4eb9 0005 a470 jsr 5a470 <pthread_self> <== NOT EXECUTED
5a108: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a10a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5a10c: 4eb9 0005 a3b8 jsr 5a3b8 <pthread_kill> <== NOT EXECUTED
5a112: 508f addql #8,%sp <== NOT EXECUTED
5a114: 6000 017c braw 5a292 <killinfo+0x20a> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5a118: 7601 moveq #1,%d3 <== NOT EXECUTED
/*
* Build up a siginfo structure
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
siginfo->si_code = SI_USER;
5a11a: 7001 moveq #1,%d0 <== NOT EXECUTED
5a11c: e3ab lsll %d1,%d3 <== NOT EXECUTED
/*
* Build up a siginfo structure
*/
siginfo = &siginfo_struct;
siginfo->si_signo = sig;
5a11e: 2d42 fff4 movel %d2,%fp@(-12) <== NOT EXECUTED
siginfo->si_code = SI_USER;
5a122: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
if ( !value ) {
5a126: 4a8a tstl %a2 <== NOT EXECUTED
5a128: 6606 bnes 5a130 <killinfo+0xa8> <== NOT EXECUTED
siginfo->si_value.sival_int = 0;
5a12a: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
5a12e: 6004 bras 5a134 <killinfo+0xac> <== NOT EXECUTED
} else {
siginfo->si_value = *value;
5a130: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED
5a134: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5a13a: 5280 addql #1,%d0 <== NOT EXECUTED
5a13c: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Is the currently executing thread interested? If so then it will
* get it an execute it as soon as the dispatcher executes.
*/
the_thread = _Thread_Executing;
5a142: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( _POSIX_signals_Is_interested( api, mask ) ) {
5a148: 2268 0102 moveal %a0@(258),%a1 <== NOT EXECUTED
5a14c: 2029 00d0 movel %a1@(208),%d0 <== NOT EXECUTED
5a150: 4680 notl %d0 <== NOT EXECUTED
5a152: c083 andl %d3,%d0 <== NOT EXECUTED
5a154: 6600 00ae bnew 5a204 <killinfo+0x17c> <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5a158: 2279 0005 e150 moveal 5e150 <_POSIX_signals_Wait_queue>,%a1<== NOT EXECUTED
/* XXX violation of visibility -- need to define thread queue support */
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = _Chain_First( the_chain );
5a15e: 601e bras 5a17e <killinfo+0xf6> <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5a160: 2003 movel %d3,%d0 <== NOT EXECUTED
for ( the_node = _Chain_First( the_chain );
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
the_thread = (Thread_Control *)the_node;
5a162: 2049 moveal %a1,%a0 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5a164: c0a9 0030 andl %a1@(48),%d0 <== NOT EXECUTED
for ( the_node = _Chain_First( the_chain );
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
the_thread = (Thread_Control *)the_node;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5a168: 2469 0102 moveal %a1@(258),%a2 <== NOT EXECUTED
#endif
/*
* Is this thread is actually blocked waiting for the signal?
*/
if (the_thread->Wait.option & mask)
5a16c: 6600 0096 bnew 5a204 <killinfo+0x17c> <== NOT EXECUTED
/*
* Is this thread is blocked waiting for another signal but has
* not blocked this one?
*/
if (~api->signals_blocked & mask)
5a170: 202a 00d0 movel %a2@(208),%d0 <== NOT EXECUTED
5a174: 4680 notl %d0 <== NOT EXECUTED
5a176: c083 andl %d3,%d0 <== NOT EXECUTED
5a178: 6600 008a bnew 5a204 <killinfo+0x17c> <== NOT EXECUTED
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = _Chain_First( the_chain );
!_Chain_Is_tail( the_chain, the_node ) ;
the_node = the_node->next ) {
5a17c: 2251 moveal %a1@,%a1 <== NOT EXECUTED
/* XXX violation of visibility -- need to define thread queue support */
the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;
for ( the_node = _Chain_First( the_chain );
5a17e: b3fc 0005 e154 cmpal #385364,%a1 <== NOT EXECUTED
5a184: 66da bnes 5a160 <killinfo+0xd8> <== NOT EXECUTED
* NOTES:
*
* + rtems internal threads do not receive signals.
*/
interested = NULL;
interested_priority = PRIORITY_MAXIMUM + 1;
5a186: 4280 clrl %d0 <== NOT EXECUTED
5a188: 1039 0005 c252 moveb 5c252 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
5a18e: 45f9 0005 dacc lea 5dacc <_Objects_Information_table+0x8>,%a2<== NOT EXECUTED
5a194: 5280 addql #1,%d0 <== NOT EXECUTED
*
* NOTES:
*
* + rtems internal threads do not receive signals.
*/
interested = NULL;
5a196: 91c8 subal %a0,%a0 <== NOT EXECUTED
for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
/*
* This can occur when no one is interested and an API is not configured.
*/
if ( !_Objects_Information_table[ the_api ] )
5a198: 225a moveal %a2@+,%a1 <== NOT EXECUTED
5a19a: 4a89 tstl %a1 <== NOT EXECUTED
5a19c: 675a beqs 5a1f8 <killinfo+0x170> <== NOT EXECUTED
continue;
the_info = _Objects_Information_table[ the_api ][ 1 ];
5a19e: 2269 0004 moveal %a1@(4),%a1 <== NOT EXECUTED
*/
if ( !the_info )
continue;
#endif
maximum = the_info->maximum;
5a1a2: 4287 clrl %d7 <== NOT EXECUTED
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5a1a4: 7801 moveq #1,%d4 <== NOT EXECUTED
*/
#define _POSIX_signals_Is_interested( _api, _mask ) \
( ~(_api)->signals_blocked & (_mask) )
int killinfo(
5a1a6: 2669 0018 moveal %a1@(24),%a3 <== NOT EXECUTED
5a1aa: 588b addql #4,%a3 <== NOT EXECUTED
*/
if ( !the_info )
continue;
#endif
maximum = the_info->maximum;
5a1ac: 3e29 000e movew %a1@(14),%d7 <== NOT EXECUTED
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5a1b0: 6042 bras 5a1f4 <killinfo+0x16c> <== NOT EXECUTED
the_thread = (Thread_Control *) object_table[ index ];
5a1b2: 225b moveal %a3@+,%a1 <== NOT EXECUTED
if ( !the_thread )
5a1b4: 4a89 tstl %a1 <== NOT EXECUTED
5a1b6: 673a beqs 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
/*
* If this thread is of lower priority than the interested thread,
* go on to the next thread.
*/
if ( the_thread->current_priority > interested_priority )
5a1b8: 2229 0014 movel %a1@(20),%d1 <== NOT EXECUTED
5a1bc: b081 cmpl %d1,%d0 <== NOT EXECUTED
5a1be: 6532 bcss 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( !api )
continue;
#endif
if ( !_POSIX_signals_Is_interested( api, mask ) )
5a1c0: 2869 0102 moveal %a1@(258),%a4 <== NOT EXECUTED
5a1c4: 2a2c 00d0 movel %a4@(208),%d5 <== NOT EXECUTED
5a1c8: 4685 notl %d5 <== NOT EXECUTED
5a1ca: ca83 andl %d3,%d5 <== NOT EXECUTED
5a1cc: 6724 beqs 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
*
* NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1
* so we never have to worry about deferencing a NULL
* interested thread.
*/
if ( the_thread->current_priority < interested_priority ) {
5a1ce: b081 cmpl %d1,%d0 <== NOT EXECUTED
5a1d0: 621c bhis 5a1ee <killinfo+0x166> <== NOT EXECUTED
* and blocking interruptibutable by signal.
*
* If the interested thread is ready, don't think about changing.
*/
if ( interested && !_States_Is_ready( interested->current_state ) ) {
5a1d2: 4a88 tstl %a0 <== NOT EXECUTED
5a1d4: 671c beqs 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
5a1d6: 2c28 0010 movel %a0@(16),%d6 <== NOT EXECUTED
5a1da: 6716 beqs 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
/* preferred ready over blocked */
DEBUG_STEP("5");
if ( _States_Is_ready( the_thread->current_state ) ) {
5a1dc: 2a29 0010 movel %a1@(16),%d5 <== NOT EXECUTED
5a1e0: 670c beqs 5a1ee <killinfo+0x166> <== NOT EXECUTED
continue;
}
DEBUG_STEP("6");
/* prefer blocked/interruptible over blocked/not interruptible */
if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
5a1e2: 0806 001c btst #28,%d6 <== NOT EXECUTED
5a1e6: 660a bnes 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
DEBUG_STEP("7");
if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
5a1e8: 0805 001c btst #28,%d5 <== NOT EXECUTED
5a1ec: 6704 beqs 5a1f2 <killinfo+0x16a> <== NOT EXECUTED
*/
if ( interested && !_States_Is_ready( interested->current_state ) ) {
/* preferred ready over blocked */
DEBUG_STEP("5");
if ( _States_Is_ready( the_thread->current_state ) ) {
5a1ee: 2001 movel %d1,%d0 <== NOT EXECUTED
5a1f0: 2049 moveal %a1,%a0 <== NOT EXECUTED
#endif
maximum = the_info->maximum;
object_table = the_info->local_table;
for ( index = 1 ; index <= maximum ; index++ ) {
5a1f2: 5284 addql #1,%d4 <== NOT EXECUTED
5a1f4: be84 cmpl %d4,%d7 <== NOT EXECUTED
5a1f6: 64ba bccs 5a1b2 <killinfo+0x12a> <== NOT EXECUTED
* + rtems internal threads do not receive signals.
*/
interested = NULL;
interested_priority = PRIORITY_MAXIMUM + 1;
for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
5a1f8: b5fc 0005 dad4 cmpal #383700,%a2 <== NOT EXECUTED
5a1fe: 6698 bnes 5a198 <killinfo+0x110> <== NOT EXECUTED
}
}
}
}
if ( interested ) {
5a200: 4a88 tstl %a0 <== NOT EXECUTED
5a202: 6716 beqs 5a21a <killinfo+0x192> <== NOT EXECUTED
/*
* Returns true if the signal was synchronously given to a thread
* blocked waiting for the signal.
*/
if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {
5a204: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
5a208: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a20a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5a20c: 4eb9 0005 a2bc jsr 5a2bc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
5a212: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a216: 4a00 tstb %d0 <== NOT EXECUTED
5a218: 6670 bnes 5a28a <killinfo+0x202> <== NOT EXECUTED
/*
* We may have woken up a thread but we definitely need to post the
* signal to the process wide information set.
*/
_POSIX_signals_Set_process_signals( mask );
5a21a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
5a21c: 7602 moveq #2,%d3 <== NOT EXECUTED
/*
* We may have woken up a thread but we definitely need to post the
* signal to the process wide information set.
*/
_POSIX_signals_Set_process_signals( mask );
5a21e: 4eb9 0005 a29c jsr 5a29c <_POSIX_signals_Set_process_signals><== NOT EXECUTED
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
5a224: 588f addql #4,%sp <== NOT EXECUTED
5a226: 2002 movel %d2,%d0 <== NOT EXECUTED
5a228: 41f9 0005 dfc4 lea 5dfc4 <_POSIX_signals_Vectors>,%a0 <== NOT EXECUTED
5a22e: e588 lsll #2,%d0 <== NOT EXECUTED
5a230: e98a lsll #4,%d2 <== NOT EXECUTED
5a232: 9480 subl %d0,%d2 <== NOT EXECUTED
5a234: b6b0 2800 cmpl %a0@(00000000,%d2:l),%d3 <== NOT EXECUTED
5a238: 6650 bnes 5a28a <killinfo+0x202> <== NOT EXECUTED
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get( &_POSIX_signals_Inactive_siginfo );
5a23a: 4879 0005 e144 pea 5e144 <_POSIX_signals_Inactive_siginfo> <== NOT EXECUTED
5a240: 4eb9 0004 6014 jsr 46014 <_Chain_Get> <== NOT EXECUTED
if ( !psiginfo ) {
5a246: 588f addql #4,%sp <== NOT EXECUTED
_POSIX_signals_Set_process_signals( mask );
if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {
psiginfo = (POSIX_signals_Siginfo_node *)
_Chain_Get( &_POSIX_signals_Inactive_siginfo );
5a248: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( !psiginfo ) {
5a24a: 4a80 tstl %d0 <== NOT EXECUTED
5a24c: 6616 bnes 5a264 <killinfo+0x1dc> <== NOT EXECUTED
_Thread_Enable_dispatch();
5a24e: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
5a254: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a25a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a25c: 700b moveq #11,%d0 <== NOT EXECUTED
5a25e: 2080 movel %d0,%a0@ <== NOT EXECUTED
5a260: 70ff moveq #-1,%d0 <== NOT EXECUTED
5a262: 602e bras 5a292 <killinfo+0x20a> <== NOT EXECUTED
}
psiginfo->Info = *siginfo;
5a264: 4878 000c pea c <OPER1> <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5a268: 0682 0005 e1bc addil #385468,%d2 <== NOT EXECUTED
if ( !psiginfo ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( EAGAIN );
}
psiginfo->Info = *siginfo;
5a26e: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
5a272: 486a 0008 pea %a2@(8) <== NOT EXECUTED
5a276: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
_Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node );
5a27c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a27e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a280: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append> <== NOT EXECUTED
5a286: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
5a28a: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* If the signal is being ignored, then we are out of here.
*/
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )
return 0;
5a290: 4280 clrl %d0 <== NOT EXECUTED
}
DEBUG_STEP("\n");
_Thread_Enable_dispatch();
return 0;
}
5a292: 4cee 1cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a4 <== NOT EXECUTED
5a298: 4e5e unlk %fp <== NOT EXECUTED
00044744 <lchown>:
const char *path,
uid_t owner,
gid_t group
)
{
return _chown_helper( path, owner, group, false );
44744: 4280 clrl %d0 <== NOT EXECUTED
int lchown(
const char *path,
uid_t owner,
gid_t group
)
{
44746: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _chown_helper( path, owner, group, false );
4474a: 302e 0012 movew %fp@(18),%d0 <== NOT EXECUTED
4474e: 42a7 clrl %sp@- <== NOT EXECUTED
44750: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44752: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
44756: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44758: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4475c: 4eb9 0004 4180 jsr 44180 <_chown_helper> <== NOT EXECUTED
}
44762: 4e5e unlk %fp <== NOT EXECUTED
...
00042ef4 <libc_wrapup>:
/*
* In case RTEMS is already down, don't do this. It could be
* dangerous.
*/
if (!_System_state_Is_up(_System_state_Get()))
42ef4: 7003 moveq #3,%d0
extern void _wrapup_reent(struct _reent *);
extern void _reclaim_reent(struct _reent *);
void libc_wrapup(void)
{
42ef6: 4e56 0000 linkw %fp,#0
42efa: 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()))
42efc: b0b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d0
42f02: 664c bnes 42f50 <libc_wrapup+0x5c> <== NEVER TAKEN
/*
* This was already done if the user called exit() directly .
_wrapup_reent(0);
*/
if (_REENT != _global_impure_ptr) {
42f04: 2479 0005 b9a4 moveal 5b9a4 <_global_impure_ptr>,%a2
42f0a: b5f9 0005 c488 cmpal 5c488 <_impure_ptr>,%a2
42f10: 6710 beqs 42f22 <libc_wrapup+0x2e>
_wrapup_reent(_global_impure_ptr);
42f12: 2f0a movel %a2,%sp@-
42f14: 4eb9 0004 d4f6 jsr 4d4f6 <_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;
42f1a: 588f addql #4,%sp
42f1c: 23ca 0005 c488 movel %a2,5c488 <_impure_ptr>
*
* Should this be changed to do *all* file streams?
* _fwalk (_REENT, fclose);
*/
fclose (stdin);
42f22: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0
42f28: 45f9 0004 ca9a lea 4ca9a <fclose>,%a2
42f2e: 2f28 0004 movel %a0@(4),%sp@-
42f32: 4e92 jsr %a2@
fclose (stdout);
42f34: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0
42f3a: 2f28 0008 movel %a0@(8),%sp@-
42f3e: 4e92 jsr %a2@
fclose (stderr);
42f40: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0
42f46: 2f28 000c movel %a0@(12),%sp@-
42f4a: 4e92 jsr %a2@
42f4c: 4fef 000c lea %sp@(12),%sp
}
42f50: 246e fffc moveal %fp@(-4),%a2
42f54: 4e5e unlk %fp <== NOT EXECUTED
00045978 <link>:
int link(
const char *existing,
const char *new
)
{
45978: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED
4597c: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
45980: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* Get the node we are linking to.
*/
result = rtems_filesystem_evaluate_path( existing, strlen( existing ),
45984: 260e movel %fp,%d3 <== NOT EXECUTED
45986: 0683 ffff ffe4 addil #-28,%d3 <== NOT EXECUTED
4598c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int link(
const char *existing,
const char *new
)
{
4598e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
/*
* Get the node we are linking to.
*/
result = rtems_filesystem_evaluate_path( existing, strlen( existing ),
45992: 4eb9 0005 30bc jsr 530bc <strlen> <== NOT EXECUTED
45998: 7201 moveq #1,%d1 <== NOT EXECUTED
4599a: 2e81 movel %d1,%sp@ <== NOT EXECUTED
4599c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4599e: 42a7 clrl %sp@- <== NOT EXECUTED
459a0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
459a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
459a4: 4eb9 0004 532c jsr 4532c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &existing_loc, true );
if ( result != 0 )
459aa: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
459ae: 4a80 tstl %d0 <== NOT EXECUTED
459b0: 6600 0092 bnew 45a44 <link+0xcc> <== NOT EXECUTED
/*
* Get the parent of the node we are creating.
*/
rtems_filesystem_get_start_loc( new, &i, &parent_loc );
459b4: 240e movel %fp,%d2 <== NOT EXECUTED
459b6: 0682 ffff ffd0 addil #-48,%d2 <== NOT EXECUTED
459bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
459be: 486e fffc pea %fp@(-4) <== NOT EXECUTED
459c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
459c4: 4eb9 0004 6ab8 jsr 46ab8 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*parent_loc.ops->evalformake_h)( &new[i], &parent_loc, &name_start );
459ca: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
459ce: d5ee fffc addal %fp@(-4),%a2 <== NOT EXECUTED
459d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
459d4: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
459d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
459da: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
459de: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 ) {
459e0: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
459e4: 4a80 tstl %d0 <== NOT EXECUTED
459e6: 670c beqs 459f4 <link+0x7c> <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
459e8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
459ea: 4eb9 0004 5580 jsr 45580 <rtems_filesystem_freenode> <== NOT EXECUTED
return -1;
459f0: 588f addql #4,%sp <== NOT EXECUTED
459f2: 6050 bras 45a44 <link+0xcc> <== 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 ) {
459f4: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
459f8: 45f9 0004 5580 lea 45580 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
459fe: b0ae ffe0 cmpl %fp@(-32),%d0 <== NOT EXECUTED
45a02: 6718 beqs 45a1c <link+0xa4> <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
45a04: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45a06: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_filesystem_freenode( &parent_loc );
45a08: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45a0a: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EXDEV );
45a0c: 4eb9 0005 014c jsr 5014c <__errno> <== NOT EXECUTED
45a12: 508f addql #8,%sp <== NOT EXECUTED
45a14: 2040 moveal %d0,%a0 <== NOT EXECUTED
45a16: 7012 moveq #18,%d0 <== NOT EXECUTED
45a18: 2080 movel %d0,%a0@ <== NOT EXECUTED
45a1a: 6028 bras 45a44 <link+0xcc> <== NOT EXECUTED
}
result = (*parent_loc.ops->link_h)( &existing_loc, &parent_loc, name_start );
45a1c: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
45a20: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
45a24: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45a26: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45a28: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
45a2c: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
45a2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45a30: 2d40 ffcc movel %d0,%fp@(-52) <== NOT EXECUTED
45a34: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_filesystem_freenode( &parent_loc );
45a36: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45a38: 4e92 jsr %a2@ <== NOT EXECUTED
return result;
45a3a: 202e ffcc movel %fp@(-52),%d0 <== NOT EXECUTED
45a3e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45a42: 6002 bras 45a46 <link+0xce> <== NOT EXECUTED
*/
result = rtems_filesystem_evaluate_path( existing, strlen( existing ),
0, &existing_loc, true );
if ( result != 0 )
return -1;
45a44: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( &existing_loc );
rtems_filesystem_freenode( &parent_loc );
return result;
}
45a46: 4cee 040c ffc0 moveml %fp@(-64),%d2-%d3/%a2 <== NOT EXECUTED
45a4c: 4e5e unlk %fp <== NOT EXECUTED
00045468 <lio_listio>:
int mode __attribute__((unused)),
struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
struct sigevent *sig __attribute__((unused))
)
{
45468: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4546c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
45472: 4e5e unlk %fp <== NOT EXECUTED
struct aiocb * const list[] __attribute__((unused)),
int nent __attribute__((unused)),
struct sigevent *sig __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
45474: 2040 moveal %d0,%a0 <== NOT EXECUTED
45476: 7058 moveq #88,%d0 <== NOT EXECUTED
45478: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4547a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00059cd4 <lseek>:
off_t lseek(
int fd,
off_t offset,
int whence
)
{
59cd4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
59cd8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
59cdc: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
59ce0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
59ce4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
59ce8: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
rtems_libio_t *iop;
off_t old_offset;
off_t status;
rtems_libio_check_fd( fd );
59cec: b4b9 0005 c1a4 cmpl 5c1a4 <rtems_libio_number_iops>,%d2 <== NOT EXECUTED
59cf2: 641c bccs 59d10 <lseek+0x3c> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
59cf4: 2802 movel %d2,%d4 <== NOT EXECUTED
59cf6: ed8a lsll #6,%d2 <== NOT EXECUTED
59cf8: e78c lsll #3,%d4 <== NOT EXECUTED
59cfa: 2479 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a2 <== NOT EXECUTED
59d00: 9484 subl %d4,%d2 <== NOT EXECUTED
59d02: d5c2 addal %d2,%a2 <== NOT EXECUTED
rtems_libio_check_is_open(iop);
59d04: 242a 0014 movel %a2@(20),%d2 <== NOT EXECUTED
59d08: 0282 0000 0100 andil #256,%d2 <== NOT EXECUTED
59d0e: 660e bnes 59d1e <lseek+0x4a> <== NOT EXECUTED
59d10: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59d16: 7209 moveq #9,%d1 <== NOT EXECUTED
59d18: 2040 moveal %d0,%a0 <== NOT EXECUTED
59d1a: 2081 movel %d1,%a0@ <== NOT EXECUTED
59d1c: 604e bras 59d6c <lseek+0x98> <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
switch ( whence ) {
59d1e: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Now process the lseek().
*/
old_offset = iop->offset;
59d20: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED
59d24: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
switch ( whence ) {
59d28: b888 cmpl %a0,%d4 <== NOT EXECUTED
59d2a: 6714 beqs 59d40 <lseek+0x6c> <== NOT EXECUTED
59d2c: 7a02 moveq #2,%d5 <== NOT EXECUTED
59d2e: ba88 cmpl %a0,%d5 <== NOT EXECUTED
59d30: 6718 beqs 59d4a <lseek+0x76> <== NOT EXECUTED
59d32: 4a88 tstl %a0 <== NOT EXECUTED
59d34: 662a bnes 59d60 <lseek+0x8c> <== NOT EXECUTED
case SEEK_SET:
iop->offset = offset;
59d36: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
59d3a: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
break;
59d3e: 6032 bras 59d72 <lseek+0x9e> <== NOT EXECUTED
case SEEK_CUR:
iop->offset += offset;
59d40: 2800 movel %d0,%d4 <== NOT EXECUTED
59d42: 2a01 movel %d1,%d5 <== NOT EXECUTED
59d44: da83 addl %d3,%d5 <== NOT EXECUTED
59d46: d982 addxl %d2,%d4 <== NOT EXECUTED
59d48: 600c bras 59d56 <lseek+0x82> <== NOT EXECUTED
break;
case SEEK_END:
iop->offset = iop->size + offset;
59d4a: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED
59d4e: 2a2a 0008 movel %a2@(8),%d5 <== NOT EXECUTED
59d52: da81 addl %d1,%d5 <== NOT EXECUTED
59d54: d980 addxl %d0,%d4 <== NOT EXECUTED
59d56: 2544 000c movel %d4,%a2@(12) <== NOT EXECUTED
59d5a: 2545 0010 movel %d5,%a2@(16) <== NOT EXECUTED
break;
59d5e: 6012 bras 59d72 <lseek+0x9e> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
59d60: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59d66: 2040 moveal %d0,%a0 <== NOT EXECUTED
59d68: 7016 moveq #22,%d0 <== NOT EXECUTED
59d6a: 2080 movel %d0,%a0@ <== NOT EXECUTED
59d6c: 78ff moveq #-1,%d4 <== NOT EXECUTED
59d6e: 7aff moveq #-1,%d5 <== NOT EXECUTED
59d70: 602c bras 59d9e <lseek+0xca> <== NOT EXECUTED
/*
* At this time, handlers assume iop->offset has the desired
* new offset.
*/
status = (*iop->pathinfo.handlers->lseek_h)( iop, offset, whence );
59d72: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
59d76: 2f08 movel %a0,%sp@- <== NOT EXECUTED
59d78: 2f01 movel %d1,%sp@- <== NOT EXECUTED
59d7a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59d7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59d7e: 2069 0014 moveal %a1@(20),%a0 <== NOT EXECUTED
59d82: 4e90 jsr %a0@ <== NOT EXECUTED
if ( status == (off_t) -1 )
59d84: 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 );
59d88: 2800 movel %d0,%d4 <== NOT EXECUTED
59d8a: 2a01 movel %d1,%d5 <== NOT EXECUTED
if ( status == (off_t) -1 )
59d8c: 70ff moveq #-1,%d0 <== NOT EXECUTED
59d8e: 72ff moveq #-1,%d1 <== NOT EXECUTED
59d90: 9285 subl %d5,%d1 <== NOT EXECUTED
59d92: 9184 subxl %d4,%d0 <== NOT EXECUTED
59d94: 6608 bnes 59d9e <lseek+0xca> <== NOT EXECUTED
iop->offset = old_offset;
59d96: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
59d9a: 2543 0010 movel %d3,%a2@(16) <== NOT EXECUTED
/*
* So if the operation failed, we have to restore iop->offset.
*/
return status;
}
59d9e: 2004 movel %d4,%d0 <== NOT EXECUTED
59da0: 2205 movel %d5,%d1 <== NOT EXECUTED
59da2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
59da8: 4e5e unlk %fp <== NOT EXECUTED
000444e4 <lstat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
444e4: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
444e8: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
444ec: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
444f0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
444f4: 660e bnes 44504 <lstat+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
444f6: 4eb9 0004 e8d4 jsr 4e8d4 <__errno> <== NOT EXECUTED
444fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
444fe: 700e moveq #14,%d0 <== NOT EXECUTED
44500: 2080 movel %d0,%a0@ <== NOT EXECUTED
44502: 605a bras 4455e <lstat+0x7a> <== NOT EXECUTED
status = rtems_filesystem_evaluate_path( path, strlen( path ),
44504: 2f04 movel %d4,%sp@- <== NOT EXECUTED
44506: 240e movel %fp,%d2 <== NOT EXECUTED
44508: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
4450e: 4eb9 0005 0600 jsr 50600 <strlen> <== NOT EXECUTED
44514: 4297 clrl %sp@ <== NOT EXECUTED
44516: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44518: 42a7 clrl %sp@- <== NOT EXECUTED
4451a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4451c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4451e: 4eb9 0004 3f04 jsr 43f04 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
44524: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
44528: 4a80 tstl %d0 <== NOT EXECUTED
4452a: 6632 bnes 4455e <lstat+0x7a> <== NOT EXECUTED
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( buf, 0, sizeof(struct stat) );
4452c: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED
44530: 42a7 clrl %sp@- <== NOT EXECUTED
44532: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44534: 4eb9 0004 f8d0 jsr 4f8d0 <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
4453a: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
4453e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44540: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44542: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
44546: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
44548: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4454a: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
4454e: 4eb9 0004 3fd0 jsr 43fd0 <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
44554: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
44558: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4455c: 6002 bras 44560 <lstat+0x7c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
return -1;
4455e: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
44560: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
44566: 4e5e unlk %fp <== NOT EXECUTED
00042a9c <malloc>:
#include "malloc_p.h"
void *malloc(
size_t size
)
{
42a9c: 4e56 0000 linkw %fp,#0
void *return_this;
MSBUMP(malloc_calls, 1);
42aa0: 52b9 0005 d9d0 addql #1,5d9d0 <rtems_malloc_statistics+0x4>
#include "malloc_p.h"
void *malloc(
size_t size
)
{
42aa6: 2f03 movel %d3,%sp@-
42aa8: 2f02 movel %d2,%sp@-
42aaa: 242e 0008 movel %fp@(8),%d2
MSBUMP(malloc_calls, 1);
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
42aae: 4eb9 0004 2996 jsr 42996 <malloc_deferred_frees_process>
/*
* Validate the parameters
*/
if ( !size )
42ab4: 4a82 tstl %d2
42ab6: 677e beqs 42b36 <malloc+0x9a> <== 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()) &&
42ab8: 7003 moveq #3,%d0
42aba: b0b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d0
42ac0: 660a bnes 42acc <malloc+0x30>
!malloc_is_system_state_OK() )
42ac2: 4eb9 0004 2958 jsr 42958 <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()) &&
42ac8: 4a00 tstb %d0
42aca: 676a beqs 42b36 <malloc+0x9a> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(
Heap_Control *heap,
uintptr_t size
)
{
return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
42acc: 42a7 clrl %sp@-
42ace: 42a7 clrl %sp@-
42ad0: 2f02 movel %d2,%sp@-
42ad2: 2f39 0005 c1b0 movel 5c1b0 <RTEMS_Malloc_Heap>,%sp@-
42ad8: 4eb9 0004 6f68 jsr 46f68 <_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 ) {
42ade: 4fef 0010 lea %sp@(16),%sp
42ae2: 4a80 tstl %d0
42ae4: 6626 bnes 42b0c <malloc+0x70> <== ALWAYS TAKEN
if (rtems_malloc_sbrk_helpers)
42ae6: 2079 0005 c94a moveal 5c94a <rtems_malloc_sbrk_helpers>,%a0<== NOT EXECUTED
42aec: 4a88 tstl %a0 <== NOT EXECUTED
42aee: 670e beqs 42afe <malloc+0x62> <== NOT EXECUTED
return_this = (*rtems_malloc_sbrk_helpers->extend)( size );
42af0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42af2: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
42af6: 4e90 jsr %a0@ <== NOT EXECUTED
if ( !return_this ) {
42af8: 588f addql #4,%sp <== 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 );
42afa: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !return_this ) {
42afc: 6610 bnes 42b0e <malloc+0x72> <== NOT EXECUTED
errno = ENOMEM;
42afe: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42b04: 2040 moveal %d0,%a0 <== NOT EXECUTED
42b06: 700c moveq #12,%d0 <== NOT EXECUTED
42b08: 2080 movel %d0,%a0@ <== NOT EXECUTED
42b0a: 602a bras 42b36 <malloc+0x9a> <== NOT EXECUTED
* If this fails then return a NULL pointer.
*/
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
if ( !return_this ) {
42b0c: 2600 movel %d0,%d3
}
/*
* If the user wants us to dirty the allocated memory, then do it.
*/
if ( rtems_malloc_dirty_helper )
42b0e: 2079 0005 c94e moveal 5c94e <rtems_malloc_dirty_helper>,%a0
42b14: 4a88 tstl %a0
42b16: 6708 beqs 42b20 <malloc+0x84>
(*rtems_malloc_dirty_helper)( return_this, size );
42b18: 2f02 movel %d2,%sp@-
42b1a: 2f03 movel %d3,%sp@-
42b1c: 4e90 jsr %a0@
42b1e: 508f addql #8,%sp
/*
* If configured, update the statistics
*/
if ( rtems_malloc_statistics_helpers )
42b20: 2079 0005 c946 moveal 5c946 <rtems_malloc_statistics_helpers>,%a0
42b26: 4a88 tstl %a0
42b28: 670e beqs 42b38 <malloc+0x9c>
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
42b2a: 2f03 movel %d3,%sp@-
42b2c: 2068 0004 moveal %a0@(4),%a0
42b30: 4e90 jsr %a0@
42b32: 588f addql #4,%sp
42b34: 6002 bras 42b38 <malloc+0x9c>
/*
* 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 NULL;
42b36: 4283 clrl %d3 <== NOT EXECUTED
*/
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(return_this);
return return_this;
}
42b38: 2003 movel %d3,%d0
42b3a: 242e fff8 movel %fp@(-8),%d2
42b3e: 262e fffc movel %fp@(-4),%d3
42b42: 4e5e unlk %fp
...
000429cc <malloc_deferred_free>:
void malloc_deferred_free(
void *pointer
)
{
429cc: 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 );
429d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
429d4: 4879 0005 d9c0 pea 5d9c0 <RTEMS_Malloc_GC_list> <== NOT EXECUTED
429da: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append> <== NOT EXECUTED
429e0: 508f addql #8,%sp <== NOT EXECUTED
rtems_chain_append(&RTEMS_Malloc_GC_list, (rtems_chain_node *)pointer);
}
429e2: 4e5e unlk %fp <== NOT EXECUTED
...
00042996 <malloc_deferred_frees_process>:
void malloc_deferred_frees_process(void)
{
42996: 4e56 0000 linkw %fp,#0
4299a: 2f0b movel %a3,%sp@-
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
4299c: 47f9 0004 6014 lea 46014 <_Chain_Get>,%a3
429a2: 2f0a movel %a2,%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);
429a4: 45f9 0004 27b4 lea 427b4 <free>,%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)
429aa: 6006 bras 429b2 <malloc_deferred_frees_process+0x1c>
free(to_be_freed);
429ac: 2f00 movel %d0,%sp@- <== NOT EXECUTED
429ae: 4e92 jsr %a2@ <== NOT EXECUTED
429b0: 588f addql #4,%sp <== NOT EXECUTED
429b2: 4879 0005 d9c0 pea 5d9c0 <RTEMS_Malloc_GC_list>
429b8: 4e93 jsr %a3@
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)
429ba: 588f addql #4,%sp
429bc: 4a80 tstl %d0
429be: 66ec bnes 429ac <malloc_deferred_frees_process+0x16><== NEVER TAKEN
free(to_be_freed);
}
429c0: 246e fff8 moveal %fp@(-8),%a2
429c4: 266e fffc moveal %fp@(-4),%a3
429c8: 4e5e unlk %fp <== NOT EXECUTED
00045e4c <malloc_free_space>:
/*
* Find amount of free heap remaining
*/
size_t malloc_free_space( void )
{
45e4c: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Heap_Information info;
_Protected_heap_Get_free_information( RTEMS_Malloc_Heap, &info );
45e50: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
45e54: 2f39 0006 1160 movel 61160 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
45e5a: 4eb9 0004 b330 jsr 4b330 <_Protected_heap_Get_free_information><== NOT EXECUTED
return (size_t) info.largest;
}
45e60: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
45e64: 4e5e unlk %fp <== NOT EXECUTED
00042c58 <malloc_get_heap_pointer>:
#include <rtems.h>
#include <rtems/libcsupport.h>
#include "malloc_p.h"
Heap_Control *malloc_get_heap_pointer( void )
{
42c58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return RTEMS_Malloc_Heap;
}
42c5c: 2039 0005 c6a0 movel 5c6a0 <RTEMS_Malloc_Heap>,%d0 <== NOT EXECUTED
42c62: 4e5e unlk %fp <== NOT EXECUTED
...
00042a0c <malloc_get_statistics>:
#include "malloc_p.h"
int malloc_get_statistics(
rtems_malloc_statistics_t *stats
)
{
42a0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42a10: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42a12: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !stats )
42a16: 6732 beqs 42a4a <malloc_get_statistics+0x3e> <== NOT EXECUTED
return -1;
_RTEMS_Lock_allocator();
42a18: 2f39 0005 dad8 movel 5dad8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
42a1e: 4eb9 0004 5f40 jsr 45f40 <_API_Mutex_Lock> <== NOT EXECUTED
*stats = rtems_malloc_statistics;
42a24: 4878 002c pea 2c <OPER2+0x18> <== NOT EXECUTED
42a28: 4879 0005 d8dc pea 5d8dc <rtems_malloc_statistics> <== NOT EXECUTED
42a2e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42a30: 4eb9 0004 d1a4 jsr 4d1a4 <memcpy> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
42a36: 2f39 0005 dad8 movel 5dad8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
42a3c: 4eb9 0004 5fa0 jsr 45fa0 <_API_Mutex_Unlock> <== NOT EXECUTED
return 0;
42a42: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
42a46: 4280 clrl %d0 <== NOT EXECUTED
42a48: 6002 bras 42a4c <malloc_get_statistics+0x40> <== NOT EXECUTED
int malloc_get_statistics(
rtems_malloc_statistics_t *stats
)
{
if ( !stats )
return -1;
42a4a: 70ff moveq #-1,%d0 <== NOT EXECUTED
_RTEMS_Lock_allocator();
*stats = rtems_malloc_statistics;
_RTEMS_Unlock_allocator();
return 0;
}
42a4c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42a50: 4e5e unlk %fp <== NOT EXECUTED
00045e68 <malloc_info>:
*/
int malloc_info(
Heap_Information_block *the_info
)
{
45e68: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45e6c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !the_info )
45e70: 6714 beqs 45e86 <malloc_info+0x1e> <== NOT EXECUTED
return -1;
_Protected_heap_Get_information( RTEMS_Malloc_Heap, the_info );
45e72: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45e74: 2f39 0006 1160 movel 61160 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
45e7a: 4eb9 0004 b360 jsr 4b360 <_Protected_heap_Get_information> <== NOT EXECUTED
return 0;
45e80: 508f addql #8,%sp <== NOT EXECUTED
45e82: 4280 clrl %d0 <== NOT EXECUTED
45e84: 6002 bras 45e88 <malloc_info+0x20> <== NOT EXECUTED
int malloc_info(
Heap_Information_block *the_info
)
{
if ( !the_info )
return -1;
45e86: 70ff moveq #-1,%d0 <== NOT EXECUTED
_Protected_heap_Get_information( RTEMS_Malloc_Heap, the_info );
return 0;
}
45e88: 4e5e unlk %fp <== NOT EXECUTED
00042958 <malloc_is_system_state_OK>:
#include "malloc_p.h"
rtems_chain_control RTEMS_Malloc_GC_list;
bool malloc_is_system_state_OK(void)
{
42958: 4e56 0000 linkw %fp,#0
if ( _Thread_Dispatch_disable_level > 0 )
4295c: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
42962: 660c bnes 42970 <malloc_is_system_state_OK+0x18> <== NEVER TAKEN
#include "malloc_p.h"
rtems_chain_control RTEMS_Malloc_GC_list;
bool malloc_is_system_state_OK(void)
42964: 4ab9 0005 df8e tstl 5df8e <_Per_CPU_Information+0x8>
4296a: 57c0 seq %d0
4296c: 4480 negl %d0
4296e: 6002 bras 42972 <malloc_is_system_state_OK+0x1a>
{
if ( _Thread_Dispatch_disable_level > 0 )
return false;
42970: 4200 clrb %d0 <== NOT EXECUTED
if ( _ISR_Nest_level > 0 )
return false;
return true;
}
42972: 4e5e unlk %fp <== NOT EXECUTED
00045fec <malloc_report_statistics>:
#ifdef RTEMS_NEWLIB
#include "malloc_p.h"
void malloc_report_statistics(void)
{
45fec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
malloc_report_statistics_with_plugin( NULL, printk_plugin );
45ff0: 4879 0004 6b50 pea 46b50 <printk_plugin> <== NOT EXECUTED
45ff6: 42a7 clrl %sp@- <== NOT EXECUTED
45ff8: 4eb9 0004 6004 jsr 46004 <malloc_report_statistics_with_plugin><== NOT EXECUTED
45ffe: 508f addql #8,%sp <== NOT EXECUTED
}
46000: 4e5e unlk %fp <== NOT EXECUTED
00046004 <malloc_report_statistics_with_plugin>:
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46004: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
46008: 2039 0006 3274 movel 63274 <rtems_malloc_statistics+0x1c>,%d0<== NOT EXECUTED
4600e: 2239 0006 3278 movel 63278 <rtems_malloc_statistics+0x20>,%d1<== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46014: 48d7 1cfc moveml %d2-%d7/%a2-%a4,%sp@ <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
46018: 2c39 0006 327c movel 6327c <rtems_malloc_statistics+0x24>,%d6<== NOT EXECUTED
4601e: 2e39 0006 3280 movel 63280 <rtems_malloc_statistics+0x28>,%d7<== 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)
46024: 7a16 moveq #22,%d5 <== NOT EXECUTED
46026: 2806 movel %d6,%d4 <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
46028: 2400 movel %d0,%d2 <== NOT EXECUTED
4602a: 2601 movel %d1,%d3 <== 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)
4602c: ebac lsll %d5,%d4 <== 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,
4602e: 2079 0006 3270 moveal 63270 <rtems_malloc_statistics+0x18>,%a0<== NOT EXECUTED
(uint32_t) (s->lifetime_allocated / 1024),
(uint32_t) (s->lifetime_freed / 1024)
46034: 2244 moveal %d4,%a1 <== NOT EXECUTED
46036: 780a moveq #10,%d4 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46038: 2a09 movel %a1,%d5 <== NOT EXECUTED
rtems_malloc_statistics_t *s;
uintmax_t allocated;
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
4603a: 9687 subl %d7,%d3 <== NOT EXECUTED
4603c: 9586 subxl %d6,%d2 <== 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)
4603e: 2c07 movel %d7,%d6 <== NOT EXECUTED
46040: e8ae lsrl %d4,%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),
46042: 183c 0016 moveb #22,%d4 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46046: 8a86 orl %d6,%d5 <== 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),
46048: 2c00 movel %d0,%d6 <== NOT EXECUTED
4604a: 2001 movel %d1,%d0 <== 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,
4604c: 7264 moveq #100,%d1 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
4604e: 2f05 movel %d5,%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),
46050: 7a0a moveq #10,%d5 <== NOT EXECUTED
46052: eaa8 lsrl %d5,%d0 <== NOT EXECUTED
46054: e9ae lsll %d4,%d6 <== 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,
46056: 2679 0006 3258 moveal 63258 <rtems_malloc_statistics>,%a3 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
4605c: 280b movel %a3,%d4 <== NOT EXECUTED
4605e: 8c80 orl %d0,%d6 <== 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,
46060: 2008 movel %a0,%d0 <== NOT EXECUTED
46062: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46066: 2f06 movel %d6,%sp@- <== NOT EXECUTED
46068: 2c02 movel %d2,%d6 <== NOT EXECUTED
4606a: 4c44 0000 remul %d4,%d0,%d0 <== NOT EXECUTED
4606e: 780a moveq #10,%d4 <== NOT EXECUTED
46070: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46072: 2008 movel %a0,%d0 <== NOT EXECUTED
46074: eaa8 lsrl %d5,%d0 <== NOT EXECUTED
46076: 1a3c 0016 moveb #22,%d5 <== NOT EXECUTED
4607a: 2f00 movel %d0,%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,
4607c: 4878 0064 pea 64 <DBL_MANT_DIG+0x2f> <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46080: 286e 0008 moveal %fp@(8),%a4 <== 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,
46084: 42a7 clrl %sp@- <== NOT EXECUTED
void malloc_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
46086: 246e 000c moveal %fp@(12),%a2 <== 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,
4608a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
4608c: ebae lsll %d5,%d6 <== 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,
4608e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
46090: 1a3c 000a moveb #10,%d5 <== 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,
46094: 4eb9 0005 c754 jsr 5c754 <__muldi3> <== NOT EXECUTED
s = &rtems_malloc_statistics;
allocated = s->lifetime_allocated - s->lifetime_freed;
(*print)(
4609a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4609e: 2e8b movel %a3,%sp@ <== NOT EXECUTED
460a0: 42a7 clrl %sp@- <== NOT EXECUTED
460a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
460a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
460a6: 4eb9 0005 cfa0 jsr 5cfa0 <__udivdi3> <== NOT EXECUTED
460ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
460b0: 2e81 movel %d1,%sp@ <== NOT EXECUTED
460b2: 2203 movel %d3,%d1 <== NOT EXECUTED
460b4: e8a9 lsrl %d4,%d1 <== NOT EXECUTED
460b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
460b8: 2002 movel %d2,%d0 <== NOT EXECUTED
460ba: e8a8 lsrl %d4,%d0 <== NOT EXECUTED
460bc: 280b movel %a3,%d4 <== NOT EXECUTED
460be: eaac lsrl %d5,%d4 <== NOT EXECUTED
460c0: 8286 orl %d6,%d1 <== NOT EXECUTED
460c2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
460c4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
460c6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
460c8: 4879 0005 fbdc pea 5fbdc <rtems_status_assoc+0x1a0> <== NOT EXECUTED
460ce: 2f0c movel %a4,%sp@- <== NOT EXECUTED
460d0: 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)(
460d2: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
460d6: 2eb9 0006 326c movel 6326c <rtems_malloc_statistics+0x14>,%sp@<== NOT EXECUTED
460dc: 2f39 0006 3268 movel 63268 <rtems_malloc_statistics+0x10>,%sp@-<== NOT EXECUTED
460e2: 2f39 0006 3264 movel 63264 <rtems_malloc_statistics+0xc>,%sp@-<== NOT EXECUTED
460e8: 2f39 0006 3260 movel 63260 <rtems_malloc_statistics+0x8>,%sp@-<== NOT EXECUTED
460ee: 2f39 0006 325c movel 6325c <rtems_malloc_statistics+0x4>,%sp@-<== NOT EXECUTED
460f4: 4879 0005 fc3e pea 5fc3e <rtems_status_assoc+0x202> <== NOT EXECUTED
460fa: 2f0c movel %a4,%sp@- <== NOT EXECUTED
460fc: 4e92 jsr %a2@ <== NOT EXECUTED
460fe: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
s->memalign_calls,
s->free_calls,
s->realloc_calls,
s->calloc_calls
);
}
46102: 4cee 1cfc ffdc moveml %fp@(-36),%d2-%d7/%a2-%a4 <== NOT EXECUTED
46108: 4e5e unlk %fp <== NOT EXECUTED
00042dc8 <malloc_sbrk_extend_and_allocate>:
}
void *malloc_sbrk_extend_and_allocate(
size_t size
)
{
42dc8: 4e56 fff4 linkw %fp,#-12 <== 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;
42dcc: 2039 0005 e020 movel 5e020 <RTEMS_Malloc_Sbrk_amount>,%d0 <== NOT EXECUTED
}
void *malloc_sbrk_extend_and_allocate(
size_t size
)
{
42dd2: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
42dd6: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
* in "page" amounts.
*/
sbrk_amount = RTEMS_Malloc_Sbrk_amount;
if ( sbrk_amount == 0 )
42dda: 4a80 tstl %d0 <== NOT EXECUTED
42ddc: 676a beqs 42e48 <malloc_sbrk_extend_and_allocate+0x80><== NOT EXECUTED
return (void *) 0;
the_size = ((size + sbrk_amount) / sbrk_amount * sbrk_amount);
42dde: 2403 movel %d3,%d2 <== NOT EXECUTED
42de0: d480 addl %d0,%d2 <== NOT EXECUTED
starting_address = (void *) sbrk(the_size);
42de2: 45f9 0004 0810 lea 40810 <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);
42de8: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
42dec: 4c00 2800 mulsl %d0,%d2 <== NOT EXECUTED
starting_address = (void *) sbrk(the_size);
42df0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42df2: 4e92 jsr %a2@ <== NOT EXECUTED
if ( starting_address == (void*) -1 )
42df4: 588f addql #4,%sp <== NOT EXECUTED
42df6: 72ff moveq #-1,%d1 <== NOT EXECUTED
42df8: b280 cmpl %d0,%d1 <== NOT EXECUTED
42dfa: 674c beqs 42e48 <malloc_sbrk_extend_and_allocate+0x80><== NOT EXECUTED
return (void *) 0;
if ( !_Protected_heap_Extend(
42dfc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42dfe: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42e00: 2f39 0005 c6a0 movel 5c6a0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
42e06: 4eb9 0004 7248 jsr 47248 <_Protected_heap_Extend> <== NOT EXECUTED
42e0c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
42e10: 4a00 tstb %d0 <== NOT EXECUTED
42e12: 6616 bnes 42e2a <malloc_sbrk_extend_and_allocate+0x62><== NOT EXECUTED
RTEMS_Malloc_Heap, starting_address, the_size) ) {
sbrk(-the_size);
42e14: 4482 negl %d2 <== NOT EXECUTED
42e16: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42e18: 4e92 jsr %a2@ <== NOT EXECUTED
errno = ENOMEM;
42e1a: 4eb9 0004 ce3c jsr 4ce3c <__errno> <== NOT EXECUTED
return (void *) 0;
42e20: 588f addql #4,%sp <== NOT EXECUTED
return (void *) 0;
if ( !_Protected_heap_Extend(
RTEMS_Malloc_Heap, starting_address, the_size) ) {
sbrk(-the_size);
errno = ENOMEM;
42e22: 2040 moveal %d0,%a0 <== NOT EXECUTED
42e24: 700c moveq #12,%d0 <== NOT EXECUTED
42e26: 2080 movel %d0,%a0@ <== NOT EXECUTED
42e28: 601e bras 42e48 <malloc_sbrk_extend_and_allocate+0x80><== NOT EXECUTED
42e2a: 42a7 clrl %sp@- <== NOT EXECUTED
return (void *) 0;
}
MSBUMP(space_available, the_size);
42e2c: d5b9 0005 dff4 addl %d2,5dff4 <rtems_malloc_statistics> <== NOT EXECUTED
42e32: 42a7 clrl %sp@- <== NOT EXECUTED
42e34: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42e36: 2f39 0005 c6a0 movel 5c6a0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
42e3c: 4eb9 0004 7208 jsr 47208 <_Protected_heap_Allocate_aligned_with_boundary><== NOT EXECUTED
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
42e42: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42e46: 6002 bras 42e4a <malloc_sbrk_extend_and_allocate+0x82><== 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;
42e48: 4280 clrl %d0 <== NOT EXECUTED
MSBUMP(space_available, the_size);
return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );
return return_this;
}
42e4a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
42e50: 4e5e unlk %fp <== NOT EXECUTED
00042e54 <malloc_sbrk_initialize>:
void *malloc_sbrk_initialize(
void *starting_address,
size_t length
)
{
42e54: 4e56 0000 linkw %fp,#0
42e58: 222e 000c movel %fp@(12),%d1
42e5c: 202e 0008 movel %fp@(8),%d0
uintptr_t old_address;
uintptr_t uaddress;
RTEMS_Malloc_Sbrk_amount = length;
42e60: 23c1 0005 e020 movel %d1,5e020 <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) {
42e66: 4a80 tstl %d0
42e68: 6626 bnes 42e90 <malloc_sbrk_initialize+0x3c> <== NEVER TAKEN
uaddress = (uintptr_t)sbrk(length);
42e6a: 2f01 movel %d1,%sp@-
42e6c: 4eb9 0004 0810 jsr 40810 <sbrk>
if (uaddress == (uintptr_t) -1) {
42e72: 588f addql #4,%sp
42e74: 72ff moveq #-1,%d1
42e76: b280 cmpl %d0,%d1
42e78: 660a bnes 42e84 <malloc_sbrk_initialize+0x30> <== NEVER TAKEN
rtems_fatal_error_occurred( RTEMS_NO_MEMORY );
42e7a: 4878 001a pea 1a <OPER2+0x6>
42e7e: 4eb9 0004 5fb4 jsr 45fb4 <rtems_fatal_error_occurred>
/* DOES NOT RETURN!!! */
}
if (uaddress & (CPU_HEAP_ALIGNMENT-1)) {
42e84: 7203 moveq #3,%d1 <== NOT EXECUTED
42e86: c280 andl %d0,%d1 <== NOT EXECUTED
42e88: 6706 beqs 42e90 <malloc_sbrk_initialize+0x3c> <== NOT EXECUTED
old_address = uaddress;
uaddress = (uaddress + CPU_HEAP_ALIGNMENT) & ~(CPU_HEAP_ALIGNMENT-1);
42e8a: 5880 addql #4,%d0 <== NOT EXECUTED
42e8c: 72fc moveq #-4,%d1 <== NOT EXECUTED
42e8e: c081 andl %d1,%d0 <== NOT EXECUTED
}
starting_address = (void *)uaddress;
}
return starting_address;
}
42e90: 4e5e unlk %fp <== NOT EXECUTED
00042e94 <malloc_set_heap_pointer>:
#include "malloc_p.h"
void malloc_set_heap_pointer(
Heap_Control *new_heap
)
{
42e94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
RTEMS_Malloc_Heap = new_heap;
42e98: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED
}
42e9c: 4e5e unlk %fp <== NOT EXECUTED
void malloc_set_heap_pointer(
Heap_Control *new_heap
)
{
RTEMS_Malloc_Heap = new_heap;
42e9e: 23d0 0005 c6a0 movel %a0@,5c6a0 <RTEMS_Malloc_Heap> <== NOT EXECUTED
}
...
000461e0 <malloc_walk>:
#include "malloc_p.h"
#include <stdlib.h>
void malloc_walk(size_t source, size_t printf_enabled)
{
461e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Protected_heap_Walk( RTEMS_Malloc_Heap, (int) source, printf_enabled );
461e4: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
461e8: 56c0 sne %d0 <== NOT EXECUTED
461ea: 49c0 extbl %d0 <== NOT EXECUTED
461ec: 4480 negl %d0 <== NOT EXECUTED
461ee: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461f0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
461f4: 2f39 0006 1160 movel 61160 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
461fa: 4eb9 0004 b40c jsr 4b40c <_Protected_heap_Walk> <== NOT EXECUTED
46200: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
46204: 4e5e unlk %fp <== NOT EXECUTED
0004b2d8 <memfile_alloc_block>:
* Allocate a block for an in-memory file.
*/
int memfile_blocks_allocated = 0;
void *memfile_alloc_block(void)
{
4b2d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void *memory;
memory = (void *)calloc(1, IMFS_MEMFILE_BYTES_PER_BLOCK);
4b2dc: 2f39 0005 d1b4 movel 5d1b4 <imfs_memfile_bytes_per_block>,%sp@-<== NOT EXECUTED
4b2e2: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4b2e6: 4eb9 0004 241c jsr 4241c <calloc> <== NOT EXECUTED
if ( memory )
4b2ec: 508f addql #8,%sp <== NOT EXECUTED
4b2ee: 4a80 tstl %d0 <== NOT EXECUTED
4b2f0: 6706 beqs 4b2f8 <memfile_alloc_block+0x20> <== NOT EXECUTED
memfile_blocks_allocated++;
4b2f2: 52b9 0005 d2c4 addql #1,5d2c4 <memfile_blocks_allocated> <== NOT EXECUTED
return memory;
}
4b2f8: 4e5e unlk %fp <== NOT EXECUTED
0004b298 <memfile_close>:
* nothing to flush or memory to free at this point.
*/
int memfile_close(
rtems_libio_t *iop
)
{
4b298: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b29c: 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)
4b2a0: 2028 0014 movel %a0@(20),%d0 <== NOT EXECUTED
4b2a4: 0280 0000 0200 andil #512,%d0 <== NOT EXECUTED
rtems_libio_t *iop
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4b2aa: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
if (iop->flags & LIBIO_FLAGS_APPEND)
4b2ae: 6710 beqs 4b2c0 <memfile_close+0x28> <== NOT EXECUTED
iop->offset = the_jnode->info.file.size;
4b2b0: 2029 004c movel %a1@(76),%d0 <== NOT EXECUTED
4b2b4: 2229 0050 movel %a1@(80),%d1 <== NOT EXECUTED
4b2b8: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
4b2bc: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
IMFS_check_node_remove( the_jnode );
4b2c0: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4b2c2: 4eb9 0004 94b8 jsr 494b8 <IMFS_check_node_remove> <== NOT EXECUTED
return 0;
}
4b2c8: 4280 clrl %d0 <== NOT EXECUTED
4b2ca: 4e5e unlk %fp <== NOT EXECUTED
0004b640 <memfile_free_block>:
* Free a block from an in-memory file.
*/
void memfile_free_block(
void *memory
)
{
4b640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
free(memory);
4b644: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4b648: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
memfile_blocks_allocated--;
4b64e: 588f addql #4,%sp <== NOT EXECUTED
4b650: 53b9 0005 d2c4 subql #1,5d2c4 <memfile_blocks_allocated> <== NOT EXECUTED
}
4b656: 4e5e unlk %fp <== NOT EXECUTED
0004b65a <memfile_free_blocks_in_table>:
*/
void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4b65a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b65e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
4b662: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
for ( i=0 ; i<entries ; i++ ) {
4b666: 4282 clrl %d2 <== NOT EXECUTED
if ( b[i] ) {
memfile_free_block( b[i] );
4b668: 49f9 0004 b640 lea 4b640 <memfile_free_block>,%a4 <== NOT EXECUTED
*/
void memfile_free_blocks_in_table(
block_p **block_table,
int entries
)
{
4b66e: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Now go through all the slots in the table and free the memory.
*/
b = *block_table;
for ( i=0 ; i<entries ; i++ ) {
4b672: 2652 moveal %a2@,%a3 <== NOT EXECUTED
4b674: 6010 bras 4b686 <memfile_free_blocks_in_table+0x2c><== NOT EXECUTED
if ( b[i] ) {
4b676: 201b movel %a3@+,%d0 <== NOT EXECUTED
4b678: 670a beqs 4b684 <memfile_free_blocks_in_table+0x2a><== NOT EXECUTED
memfile_free_block( b[i] );
4b67a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b67c: 4e94 jsr %a4@ <== NOT EXECUTED
b[i] = 0;
4b67e: 588f addql #4,%sp <== NOT EXECUTED
4b680: 42ab fffc clrl %a3@(-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++ ) {
4b684: 5282 addql #1,%d2 <== NOT EXECUTED
4b686: b682 cmpl %d2,%d3 <== NOT EXECUTED
4b688: 6eec bgts 4b676 <memfile_free_blocks_in_table+0x1c><== 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 );
4b68a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4b68c: 4eb9 0004 b640 jsr 4b640 <memfile_free_block> <== NOT EXECUTED
*block_table = 0;
4b692: 588f addql #4,%sp <== NOT EXECUTED
4b694: 4292 clrl %a2@ <== NOT EXECUTED
}
4b696: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4b69c: 4e5e unlk %fp <== NOT EXECUTED
0004bad8 <memfile_ftruncate>:
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4bad8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4badc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4bae0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4bae4: 2468 0018 moveal %a0@(24),%a2 <== NOT EXECUTED
*/
int memfile_ftruncate(
rtems_libio_t *iop,
rtems_off64_t length
)
{
4bae8: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
4baec: 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 )
4baf0: 242a 004c movel %a2@(76),%d2 <== NOT EXECUTED
4baf4: 262a 0050 movel %a2@(80),%d3 <== NOT EXECUTED
4baf8: 9681 subl %d1,%d3 <== NOT EXECUTED
4bafa: 9580 subxl %d0,%d2 <== NOT EXECUTED
4bafc: 6c12 bges 4bb10 <memfile_ftruncate+0x38> <== NOT EXECUTED
return IMFS_memfile_extend( the_jnode, length );
4bafe: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4bb00: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bb02: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bb04: 4eb9 0004 b7a8 jsr 4b7a8 <IMFS_memfile_extend> <== NOT EXECUTED
4bb0a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bb0e: 6026 bras 4bb36 <memfile_ftruncate+0x5e> <== 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;
4bb10: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
4bb14: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4bb18: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
4bb1c: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
IMFS_update_atime( the_jnode );
4bb20: 42a7 clrl %sp@- <== NOT EXECUTED
4bb22: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4bb26: 4eb9 0004 283c jsr 4283c <gettimeofday> <== NOT EXECUTED
4bb2c: 256e fff8 003c movel %fp@(-8),%a2@(60) <== NOT EXECUTED
return 0;
4bb32: 508f addql #8,%sp <== NOT EXECUTED
4bb34: 4280 clrl %d0 <== NOT EXECUTED
}
4bb36: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4bb3c: 4e5e unlk %fp <== NOT EXECUTED
0004b2ce <memfile_ioctl>:
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4b2ce: 4280 clrl %d0 <== NOT EXECUTED
int memfile_ioctl(
rtems_libio_t *iop,
uint32_t command,
void *buffer
)
{
4b2d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
return 0;
}
4b2d4: 4e5e unlk %fp <== NOT EXECUTED
0004bb40 <memfile_lseek>:
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
if (the_jnode->type == IMFS_LINEAR_FILE) {
4bb40: 7006 moveq #6,%d0 <== NOT EXECUTED
rtems_off64_t memfile_lseek(
rtems_libio_t *iop,
rtems_off64_t offset,
int whence
)
{
4bb42: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4bb46: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4bb4a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4bb4e: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
if (the_jnode->type == IMFS_LINEAR_FILE) {
4bb52: b0ab 0048 cmpl %a3@(72),%d0 <== NOT EXECUTED
4bb56: 6620 bnes 4bb78 <memfile_lseek+0x38> <== NOT EXECUTED
if (iop->offset > the_jnode->info.linearfile.size)
4bb58: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED
4bb5c: 222b 0050 movel %a3@(80),%d1 <== NOT EXECUTED
4bb60: 242a 000c movel %a2@(12),%d2 <== NOT EXECUTED
4bb64: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
4bb68: 9681 subl %d1,%d3 <== NOT EXECUTED
4bb6a: 9580 subxl %d0,%d2 <== NOT EXECUTED
4bb6c: 6f44 bles 4bbb2 <memfile_lseek+0x72> <== NOT EXECUTED
iop->offset = the_jnode->info.linearfile.size;
4bb6e: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
4bb72: 2541 0010 movel %d1,%a2@(16) <== NOT EXECUTED
4bb76: 603a bras 4bbb2 <memfile_lseek+0x72> <== NOT EXECUTED
}
else { /* Must be a block file (IMFS_MEMORY_FILE). */
if (IMFS_memfile_extend( the_jnode, iop->offset ))
4bb78: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4bb7c: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4bb80: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4bb82: 4eb9 0004 b7a8 jsr 4b7a8 <IMFS_memfile_extend> <== NOT EXECUTED
4bb88: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bb8c: 4a80 tstl %d0 <== NOT EXECUTED
4bb8e: 6712 beqs 4bba2 <memfile_lseek+0x62> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSPC );
4bb90: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4bb96: 761c moveq #28,%d3 <== NOT EXECUTED
4bb98: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bb9a: 2083 movel %d3,%a0@ <== NOT EXECUTED
4bb9c: 72ff moveq #-1,%d1 <== NOT EXECUTED
4bb9e: 74ff moveq #-1,%d2 <== NOT EXECUTED
4bba0: 6018 bras 4bbba <memfile_lseek+0x7a> <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4bba2: 202b 004c movel %a3@(76),%d0 <== NOT EXECUTED
4bba6: 222b 0050 movel %a3@(80),%d1 <== NOT EXECUTED
4bbaa: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4bbae: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
}
return iop->offset;
4bbb2: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4bbb6: 242a 0010 movel %a2@(16),%d2 <== NOT EXECUTED
}
4bbba: 2001 movel %d1,%d0 <== NOT EXECUTED
4bbbc: 2202 movel %d2,%d1 <== NOT EXECUTED
4bbbe: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4bbc4: 4e5e unlk %fp <== NOT EXECUTED
0004ba34 <memfile_open>:
rtems_libio_t *iop,
const char *pathname,
uint32_t flag,
uint32_t mode
)
{
4ba34: 4e56 fff0 linkw %fp,#-16
4ba38: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4ba3c: 266e 0008 moveal %fp@(8),%a3
the_jnode = iop->pathinfo.node_access;
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4ba40: 202b 0014 movel %a3@(20),%d0
4ba44: 0280 0000 0204 andil #516,%d0
uint32_t mode
)
{
IMFS_jnode_t *the_jnode;
the_jnode = iop->pathinfo.node_access;
4ba4a: 246b 0018 moveal %a3@(24),%a2
/*
* Perform 'copy on write' for linear files
*/
if ((iop->flags & (LIBIO_FLAGS_WRITE | LIBIO_FLAGS_APPEND))
4ba4e: 674c beqs 4ba9c <memfile_open+0x68> <== NEVER TAKEN
&& (the_jnode->type == IMFS_LINEAR_FILE)) {
4ba50: 7006 moveq #6,%d0
4ba52: b0aa 0048 cmpl %a2@(72),%d0
4ba56: 6644 bnes 4ba9c <memfile_open+0x68> <== ALWAYS TAKEN
uint32_t count = the_jnode->info.linearfile.size;
const unsigned char *buffer = the_jnode->info.linearfile.direct;
the_jnode->type = IMFS_MEMORY_FILE;
4ba58: 7405 moveq #5,%d2 <== NOT EXECUTED
4ba5a: 2542 0048 movel %d2,%a2@(72) <== 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;
4ba5e: 202a 0050 movel %a2@(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;
4ba62: 4282 clrl %d2 <== NOT EXECUTED
4ba64: 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;
4ba66: 222a 0054 movel %a2@(84),%d1 <== NOT EXECUTED
the_jnode->type = IMFS_MEMORY_FILE;
the_jnode->info.file.size = 0;
4ba6a: 2542 004c movel %d2,%a2@(76) <== NOT EXECUTED
4ba6e: 2543 0050 movel %d3,%a2@(80) <== NOT EXECUTED
the_jnode->info.file.indirect = 0;
4ba72: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED
the_jnode->info.file.doubly_indirect = 0;
4ba76: 42aa 0058 clrl %a2@(88) <== NOT EXECUTED
the_jnode->info.file.triply_indirect = 0;
4ba7a: 42aa 005c clrl %a2@(92) <== NOT EXECUTED
if ((count != 0)
4ba7e: 4a80 tstl %d0 <== NOT EXECUTED
4ba80: 671a beqs 4ba9c <memfile_open+0x68> <== NOT EXECUTED
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
4ba82: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4ba84: 76ff moveq #-1,%d3 <== NOT EXECUTED
4ba86: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4ba88: 42a7 clrl %sp@- <== NOT EXECUTED
4ba8a: 42a7 clrl %sp@- <== NOT EXECUTED
4ba8c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ba8e: 4eb9 0004 b88c jsr 4b88c <IMFS_memfile_write> <== NOT EXECUTED
4ba94: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4ba98: b680 cmpl %d0,%d3 <== NOT EXECUTED
4ba9a: 6730 beqs 4bacc <memfile_open+0x98> <== NOT EXECUTED
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
4ba9c: 202b 0014 movel %a3@(20),%d0
4baa0: 0280 0000 0200 andil #512,%d0
4baa6: 6710 beqs 4bab8 <memfile_open+0x84> <== ALWAYS TAKEN
iop->offset = the_jnode->info.file.size;
4baa8: 202a 004c movel %a2@(76),%d0 <== NOT EXECUTED
4baac: 222a 0050 movel %a2@(80),%d1 <== NOT EXECUTED
4bab0: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
4bab4: 2741 0010 movel %d1,%a3@(16) <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
return 0;
4bab8: 4280 clrl %d0
return -1;
}
if (iop->flags & LIBIO_FLAGS_APPEND)
iop->offset = the_jnode->info.file.size;
iop->size = the_jnode->info.file.size;
4baba: 222a 004c movel %a2@(76),%d1
4babe: 242a 0050 movel %a2@(80),%d2
4bac2: 2741 0004 movel %d1,%a3@(4)
4bac6: 2742 0008 movel %d2,%a3@(8)
return 0;
4baca: 6002 bras 4bace <memfile_open+0x9a>
the_jnode->info.file.indirect = 0;
the_jnode->info.file.doubly_indirect = 0;
the_jnode->info.file.triply_indirect = 0;
if ((count != 0)
&& (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))
return -1;
4bacc: 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;
}
4bace: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4bad4: 4e5e unlk %fp <== NOT EXECUTED
0004b5de <memfile_read>:
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4b5de: 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 );
4b5e2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
ssize_t memfile_read(
rtems_libio_t *iop,
void *buffer,
size_t count
)
{
4b5e6: 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 );
4b5ea: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b5ee: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED
4b5f2: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4b5f6: 2f28 0018 movel %a0@(24),%sp@- <== NOT EXECUTED
4b5fa: 4eb9 0004 b43c jsr 4b43c <IMFS_memfile_read> <== NOT EXECUTED
}
4b600: 4e5e unlk %fp <== NOT EXECUTED
0004b9f2 <memfile_write>:
ssize_t memfile_write(
rtems_libio_t *iop,
const void *buffer,
size_t count
)
{
4b9f2: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4b9f6: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4b9fa: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
IMFS_jnode_t *the_jnode;
ssize_t status;
the_jnode = iop->pathinfo.node_access;
4b9fe: 266a 0018 moveal %a2@(24),%a3 <== NOT EXECUTED
status = IMFS_memfile_write( the_jnode, iop->offset, buffer, count );
4ba02: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ba06: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4ba0a: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4ba0e: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4ba12: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ba14: 4eb9 0004 b88c jsr 4b88c <IMFS_memfile_write> <== NOT EXECUTED
iop->size = the_jnode->info.file.size;
4ba1a: 222b 004c movel %a3@(76),%d1 <== NOT EXECUTED
4ba1e: 242b 0050 movel %a3@(80),%d2 <== NOT EXECUTED
4ba22: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
4ba26: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return status;
}
4ba2a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4ba30: 4e5e unlk %fp <== NOT EXECUTED
000429b0 <mkfifo>:
int mkfifo(
const char *path,
mode_t mode
)
{
429b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return mknod( path, mode | S_IFIFO, 0LL );
429b4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
429b8: 42a7 clrl %sp@- <== NOT EXECUTED
429ba: 08c0 000c bset #12,%d0 <== NOT EXECUTED
429be: 42a7 clrl %sp@- <== NOT EXECUTED
429c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
429c2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
429c6: 4eb9 0004 29d0 jsr 429d0 <mknod> <== NOT EXECUTED
}
429cc: 4e5e unlk %fp <== NOT EXECUTED
00042b68 <mknod>:
int mknod(
const char *pathname,
mode_t mode,
dev_t dev
)
{
42b68: 4e56 ffd4 linkw %fp,#-44
42b6c: 48d7 001c moveml %d2-%d4,%sp@
42b70: 262e 000c movel %fp@(12),%d3
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) ) )
42b74: 2003 movel %d3,%d0
42b76: 0280 0000 f000 andil #61440,%d0
int mknod(
const char *pathname,
mode_t mode,
dev_t dev
)
{
42b7c: 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) ) )
42b80: 4a80 tstl %d0
42b82: 660e bnes 42b92 <mknod+0x2a> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
42b84: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42b8a: 2040 moveal %d0,%a0 <== NOT EXECUTED
42b8c: 7016 moveq #22,%d0 <== NOT EXECUTED
42b8e: 2080 movel %d0,%a0@ <== NOT EXECUTED
42b90: 6064 bras 42bf6 <mknod+0x8e> <== NOT EXECUTED
rtems_filesystem_get_start_loc( pathname, &i, &temp_loc );
42b92: 240e movel %fp,%d2
42b94: 0682 ffff ffe4 addil #-28,%d2
42b9a: 2f02 movel %d2,%sp@-
42b9c: 486e fffc pea %fp@(-4)
42ba0: 2f04 movel %d4,%sp@-
42ba2: 4eb9 0004 3464 jsr 43464 <rtems_filesystem_get_start_loc>
result = (*temp_loc.ops->evalformake_h)(
42ba8: 486e fff8 pea %fp@(-8)
42bac: d8ae fffc addl %fp@(-4),%d4
42bb0: 2f02 movel %d2,%sp@-
42bb2: 206e fff0 moveal %fp@(-16),%a0
42bb6: 2f04 movel %d4,%sp@-
42bb8: 2068 0004 moveal %a0@(4),%a0
42bbc: 4e90 jsr %a0@
&pathname[i],
&temp_loc,
&name_start
);
if ( result != 0 )
42bbe: 4fef 0018 lea %sp@(24),%sp
42bc2: 4a80 tstl %d0
42bc4: 6630 bnes 42bf6 <mknod+0x8e>
return -1;
result = (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
42bc6: 2f02 movel %d2,%sp@-
42bc8: 2f2e 0014 movel %fp@(20),%sp@-
42bcc: 2f2e 0010 movel %fp@(16),%sp@-
42bd0: 206e fff0 moveal %fp@(-16),%a0
42bd4: 2f03 movel %d3,%sp@-
42bd6: 2f2e fff8 movel %fp@(-8),%sp@-
42bda: 2068 0014 moveal %a0@(20),%a0
42bde: 4e90 jsr %a0@
rtems_filesystem_freenode( &temp_loc );
42be0: 2f02 movel %d2,%sp@-
42be2: 2d40 ffe0 movel %d0,%fp@(-32)
42be6: 4eb9 0004 27a0 jsr 427a0 <rtems_filesystem_freenode>
return result;
42bec: 202e ffe0 movel %fp@(-32),%d0
42bf0: 4fef 0018 lea %sp@(24),%sp
42bf4: 6002 bras 42bf8 <mknod+0x90>
&pathname[i],
&temp_loc,
&name_start
);
if ( result != 0 )
return -1;
42bf6: 70ff moveq #-1,%d0
result = (*temp_loc.ops->mknod_h)( name_start, mode, dev, &temp_loc );
rtems_filesystem_freenode( &temp_loc );
return result;
}
42bf8: 4cee 001c ffd4 moveml %fp@(-44),%d2-%d4
42bfe: 4e5e unlk %fp
...
00042c98 <mount>:
/*
* Are the file system options valid?
*/
if ( options != RTEMS_FILESYSTEM_READ_ONLY &&
42c98: 7001 moveq #1,%d0
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
42c9a: 4e56 ffbc linkw %fp,#-68
42c9e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
42ca2: 2a2e 0008 movel %fp@(8),%d5
42ca6: 262e 000c movel %fp@(12),%d3
42caa: 266e 0010 moveal %fp@(16),%a3
/*
* Are the file system options valid?
*/
if ( options != RTEMS_FILESYSTEM_READ_ONLY &&
42cae: b0ae 0014 cmpl %fp@(20),%d0
42cb2: 650e bcss 42cc2 <mount+0x2a> <== NEVER TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
/*
* Get mount handler
*/
mount_h = rtems_filesystem_get_mount_handler( filesystemtype );
42cb4: 2f0b movel %a3,%sp@-
42cb6: 4eb9 0004 9b7e jsr 49b7e <rtems_filesystem_get_mount_handler>
if ( !mount_h )
42cbc: 588f addql #4,%sp
rtems_set_errno_and_return_minus_one( EINVAL );
/*
* Get mount handler
*/
mount_h = rtems_filesystem_get_mount_handler( filesystemtype );
42cbe: 2e00 movel %d0,%d7
if ( !mount_h )
42cc0: 6610 bnes 42cd2 <mount+0x3a> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
42cc2: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42cc8: 7816 moveq #22,%d4 <== NOT EXECUTED
42cca: 2040 moveal %d0,%a0 <== NOT EXECUTED
42ccc: 2084 movel %d4,%a0@ <== NOT EXECUTED
42cce: 6000 0218 braw 42ee8 <mount+0x250> <== NOT EXECUTED
{
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;
42cd2: 4a83 tstl %d3
42cd4: 56c2 sne %d2
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
42cd6: 283c 0005 ad68 movel #372072,%d4
{
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;
42cdc: 4482 negl %d2
const char *target_or_null,
const char *filesystemtype,
size_t *target_length_ptr
)
{
const char *target = target_or_null != NULL ? target_or_null : "/";
42cde: 4a02 tstb %d2
42ce0: 6702 beqs 42ce4 <mount+0x4c> <== ALWAYS TAKEN
42ce2: 2803 movel %d3,%d4 <== NOT EXECUTED
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
42ce4: 2f0b movel %a3,%sp@-
42ce6: 45f9 0004 dda4 lea 4dda4 <strlen>,%a2
42cec: 4e92 jsr %a2@
42cee: 588f addql #4,%sp
42cf0: 2a40 moveal %d0,%a5
42cf2: 528d addql #1,%a5
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
42cf4: 4a85 tstl %d5
42cf6: 670c beqs 42d04 <mount+0x6c> <== ALWAYS TAKEN
42cf8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
42cfa: 4e92 jsr %a2@ <== NOT EXECUTED
42cfc: 588f addql #4,%sp <== NOT EXECUTED
42cfe: 2840 moveal %d0,%a4 <== NOT EXECUTED
42d00: 528c addql #1,%a4 <== NOT EXECUTED
42d02: 6002 bras 42d06 <mount+0x6e> <== NOT EXECUTED
42d04: 99cc subal %a4,%a4
size_t target_size = strlen( target ) + 1;
42d06: 2f04 movel %d4,%sp@-
42d08: 4eb9 0004 dda4 jsr 4dda4 <strlen>
42d0e: 588f addql #4,%sp
size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_size;
42d10: 41f5 c874 lea %a5@(00000074,%a4:l),%a0
{
const char *target = target_or_null != NULL ? target_or_null : "/";
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
size_t target_size = strlen( target ) + 1;
42d14: 2d40 ffe4 movel %d0,%fp@(-28)
42d18: 5280 addql #1,%d0
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 );
42d1a: 4870 0800 pea %a0@(00000000,%d0:l)
42d1e: 4878 0001 pea 1 <ADD>
{
const char *target = target_or_null != NULL ? target_or_null : "/";
size_t filesystemtype_size = strlen( filesystemtype ) + 1;
size_t source_size = source_or_null != NULL ?
strlen( source_or_null ) + 1 : 0;
size_t target_size = strlen( target ) + 1;
42d22: 2d40 ffe8 movel %d0,%fp@(-24)
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 );
42d26: 4eb9 0004 241c jsr 4241c <calloc>
if ( mt_entry != NULL ) {
42d2c: 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 );
42d2e: 2440 moveal %d0,%a2
if ( mt_entry != NULL ) {
42d30: 4a80 tstl %d0
42d32: 6766 beqs 42d9a <mount+0x102> <== NEVER TAKEN
char *str = (char *) mt_entry + sizeof( *mt_entry );
memcpy( str, filesystemtype, filesystemtype_size );
42d34: 2f0d movel %a5,%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 );
42d36: 2c00 movel %d0,%d6
42d38: 0686 0000 0074 addil #116,%d6
memcpy( str, filesystemtype, filesystemtype_size );
mt_entry->type = str;
str += filesystemtype_size;
42d3e: 4bf5 6800 lea %a5@(00000000,%d6:l),%a5
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 );
42d42: 2f0b movel %a3,%sp@-
42d44: 47f9 0004 d1f8 lea 4d1f8 <memcpy>,%a3
42d4a: 2f06 movel %d6,%sp@-
42d4c: 4e93 jsr %a3@
mt_entry->type = str;
42d4e: 2546 006c movel %d6,%a2@(108)
str += filesystemtype_size;
memcpy( str, source_or_null, source_size );
42d52: 2f0c movel %a4,%sp@-
42d54: 2f05 movel %d5,%sp@-
42d56: 2f0d movel %a5,%sp@-
42d58: 4e93 jsr %a3@
mt_entry->dev = str;
42d5a: 254d 0070 movel %a5,%a2@(112)
str += source_size;
memcpy( str, target, target_size );
42d5e: 2f2e ffe8 movel %fp@(-24),%sp@-
mt_entry->type = str;
str += filesystemtype_size;
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
42d62: dbcc addal %a4,%a5
memcpy( str, target, target_size );
42d64: 2f04 movel %d4,%sp@-
42d66: 2f0d movel %a5,%sp@-
42d68: 4e93 jsr %a3@
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
mt_entry->mt_fs_root.mt_entry = mt_entry;
mt_entry->options = options;
42d6a: 202e 0014 movel %fp@(20),%d0
mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
42d6e: 4fef 0024 lea %sp@(36),%sp
memcpy( str, source_or_null, source_size );
mt_entry->dev = str;
str += source_size;
memcpy( str, target, target_size );
mt_entry->target = str;
42d72: 254d 0068 movel %a5,%a2@(104)
&target_length
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
mt_entry->mt_fs_root.mt_entry = mt_entry;
42d76: 254a 002c movel %a2,%a2@(44)
mt_entry->options = options;
42d7a: 2540 0030 movel %d0,%a2@(48)
mt_entry->pathconf_limits_and_options = rtems_filesystem_default_pathconf;
42d7e: 4878 0030 pea 30 <OPER2+0x1c>
42d82: 4879 0005 b21c pea 5b21c <rtems_filesystem_default_pathconf>
42d88: 486a 0038 pea %a2@(56)
42d8c: 4e93 jsr %a3@
/*
* The mount_point should be a directory with read/write/execute
* permissions in the existing tree.
*/
if ( has_target ) {
42d8e: 4fef 000c lea %sp@(12),%sp
42d92: 4a02 tstb %d2
42d94: 6700 00b4 beqw 42e4a <mount+0x1b2>
42d98: 6010 bras 42daa <mount+0x112> <== NOT EXECUTED
target,
filesystemtype,
&target_length
);
if ( !mt_entry )
rtems_set_errno_and_return_minus_one( ENOMEM );
42d9a: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42da0: 760c moveq #12,%d3 <== NOT EXECUTED
42da2: 2040 moveal %d0,%a0 <== NOT EXECUTED
42da4: 2083 movel %d3,%a0@ <== NOT EXECUTED
42da6: 6000 0140 braw 42ee8 <mount+0x250> <== 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(
42daa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
42dae: 280e movel %fp,%d4 <== NOT EXECUTED
42db0: 0684 ffff ffec addil #-20,%d4 <== NOT EXECUTED
42db6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42db8: 4878 0007 pea 7 <TRUNCDFSF> <== NOT EXECUTED
42dbc: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED
42dc0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42dc2: 4eb9 0004 26d4 jsr 426d4 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
42dc8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
42dcc: 72ff moveq #-1,%d1 <== NOT EXECUTED
42dce: b280 cmpl %d0,%d1 <== NOT EXECUTED
42dd0: 6700 00f2 beqw 42ec4 <mount+0x22c> <== NOT EXECUTED
/*
* Test to see if it is a directory
*/
if ( loc.ops->node_type_h( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
42dd4: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
42dd8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42dda: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
42dde: 4e90 jsr %a0@ <== NOT EXECUTED
42de0: 588f addql #4,%sp <== NOT EXECUTED
42de2: 7201 moveq #1,%d1 <== NOT EXECUTED
42de4: b280 cmpl %d0,%d1 <== NOT EXECUTED
42de6: 6710 beqs 42df8 <mount+0x160> <== NOT EXECUTED
errno = ENOTDIR;
42de8: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42dee: 7414 moveq #20,%d2 <== NOT EXECUTED
42df0: 2040 moveal %d0,%a0 <== NOT EXECUTED
42df2: 2082 movel %d2,%a0@ <== NOT EXECUTED
42df4: 6000 00d2 braw 42ec8 <mount+0x230> <== 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 ) ) {
42df8: 2f2e ffec movel %fp@(-20),%sp@- <== NOT EXECUTED
42dfc: 487a fe06 pea %pc@(42c04 <is_node_fs_root>) <== NOT EXECUTED
42e00: 4eb9 0004 2c4e jsr 42c4e <rtems_filesystem_mount_iterate> <== NOT EXECUTED
42e06: 508f addql #8,%sp <== NOT EXECUTED
42e08: 4a00 tstb %d0 <== NOT EXECUTED
42e0a: 6710 beqs 42e1c <mount+0x184> <== NOT EXECUTED
errno = EBUSY;
42e0c: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42e12: 7210 moveq #16,%d1 <== NOT EXECUTED
42e14: 2040 moveal %d0,%a0 <== NOT EXECUTED
42e16: 2081 movel %d1,%a0@ <== NOT EXECUTED
42e18: 6000 00ae braw 42ec8 <mount+0x230> <== 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;
42e1c: 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;
42e20: 256e ffec 0008 movel %fp@(-20),%a2@(8) <== NOT EXECUTED
mt_entry->mt_point_node.handlers = loc.handlers;
42e26: 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;
42e2c: 256e fffc 0018 movel %fp@(-4),%a2@(24) <== 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;
42e32: 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 ) ) {
42e36: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42e38: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED
42e3c: 4e90 jsr %a0@ <== NOT EXECUTED
42e3e: 588f addql #4,%sp <== NOT EXECUTED
42e40: 4a80 tstl %d0 <== NOT EXECUTED
42e42: 6600 0084 bnew 42ec8 <mount+0x230> <== NOT EXECUTED
if ( has_target ) {
if ( rtems_filesystem_evaluate_path(
target, target_length, RTEMS_LIBIO_PERMS_RWX, &loc, true ) == -1 )
goto cleanup_and_bail;
loc_to_free = &loc;
42e46: 2604 movel %d4,%d3 <== NOT EXECUTED
42e48: 601e bras 42e68 <mount+0x1d0> <== NOT EXECUTED
}
} else {
/*
* Do we already have a base file system ?
*/
if ( !rtems_chain_is_empty( &mount_chain ) ) {
42e4a: 203c 0005 c2a8 movel #377512,%d0
42e50: b0b9 0005 c2a4 cmpl 5c2a4 <mount_chain>,%d0
42e56: 670e beqs 42e66 <mount+0x1ce> <== ALWAYS TAKEN
errno = EINVAL;
42e58: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42e5e: 2040 moveal %d0,%a0 <== NOT EXECUTED
42e60: 7016 moveq #22,%d0 <== NOT EXECUTED
42e62: 2080 movel %d0,%a0@ <== NOT EXECUTED
42e64: 605e bras 42ec4 <mount+0x22c> <== NOT EXECUTED
)
{
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;
42e66: 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 ) ) {
42e68: 2f2e 0018 movel %fp@(24),%sp@-
42e6c: 2047 moveal %d7,%a0
42e6e: 2f0a movel %a2,%sp@-
42e70: 4e90 jsr %a0@
42e72: 508f addql #8,%sp
42e74: 4a80 tstl %d0
42e76: 6710 beqs 42e88 <mount+0x1f0> <== ALWAYS TAKEN
/*
* Try to undo the mount operation
*/
loc.ops->unmount_h( mt_entry );
42e78: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
42e7c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42e7e: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED
42e82: 4e90 jsr %a0@ <== NOT EXECUTED
goto cleanup_and_bail;
42e84: 588f addql #4,%sp <== NOT EXECUTED
42e86: 6042 bras 42eca <mount+0x232> <== NOT EXECUTED
}
/*
* Add the mount table entry to the mount table chain
*/
rtems_libio_lock();
42e88: 4eba fd92 jsr %pc@(42c1c <rtems_libio_lock>)
42e8c: 2f0a movel %a2,%sp@-
42e8e: 4879 0005 c2a4 pea 5c2a4 <mount_chain>
42e94: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append>
rtems_chain_append( &mount_chain, &mt_entry->Node );
rtems_libio_unlock();
42e9a: 4eba fd9c jsr %pc@(42c38 <rtems_libio_unlock>)
if ( !has_target )
42e9e: 508f addql #8,%sp
42ea0: 4a02 tstb %d2
42ea2: 6640 bnes 42ee4 <mount+0x24c> <== NEVER TAKEN
rtems_filesystem_root = mt_entry->mt_fs_root;
42ea4: 4878 0014 pea 14 <OPER2>
42ea8: 486a 001c pea %a2@(28)
42eac: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0
42eb2: 41e8 0018 lea %a0@(24),%a0
42eb6: 2f08 movel %a0,%sp@-
42eb8: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy>
42ebe: 4fef 000c lea %sp@(12),%sp
42ec2: 6020 bras 42ee4 <mount+0x24c>
)
{
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;
42ec4: 4283 clrl %d3 <== NOT EXECUTED
42ec6: 6002 bras 42eca <mount+0x232> <== NOT EXECUTED
if ( has_target ) {
if ( rtems_filesystem_evaluate_path(
target, target_length, RTEMS_LIBIO_PERMS_RWX, &loc, true ) == -1 )
goto cleanup_and_bail;
loc_to_free = &loc;
42ec8: 2604 movel %d4,%d3 <== NOT EXECUTED
return 0;
cleanup_and_bail:
free( mt_entry );
42eca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42ecc: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
if ( loc_to_free )
42ed2: 588f addql #4,%sp <== NOT EXECUTED
42ed4: 4a83 tstl %d3 <== NOT EXECUTED
42ed6: 6710 beqs 42ee8 <mount+0x250> <== NOT EXECUTED
rtems_filesystem_freenode( loc_to_free );
42ed8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42eda: 4eb9 0004 27a0 jsr 427a0 <rtems_filesystem_freenode> <== NOT EXECUTED
42ee0: 588f addql #4,%sp <== NOT EXECUTED
42ee2: 6004 bras 42ee8 <mount+0x250> <== NOT EXECUTED
rtems_libio_unlock();
if ( !has_target )
rtems_filesystem_root = mt_entry->mt_fs_root;
return 0;
42ee4: 4280 clrl %d0
42ee6: 6002 bras 42eea <mount+0x252>
free( mt_entry );
if ( loc_to_free )
rtems_filesystem_freenode( loc_to_free );
return -1;
42ee8: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
42eea: 4cee 3cfc ffbc moveml %fp@(-68),%d2-%d7/%a2-%a5
42ef0: 4e5e unlk %fp <== NOT EXECUTED
00043264 <mount_and_make_target_path>:
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
43264: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
43268: 48d7 007c moveml %d2-%d6,%sp@ <== NOT EXECUTED
4326c: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
43270: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
43274: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
43278: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED
4327c: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
int rv = -1;
if (target != NULL) {
43280: 4a82 tstl %d2 <== NOT EXECUTED
43282: 6734 beqs 432b8 <mount_and_make_target_path+0x54><== NOT EXECUTED
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
43284: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
43288: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4328a: 4eb9 0004 3b30 jsr 43b30 <rtems_mkdir> <== NOT EXECUTED
if (rv == 0) {
43290: 508f addql #8,%sp <== NOT EXECUTED
43292: 4a80 tstl %d0 <== NOT EXECUTED
43294: 6630 bnes 432c6 <mount_and_make_target_path+0x62><== NOT EXECUTED
rv = mount(
43296: 2d46 0018 movel %d6,%fp@(24) <== NOT EXECUTED
4329a: 2d45 0014 movel %d5,%fp@(20) <== NOT EXECUTED
4329e: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED
432a2: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
432a6: 2d43 0008 movel %d3,%fp@(8) <== NOT EXECUTED
} else {
errno = EINVAL;
}
return rv;
}
432aa: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
432b0: 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(
432b2: 4ef9 0004 3364 jmp 43364 <mount> <== NOT EXECUTED
options,
data
);
}
} else {
errno = EINVAL;
432b8: 4eb9 0004 cfc0 jsr 4cfc0 <__errno> <== NOT EXECUTED
432be: 2040 moveal %d0,%a0 <== NOT EXECUTED
432c0: 7016 moveq #22,%d0 <== NOT EXECUTED
432c2: 2080 movel %d0,%a0@ <== NOT EXECUTED
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
int rv = -1;
432c4: 70ff moveq #-1,%d0 <== NOT EXECUTED
} else {
errno = EINVAL;
}
return rv;
}
432c6: 4cee 007c ffec moveml %fp@(-20),%d2-%d6 <== NOT EXECUTED
432cc: 4e5e unlk %fp <== NOT EXECUTED
00045480 <mprotect>:
const void *addr __attribute__((unused)),
size_t len __attribute__((unused)),
int prot __attribute__((unused)) )
{
return 0;
}
45480: 4280 clrl %d0 <== NOT EXECUTED
int mprotect(
const void *addr __attribute__((unused)),
size_t len __attribute__((unused)),
int prot __attribute__((unused)) )
{
45482: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
45486: 4e5e unlk %fp <== NOT EXECUTED
...
000498ec <mq_close>:
*/
int mq_close(
mqd_t mqdes
)
{
498ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
498f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
498f2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
498f6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
498fa: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49900: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
if ( location == OBJECTS_LOCAL ) {
49906: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4990a: 2440 moveal %d0,%a2 <== NOT EXECUTED
4990c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49910: 663a bnes 4994c <mq_close+0x60> <== NOT EXECUTED
* First update the actual message queue to reflect this descriptor
* being disassociated. This may result in the queue being really
* deleted.
*/
the_mq = the_mq_fd->Queue;
49912: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
the_mq->open_count -= 1;
49916: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED
_POSIX_Message_queue_Delete( the_mq );
4991a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4991c: 4eb9 0004 9964 jsr 49964 <_POSIX_Message_queue_Delete> <== NOT EXECUTED
/*
* Now close this file descriptor.
*/
_Objects_Close(
49922: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49924: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
4992a: 4eb9 0004 c648 jsr 4c648 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (
POSIX_Message_queue_Control_fd *the_mq_fd
)
{
_Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
49930: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49932: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49938: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
&_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
4993e: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
49944: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
49948: 4280 clrl %d0 <== NOT EXECUTED
4994a: 600e bras 4995a <mq_close+0x6e> <== NOT EXECUTED
/*
* OBJECTS_REMOTE:
* OBJECTS_ERROR:
*/
rtems_set_errno_and_return_minus_one( EBADF );
4994c: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49952: 2040 moveal %d0,%a0 <== NOT EXECUTED
49954: 7009 moveq #9,%d0 <== NOT EXECUTED
49956: 2080 movel %d0,%a0@ <== NOT EXECUTED
49958: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4995a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4995e: 4e5e unlk %fp <== NOT EXECUTED
...
000499b4 <mq_getattr>:
int mq_getattr(
mqd_t mqdes,
struct mq_attr *mqstat
)
{
499b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
499b8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
499ba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
CORE_message_queue_Attributes *the_mq_attr;
if ( !mqstat )
499be: 4a8a tstl %a2 <== NOT EXECUTED
499c0: 660e bnes 499d0 <mq_getattr+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
499c2: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
499c8: 7216 moveq #22,%d1 <== NOT EXECUTED
499ca: 2040 moveal %d0,%a0 <== NOT EXECUTED
499cc: 2081 movel %d1,%a0@ <== NOT EXECUTED
499ce: 6050 bras 49a20 <mq_getattr+0x6c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
mqd_t id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control_fd *) _Objects_Get(
499d0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
499d4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
499d8: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
499de: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
499e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
499e8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
499ec: 6626 bnes 49a14 <mq_getattr+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_mq = the_mq_fd->Queue;
499ee: 2240 moveal %d0,%a1 <== NOT EXECUTED
499f0: 2069 0010 moveal %a1@(16),%a0 <== NOT EXECUTED
* Return the old values.
*/
the_mq_attr = &the_mq->Message_queue.Attributes;
mqstat->mq_flags = the_mq_fd->oflag;
499f4: 24a9 0014 movel %a1@(20),%a2@ <== NOT EXECUTED
mqstat->mq_msgsize = the_mq->Message_queue.maximum_message_size;
499f8: 2568 0066 0008 movel %a0@(102),%a2@(8) <== NOT EXECUTED
mqstat->mq_maxmsg = the_mq->Message_queue.maximum_pending_messages;
499fe: 2568 005e 0004 movel %a0@(94),%a2@(4) <== NOT EXECUTED
mqstat->mq_curmsgs = the_mq->Message_queue.number_of_pending_messages;
49a04: 2568 0062 000c movel %a0@(98),%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
49a0a: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
49a10: 4280 clrl %d0 <== NOT EXECUTED
49a12: 600e bras 49a22 <mq_getattr+0x6e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
49a14: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49a1a: 2040 moveal %d0,%a0 <== NOT EXECUTED
49a1c: 7009 moveq #9,%d0 <== NOT EXECUTED
49a1e: 2080 movel %d0,%a0@ <== NOT EXECUTED
49a20: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49a22: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
49a26: 4e5e unlk %fp <== NOT EXECUTED
...
00049a62 <mq_notify>:
int mq_notify(
mqd_t mqdes,
const struct sigevent *notification
)
{
49a62: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
49a66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49a68: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49a6a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49a6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49a72: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49a78: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
49a7c: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
POSIX_Message_queue_Control *the_mq;
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
49a82: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49a86: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49a8a: 665e bnes 49aea <mq_notify+0x88> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_mq = the_mq_fd->Queue;
49a8c: 2040 moveal %d0,%a0 <== NOT EXECUTED
49a8e: 2468 0010 moveal %a0@(16),%a2 <== NOT EXECUTED
if ( notification ) {
49a92: 4a82 tstl %d2 <== NOT EXECUTED
49a94: 6742 beqs 49ad8 <mq_notify+0x76> <== NOT EXECUTED
if ( _CORE_message_queue_Is_notify_enabled( &the_mq->Message_queue ) ) {
49a96: 4aaa 007a tstl %a2@(122) <== NOT EXECUTED
49a9a: 6714 beqs 49ab0 <mq_notify+0x4e> <== NOT EXECUTED
_Thread_Enable_dispatch();
49a9c: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
49aa2: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49aa8: 7210 moveq #16,%d1 <== NOT EXECUTED
49aaa: 2040 moveal %d0,%a0 <== NOT EXECUTED
49aac: 2081 movel %d1,%a0@ <== NOT EXECUTED
49aae: 6046 bras 49af6 <mq_notify+0x94> <== NOT EXECUTED
49ab0: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
}
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
the_mq->notification = *notification;
49ab4: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
49ab8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49aba: 486a 008e pea %a2@(142) <== NOT EXECUTED
49abe: 4eb9 0005 3694 jsr 53694 <memcpy> <== NOT EXECUTED
49ac4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
49ac8: 203c 0004 9a2c movel #301612,%d0 <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
49ace: 254a 007e movel %a2,%a2@(126) <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
49ad2: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
49ad6: 6008 bras 49ae0 <mq_notify+0x7e> <== NOT EXECUTED
49ad8: 42aa 007a clrl %a2@(122) <== NOT EXECUTED
the_message_queue->notify_argument = the_argument;
49adc: 42aa 007e clrl %a2@(126) <== NOT EXECUTED
_CORE_message_queue_Set_notify( &the_mq->Message_queue, NULL, NULL );
}
_Thread_Enable_dispatch();
49ae0: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
49ae6: 4280 clrl %d0 <== NOT EXECUTED
49ae8: 600e bras 49af8 <mq_notify+0x96> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
49aea: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49af0: 2040 moveal %d0,%a0 <== NOT EXECUTED
49af2: 7009 moveq #9,%d0 <== NOT EXECUTED
49af4: 2080 movel %d0,%a0@ <== NOT EXECUTED
49af6: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49af8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
49afc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
49b00: 4e5e unlk %fp <== NOT EXECUTED
00049b04 <mq_open>:
int oflag,
...
/* mode_t mode, */
/* struct mq_attr attr */
)
{
49b04: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
49b08: 2039 0006 5d44 movel 65d44 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
49b0e: 5280 addql #1,%d0 <== NOT EXECUTED
49b10: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
49b14: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
49b18: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
49b1c: 23c0 0006 5d44 movel %d0,65d44 <_Thread_Dispatch_disable_level><== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
Objects_Locations location;
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
49b22: 2a02 movel %d2,%d5 <== NOT EXECUTED
49b24: 0285 0000 0200 andil #512,%d5 <== NOT EXECUTED
49b2a: 6706 beqs 49b32 <mq_open+0x2e> <== NOT EXECUTED
va_start(arg, oflag);
mode = (mode_t) va_arg( arg, unsigned int );
attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );
49b2c: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
49b30: 6002 bras 49b34 <mq_open+0x30> <== NOT EXECUTED
/* struct mq_attr attr */
)
{
va_list arg;
mode_t mode;
struct mq_attr *attr = NULL;
49b32: 4284 clrl %d4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *
_POSIX_Message_queue_Allocate_fd( void )
{
return (POSIX_Message_queue_Control_fd *)
_Objects_Allocate( &_POSIX_Message_queue_Information_fds );
49b34: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49b3a: 4eb9 0004 c5cc jsr 4c5cc <_Objects_Allocate> <== NOT EXECUTED
attr = (struct mq_attr *) va_arg( arg, struct mq_attr * );
va_end(arg);
}
the_mq_fd = _POSIX_Message_queue_Allocate_fd();
if ( !the_mq_fd ) {
49b40: 588f addql #4,%sp <== NOT EXECUTED
49b42: 2440 moveal %d0,%a2 <== NOT EXECUTED
49b44: 4a80 tstl %d0 <== NOT EXECUTED
49b46: 6614 bnes 49b5c <mq_open+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
49b48: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENFILE );
49b4e: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49b54: 7217 moveq #23,%d1 <== NOT EXECUTED
49b56: 2040 moveal %d0,%a0 <== NOT EXECUTED
49b58: 2081 movel %d1,%a0@ <== NOT EXECUTED
49b5a: 6044 bras 49ba0 <mq_open+0x9c> <== NOT EXECUTED
}
the_mq_fd->oflag = oflag;
49b5c: 2542 0014 movel %d2,%a2@(20) <== NOT EXECUTED
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
49b60: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49b64: 2f03 movel %d3,%sp@- <== NOT EXECUTED
49b66: 4eb9 0004 fe40 jsr 4fe40 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED
* If the name to id translation worked, then the message queue exists
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "message queue does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
49b6c: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one( ENFILE );
}
the_mq_fd->oflag = oflag;
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
49b6e: 2640 moveal %d0,%a3 <== NOT EXECUTED
* If the name to id translation worked, then the message queue exists
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "message queue does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
49b70: 4a80 tstl %d0 <== NOT EXECUTED
49b72: 6732 beqs 49ba6 <mq_open+0xa2> <== NOT EXECUTED
/*
* Unless provided a valid name that did not already exist
* and we are willing to create then it is an error.
*/
if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {
49b74: 7002 moveq #2,%d0 <== NOT EXECUTED
49b76: b08b cmpl %a3,%d0 <== NOT EXECUTED
49b78: 6606 bnes 49b80 <mq_open+0x7c> <== NOT EXECUTED
49b7a: 4a85 tstl %d5 <== NOT EXECUTED
49b7c: 6600 009e bnew 49c1c <mq_open+0x118> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (
POSIX_Message_queue_Control_fd *the_mq_fd
)
{
_Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
49b80: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49b82: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49b88: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
49b8e: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, mqd_t );
49b94: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49b9a: 2040 moveal %d0,%a0 <== NOT EXECUTED
49b9c: 208b movel %a3,%a0@ <== NOT EXECUTED
49b9e: 508f addql #8,%sp <== NOT EXECUTED
49ba0: 70ff moveq #-1,%d0 <== NOT EXECUTED
49ba2: 6000 00ce braw 49c72 <mq_open+0x16e> <== NOT EXECUTED
49ba6: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
} else { /* name -> ID translation succeeded */
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
49bac: 0282 0000 0a00 andil #2560,%d2 <== NOT EXECUTED
49bb2: 0c82 0000 0a00 cmpil #2560,%d2 <== NOT EXECUTED
49bb8: 661e bnes 49bd8 <mq_open+0xd4> <== NOT EXECUTED
49bba: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49bbc: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49bc2: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
49bc8: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );
49bca: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49bd0: 2040 moveal %d0,%a0 <== NOT EXECUTED
49bd2: 7011 moveq #17,%d0 <== NOT EXECUTED
49bd4: 2080 movel %d0,%a0@ <== NOT EXECUTED
49bd6: 60c6 bras 49b9e <mq_open+0x9a> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (POSIX_Message_queue_Control *)
_Objects_Get( &_POSIX_Message_queue_Information, id, location );
49bd8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
49bdc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
49be0: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
49be6: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
/*
* In this case we need to do an ID->pointer conversion to
* check the mode.
*/
the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );
the_mq->open_count += 1;
49bec: 2040 moveal %d0,%a0 <== NOT EXECUTED
49bee: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
49bf2: 2079 0006 6174 moveal 66174 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED
/*
* In this case we need to do an ID->pointer conversion to
* check the mode.
*/
the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );
49bf8: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
the_mq->open_count += 1;
the_mq_fd->Queue = the_mq;
49bfc: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
49c00: 4280 clrl %d0 <== NOT EXECUTED
49c02: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
49c06: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
49c0a: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Objects_Open_string(
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
49c0e: 4e93 jsr %a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49c10: 4e93 jsr %a3@ <== NOT EXECUTED
return (mqd_t)the_mq_fd->Object.id;
49c12: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
49c16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49c1a: 6056 bras 49c72 <mq_open+0x16e> <== NOT EXECUTED
/*
* At this point, the message queue does not exist and everything has been
* checked. We should go ahead and create a message queue.
*/
status = _POSIX_Message_queue_Create_support(
49c1c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
49c20: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
49c26: 2f04 movel %d4,%sp@- <== NOT EXECUTED
49c28: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49c2c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
49c2e: 4eb9 0004 fcf0 jsr 4fcf0 <_POSIX_Message_queue_Create_support><== NOT EXECUTED
);
/*
* errno was set by Create_support, so don't set it again.
*/
if ( status == -1 ) {
49c34: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
49c38: 72ff moveq #-1,%d1 <== NOT EXECUTED
49c3a: b280 cmpl %d0,%d1 <== NOT EXECUTED
49c3c: 6614 bnes 49c52 <mq_open+0x14e> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (
POSIX_Message_queue_Control_fd *the_mq_fd
)
{
_Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
49c3e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49c40: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49c46: 4eb9 0004 c8c0 jsr 4c8c0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Message_queue_Free_fd( the_mq_fd );
_Thread_Enable_dispatch();
49c4c: 4e93 jsr %a3@ <== NOT EXECUTED
49c4e: 6000 ff4e braw 49b9e <mq_open+0x9a> <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
49c52: 4280 clrl %d0 <== NOT EXECUTED
return (mqd_t) -1;
}
the_mq_fd->Queue = the_mq;
49c54: 256e fff8 0010 movel %fp@(-8),%a2@(16) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
49c5a: 2079 0006 6174 moveal 66174 <_POSIX_Message_queue_Information_fds+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
_Objects_Set_local_object(
49c60: 302a 000a movew %a2@(10),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
49c64: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4) <== NOT EXECUTED
the_object
);
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
/* ASSERT: information->is_string */
the_object->name.name_p = name;
49c68: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
&_POSIX_Message_queue_Information_fds,
&the_mq_fd->Object,
NULL
);
_Thread_Enable_dispatch();
49c6c: 4e93 jsr %a3@ <== NOT EXECUTED
return (mqd_t) the_mq_fd->Object.id;
49c6e: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
}
49c72: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED
49c78: 4e5e unlk %fp <== NOT EXECUTED
00049c7c <mq_receive>:
mqd_t mqdes,
char *msg_ptr,
size_t msg_len,
unsigned int *msg_prio
)
{
49c7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Message_queue_Receive_support(
49c80: 42a7 clrl %sp@- <== NOT EXECUTED
49c82: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49c86: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
49c8a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49c8e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49c92: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49c96: 4eb9 0004 9ca0 jsr 49ca0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED
msg_len,
msg_prio,
true,
THREAD_QUEUE_WAIT_FOREVER
);
}
49c9c: 4e5e unlk %fp <== NOT EXECUTED
00049da4 <mq_send>:
mqd_t mqdes,
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio
)
{
49da4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Message_queue_Send_support(
49da8: 42a7 clrl %sp@- <== NOT EXECUTED
49daa: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
49dae: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
49db2: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49db6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49dba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49dbe: 4eb9 0004 9dc8 jsr 49dc8 <_POSIX_Message_queue_Send_support><== NOT EXECUTED
msg_len,
msg_prio,
true,
THREAD_QUEUE_WAIT_FOREVER
);
}
49dc4: 4e5e unlk %fp <== NOT EXECUTED
00049eb4 <mq_setattr>:
int mq_setattr(
mqd_t mqdes,
const struct mq_attr *mqstat,
struct mq_attr *omqstat
)
{
49eb4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
49eb8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
49eba: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
49ebe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49ec0: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_Message_queue_Control_fd *the_mq_fd;
CORE_message_queue_Control *the_core_mq;
Objects_Locations location;
if ( !mqstat )
49ec4: 4a8b tstl %a3 <== NOT EXECUTED
49ec6: 660e bnes 49ed6 <mq_setattr+0x22> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49ec8: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49ece: 7216 moveq #22,%d1 <== NOT EXECUTED
49ed0: 2040 moveal %d0,%a0 <== NOT EXECUTED
49ed2: 2081 movel %d1,%a0@ <== NOT EXECUTED
49ed4: 6058 bras 49f2e <mq_setattr+0x7a> <== NOT EXECUTED
49ed6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49eda: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49ede: 4879 0006 615c pea 6615c <_POSIX_Message_queue_Information_fds><== NOT EXECUTED
49ee4: 4eb9 0004 ca24 jsr 4ca24 <_Objects_Get> <== NOT EXECUTED
the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );
switch ( location ) {
49eea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49eee: 2040 moveal %d0,%a0 <== NOT EXECUTED
49ef0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49ef4: 662c bnes 49f22 <mq_setattr+0x6e> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_core_mq = &the_mq_fd->Queue->Message_queue;
49ef6: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
/*
* Return the old values.
*/
if ( omqstat ) {
49efa: 4a8a tstl %a2 <== NOT EXECUTED
49efc: 6716 beqs 49f14 <mq_setattr+0x60> <== NOT EXECUTED
omqstat->mq_flags = the_mq_fd->oflag;
49efe: 24a8 0014 movel %a0@(20),%a2@ <== NOT EXECUTED
omqstat->mq_msgsize = the_core_mq->maximum_message_size;
49f02: 2569 0066 0008 movel %a1@(102),%a2@(8) <== NOT EXECUTED
omqstat->mq_maxmsg = the_core_mq->maximum_pending_messages;
49f08: 2569 005e 0004 movel %a1@(94),%a2@(4) <== NOT EXECUTED
omqstat->mq_curmsgs = the_core_mq->number_of_pending_messages;
49f0e: 2569 0062 000c movel %a1@(98),%a2@(12) <== NOT EXECUTED
}
the_mq_fd->oflag = mqstat->mq_flags;
49f14: 2153 0014 movel %a3@,%a0@(20) <== NOT EXECUTED
_Thread_Enable_dispatch();
49f18: 4eb9 0004 d50a jsr 4d50a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
49f1e: 4280 clrl %d0 <== NOT EXECUTED
49f20: 600e bras 49f30 <mq_setattr+0x7c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EBADF );
49f22: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
49f28: 2040 moveal %d0,%a0 <== NOT EXECUTED
49f2a: 7009 moveq #9,%d0 <== NOT EXECUTED
49f2c: 2080 movel %d0,%a0@ <== NOT EXECUTED
49f2e: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49f30: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
49f34: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
49f38: 4e5e unlk %fp <== NOT EXECUTED
00049f3c <mq_timedreceive>:
char *msg_ptr,
size_t msg_len,
unsigned int *msg_prio,
const struct timespec *abstime
)
{
49f3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
*
* If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,
* POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
* then we should not wait.
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
49f40: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49f44: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
49f48: 4eb9 0004 a04c jsr 4a04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
return _POSIX_Message_queue_Receive_support(
49f4e: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
49f52: 7203 moveq #3,%d1 <== NOT EXECUTED
49f54: b280 cmpl %d0,%d1 <== NOT EXECUTED
49f56: 57c0 seq %d0 <== NOT EXECUTED
49f58: 49c0 extbl %d0 <== NOT EXECUTED
49f5a: 4480 negl %d0 <== NOT EXECUTED
49f5c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49f5e: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
49f62: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49f66: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49f6a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49f6e: 4eb9 0004 9ca0 jsr 49ca0 <_POSIX_Message_queue_Receive_support><== NOT EXECUTED
msg_len,
msg_prio,
do_wait,
ticks
);
}
49f74: 4e5e unlk %fp <== NOT EXECUTED
00049f78 <mq_timedsend>:
const char *msg_ptr,
size_t msg_len,
unsigned int msg_prio,
const struct timespec *abstime
)
{
49f78: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
*
* If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,
* POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
* then we should not wait.
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
49f7c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49f80: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
49f84: 4eb9 0004 a04c jsr 4a04c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
return _POSIX_Message_queue_Send_support(
49f8a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
49f8e: 7203 moveq #3,%d1 <== NOT EXECUTED
49f90: b280 cmpl %d0,%d1 <== NOT EXECUTED
49f92: 57c0 seq %d0 <== NOT EXECUTED
49f94: 49c0 extbl %d0 <== NOT EXECUTED
49f96: 4480 negl %d0 <== NOT EXECUTED
49f98: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49f9a: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
49f9e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49fa2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49fa6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49faa: 4eb9 0004 9dc8 jsr 49dc8 <_POSIX_Message_queue_Send_support><== NOT EXECUTED
msg_len,
msg_prio,
do_wait,
ticks
);
}
49fb0: 4e5e unlk %fp <== NOT EXECUTED
00049fcc <mq_unlink>:
*/
int mq_unlink(
const char *name
)
{
49fcc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
49fd0: 2039 0006 5d44 movel 65d44 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
49fd6: 5280 addql #1,%d0 <== NOT EXECUTED
49fd8: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
49fdc: 23c0 0006 5d44 movel %d0,65d44 <_Thread_Dispatch_disable_level><== NOT EXECUTED
register POSIX_Message_queue_Control *the_mq;
Objects_Id the_mq_id;
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
49fe2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49fe6: 47f9 0004 d50a lea 4d50a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
49fec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49ff0: 4eb9 0004 fe40 jsr 4fe40 <_POSIX_Message_queue_Name_to_id> <== NOT EXECUTED
if ( status != 0 ) {
49ff6: 508f addql #8,%sp <== NOT EXECUTED
register POSIX_Message_queue_Control *the_mq;
Objects_Id the_mq_id;
_Thread_Disable_dispatch();
status = _POSIX_Message_queue_Name_to_id( name, &the_mq_id );
49ff8: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != 0 ) {
49ffa: 6710 beqs 4a00c <mq_unlink+0x40> <== NOT EXECUTED
_Thread_Enable_dispatch();
49ffc: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
49ffe: 4eb9 0005 2dd0 jsr 52dd0 <__errno> <== NOT EXECUTED
4a004: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a006: 70ff moveq #-1,%d0 <== NOT EXECUTED
4a008: 2082 movel %d2,%a0@ <== NOT EXECUTED
4a00a: 6034 bras 4a040 <mq_unlink+0x74> <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
4a00c: 4280 clrl %d0 <== NOT EXECUTED
4a00e: 2079 0006 6006 moveal 66006 <_POSIX_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
4a014: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED
}
the_mq = (POSIX_Message_queue_Control *) _Objects_Get_local_object(
4a018: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED
&_POSIX_Message_queue_Information,
_Objects_Get_index( the_mq_id )
);
the_mq->linked = false;
4a01c: 4200 clrb %d0 <== NOT EXECUTED
4a01e: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Namespace_remove (
POSIX_Message_queue_Control *the_mq
)
{
_Objects_Namespace_remove(
4a022: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a024: 4879 0006 5fee pea 65fee <_POSIX_Message_queue_Information><== NOT EXECUTED
4a02a: 4eb9 0004 cb80 jsr 4cb80 <_Objects_Namespace_remove> <== NOT EXECUTED
_POSIX_Message_queue_Namespace_remove( the_mq );
_POSIX_Message_queue_Delete( the_mq );
4a030: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a032: 4eb9 0004 9964 jsr 49964 <_POSIX_Message_queue_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
4a038: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
4a03a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a03e: 4280 clrl %d0 <== NOT EXECUTED
}
4a040: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4a046: 4e5e unlk %fp <== NOT EXECUTED
...
0005aa6a <nanosleep>:
int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp
)
{
5aa6a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5aa6e: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
5aa72: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
5aa76: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
* Return EINVAL if the delay interval is negative.
*
* NOTE: This behavior is beyond the POSIX specification.
* FSU and GNU/Linux pthreads shares this behavior.
*/
if ( !_Timespec_Is_valid( rqtp ) )
5aa7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5aa7c: 4eb9 0005 aba0 jsr 5aba0 <_Timespec_Is_valid> <== NOT EXECUTED
5aa82: 588f addql #4,%sp <== NOT EXECUTED
5aa84: 4a00 tstb %d0 <== NOT EXECUTED
5aa86: 6610 bnes 5aa98 <nanosleep+0x2e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
5aa88: 4eb9 0004 cd88 jsr 4cd88 <__errno> <== NOT EXECUTED
5aa8e: 7216 moveq #22,%d1 <== NOT EXECUTED
5aa90: 2040 moveal %d0,%a0 <== NOT EXECUTED
5aa92: 2081 movel %d1,%a0@ <== NOT EXECUTED
5aa94: 6000 00bc braw 5ab52 <nanosleep+0xe8> <== NOT EXECUTED
ticks = _Timespec_To_ticks( rqtp );
5aa98: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5aa9a: 47f9 0004 7b32 lea 47b32 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
5aaa0: 4eb9 0004 b61c jsr 4b61c <_Timespec_To_ticks> <== NOT EXECUTED
* A nanosleep for zero time is implemented as a yield.
* This behavior is also beyond the POSIX specification but is
* consistent with the RTEMS API and yields desirable behavior.
*/
if ( !ticks ) {
5aaa6: 588f addql #4,%sp <== NOT EXECUTED
5aaa8: 41fa ffaa lea %pc@(5aa54 <_Thread_Disable_dispatch>),%a0<== NOT EXECUTED
* FSU and GNU/Linux pthreads shares this behavior.
*/
if ( !_Timespec_Is_valid( rqtp ) )
rtems_set_errno_and_return_minus_one( EINVAL );
ticks = _Timespec_To_ticks( rqtp );
5aaac: 2400 movel %d0,%d2 <== NOT EXECUTED
* A nanosleep for zero time is implemented as a yield.
* This behavior is also beyond the POSIX specification but is
* consistent with the RTEMS API and yields desirable behavior.
*/
if ( !ticks ) {
5aaae: 6624 bnes 5aad4 <nanosleep+0x6a> <== NOT EXECUTED
_Thread_Disable_dispatch();
5aab0: 4e90 jsr %a0@ <== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
5aab2: 4879 0005 ea46 pea 5ea46 <_Scheduler> <== NOT EXECUTED
5aab8: 2079 0005 ea4e moveal 5ea4e <_Scheduler+0x8>,%a0 <== NOT EXECUTED
5aabe: 4e90 jsr %a0@ <== NOT EXECUTED
_Scheduler_Yield();
_Thread_Enable_dispatch();
5aac0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( rmtp ) {
5aac2: 588f addql #4,%sp <== NOT EXECUTED
5aac4: 4a8a tstl %a2 <== NOT EXECUTED
5aac6: 6700 008e beqw 5ab56 <nanosleep+0xec> <== NOT EXECUTED
rmtp->tv_sec = 0;
5aaca: 4292 clrl %a2@ <== NOT EXECUTED
rmtp->tv_nsec = 0;
5aacc: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
5aad0: 6000 0084 braw 5ab56 <nanosleep+0xec> <== NOT EXECUTED
}
/*
* Block for the desired amount of time
*/
_Thread_Disable_dispatch();
5aad4: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Set_state(
5aad6: 2f3c 1000 0008 movel #268435464,%sp@- <== NOT EXECUTED
5aadc: 2f39 0005 ee4a movel 5ee4a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
5aae2: 4eb9 0004 8308 jsr 48308 <_Thread_Set_state> <== NOT EXECUTED
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
5aae8: 2079 0005 ee4a moveal 5ee4a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5aaee: 223c 0004 79b8 movel #293304,%d1 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Set_state(
_Thread_Executing,
STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Watchdog_Initialize(
5aaf4: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5aaf8: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
5aafc: 2141 0064 movel %d1,%a0@(100) <== NOT EXECUTED
the_watchdog->id = id;
5ab00: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
5ab04: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5ab08: 2142 0054 movel %d2,%a0@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
5ab0c: 4868 0048 pea %a0@(72) <== NOT EXECUTED
5ab10: 4879 0005 eaa0 pea 5eaa0 <_Watchdog_Ticks_chain> <== NOT EXECUTED
5ab16: 4eb9 0004 892c jsr 4892c <_Watchdog_Insert> <== NOT EXECUTED
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
_Thread_Enable_dispatch();
5ab1c: 4e93 jsr %a3@ <== NOT EXECUTED
/* calculate time remaining */
if ( rmtp ) {
5ab1e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5ab22: 4a8a tstl %a2 <== NOT EXECUTED
5ab24: 6730 beqs 5ab56 <nanosleep+0xec> <== NOT EXECUTED
ticks -=
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
5ab26: 2079 0005 ee4a moveal 5ee4a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
5ab2c: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
5ab30: 90a8 0060 subl %a0@(96),%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
/* calculate time remaining */
if ( rmtp ) {
ticks -=
5ab34: d480 addl %d0,%d2 <== NOT EXECUTED
_Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time;
_Timespec_From_ticks( ticks, rmtp );
5ab36: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5ab38: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5ab3a: 4eb9 0005 ab64 jsr 5ab64 <_Timespec_From_ticks> <== NOT EXECUTED
*/
#if defined(RTEMS_POSIX_API)
/*
* If there is time remaining, then we were interrupted by a signal.
*/
if ( ticks )
5ab40: 508f addql #8,%sp <== NOT EXECUTED
5ab42: 4a82 tstl %d2 <== NOT EXECUTED
5ab44: 6710 beqs 5ab56 <nanosleep+0xec> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINTR );
5ab46: 4eb9 0004 cd88 jsr 4cd88 <__errno> <== NOT EXECUTED
5ab4c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5ab4e: 7004 moveq #4,%d0 <== NOT EXECUTED
5ab50: 2080 movel %d0,%a0@ <== NOT EXECUTED
5ab52: 70ff moveq #-1,%d0 <== NOT EXECUTED
5ab54: 6002 bras 5ab58 <nanosleep+0xee> <== NOT EXECUTED
#endif
}
return 0;
5ab56: 4280 clrl %d0 <== NOT EXECUTED
}
5ab58: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5ab5e: 4e5e unlk %fp <== NOT EXECUTED
...
00042fd2 <newlib_create_hook>:
*/
bool newlib_create_hook(
rtems_tcb *current_task __attribute__((unused)),
rtems_tcb *creating_task
)
{
42fd2: 4e56 0000 linkw %fp,#0
42fd6: 2f0b movel %a3,%sp@-
42fd8: 2f0a movel %a2,%sp@-
struct _reent *ptr;
if (_Thread_libc_reent == 0)
42fda: 4ab9 0005 dbae tstl 5dbae <_Thread_libc_reent>
42fe0: 6618 bnes 42ffa <newlib_create_hook+0x28>
{
_REENT = _global_impure_ptr;
42fe2: 41f9 0005 b9a4 lea 5b9a4 <_global_impure_ptr>,%a0
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (
struct _reent **libc_reent
)
{
_Thread_libc_reent = libc_reent;
42fe8: 203c 0005 c488 movel #377992,%d0
42fee: 23d0 0005 c488 movel %a0@,5c488 <_impure_ptr>
42ff4: 23c0 0005 dbae movel %d0,5dbae <_Thread_libc_reent>
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));
42ffa: 4878 0422 pea 422 <DBL_MAX_EXP+0x21>
42ffe: 4eb9 0004 8794 jsr 48794 <_Workspace_Allocate>
#endif
if (ptr) {
43004: 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));
43006: 2440 moveal %d0,%a2
#endif
if (ptr) {
43008: 4a80 tstl %d0
4300a: 6700 0150 beqw 4315c <newlib_create_hook+0x18a>
_REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
4300e: 41ea 02ea lea %a2@(746),%a0
43012: 47f9 0004 d268 lea 4d268 <memset>,%a3
43018: 2548 0004 movel %a0,%a2@(4)
4301c: 41ea 0352 lea %a2@(850),%a0
43020: 2548 0008 movel %a0,%a2@(8)
43024: 41ea 03ba lea %a2@(954),%a0
43028: 4292 clrl %a2@
4302a: 2548 000c movel %a0,%a2@(12)
4302e: 42aa 0010 clrl %a2@(16)
43032: 4878 0019 pea 19 <OPER2+0x5>
43036: 42a7 clrl %sp@-
43038: 486a 0014 pea %a2@(20)
4303c: 4e93 jsr %a3@
4303e: 4201 clrb %d1
43040: 203c 0005 b24c movel #373324,%d0
43046: 1541 005e moveb %d1,%a2@(94)
4304a: 42aa 002e clrl %a2@(46)
4304e: 2540 0032 movel %d0,%a2@(50)
43052: 42aa 0036 clrl %a2@(54)
43056: 42aa 003a clrl %a2@(58)
4305a: 42aa 003e clrl %a2@(62)
4305e: 42aa 0042 clrl %a2@(66)
43062: 42aa 0046 clrl %a2@(70)
43066: 42aa 004a clrl %a2@(74)
4306a: 42aa 004e clrl %a2@(78)
4306e: 42aa 0052 clrl %a2@(82)
43072: 42aa 0056 clrl %a2@(86)
43076: 42aa 005a clrl %a2@(90)
4307a: 4878 0024 pea 24 <OPER2+0x10>
4307e: 42a7 clrl %sp@-
43080: 486a 0078 pea %a2@(120)
43084: 4e93 jsr %a3@
43086: 4280 clrl %d0
43088: 7201 moveq #1,%d1
4308a: 2540 00a0 movel %d0,%a2@(160)
4308e: 2541 00a4 movel %d1,%a2@(164)
43092: 323c 330e movew #13070,%d1
43096: 303c 1234 movew #4660,%d0
4309a: 307c abcd moveaw #-21555,%a0
4309e: 42aa 009c clrl %a2@(156)
430a2: 3541 00a8 movew %d1,%a2@(168)
430a6: 3540 00ac movew %d0,%a2@(172)
430aa: 42aa 00b6 clrl %a2@(182)
430ae: 323c e66d movew #-6547,%d1
430b2: 7005 moveq #5,%d0
430b4: 42aa 00ba clrl %a2@(186)
430b8: 3548 00aa movew %a0,%a2@(170)
430bc: 3541 00ae movew %d1,%a2@(174)
430c0: 42aa 00be clrl %a2@(190)
430c4: 3540 00b2 movew %d0,%a2@(178)
430c8: 307c deec moveaw #-8468,%a0
430cc: 42aa 00c2 clrl %a2@(194)
430d0: 4200 clrb %d0
430d2: 720b moveq #11,%d1
430d4: 42aa 00c6 clrl %a2@(198)
430d8: 42aa 00ca clrl %a2@(202)
430dc: 3548 00b0 movew %a0,%a2@(176)
430e0: 42aa 00f2 clrl %a2@(242)
430e4: 3541 00b4 movew %d1,%a2@(180)
430e8: 42aa 00f6 clrl %a2@(246)
430ec: 42aa 00fa clrl %a2@(250)
430f0: 1540 00ce moveb %d0,%a2@(206)
430f4: 42aa 00fe clrl %a2@(254)
430f8: 1540 00d6 moveb %d0,%a2@(214)
430fc: 42aa 0102 clrl %a2@(258)
43100: 42aa 0106 clrl %a2@(262)
43104: 42aa 010a clrl %a2@(266)
43108: 42aa 010e clrl %a2@(270)
4310c: 42aa 0112 clrl %a2@(274)
43110: 42aa 0116 clrl %a2@(278)
43114: 42aa 00ee clrl %a2@(238)
43118: 42aa 0146 clrl %a2@(326)
4311c: 42aa 014a clrl %a2@(330)
43120: 42aa 014e clrl %a2@(334)
43124: 42aa 0152 clrl %a2@(338)
43128: 42aa 02d2 clrl %a2@(722)
4312c: 42aa 01d2 clrl %a2@(466)
43130: 42aa 02da clrl %a2@(730)
43134: 42aa 02de clrl %a2@(734)
43138: 42aa 02e2 clrl %a2@(738)
4313c: 42aa 02e6 clrl %a2@(742)
43140: 4878 0138 pea 138 <DBL_MANT_DIG+0x103>
43144: 42a7 clrl %sp@-
43146: 486a 02ea pea %a2@(746)
4314a: 4e93 jsr %a3@
creating_task->libc_reent = ptr;
4314c: 206e 000c moveal %fp@(12),%a0
return TRUE;
43150: 4fef 0024 lea %sp@(36),%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;
43154: 214a 00fa movel %a2,%a0@(250)
return TRUE;
43158: 7001 moveq #1,%d0
4315a: 6002 bras 4315e <newlib_create_hook+0x18c>
}
return FALSE;
4315c: 4200 clrb %d0 <== NOT EXECUTED
}
4315e: 246e fff8 moveal %fp@(-8),%a2
43162: 266e fffc moveal %fp@(-4),%a3
43166: 4e5e unlk %fp <== NOT EXECUTED
0004316a <newlib_delete_hook>:
void newlib_delete_hook(
rtems_tcb *current_task,
rtems_tcb *deleted_task
)
{
4316a: 4e56 fff4 linkw %fp,#-12
4316e: 48d7 040c moveml %d2-%d3/%a2,%sp@
43172: 262e 0008 movel %fp@(8),%d3
43176: 246e 000c moveal %fp@(12),%a2
/*
* The reentrancy structure was allocated by newlib using malloc()
*/
if (current_task == deleted_task) {
4317a: b5c3 cmpal %d3,%a2
4317c: 6608 bnes 43186 <newlib_delete_hook+0x1c> <== NEVER TAKEN
ptr = _REENT;
4317e: 2439 0005 c488 movel 5c488 <_impure_ptr>,%d2
43184: 6004 bras 4318a <newlib_delete_hook+0x20>
} else {
ptr = deleted_task->libc_reent;
43186: 242a 00fa movel %a2@(250),%d2 <== NOT EXECUTED
}
if (ptr && ptr != _global_impure_ptr) {
4318a: 4a82 tstl %d2
4318c: 6722 beqs 431b0 <newlib_delete_hook+0x46> <== NEVER TAKEN
4318e: b4b9 0005 b9a4 cmpl 5b9a4 <_global_impure_ptr>,%d2
43194: 671a beqs 431b0 <newlib_delete_hook+0x46>
_reclaim_reent(ptr);
*/
/*
* Just in case there are some buffers lying around.
*/
_fwalk(ptr, newlib_free_buffers);
43196: 4879 0004 2f7c pea 42f7c <newlib_free_buffers>
4319c: 2f02 movel %d2,%sp@-
4319e: 4eb9 0004 d100 jsr 4d100 <_fwalk>
#if REENT_MALLOCED
free(ptr);
#else
_Workspace_Free(ptr);
431a4: 2f02 movel %d2,%sp@-
431a6: 4eb9 0004 87b0 jsr 487b0 <_Workspace_Free>
431ac: 4fef 000c lea %sp@(12),%sp
#endif
}
deleted_task->libc_reent = NULL;
431b0: 42aa 00fa clrl %a2@(250)
/*
* Require the switch back to another task to install its own
*/
if ( current_task == deleted_task ) {
431b4: b5c3 cmpal %d3,%a2
431b6: 6606 bnes 431be <newlib_delete_hook+0x54> <== NEVER TAKEN
_REENT = 0;
431b8: 42b9 0005 c488 clrl 5c488 <_impure_ptr>
}
}
431be: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
431c4: 4e5e unlk %fp <== NOT EXECUTED
00042f7c <newlib_free_buffers>:
*/
int newlib_free_buffers(
FILE *fp
)
{
42f7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42f80: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42f82: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
switch ( fileno(fp) ) {
42f86: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42f88: 4eb9 0004 ccec jsr 4ccec <fileno> <== NOT EXECUTED
42f8e: 588f addql #4,%sp <== NOT EXECUTED
42f90: 7202 moveq #2,%d1 <== NOT EXECUTED
42f92: b280 cmpl %d0,%d1 <== NOT EXECUTED
42f94: 6528 bcss 42fbe <newlib_free_buffers+0x42> <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
42f96: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED
42f9a: 48c0 extl %d0 <== NOT EXECUTED
42f9c: 4a00 tstb %d0 <== NOT EXECUTED
42f9e: 6c28 bges 42fc8 <newlib_free_buffers+0x4c> <== NOT EXECUTED
free( fp->_bf._base );
42fa0: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
42fa4: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
fp->_flags &= ~__SMBF;
42faa: 302a 000c movew %a2@(12),%d0 <== NOT EXECUTED
42fae: 0880 0007 bclr #7,%d0 <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
42fb2: 4292 clrl %a2@ <== NOT EXECUTED
case 0:
case 1:
case 2:
if (fp->_flags & __SMBF) {
free( fp->_bf._base );
fp->_flags &= ~__SMBF;
42fb4: 3540 000c movew %d0,%a2@(12) <== NOT EXECUTED
fp->_bf._base = fp->_p = (unsigned char *) NULL;
42fb8: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
42fbc: 6008 bras 42fc6 <newlib_free_buffers+0x4a> <== NOT EXECUTED
}
break;
default:
fclose(fp);
42fbe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42fc0: 4eb9 0004 ca9a jsr 4ca9a <fclose> <== NOT EXECUTED
42fc6: 588f addql #4,%sp <== NOT EXECUTED
}
return 0;
}
42fc8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
42fcc: 4280 clrl %d0 <== NOT EXECUTED
42fce: 4e5e unlk %fp <== NOT EXECUTED
00042274 <null_close>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
42274: 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))
)
{
42276: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL;
}
4227a: 4e5e unlk %fp <== NOT EXECUTED
000422a0 <null_control>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
422a0: 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))
)
{
422a2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL;
}
422a6: 4e5e unlk %fp <== NOT EXECUTED
...
00042220 <null_initialize>:
rtems_device_driver null_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
42220: 4e56 0000 linkw %fp,#0
42224: 2f02 movel %d2,%sp@-
42226: 242e 0008 movel %fp@(8),%d2
rtems_device_driver status;
if ( !initialized ) {
4222a: 4a39 0005 b008 tstb 5b008 <initialized>
42230: 662e bnes 42260 <null_initialize+0x40> <== NEVER TAKEN
initialized = 1;
status = rtems_io_register_name(
42232: 42a7 clrl %sp@-
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
42234: 7001 moveq #1,%d0
status = rtems_io_register_name(
42236: 2f02 movel %d2,%sp@-
42238: 4879 0005 892e pea 5892e <_rodata_start+0x21e>
)
{
rtems_device_driver status;
if ( !initialized ) {
initialized = 1;
4223e: 13c0 0005 b008 moveb %d0,5b008 <initialized>
status = rtems_io_register_name(
42244: 4eb9 0004 23d8 jsr 423d8 <rtems_io_register_name>
"/dev/null",
major,
(rtems_device_minor_number) 0
);
if (status != RTEMS_SUCCESSFUL)
4224a: 4fef 000c lea %sp@(12),%sp
4224e: 4a80 tstl %d0
42250: 6708 beqs 4225a <null_initialize+0x3a>
rtems_fatal_error_occurred(status);
42252: 2f00 movel %d0,%sp@-
42254: 4eb9 0004 5ce4 jsr 45ce4 <rtems_fatal_error_occurred>
NULL_major = major;
4225a: 23c2 0005 b800 movel %d2,5b800 <NULL_major>
}
return RTEMS_SUCCESSFUL;
}
42260: 242e fffc movel %fp@(-4),%d2
42264: 4280 clrl %d0
42266: 4e5e unlk %fp <== NOT EXECUTED
0004226a <null_open>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
4226a: 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))
)
{
4226c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL;
}
42270: 4e5e unlk %fp <== NOT EXECUTED
0004227e <null_read>:
rtems_device_minor_number minor __attribute__((unused)),
void *pargp __attribute__((unused))
)
{
return NULL_SUCCESSFUL;
}
4227e: 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))
)
{
42280: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return NULL_SUCCESSFUL;
}
42284: 4e5e unlk %fp <== NOT EXECUTED
00042288 <null_write>:
rtems_device_driver null_write(
rtems_device_major_number major __attribute__((unused)),
rtems_device_minor_number minor __attribute__((unused)),
void *pargp
)
{
42288: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4228c: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) pargp;
if ( rw_args )
42290: 4a88 tstl %a0 <== NOT EXECUTED
42292: 6706 beqs 4229a <null_write+0x12> <== NOT EXECUTED
rw_args->bytes_moved = rw_args->count;
42294: 2168 0010 0018 movel %a0@(16),%a0@(24) <== NOT EXECUTED
return NULL_SUCCESSFUL;
}
4229a: 4280 clrl %d0 <== NOT EXECUTED
4229c: 4e5e unlk %fp <== NOT EXECUTED
00043238 <open>:
int open(
const char *pathname,
int flags,
...
)
{
43238: 4e56 ffc8 linkw %fp,#-56
4323c: 48d7 3c7c moveml %d2-%d6/%a2-%a5,%sp@
43240: 242e 000c movel %fp@(12),%d2
/*
* Set the Evaluation flags
*/
eval_flags = 0;
status = flags + 1;
43244: 2002 movel %d2,%d0
43246: 5280 addql #1,%d0
int open(
const char *pathname,
int flags,
...
)
{
43248: 262e 0008 movel %fp@(8),%d3
/*
* Set the Evaluation flags
*/
eval_flags = 0;
status = flags + 1;
if ( ( status & _FREAD ) == _FREAD )
4324c: 0800 0000 btst #0,%d0
43250: 6704 beqs 43256 <open+0x1e>
eval_flags |= RTEMS_LIBIO_PERMS_READ;
43252: 7804 moveq #4,%d4
43254: 6002 bras 43258 <open+0x20>
int eval_flags;
/*
* Set the Evaluation flags
*/
eval_flags = 0;
43256: 4284 clrl %d4
status = flags + 1;
if ( ( status & _FREAD ) == _FREAD )
eval_flags |= RTEMS_LIBIO_PERMS_READ;
if ( ( status & _FWRITE ) == _FWRITE )
43258: 0800 0001 btst #1,%d0
4325c: 6704 beqs 43262 <open+0x2a>
eval_flags |= RTEMS_LIBIO_PERMS_WRITE;
4325e: 7002 moveq #2,%d0
43260: 8880 orl %d0,%d4
va_start(ap, flags);
mode = va_arg( ap, int );
43262: 2c2e 0010 movel %fp@(16),%d6
* 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();
43266: 4eb9 0004 992c jsr 4992c <rtems_libio_allocate>
4326c: 2440 moveal %d0,%a2
if ( iop == 0 ) {
4326e: 4a80 tstl %d0
43270: 6700 0158 beqw 433ca <open+0x192>
}
/*
* See if the file exists.
*/
status = rtems_filesystem_evaluate_path(
43274: 2f03 movel %d3,%sp@-
43276: 4bf9 0004 dda4 lea 4dda4 <strlen>,%a5
4327c: 7a01 moveq #1,%d5
4327e: 49f9 0004 26d4 lea 426d4 <rtems_filesystem_evaluate_path>,%a4
43284: 4e95 jsr %a5@
43286: 2e85 movel %d5,%sp@
43288: 2a0e movel %fp,%d5
4328a: 0685 ffff ffec addil #-20,%d5
43290: 2f05 movel %d5,%sp@-
43292: 2f04 movel %d4,%sp@-
43294: 2f00 movel %d0,%sp@-
43296: 2f03 movel %d3,%sp@-
43298: 4e94 jsr %a4@
pathname, strlen( pathname ), eval_flags, &loc, true );
if ( status == -1 ) {
4329a: 4fef 0014 lea %sp@(20),%sp
4329e: 72ff moveq #-1,%d1
432a0: b280 cmpl %d0,%d1
432a2: 665e bnes 43302 <open+0xca>
if ( errno != ENOENT ) {
432a4: 47f9 0004 c94c lea 4c94c <__errno>,%a3
432aa: 4e93 jsr %a3@
432ac: 7202 moveq #2,%d1
432ae: 2040 moveal %d0,%a0
432b0: b290 cmpl %a0@,%d1
432b2: 6624 bnes 432d8 <open+0xa0> <== NEVER TAKEN
rc = errno;
goto done;
}
/* If the file does not exist and we are not trying to create it--> error */
if ( !(flags & O_CREAT) ) {
432b4: 0802 0009 btst #9,%d2
432b8: 6700 0114 beqw 433ce <open+0x196>
rc = ENOENT;
goto done;
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
432bc: 42a7 clrl %sp@-
432be: 2006 movel %d6,%d0
432c0: 42a7 clrl %sp@-
432c2: 08c0 000f bset #15,%d0
432c6: 2f00 movel %d0,%sp@-
432c8: 2f03 movel %d3,%sp@-
432ca: 4eb9 0004 2b68 jsr 42b68 <mknod>
if ( rc ) {
432d0: 4fef 0010 lea %sp@(16),%sp
432d4: 4a80 tstl %d0
432d6: 670c beqs 432e4 <open+0xac> <== ALWAYS TAKEN
rc = errno;
432d8: 4e93 jsr %a3@ <== 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;
432da: 4285 clrl %d5 <== NOT EXECUTED
}
/* Create the node for the new regular file */
rc = mknod( pathname, S_IFREG | mode, 0LL );
if ( rc ) {
rc = errno;
432dc: 2040 moveal %d0,%a0 <== NOT EXECUTED
432de: 2410 movel %a0@,%d2 <== NOT EXECUTED
goto done;
432e0: 6000 00fc braw 433de <open+0x1a6> <== 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(
432e4: 2f03 movel %d3,%sp@-
432e6: 4e95 jsr %a5@
432e8: 7201 moveq #1,%d1
432ea: 2e81 movel %d1,%sp@
432ec: 2f05 movel %d5,%sp@-
432ee: 42a7 clrl %sp@-
432f0: 2f00 movel %d0,%sp@-
432f2: 2f03 movel %d3,%sp@-
432f4: 4e94 jsr %a4@
pathname, strlen( pathname ), 0x0, &loc, true );
if ( status != 0 ) { /* The file did not exist */
432f6: 4fef 0014 lea %sp@(20),%sp
432fa: 4a80 tstl %d0
432fc: 6600 00d6 bnew 433d4 <open+0x19c>
43300: 6012 bras 43314 <open+0xdc>
rc = EACCES;
goto done;
}
} else if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT)) {
43302: 2002 movel %d2,%d0
43304: 0280 0000 0a00 andil #2560,%d0
4330a: 0c80 0000 0a00 cmpil #2560,%d0
43310: 6700 00c8 beqw 433da <open+0x1a2>
/*
* Fill in the file control block based on the loc structure
* returned by successful path evaluation.
*/
iop->flags |= rtems_libio_fcntl_flags( flags );
43314: 282a 0014 movel %a2@(20),%d4
iop->pathinfo = loc;
43318: 2a0e movel %fp,%d5
4331a: 0685 ffff ffec addil #-20,%d5
/*
* Fill in the file control block based on the loc structure
* returned by successful path evaluation.
*/
iop->flags |= rtems_libio_fcntl_flags( flags );
43320: 2f02 movel %d2,%sp@-
43322: 4eb9 0004 989e jsr 4989e <rtems_libio_fcntl_flags>
43328: 8084 orl %d4,%d0
4332a: 2540 0014 movel %d0,%a2@(20)
iop->pathinfo = loc;
4332e: 4878 0014 pea 14 <OPER2>
43332: 2f05 movel %d5,%sp@-
43334: 486a 0018 pea %a2@(24)
43338: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy>
rc = (*iop->pathinfo.handlers->open_h)( iop, pathname, flags, mode );
4333e: 206a 0020 moveal %a2@(32),%a0
43342: 2f06 movel %d6,%sp@-
43344: 2f02 movel %d2,%sp@-
43346: 2f03 movel %d3,%sp@-
43348: 2f0a movel %a2,%sp@-
4334a: 2050 moveal %a0@,%a0
4334c: 4e90 jsr %a0@
if ( rc ) {
4334e: 4fef 0020 lea %sp@(32),%sp
43352: 4a80 tstl %d0
43354: 670c beqs 43362 <open+0x12a> <== ALWAYS TAKEN
rc = errno;
43356: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4335c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4335e: 2410 movel %a0@,%d2 <== NOT EXECUTED
goto done;
43360: 607c bras 433de <open+0x1a6> <== NOT EXECUTED
}
/*
* Optionally truncate the file.
*/
if ( (flags & O_TRUNC) == O_TRUNC ) {
43362: 0802 000a btst #10,%d2
43366: 6700 00a4 beqw 4340c <open+0x1d4>
rc = ftruncate( iop - rtems_libio_iops, 0 );
4336a: 200a movel %a2,%d0 <== NOT EXECUTED
4336c: 90b9 0005 d9b4 subl 5d9b4 <rtems_libio_iops>,%d0 <== NOT EXECUTED
43372: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED
43378: e680 asrl #3,%d0 <== NOT EXECUTED
4337a: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
4337e: 42a7 clrl %sp@- <== NOT EXECUTED
43380: 42a7 clrl %sp@- <== NOT EXECUTED
43382: 2f01 movel %d1,%sp@- <== NOT EXECUTED
43384: 4eb9 0004 978c jsr 4978c <ftruncate> <== NOT EXECUTED
if ( rc ) {
4338a: 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 );
4338e: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( rc ) {
43390: 677a beqs 4340c <open+0x1d4> <== NOT EXECUTED
if(errno) rc = errno;
43392: 47f9 0004 c94c lea 4c94c <__errno>,%a3 <== NOT EXECUTED
43398: 4e93 jsr %a3@ <== NOT EXECUTED
4339a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4339c: 4a90 tstl %a0@ <== NOT EXECUTED
4339e: 6706 beqs 433a6 <open+0x16e> <== NOT EXECUTED
433a0: 4e93 jsr %a3@ <== NOT EXECUTED
433a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
433a4: 2410 movel %a0@,%d2 <== NOT EXECUTED
close( iop - rtems_libio_iops );
433a6: 200a movel %a2,%d0 <== NOT EXECUTED
433a8: 90b9 0005 d9b4 subl 5d9b4 <rtems_libio_iops>,%d0 <== NOT EXECUTED
433ae: 223c b6db 6db7 movel #-1227133513,%d1 <== NOT EXECUTED
433b4: e680 asrl #3,%d0 <== NOT EXECUTED
433b6: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
/* those are released by close(): */
iop = 0;
loc_to_free = NULL;
433ba: 4285 clrl %d5 <== 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;
433bc: 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 );
433be: 2f01 movel %d1,%sp@- <== NOT EXECUTED
433c0: 4eb9 0004 9708 jsr 49708 <close> <== NOT EXECUTED
433c6: 588f addql #4,%sp <== NOT EXECUTED
433c8: 6014 bras 433de <open+0x1a6> <== NOT EXECUTED
*/
/* allocate a file control block */
iop = rtems_libio_allocate();
if ( iop == 0 ) {
rc = ENFILE;
433ca: 7417 moveq #23,%d2
433cc: 6030 bras 433fe <open+0x1c6>
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;
433ce: 4285 clrl %d5
goto done;
}
/* If the file does not exist and we are not trying to create it--> error */
if ( !(flags & O_CREAT) ) {
rc = ENOENT;
433d0: 7402 moveq #2,%d2
433d2: 600e bras 433e2 <open+0x1aa>
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;
433d4: 4285 clrl %d5 <== 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;
433d6: 740d moveq #13,%d2 <== NOT EXECUTED
433d8: 6008 bras 433e2 <open+0x1aa> <== NOT EXECUTED
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;
433da: 7411 moveq #17,%d2 <== NOT EXECUTED
433dc: 6004 bras 433e2 <open+0x1aa> <== NOT EXECUTED
* Single exit and clean up path.
*/
done:
va_end(ap);
if ( rc ) {
433de: 4a82 tstl %d2 <== NOT EXECUTED
433e0: 672a beqs 4340c <open+0x1d4> <== NOT EXECUTED
if ( iop )
433e2: 4a8a tstl %a2
433e4: 670a beqs 433f0 <open+0x1b8> <== NEVER TAKEN
rtems_libio_free( iop );
433e6: 2f0a movel %a2,%sp@-
433e8: 4eb9 0004 99be jsr 499be <rtems_libio_free>
433ee: 588f addql #4,%sp
if ( loc_to_free )
433f0: 4a85 tstl %d5
433f2: 670a beqs 433fe <open+0x1c6> <== ALWAYS TAKEN
rtems_filesystem_freenode( loc_to_free );
433f4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
433f6: 4eb9 0004 27a0 jsr 427a0 <rtems_filesystem_freenode> <== NOT EXECUTED
433fc: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( rc );
433fe: 4eb9 0004 c94c jsr 4c94c <__errno>
43404: 2040 moveal %d0,%a0
43406: 70ff moveq #-1,%d0
43408: 2082 movel %d2,%a0@
4340a: 6014 bras 43420 <open+0x1e8>
}
return iop - rtems_libio_iops;
4340c: 200a movel %a2,%d0
4340e: 90b9 0005 d9b4 subl 5d9b4 <rtems_libio_iops>,%d0
43414: 223c b6db 6db7 movel #-1227133513,%d1
4341a: e680 asrl #3,%d0
4341c: 4c01 0800 mulsl %d1,%d0
}
43420: 4cee 3c7c ffc8 moveml %fp@(-56),%d2-%d6/%a2-%a5
43426: 4e5e unlk %fp <== NOT EXECUTED
00043f4a <oproc>:
/*
* Handle output processing
*/
static void
oproc (unsigned char c, struct rtems_termios_tty *tty)
{
43f4a: 4e56 fff0 linkw %fp,#-16
43f4e: 48d7 040c moveml %d2-%d3/%a2,%sp@
43f52: 242e 0008 movel %fp@(8),%d2
43f56: 246e 000c moveal %fp@(12),%a2
43f5a: 1d42 fffe moveb %d2,%fp@(-2)
int i;
if (tty->termios.c_oflag & OPOST) {
43f5e: 202a 0034 movel %a2@(52),%d0
43f62: 0800 0000 btst #0,%d0
43f66: 6700 010e beqw 44076 <oproc+0x12c>
switch (c) {
43f6a: 4281 clrl %d1
43f6c: 1202 moveb %d2,%d1
43f6e: 7609 moveq #9,%d3
43f70: b681 cmpl %d1,%d3
43f72: 6778 beqs 43fec <oproc+0xa2> <== NEVER TAKEN
43f74: 650e bcss 43f84 <oproc+0x3a> <== ALWAYS TAKEN
43f76: 163c 0008 moveb #8,%d3 <== NOT EXECUTED
43f7a: b681 cmpl %d1,%d3 <== NOT EXECUTED
43f7c: 6600 00b2 bnew 44030 <oproc+0xe6> <== NOT EXECUTED
43f80: 6000 00a0 braw 44022 <oproc+0xd8> <== NOT EXECUTED
43f84: 760a moveq #10,%d3
43f86: b681 cmpl %d1,%d3
43f88: 670c beqs 43f96 <oproc+0x4c>
43f8a: 163c 000d moveb #13,%d3
43f8e: b681 cmpl %d1,%d3
43f90: 6600 009e bnew 44030 <oproc+0xe6>
43f94: 602e bras 43fc4 <oproc+0x7a> <== NOT EXECUTED
case '\n':
if (tty->termios.c_oflag & ONLRET)
43f96: 0800 0005 btst #5,%d0
43f9a: 6704 beqs 43fa0 <oproc+0x56> <== ALWAYS TAKEN
tty->column = 0;
43f9c: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
if (tty->termios.c_oflag & ONLCR) {
43fa0: 44c0 movew %d0,%ccr
43fa2: 6600 00d2 bnew 44076 <oproc+0x12c>
rtems_termios_puts ("\r", 1, tty);
43fa6: 2f0a movel %a2,%sp@-
43fa8: 4878 0001 pea 1 <ADD>
43fac: 4879 0005 b2c2 pea 5b2c2 <rtems_filesystem_default_pathconf+0xa6>
43fb2: 4eb9 0004 3e52 jsr 43e52 <rtems_termios_puts>
tty->column = 0;
43fb8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43fbc: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
43fc0: 6000 00b4 braw 44076 <oproc+0x12c> <== NOT EXECUTED
}
break;
case '\r':
if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))
43fc4: 0800 0004 btst #4,%d0 <== NOT EXECUTED
43fc8: 6708 beqs 43fd2 <oproc+0x88> <== NOT EXECUTED
43fca: 4aaa 0028 tstl %a2@(40) <== NOT EXECUTED
43fce: 6700 00ba beqw 4408a <oproc+0x140> <== NOT EXECUTED
return;
if (tty->termios.c_oflag & OCRNL) {
43fd2: 44c0 movew %d0,%ccr <== NOT EXECUTED
43fd4: 6a0e bpls 43fe4 <oproc+0x9a> <== NOT EXECUTED
c = '\n';
43fd6: 720a moveq #10,%d1 <== NOT EXECUTED
43fd8: 1d41 fffe moveb %d1,%fp@(-2) <== NOT EXECUTED
if (tty->termios.c_oflag & ONLRET)
43fdc: 0800 0005 btst #5,%d0 <== NOT EXECUTED
43fe0: 6700 0094 beqw 44076 <oproc+0x12c> <== NOT EXECUTED
tty->column = 0;
break;
}
tty->column = 0;
43fe4: 42aa 0028 clrl %a2@(40) <== NOT EXECUTED
break;
43fe8: 6000 008c braw 44076 <oproc+0x12c> <== NOT EXECUTED
case '\t':
i = 8 - (tty->column & 7);
43fec: 222a 0028 movel %a2@(40),%d1 <== NOT EXECUTED
43ff0: 7407 moveq #7,%d2 <== NOT EXECUTED
43ff2: 307c 0008 moveaw #8,%a0 <== NOT EXECUTED
43ff6: c481 andl %d1,%d2 <== NOT EXECUTED
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
43ff8: 0280 0000 1800 andil #6144,%d0 <== NOT EXECUTED
}
tty->column = 0;
break;
case '\t':
i = 8 - (tty->column & 7);
43ffe: 91c2 subal %d2,%a0 <== NOT EXECUTED
if ((tty->termios.c_oflag & TABDLY) == XTABS) {
44000: 0c80 0000 1800 cmpil #6144,%d0 <== NOT EXECUTED
44006: 6612 bnes 4401a <oproc+0xd0> <== NOT EXECUTED
tty->column += i;
44008: d288 addl %a0,%d1 <== NOT EXECUTED
4400a: 2541 0028 movel %d1,%a2@(40) <== NOT EXECUTED
rtems_termios_puts ( " ", i, tty);
4400e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44010: 2f08 movel %a0,%sp@- <== NOT EXECUTED
44012: 4879 0005 b2c4 pea 5b2c4 <rtems_filesystem_default_pathconf+0xa8><== NOT EXECUTED
44018: 6066 bras 44080 <oproc+0x136> <== NOT EXECUTED
return;
}
tty->column += i;
4401a: d1c1 addal %d1,%a0 <== NOT EXECUTED
4401c: 2548 0028 movel %a0,%a2@(40) <== NOT EXECUTED
break;
44020: 6054 bras 44076 <oproc+0x12c> <== NOT EXECUTED
case '\b':
if (tty->column > 0)
44022: 202a 0028 movel %a2@(40),%d0 <== NOT EXECUTED
44026: 6f4e bles 44076 <oproc+0x12c> <== NOT EXECUTED
tty->column--;
44028: 5380 subql #1,%d0 <== NOT EXECUTED
4402a: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
4402e: 6046 bras 44076 <oproc+0x12c> <== NOT EXECUTED
break;
default:
if (tty->termios.c_oflag & OLCUC)
44030: 0800 0001 btst #1,%d0
44034: 6724 beqs 4405a <oproc+0x110> <== ALWAYS TAKEN
c = toupper(c);
44036: 4280 clrl %d0 <== NOT EXECUTED
44038: 1002 moveb %d2,%d0 <== NOT EXECUTED
4403a: 7403 moveq #3,%d2 <== NOT EXECUTED
4403c: 7602 moveq #2,%d3 <== NOT EXECUTED
4403e: 2079 0005 c484 moveal 5c484 <__ctype_ptr__>,%a0 <== NOT EXECUTED
44044: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
44048: 49c1 extbl %d1 <== NOT EXECUTED
4404a: c282 andl %d2,%d1 <== NOT EXECUTED
4404c: b681 cmpl %d1,%d3 <== NOT EXECUTED
4404e: 6606 bnes 44056 <oproc+0x10c> <== NOT EXECUTED
44050: 0680 ffff ffe0 addil #-32,%d0 <== NOT EXECUTED
44056: 1d40 fffe moveb %d0,%fp@(-2) <== NOT EXECUTED
if (!iscntrl(c))
4405a: 4280 clrl %d0
4405c: 102e fffe moveb %fp@(-2),%d0
44060: 2079 0005 c484 moveal 5c484 <__ctype_ptr__>,%a0
44066: 1030 0801 moveb %a0@(00000001,%d0:l),%d0
4406a: 49c0 extbl %d0
4406c: 0800 0005 btst #5,%d0
44070: 6604 bnes 44076 <oproc+0x12c> <== NEVER TAKEN
tty->column++;
44072: 52aa 0028 addql #1,%a2@(40)
break;
}
}
rtems_termios_puts (&c, 1, tty);
44076: 2f0a movel %a2,%sp@-
44078: 4878 0001 pea 1 <ADD>
4407c: 486e fffe pea %fp@(-2)
44080: 4eb9 0004 3e52 jsr 43e52 <rtems_termios_puts>
44086: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
4408a: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
44090: 4e5e unlk %fp <== NOT EXECUTED
00044490 <pathconf>:
long pathconf(
const char *path,
int name
)
{
44490: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44494: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44496: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
44498: 42a7 clrl %sp@- <== NOT EXECUTED
4449a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4449e: 4eb9 0004 427c jsr 4427c <open> <== NOT EXECUTED
if ( fd == -1 )
444a4: 508f addql #8,%sp <== NOT EXECUTED
)
{
int status;
int fd;
fd = open( path, O_RDONLY );
444a6: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( fd == -1 )
444a8: 70ff moveq #-1,%d0 <== NOT EXECUTED
444aa: b082 cmpl %d2,%d0 <== NOT EXECUTED
444ac: 671e beqs 444cc <pathconf+0x3c> <== NOT EXECUTED
return -1;
status = fpathconf( fd, name );
444ae: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
444b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
444b4: 4eb9 0004 32c4 jsr 432c4 <fpathconf> <== NOT EXECUTED
444ba: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
444bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
444be: 4eb9 0004 2cb0 jsr 42cb0 <close> <== NOT EXECUTED
return status;
444c4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
444c8: 2003 movel %d3,%d0 <== NOT EXECUTED
444ca: 6002 bras 444ce <pathconf+0x3e> <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_RDONLY );
if ( fd == -1 )
return -1;
444cc: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = fpathconf( fd, name );
(void) close( fd );
return status;
}
444ce: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
444d2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
444d6: 4e5e unlk %fp <== NOT EXECUTED
...
00046ef0 <pause>:
/*
* 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81
*/
int pause( void )
{
46ef0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46ef4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
sigset_t all_signals;
int status;
(void) sigfillset( &all_signals );
46ef6: 240e movel %fp,%d2 <== NOT EXECUTED
46ef8: 5982 subql #4,%d2 <== NOT EXECUTED
46efa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46efc: 4eb9 0004 7af4 jsr 47af4 <sigfillset> <== NOT EXECUTED
status = sigtimedwait( &all_signals, NULL, NULL );
46f02: 42a7 clrl %sp@- <== NOT EXECUTED
46f04: 42a7 clrl %sp@- <== NOT EXECUTED
46f06: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46f08: 4eb9 0004 7c64 jsr 47c64 <sigtimedwait> <== NOT EXECUTED
return status;
}
46f0e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46f12: 4e5e unlk %fp <== NOT EXECUTED
...
00044614 <pipe>:
extern int pipe_create(int filsdes[2]);
int pipe(
int filsdes[2]
)
{
44614: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44618: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if (filsdes == NULL)
4461c: 6612 bnes 44630 <pipe+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
4461e: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
return pipe_create(filsdes);
}
44624: 4e5e unlk %fp <== NOT EXECUTED
int pipe(
int filsdes[2]
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
44626: 2040 moveal %d0,%a0 <== NOT EXECUTED
44628: 700e moveq #14,%d0 <== NOT EXECUTED
4462a: 2080 movel %d0,%a0@ <== NOT EXECUTED
return pipe_create(filsdes);
}
4462c: 70ff moveq #-1,%d0 <== NOT EXECUTED
4462e: 4e75 rts <== NOT EXECUTED
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
44630: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
44634: 4e5e unlk %fp <== NOT EXECUTED
)
{
if (filsdes == NULL)
rtems_set_errno_and_return_minus_one( EFAULT );
return pipe_create(filsdes);
44636: 4ef9 0004 a5a0 jmp 4a5a0 <pipe_create> <== NOT EXECUTED
0004a5a0 <pipe_create>:
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4a5a0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4a5a4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
4a5a8: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
4a5ac: 4879 0005 cb66 pea 5cb66 <_CPU_m68k_BFFFO_table+0x100> <== NOT EXECUTED
* Called by pipe() to create an anonymous pipe.
*/
int pipe_create(
int filsdes[2]
)
{
4a5b2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_libio_t *iop;
int err = 0;
if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)
4a5b6: 4eb9 0004 bae8 jsr 4bae8 <rtems_mkdir> <== NOT EXECUTED
4a5bc: 508f addql #8,%sp <== NOT EXECUTED
4a5be: 4a80 tstl %d0 <== NOT EXECUTED
4a5c0: 6600 00e8 bnew 4a6aa <pipe_create+0x10a> <== NOT EXECUTED
return -1;
/* /tmp/.fifoXXXX */
char fifopath[15];
memcpy(fifopath, "/tmp/.fifo", 10);
4a5c4: 4878 000a pea a <LASTO> <== NOT EXECUTED
4a5c8: 260e movel %fp,%d3 <== NOT EXECUTED
4a5ca: 4879 0005 cb6b pea 5cb6b <_CPU_m68k_BFFFO_table+0x105> <== NOT EXECUTED
4a5d0: 0683 ffff fff1 addil #-15,%d3 <== NOT EXECUTED
4a5d6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a5d8: 4eb9 0004 ea7c jsr 4ea7c <memcpy> <== NOT EXECUTED
sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);
4a5de: 3039 0005 e868 movew 5e868 <rtems_pipe_no>,%d0 <== NOT EXECUTED
4a5e4: 2200 movel %d0,%d1 <== NOT EXECUTED
4a5e6: 5281 addql #1,%d1 <== NOT EXECUTED
4a5e8: 3f00 movew %d0,%sp@- <== NOT EXECUTED
4a5ea: 33c1 0005 e868 movew %d1,5e868 <rtems_pipe_no> <== NOT EXECUTED
4a5f0: 4267 clrw %sp@- <== NOT EXECUTED
4a5f2: 4879 0005 cb76 pea 5cb76 <_CPU_m68k_BFFFO_table+0x110> <== NOT EXECUTED
4a5f8: 486e fffb pea %fp@(-5) <== NOT EXECUTED
4a5fc: 4eb9 0004 eef4 jsr 4eef4 <sprintf> <== NOT EXECUTED
/* Try creating FIFO file until find an available file name */
while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {
4a602: 4878 0180 pea 180 <DBL_MANT_DIG+0x14b> <== NOT EXECUTED
4a606: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a608: 4eb9 0004 b8a8 jsr 4b8a8 <mkfifo> <== NOT EXECUTED
4a60e: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4a612: 4a80 tstl %d0 <== NOT EXECUTED
4a614: 670a beqs 4a620 <pipe_create+0x80> <== NOT EXECUTED
if (errno != EEXIST){
4a616: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
4a61c: 6000 008c braw 4a6aa <pipe_create+0x10a> <== 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);
4a620: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
4a624: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a626: 4eb9 0004 4400 jsr 44400 <open> <== NOT EXECUTED
if (filsdes[0] < 0) {
4a62c: 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);
4a62e: 2480 movel %d0,%a2@ <== NOT EXECUTED
if (filsdes[0] < 0) {
4a630: 6c0e bges 4a640 <pipe_create+0xa0> <== NOT EXECUTED
err = errno;
4a632: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
4a638: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a63a: 2410 movel %a0@,%d2 <== 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);
4a63c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4a63e: 6054 bras 4a694 <pipe_create+0xf4> <== NOT EXECUTED
}
else {
/* Reset open file to blocking mode */
iop = rtems_libio_iop(filsdes[0]);
4a640: b0b9 0005 d734 cmpl 5d734 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4a646: 6412 bccs 4a65a <pipe_create+0xba> <== NOT EXECUTED
4a648: 2200 movel %d0,%d1 <== NOT EXECUTED
4a64a: ed88 lsll #6,%d0 <== NOT EXECUTED
4a64c: e789 lsll #3,%d1 <== NOT EXECUTED
4a64e: 2079 0005 ef5c moveal 5ef5c <rtems_libio_iops>,%a0 <== NOT EXECUTED
4a654: 9081 subl %d1,%d0 <== NOT EXECUTED
4a656: d1c0 addal %d0,%a0 <== NOT EXECUTED
4a658: 6002 bras 4a65c <pipe_create+0xbc> <== NOT EXECUTED
4a65a: 91c8 subal %a0,%a0 <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
4a65c: 70fe moveq #-2,%d0 <== NOT EXECUTED
4a65e: c1a8 0014 andl %d0,%a0@(20) <== NOT EXECUTED
filsdes[1] = open(fifopath, O_WRONLY);
4a662: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4a666: 486e fff1 pea %fp@(-15) <== NOT EXECUTED
4a66a: 4eb9 0004 4400 jsr 44400 <open> <== NOT EXECUTED
if (filsdes[1] < 0) {
4a670: 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);
4a672: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
if (filsdes[1] < 0) {
4a676: 6c16 bges 4a68e <pipe_create+0xee> <== NOT EXECUTED
err = errno;
4a678: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
4a67e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a680: 2410 movel %a0@,%d2 <== NOT EXECUTED
close(filsdes[0]);
4a682: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4a684: 4eb9 0004 3328 jsr 43328 <close> <== NOT EXECUTED
4a68a: 588f addql #4,%sp <== NOT EXECUTED
4a68c: 6002 bras 4a690 <pipe_create+0xf0> <== NOT EXECUTED
int pipe_create(
int filsdes[2]
)
{
rtems_libio_t *iop;
int err = 0;
4a68e: 4282 clrl %d2 <== NOT EXECUTED
if (filsdes[1] < 0) {
err = errno;
close(filsdes[0]);
}
unlink(fifopath);
4a690: 486e fff1 pea %fp@(-15) <== NOT EXECUTED
4a694: 4eb9 0004 5fa4 jsr 45fa4 <unlink> <== NOT EXECUTED
4a69a: 588f addql #4,%sp <== NOT EXECUTED
}
if(err != 0)
4a69c: 4a82 tstl %d2 <== NOT EXECUTED
4a69e: 670e beqs 4a6ae <pipe_create+0x10e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one(err);
4a6a0: 4eb9 0004 e1d0 jsr 4e1d0 <__errno> <== NOT EXECUTED
4a6a6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a6a8: 2082 movel %d2,%a0@ <== NOT EXECUTED
4a6aa: 70ff moveq #-1,%d0 <== NOT EXECUTED
4a6ac: 6002 bras 4a6b0 <pipe_create+0x110> <== NOT EXECUTED
return 0;
4a6ae: 4280 clrl %d0 <== NOT EXECUTED
}
4a6b0: 4cee 040c ffe4 moveml %fp@(-28),%d2-%d3/%a2 <== NOT EXECUTED
4a6b6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b26a <pipe_free>:
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
4b26a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b26e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
rtems_barrier_delete(pipe->readBarrier);
4b270: 47f9 0004 cd18 lea 4cd18 <rtems_barrier_delete>,%a3 <== NOT EXECUTED
/* Called with pipe_semaphore held. */
static inline void pipe_free(
pipe_control_t *pipe
)
{
4b276: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b278: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
rtems_barrier_delete(pipe->readBarrier);
4b27c: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b280: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_barrier_delete(pipe->writeBarrier);
4b282: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b286: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_semaphore_delete(pipe->Semaphore);
4b288: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b28c: 4eb9 0004 72a0 jsr 472a0 <rtems_semaphore_delete> <== NOT EXECUTED
free(pipe->Buffer);
4b292: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4b294: 4eb9 0004 3fe4 jsr 43fe4 <free> <== NOT EXECUTED
free(pipe);
}
4b29a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
{
rtems_barrier_delete(pipe->readBarrier);
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
free(pipe);
4b29e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b2a2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4b2a6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4b2aa: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_barrier_delete(pipe->readBarrier);
rtems_barrier_delete(pipe->writeBarrier);
rtems_semaphore_delete(pipe->Semaphore);
free(pipe->Buffer);
free(pipe);
4b2ac: 4ef9 0004 3fe4 jmp 43fe4 <free> <== NOT EXECUTED
0004ba02 <pipe_ioctl>:
pipe_control_t *pipe,
uint32_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4ba02: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (cmd == FIONREAD) {
4ba06: 203c 4004 667f movel #1074030207,%d0 <== NOT EXECUTED
pipe_control_t *pipe,
uint32_t cmd,
void *buffer,
rtems_libio_t *iop
)
{
4ba0c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ba0e: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
4ba12: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ba14: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if (cmd == FIONREAD) {
4ba18: b0ae 000c cmpl %fp@(12),%d0 <== NOT EXECUTED
4ba1c: 662e bnes 4ba4c <pipe_ioctl+0x4a> <== NOT EXECUTED
if (buffer == NULL)
4ba1e: 4a8b tstl %a3 <== NOT EXECUTED
4ba20: 672e beqs 4ba50 <pipe_ioctl+0x4e> <== NOT EXECUTED
return -EFAULT;
if (! PIPE_LOCK(pipe))
4ba22: 42a7 clrl %sp@- <== NOT EXECUTED
4ba24: 42a7 clrl %sp@- <== NOT EXECUTED
4ba26: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4ba2a: 4eb9 0004 733c jsr 4733c <rtems_semaphore_obtain> <== NOT EXECUTED
4ba30: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ba34: 4a80 tstl %d0 <== NOT EXECUTED
4ba36: 661c bnes 4ba54 <pipe_ioctl+0x52> <== NOT EXECUTED
return -EINTR;
/* Return length of pipe */
*(unsigned int *)buffer = pipe->Length;
4ba38: 26aa 000c movel %a2@(12),%a3@ <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4ba3c: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4ba40: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
return 0;
4ba46: 588f addql #4,%sp <== NOT EXECUTED
4ba48: 4280 clrl %d0 <== NOT EXECUTED
4ba4a: 600a bras 4ba56 <pipe_ioctl+0x54> <== NOT EXECUTED
}
return -EINVAL;
4ba4c: 70ea moveq #-22,%d0 <== NOT EXECUTED
4ba4e: 6006 bras 4ba56 <pipe_ioctl+0x54> <== NOT EXECUTED
rtems_libio_t *iop
)
{
if (cmd == FIONREAD) {
if (buffer == NULL)
return -EFAULT;
4ba50: 70f2 moveq #-14,%d0 <== NOT EXECUTED
4ba52: 6002 bras 4ba56 <pipe_ioctl+0x54> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
4ba54: 70fc moveq #-4,%d0 <== NOT EXECUTED
PIPE_UNLOCK(pipe);
return 0;
}
return -EINVAL;
}
4ba56: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ba5a: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4ba5e: 4e5e unlk %fp <== NOT EXECUTED
0004ba62 <pipe_lseek>:
rtems_libio_t *iop
)
{
/* Seek on pipe is not supported */
return -ESPIPE;
}
4ba62: 70e3 moveq #-29,%d0 <== NOT EXECUTED
pipe_control_t *pipe,
off_t offset,
int whence,
rtems_libio_t *iop
)
{
4ba64: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Seek on pipe is not supported */
return -ESPIPE;
}
4ba68: 4e5e unlk %fp <== NOT EXECUTED
0004b716 <pipe_read>:
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4b716: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4b71a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4b71e: 42a7 clrl %sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4b720: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4b724: 2e3c 0004 733c movel #291644,%d7 <== NOT EXECUTED
4b72a: 2047 moveal %d7,%a0 <== NOT EXECUTED
4b72c: 42a7 clrl %sp@- <== NOT EXECUTED
4b72e: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
pipe_control_t *pipe,
void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4b732: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
4b736: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4b73a: 4e90 jsr %a0@ <== NOT EXECUTED
4b73c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b740: 4a80 tstl %d0 <== NOT EXECUTED
4b742: 6600 011c bnew 4b860 <pipe_read+0x14a> <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4b746: 2c0e movel %fp,%d6 <== NOT EXECUTED
rtems_libio_t *iop
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
4b748: 4282 clrl %d2 <== NOT EXECUTED
4b74a: 47f9 0004 f794 lea 4f794 <memcpy>,%a3 <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
pipe->Start = 0;
if (pipe->waitingWriters > 0)
PIPE_WAKEUPWRITERS(pipe);
4b750: 5986 subql #4,%d6 <== NOT EXECUTED
4b752: 4bf9 0004 cdb4 lea 4cdb4 <rtems_barrier_release>,%a5 <== NOT EXECUTED
4b758: 6000 00e2 braw 4b83c <pipe_read+0x126> <== NOT EXECUTED
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4b75c: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4b760: 6700 00e0 beqw 4b842 <pipe_read+0x12c> <== NOT EXECUTED
goto out_locked;
if (LIBIO_NODELAY(iop)) {
4b764: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4b768: 7001 moveq #1,%d0 <== NOT EXECUTED
4b76a: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4b76e: 6600 00d6 bnew 4b846 <pipe_read+0x130> <== NOT EXECUTED
ret = -EAGAIN;
goto out_locked;
}
/* Wait until pipe is no more empty or no writer exists */
pipe->waitingReaders ++;
4b772: 52aa 0018 addql #1,%a2@(24) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4b776: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b77a: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
if (! PIPE_READWAIT(pipe))
4b780: 42a7 clrl %sp@- <== NOT EXECUTED
4b782: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b786: 4eb9 0004 ce18 jsr 4ce18 <rtems_barrier_wait> <== NOT EXECUTED
4b78c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b790: 4a80 tstl %d0 <== NOT EXECUTED
4b792: 6604 bnes 4b798 <pipe_read+0x82> <== NOT EXECUTED
4b794: 4283 clrl %d3 <== NOT EXECUTED
4b796: 6002 bras 4b79a <pipe_read+0x84> <== NOT EXECUTED
ret = -EINTR;
4b798: 76fc moveq #-4,%d3 <== NOT EXECUTED
if (! PIPE_LOCK(pipe)) {
4b79a: 42a7 clrl %sp@- <== NOT EXECUTED
4b79c: 2047 moveal %d7,%a0 <== NOT EXECUTED
4b79e: 42a7 clrl %sp@- <== NOT EXECUTED
4b7a0: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b7a4: 4e90 jsr %a0@ <== NOT EXECUTED
4b7a6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b7aa: 4a80 tstl %d0 <== NOT EXECUTED
4b7ac: 6600 00a8 bnew 4b856 <pipe_read+0x140> <== NOT EXECUTED
/* WARN waitingReaders not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingReaders --;
4b7b0: 53aa 0018 subql #1,%a2@(24) <== NOT EXECUTED
if (ret != 0)
4b7b4: 4a83 tstl %d3 <== NOT EXECUTED
4b7b6: 6600 0090 bnew 4b848 <pipe_read+0x132> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
while (PIPE_EMPTY(pipe)) {
4b7ba: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
4b7be: 679c beqs 4b75c <pipe_read+0x46> <== NOT EXECUTED
if (ret != 0)
goto out_locked;
}
/* Read chunk bytes */
chunk = MIN(count - read, pipe->Length);
4b7c0: 2005 movel %d5,%d0 <== NOT EXECUTED
4b7c2: 9082 subl %d2,%d0 <== NOT EXECUTED
4b7c4: b083 cmpl %d3,%d0 <== NOT EXECUTED
4b7c6: 6402 bccs 4b7ca <pipe_read+0xb4> <== NOT EXECUTED
4b7c8: 2600 movel %d0,%d3 <== NOT EXECUTED
chunk1 = pipe->Size - pipe->Start;
4b7ca: 222a 0008 movel %a2@(8),%d1 <== NOT EXECUTED
4b7ce: 200c movel %a4,%d0 <== NOT EXECUTED
4b7d0: d082 addl %d2,%d0 <== NOT EXECUTED
4b7d2: 282a 0004 movel %a2@(4),%d4 <== NOT EXECUTED
4b7d6: 9881 subl %d1,%d4 <== NOT EXECUTED
4b7d8: d292 addl %a2@,%d1 <== NOT EXECUTED
if (chunk > chunk1) {
4b7da: b883 cmpl %d3,%d4 <== NOT EXECUTED
4b7dc: 6c20 bges 4b7fe <pipe_read+0xe8> <== NOT EXECUTED
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);
4b7de: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b7e0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b7e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b7e4: 4e93 jsr %a3@ <== NOT EXECUTED
memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);
4b7e6: 2203 movel %d3,%d1 <== NOT EXECUTED
4b7e8: 9284 subl %d4,%d1 <== NOT EXECUTED
4b7ea: 2002 movel %d2,%d0 <== NOT EXECUTED
4b7ec: d084 addl %d4,%d0 <== NOT EXECUTED
4b7ee: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b7f0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4b7f2: 4874 0800 pea %a4@(00000000,%d0:l) <== NOT EXECUTED
4b7f6: 4e93 jsr %a3@ <== NOT EXECUTED
4b7f8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b7fc: 600c bras 4b80a <pipe_read+0xf4> <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
4b7fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b800: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b802: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b804: 4e93 jsr %a3@ <== NOT EXECUTED
4b806: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Start += chunk;
4b80a: 2003 movel %d3,%d0 <== NOT EXECUTED
4b80c: d0aa 0008 addl %a2@(8),%d0 <== NOT EXECUTED
pipe->Start %= pipe->Size;
4b810: 4c6a 0001 0004 remul %a2@(4),%d1,%d0 <== NOT EXECUTED
pipe->Length -= chunk;
4b816: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
4b81a: 9083 subl %d3,%d0 <== NOT EXECUTED
}
else
memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);
pipe->Start += chunk;
pipe->Start %= pipe->Size;
4b81c: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
pipe->Length -= chunk;
4b820: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
/* For buffering optimization */
if (PIPE_EMPTY(pipe))
4b824: 6604 bnes 4b82a <pipe_read+0x114> <== NOT EXECUTED
pipe->Start = 0;
4b826: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
if (pipe->waitingWriters > 0)
4b82a: 4aaa 001c tstl %a2@(28) <== NOT EXECUTED
4b82e: 670a beqs 4b83a <pipe_read+0x124> <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
4b830: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4b832: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b836: 4e95 jsr %a5@ <== NOT EXECUTED
4b838: 508f addql #8,%sp <== NOT EXECUTED
read += chunk;
4b83a: d483 addl %d3,%d2 <== NOT EXECUTED
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
while (read < count) {
4b83c: ba82 cmpl %d2,%d5 <== NOT EXECUTED
4b83e: 6200 ff7a bhiw 4b7ba <pipe_read+0xa4> <== NOT EXECUTED
while (PIPE_EMPTY(pipe)) {
/* Not an error */
if (pipe->Writers == 0)
4b842: 4283 clrl %d3 <== NOT EXECUTED
4b844: 6002 bras 4b848 <pipe_read+0x132> <== NOT EXECUTED
goto out_locked;
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4b846: 76f5 moveq #-11,%d3 <== NOT EXECUTED
PIPE_WAKEUPWRITERS(pipe);
read += chunk;
}
out_locked:
PIPE_UNLOCK(pipe);
4b848: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b84c: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
4b852: 588f addql #4,%sp <== NOT EXECUTED
4b854: 6002 bras 4b858 <pipe_read+0x142> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_READWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingReaders not restored! */
ret = -EINTR;
4b856: 76fc moveq #-4,%d3 <== NOT EXECUTED
out_locked:
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
4b858: 4a82 tstl %d2 <== NOT EXECUTED
4b85a: 6f08 bles 4b864 <pipe_read+0x14e> <== NOT EXECUTED
4b85c: 2002 movel %d2,%d0 <== NOT EXECUTED
4b85e: 6006 bras 4b866 <pipe_read+0x150> <== NOT EXECUTED
)
{
int chunk, chunk1, read = 0, ret = 0;
if (! PIPE_LOCK(pipe))
return -EINTR;
4b860: 70fc moveq #-4,%d0 <== NOT EXECUTED
4b862: 6002 bras 4b866 <pipe_read+0x150> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
out_nolock:
if (read > 0)
return read;
return ret;
4b864: 2003 movel %d3,%d0 <== NOT EXECUTED
}
4b866: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4b86c: 4e5e unlk %fp <== NOT EXECUTED
0004b2b2 <pipe_release>:
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4b2b2: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4b2b6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
*/
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
4b2ba: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4b2be: 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);
4b2c2: 7406 moveq #6,%d2 <== NOT EXECUTED
void pipe_release(
pipe_control_t **pipep,
rtems_libio_t *iop
)
{
pipe_control_t *pipe = *pipep;
4b2c4: 2453 moveal %a3@,%a2 <== NOT EXECUTED
/* WARN pipe not released! */
if (!PIPE_LOCK(pipe))
rtems_fatal_error_occurred(0xdeadbeef);
#endif
mode = LIBIO_ACCMODE(iop);
4b2c6: c4a8 0014 andl %a0@(20),%d2 <== NOT EXECUTED
if (mode & LIBIO_FLAGS_READ)
4b2ca: 0802 0001 btst #1,%d2 <== NOT EXECUTED
4b2ce: 6704 beqs 4b2d4 <pipe_release+0x22> <== NOT EXECUTED
pipe->Readers --;
4b2d0: 53aa 0010 subql #1,%a2@(16) <== NOT EXECUTED
if (mode & LIBIO_FLAGS_WRITE)
4b2d4: 44c2 movew %d2,%ccr <== NOT EXECUTED
4b2d6: 6604 bnes 4b2dc <pipe_release+0x2a> <== NOT EXECUTED
pipe->Writers --;
4b2d8: 53aa 0014 subql #1,%a2@(20) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4b2dc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b2e0: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
if (pipe->Readers == 0 && pipe->Writers == 0) {
4b2e6: 588f addql #4,%sp <== NOT EXECUTED
4b2e8: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4b2ec: 6622 bnes 4b310 <pipe_release+0x5e> <== NOT EXECUTED
4b2ee: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4b2f2: 660c bnes 4b300 <pipe_release+0x4e> <== NOT EXECUTED
#if 0
/* To delete an anonymous pipe file when all users closed it */
if (pipe->Anonymous)
delfile = TRUE;
#endif
pipe_free(pipe);
4b2f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b2f6: 4eba ff72 jsr %pc@(4b26a <pipe_free>) <== NOT EXECUTED
*pipep = NULL;
4b2fa: 588f addql #4,%sp <== NOT EXECUTED
4b2fc: 4293 clrl %a3@ <== NOT EXECUTED
4b2fe: 602c bras 4b32c <pipe_release+0x7a> <== NOT EXECUTED
}
else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)
4b300: 7004 moveq #4,%d0 <== NOT EXECUTED
4b302: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b304: 670a beqs 4b310 <pipe_release+0x5e> <== NOT EXECUTED
/* Notify waiting Writers that all their partners left */
PIPE_WAKEUPWRITERS(pipe);
4b306: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b30a: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b30e: 6014 bras 4b324 <pipe_release+0x72> <== NOT EXECUTED
else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)
4b310: 4aaa 0014 tstl %a2@(20) <== NOT EXECUTED
4b314: 6616 bnes 4b32c <pipe_release+0x7a> <== NOT EXECUTED
4b316: 7002 moveq #2,%d0 <== NOT EXECUTED
4b318: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b31a: 6710 beqs 4b32c <pipe_release+0x7a> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4b31c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b320: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b324: 4eb9 0004 cdb4 jsr 4cdb4 <rtems_barrier_release> <== NOT EXECUTED
4b32a: 508f addql #8,%sp <== NOT EXECUTED
pipe_unlock();
4b32c: 4eba ff26 jsr %pc@(4b254 <pipe_unlock>) <== NOT EXECUTED
iop->flags &= ~LIBIO_FLAGS_OPEN;
if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))
return;
#endif
}
4b330: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4b336: 4e5e unlk %fp <== NOT EXECUTED
0004b254 <pipe_unlock>:
return -ENOMEM;
}
}
static void pipe_unlock(void)
{
4b254: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_semaphore_release(pipe_semaphore);
4b258: 2f39 0005 f668 movel 5f668 <pipe_semaphore>,%sp@- <== NOT EXECUTED
4b25e: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
4b264: 588f addql #4,%sp <== NOT EXECUTED
#ifdef RTEMS_DEBUG
if (sc != RTEMS_SUCCESSFUL) {
rtems_fatal_error_occurred(0xdeadbeef);
}
#endif
}
4b266: 4e5e unlk %fp <== NOT EXECUTED
0004b870 <pipe_write>:
pipe_control_t *pipe,
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
4b870: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4b874: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4b878: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4b87c: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
4b880: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
4b884: 6700 0168 beqw 4b9ee <pipe_write+0x17e> <== NOT EXECUTED
return 0;
if (! PIPE_LOCK(pipe))
4b888: 42a7 clrl %sp@- <== NOT EXECUTED
4b88a: 42a7 clrl %sp@- <== NOT EXECUTED
4b88c: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b890: 4eb9 0004 733c jsr 4733c <rtems_semaphore_obtain> <== NOT EXECUTED
4b896: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b89a: 4a80 tstl %d0 <== NOT EXECUTED
4b89c: 6600 0154 bnew 4b9f2 <pipe_write+0x182> <== NOT EXECUTED
return -EINTR;
if (pipe->Readers == 0) {
4b8a0: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4b8a4: 6700 010a beqw 4b9b0 <pipe_write+0x140> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
4b8a8: b8aa 0004 cmpl %a2@(4),%d4 <== NOT EXECUTED
4b8ac: 6204 bhis 4b8b2 <pipe_write+0x42> <== NOT EXECUTED
4b8ae: 2a04 movel %d4,%d5 <== NOT EXECUTED
4b8b0: 6002 bras 4b8b4 <pipe_write+0x44> <== NOT EXECUTED
4b8b2: 7a01 moveq #1,%d5 <== NOT EXECUTED
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
4b8b4: 4282 clrl %d2 <== NOT EXECUTED
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
4b8b6: 2e3c 0004 ce18 movel #314904,%d7 <== NOT EXECUTED
4b8bc: 47f9 0004 f794 lea 4f794 <memcpy>,%a3 <== NOT EXECUTED
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
pipe->Length += chunk;
if (pipe->waitingReaders > 0)
PIPE_WAKEUPREADERS(pipe);
4b8c2: 4bf9 0004 cdb4 lea 4cdb4 <rtems_barrier_release>,%a5 <== NOT EXECUTED
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
4b8c8: 2c3c 0004 733c movel #291644,%d6 <== NOT EXECUTED
4b8ce: 6000 00d8 braw 4b9a8 <pipe_write+0x138> <== 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) {
if (LIBIO_NODELAY(iop)) {
4b8d2: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4b8d6: 7001 moveq #1,%d0 <== NOT EXECUTED
4b8d8: c0a8 0014 andl %a0@(20),%d0 <== NOT EXECUTED
4b8dc: 6600 00d8 bnew 4b9b6 <pipe_write+0x146> <== NOT EXECUTED
ret = -EAGAIN;
goto out_locked;
}
/* Wait until there is chunk bytes space or no reader exists */
pipe->waitingWriters ++;
4b8e0: 52aa 001c addql #1,%a2@(28) <== NOT EXECUTED
PIPE_UNLOCK(pipe);
4b8e4: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b8e8: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
if (! PIPE_WRITEWAIT(pipe))
4b8ee: 2047 moveal %d7,%a0 <== NOT EXECUTED
4b8f0: 42a7 clrl %sp@- <== NOT EXECUTED
4b8f2: 2f2a 0030 movel %a2@(48),%sp@- <== NOT EXECUTED
4b8f6: 4e90 jsr %a0@ <== NOT EXECUTED
4b8f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b8fc: 4a80 tstl %d0 <== NOT EXECUTED
4b8fe: 6604 bnes 4b904 <pipe_write+0x94> <== NOT EXECUTED
4b900: 4283 clrl %d3 <== NOT EXECUTED
4b902: 6002 bras 4b906 <pipe_write+0x96> <== NOT EXECUTED
ret = -EINTR;
4b904: 76fc moveq #-4,%d3 <== NOT EXECUTED
if (! PIPE_LOCK(pipe)) {
4b906: 42a7 clrl %sp@- <== NOT EXECUTED
4b908: 2046 moveal %d6,%a0 <== NOT EXECUTED
4b90a: 42a7 clrl %sp@- <== NOT EXECUTED
4b90c: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b910: 4e90 jsr %a0@ <== NOT EXECUTED
4b912: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b916: 4a80 tstl %d0 <== NOT EXECUTED
4b918: 6600 00ca bnew 4b9e4 <pipe_write+0x174> <== NOT EXECUTED
/* WARN waitingWriters not restored! */
ret = -EINTR;
goto out_nolock;
}
pipe->waitingWriters --;
4b91c: 53aa 001c subql #1,%a2@(28) <== NOT EXECUTED
if (ret != 0)
4b920: 4a83 tstl %d3 <== NOT EXECUTED
4b922: 6600 0098 bnew 4b9bc <pipe_write+0x14c> <== NOT EXECUTED
goto out_locked;
if (pipe->Readers == 0) {
4b926: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
4b92a: 6700 008e beqw 4b9ba <pipe_write+0x14a> <== 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) {
4b92e: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
4b932: 2600 movel %d0,%d3 <== NOT EXECUTED
4b934: 222a 000c movel %a2@(12),%d1 <== NOT EXECUTED
4b938: 9681 subl %d1,%d3 <== NOT EXECUTED
4b93a: ba83 cmpl %d3,%d5 <== NOT EXECUTED
4b93c: 6294 bhis 4b8d2 <pipe_write+0x62> <== NOT EXECUTED
ret = -EPIPE;
goto out_locked;
}
}
chunk = MIN(count - written, PIPE_SPACE(pipe));
4b93e: 2044 moveal %d4,%a0 <== NOT EXECUTED
4b940: 91c2 subal %d2,%a0 <== NOT EXECUTED
4b942: b1c3 cmpal %d3,%a0 <== NOT EXECUTED
4b944: 6402 bccs 4b948 <pipe_write+0xd8> <== NOT EXECUTED
4b946: 2608 movel %a0,%d3 <== NOT EXECUTED
chunk1 = pipe->Size - PIPE_WSTART(pipe);
4b948: 2a01 movel %d1,%d5 <== NOT EXECUTED
4b94a: daaa 0008 addl %a2@(8),%d5 <== NOT EXECUTED
4b94e: 4c40 5001 remul %d0,%d1,%d5 <== NOT EXECUTED
4b952: 2a00 movel %d0,%d5 <== NOT EXECUTED
4b954: 9a81 subl %d1,%d5 <== NOT EXECUTED
4b956: 2012 movel %a2@,%d0 <== NOT EXECUTED
4b958: d081 addl %d1,%d0 <== NOT EXECUTED
4b95a: 220c movel %a4,%d1 <== NOT EXECUTED
4b95c: d282 addl %d2,%d1 <== NOT EXECUTED
if (chunk > chunk1) {
4b95e: ba83 cmpl %d3,%d5 <== NOT EXECUTED
4b960: 6c20 bges 4b982 <pipe_write+0x112> <== NOT EXECUTED
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
4b962: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b964: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b966: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b968: 4e93 jsr %a3@ <== NOT EXECUTED
memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
4b96a: 2203 movel %d3,%d1 <== NOT EXECUTED
4b96c: 9285 subl %d5,%d1 <== NOT EXECUTED
4b96e: 2005 movel %d5,%d0 <== NOT EXECUTED
4b970: d082 addl %d2,%d0 <== NOT EXECUTED
4b972: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b974: 4874 0800 pea %a4@(00000000,%d0:l) <== NOT EXECUTED
4b978: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4b97a: 4e93 jsr %a3@ <== NOT EXECUTED
4b97c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4b980: 600c bras 4b98e <pipe_write+0x11e> <== NOT EXECUTED
}
else
memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
4b982: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b984: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b986: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b988: 4e93 jsr %a3@ <== NOT EXECUTED
4b98a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
pipe->Length += chunk;
4b98e: d7aa 000c addl %d3,%a2@(12) <== NOT EXECUTED
if (pipe->waitingReaders > 0)
4b992: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
4b996: 670c beqs 4b9a4 <pipe_write+0x134> <== NOT EXECUTED
PIPE_WAKEUPREADERS(pipe);
4b998: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b99c: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
4b9a0: 4e95 jsr %a5@ <== NOT EXECUTED
4b9a2: 508f addql #8,%sp <== NOT EXECUTED
written += chunk;
4b9a4: d483 addl %d3,%d2 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
4b9a6: 7a01 moveq #1,%d5 <== NOT EXECUTED
}
/* Write of PIPE_BUF bytes or less shall not be interleaved */
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
4b9a8: b882 cmpl %d2,%d4 <== NOT EXECUTED
4b9aa: 6282 bhis 4b92e <pipe_write+0xbe> <== NOT EXECUTED
4b9ac: 4283 clrl %d3 <== NOT EXECUTED
4b9ae: 600c bras 4b9bc <pipe_write+0x14c> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
if (pipe->Readers == 0) {
ret = -EPIPE;
4b9b0: 76e0 moveq #-32,%d3 <== NOT EXECUTED
const void *buffer,
size_t count,
rtems_libio_t *iop
)
{
int chunk, chunk1, written = 0, ret = 0;
4b9b2: 4282 clrl %d2 <== NOT EXECUTED
4b9b4: 6006 bras 4b9bc <pipe_write+0x14c> <== NOT EXECUTED
chunk = count <= pipe->Size ? count : 1;
while (written < count) {
while (PIPE_SPACE(pipe) < chunk) {
if (LIBIO_NODELAY(iop)) {
ret = -EAGAIN;
4b9b6: 76f5 moveq #-11,%d3 <== NOT EXECUTED
4b9b8: 6002 bras 4b9bc <pipe_write+0x14c> <== NOT EXECUTED
pipe->waitingWriters --;
if (ret != 0)
goto out_locked;
if (pipe->Readers == 0) {
ret = -EPIPE;
4b9ba: 76e0 moveq #-32,%d3 <== NOT EXECUTED
/* Write of more than PIPE_BUF bytes can be interleaved */
chunk = 1;
}
out_locked:
PIPE_UNLOCK(pipe);
4b9bc: 2f2a 0028 movel %a2@(40),%sp@- <== NOT EXECUTED
4b9c0: 4eb9 0004 7444 jsr 47444 <rtems_semaphore_release> <== NOT EXECUTED
4b9c6: 588f addql #4,%sp <== NOT EXECUTED
out_nolock:
#ifdef RTEMS_POSIX_API
/* Signal SIGPIPE */
if (ret == -EPIPE)
4b9c8: 70e0 moveq #-32,%d0 <== NOT EXECUTED
4b9ca: b083 cmpl %d3,%d0 <== NOT EXECUTED
4b9cc: 6618 bnes 4b9e6 <pipe_write+0x176> <== NOT EXECUTED
kill(getpid(), SIGPIPE);
4b9ce: 4eb9 0004 c1cc jsr 4c1cc <getpid> <== NOT EXECUTED
4b9d4: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
4b9d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b9da: 4eb9 0004 c468 jsr 4c468 <kill> <== NOT EXECUTED
4b9e0: 508f addql #8,%sp <== NOT EXECUTED
4b9e2: 6002 bras 4b9e6 <pipe_write+0x176> <== NOT EXECUTED
PIPE_UNLOCK(pipe);
if (! PIPE_WRITEWAIT(pipe))
ret = -EINTR;
if (! PIPE_LOCK(pipe)) {
/* WARN waitingWriters not restored! */
ret = -EINTR;
4b9e4: 76fc moveq #-4,%d3 <== NOT EXECUTED
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4b9e6: 4a82 tstl %d2 <== NOT EXECUTED
4b9e8: 6f0c bles 4b9f6 <pipe_write+0x186> <== NOT EXECUTED
4b9ea: 2002 movel %d2,%d0 <== NOT EXECUTED
4b9ec: 600a bras 4b9f8 <pipe_write+0x188> <== NOT EXECUTED
{
int chunk, chunk1, written = 0, ret = 0;
/* Write nothing */
if (count == 0)
return 0;
4b9ee: 4280 clrl %d0 <== NOT EXECUTED
4b9f0: 6006 bras 4b9f8 <pipe_write+0x188> <== NOT EXECUTED
if (! PIPE_LOCK(pipe))
return -EINTR;
4b9f2: 70fc moveq #-4,%d0 <== NOT EXECUTED
4b9f4: 6002 bras 4b9f8 <pipe_write+0x188> <== NOT EXECUTED
/* Signal SIGPIPE */
if (ret == -EPIPE)
kill(getpid(), SIGPIPE);
#endif
if (written > 0)
4b9f6: 2003 movel %d3,%d0 <== NOT EXECUTED
return written;
return ret;
}
4b9f8: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4b9fe: 4e5e unlk %fp <== NOT EXECUTED
00046b0c <posix_memalign>:
int posix_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
46b0c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46b10: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
46b14: 2200 movel %d0,%d1 <== NOT EXECUTED
46b16: 5381 subql #1,%d1 <== NOT EXECUTED
)
{
/*
* Update call statistics
*/
MSBUMP(memalign_calls, 1);
46b18: 52b9 0006 3260 addql #1,63260 <rtems_malloc_statistics+0x8><== NOT EXECUTED
if (((alignment - 1) & alignment) != 0 || (alignment < sizeof(void *)))
46b1e: c280 andl %d0,%d1 <== NOT EXECUTED
46b20: 6610 bnes 46b32 <posix_memalign+0x26> <== NOT EXECUTED
46b22: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
46b26: b280 cmpl %d0,%d1 <== NOT EXECUTED
46b28: 6408 bccs 46b32 <posix_memalign+0x26> <== NOT EXECUTED
/*
* rtems_memalign does all of the error checking work EXCEPT
* for adding restrictionso on the alignment.
*/
return rtems_memalign( pointer, alignment, size );
}
46b2a: 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 );
46b2c: 4ef9 0004 6ca8 jmp 46ca8 <rtems_memalign> <== NOT EXECUTED
}
46b32: 7016 moveq #22,%d0 <== NOT EXECUTED
46b34: 4e5e unlk %fp <== NOT EXECUTED
00044220 <printk_plugin>:
int printk_plugin(
void *ignored __attribute__((unused)),
const char *format,
...
)
{
44220: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
va_list arg_pointer;
va_start (arg_pointer, format);
vprintk( format, arg_pointer );
44224: 486e 0010 pea %fp@(16) <== NOT EXECUTED
44228: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4422c: 4eb9 0004 5b38 jsr 45b38 <vprintk> <== NOT EXECUTED
va_end(arg_pointer); /* clean up when done */
return 0;
}
44232: 4280 clrl %d0 <== NOT EXECUTED
44234: 4e5e unlk %fp <== NOT EXECUTED
0004548c <pthread_atfork>:
int pthread_atfork(
void (*prepare)(void) __attribute__((unused)),
void (*parent)(void) __attribute__((unused)),
void (*child)(void) __attribute__((unused))
)
{
4548c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
45490: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
45496: 4e5e unlk %fp <== NOT EXECUTED
void (*prepare)(void) __attribute__((unused)),
void (*parent)(void) __attribute__((unused)),
void (*child)(void) __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
45498: 2040 moveal %d0,%a0 <== NOT EXECUTED
4549a: 7058 moveq #88,%d0 <== NOT EXECUTED
4549c: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4549e: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004a084 <pthread_attr_destroy>:
#include <rtems/system.h>
int pthread_attr_destroy(
pthread_attr_t *attr
)
{
4a084: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a088: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4a08c: 4a88 tstl %a0 <== NOT EXECUTED
4a08e: 670a beqs 4a09a <pthread_attr_destroy+0x16> <== NOT EXECUTED
4a090: 4a90 tstl %a0@ <== NOT EXECUTED
4a092: 6706 beqs 4a09a <pthread_attr_destroy+0x16> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
4a094: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
4a096: 4280 clrl %d0 <== NOT EXECUTED
4a098: 6002 bras 4a09c <pthread_attr_destroy+0x18> <== NOT EXECUTED
int pthread_attr_destroy(
pthread_attr_t *attr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4a09a: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
4a09c: 4e5e unlk %fp <== NOT EXECUTED
0004a6a8 <pthread_attr_getcputime>:
int pthread_attr_getcputime(
pthread_attr_t *attr,
int *clock_allowed
)
{
4a6a8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a6ac: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a6b0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !clock_allowed )
4a6b4: 4a88 tstl %a0 <== NOT EXECUTED
4a6b6: 6710 beqs 4a6c8 <pthread_attr_getcputime+0x20> <== NOT EXECUTED
4a6b8: 4a90 tstl %a0@ <== NOT EXECUTED
4a6ba: 670c beqs 4a6c8 <pthread_attr_getcputime+0x20> <== NOT EXECUTED
4a6bc: 4a89 tstl %a1 <== NOT EXECUTED
4a6be: 6708 beqs 4a6c8 <pthread_attr_getcputime+0x20> <== NOT EXECUTED
return EINVAL;
*clock_allowed = attr->cputime_clock_allowed;
4a6c0: 22a8 0038 movel %a0@(56),%a1@ <== NOT EXECUTED
return 0;
4a6c4: 4280 clrl %d0 <== NOT EXECUTED
4a6c6: 6002 bras 4a6ca <pthread_attr_getcputime+0x22> <== NOT EXECUTED
pthread_attr_t *attr,
int *clock_allowed
)
{
if ( !attr || !attr->is_initialized || !clock_allowed )
return EINVAL;
4a6c8: 7016 moveq #22,%d0 <== NOT EXECUTED
*clock_allowed = attr->cputime_clock_allowed;
return 0;
}
4a6ca: 4e5e unlk %fp <== NOT EXECUTED
...
0004a0a0 <pthread_attr_getdetachstate>:
int pthread_attr_getdetachstate(
const pthread_attr_t *attr,
int *detachstate
)
{
4a0a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a0a4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a0a8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !detachstate )
4a0ac: 4a88 tstl %a0 <== NOT EXECUTED
4a0ae: 6710 beqs 4a0c0 <pthread_attr_getdetachstate+0x20><== NOT EXECUTED
4a0b0: 4a90 tstl %a0@ <== NOT EXECUTED
4a0b2: 670c beqs 4a0c0 <pthread_attr_getdetachstate+0x20><== NOT EXECUTED
4a0b4: 4a89 tstl %a1 <== NOT EXECUTED
4a0b6: 6708 beqs 4a0c0 <pthread_attr_getdetachstate+0x20><== NOT EXECUTED
return EINVAL;
*detachstate = attr->detachstate;
4a0b8: 22a8 003c movel %a0@(60),%a1@ <== NOT EXECUTED
return 0;
4a0bc: 4280 clrl %d0 <== NOT EXECUTED
4a0be: 6002 bras 4a0c2 <pthread_attr_getdetachstate+0x22><== NOT EXECUTED
const pthread_attr_t *attr,
int *detachstate
)
{
if ( !attr || !attr->is_initialized || !detachstate )
return EINVAL;
4a0c0: 7016 moveq #22,%d0 <== NOT EXECUTED
*detachstate = attr->detachstate;
return 0;
}
4a0c2: 4e5e unlk %fp <== NOT EXECUTED
...
0004a0c8 <pthread_attr_getguardsize>:
int pthread_attr_getguardsize(
const pthread_attr_t *attr,
size_t *guardsize
)
{
4a0c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a0cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a0d0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !guardsize )
4a0d4: 4a88 tstl %a0 <== NOT EXECUTED
4a0d6: 6710 beqs 4a0e8 <pthread_attr_getguardsize+0x20> <== NOT EXECUTED
4a0d8: 4a90 tstl %a0@ <== NOT EXECUTED
4a0da: 670c beqs 4a0e8 <pthread_attr_getguardsize+0x20> <== NOT EXECUTED
4a0dc: 4a89 tstl %a1 <== NOT EXECUTED
4a0de: 6708 beqs 4a0e8 <pthread_attr_getguardsize+0x20> <== NOT EXECUTED
return EINVAL;
*guardsize = attr->guardsize;
4a0e0: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED
return 0;
4a0e4: 4280 clrl %d0 <== NOT EXECUTED
4a0e6: 6002 bras 4a0ea <pthread_attr_getguardsize+0x22> <== NOT EXECUTED
const pthread_attr_t *attr,
size_t *guardsize
)
{
if ( !attr || !attr->is_initialized || !guardsize )
return EINVAL;
4a0e8: 7016 moveq #22,%d0 <== NOT EXECUTED
*guardsize = attr->guardsize;
return 0;
}
4a0ea: 4e5e unlk %fp <== NOT EXECUTED
...
0004a0f0 <pthread_attr_getinheritsched>:
int pthread_attr_getinheritsched(
const pthread_attr_t *attr,
int *inheritsched
)
{
4a0f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a0f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a0f8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !inheritsched )
4a0fc: 4a88 tstl %a0 <== NOT EXECUTED
4a0fe: 6710 beqs 4a110 <pthread_attr_getinheritsched+0x20><== NOT EXECUTED
4a100: 4a90 tstl %a0@ <== NOT EXECUTED
4a102: 670c beqs 4a110 <pthread_attr_getinheritsched+0x20><== NOT EXECUTED
4a104: 4a89 tstl %a1 <== NOT EXECUTED
4a106: 6708 beqs 4a110 <pthread_attr_getinheritsched+0x20><== NOT EXECUTED
return EINVAL;
*inheritsched = attr->inheritsched;
4a108: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED
return 0;
4a10c: 4280 clrl %d0 <== NOT EXECUTED
4a10e: 6002 bras 4a112 <pthread_attr_getinheritsched+0x22><== NOT EXECUTED
const pthread_attr_t *attr,
int *inheritsched
)
{
if ( !attr || !attr->is_initialized || !inheritsched )
return EINVAL;
4a110: 7016 moveq #22,%d0 <== NOT EXECUTED
*inheritsched = attr->inheritsched;
return 0;
}
4a112: 4e5e unlk %fp <== NOT EXECUTED
...
0004a118 <pthread_attr_getschedparam>:
int pthread_attr_getschedparam(
const pthread_attr_t *attr,
struct sched_param *param
)
{
4a118: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a11c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a120: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !param )
4a124: 4a88 tstl %a0 <== NOT EXECUTED
4a126: 6720 beqs 4a148 <pthread_attr_getschedparam+0x30><== NOT EXECUTED
4a128: 4a90 tstl %a0@ <== NOT EXECUTED
4a12a: 671c beqs 4a148 <pthread_attr_getschedparam+0x30><== NOT EXECUTED
4a12c: 4a80 tstl %d0 <== NOT EXECUTED
4a12e: 6718 beqs 4a148 <pthread_attr_getschedparam+0x30><== NOT EXECUTED
return EINVAL;
*param = attr->schedparam;
4a130: 4878 001c pea 1c <OPER2+0x8> <== NOT EXECUTED
4a134: 4868 0018 pea %a0@(24) <== NOT EXECUTED
4a138: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a13a: 4eb9 0005 2c08 jsr 52c08 <memcpy> <== NOT EXECUTED
return 0;
4a140: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a144: 4280 clrl %d0 <== NOT EXECUTED
4a146: 6002 bras 4a14a <pthread_attr_getschedparam+0x32><== NOT EXECUTED
const pthread_attr_t *attr,
struct sched_param *param
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
4a148: 7016 moveq #22,%d0 <== NOT EXECUTED
*param = attr->schedparam;
return 0;
}
4a14a: 4e5e unlk %fp <== NOT EXECUTED
...
0004a150 <pthread_attr_getschedpolicy>:
int pthread_attr_getschedpolicy(
const pthread_attr_t *attr,
int *policy
)
{
4a150: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a154: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a158: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !policy )
4a15c: 4a88 tstl %a0 <== NOT EXECUTED
4a15e: 6710 beqs 4a170 <pthread_attr_getschedpolicy+0x20><== NOT EXECUTED
4a160: 4a90 tstl %a0@ <== NOT EXECUTED
4a162: 670c beqs 4a170 <pthread_attr_getschedpolicy+0x20><== NOT EXECUTED
4a164: 4a89 tstl %a1 <== NOT EXECUTED
4a166: 6708 beqs 4a170 <pthread_attr_getschedpolicy+0x20><== NOT EXECUTED
return EINVAL;
*policy = attr->schedpolicy;
4a168: 22a8 0014 movel %a0@(20),%a1@ <== NOT EXECUTED
return 0;
4a16c: 4280 clrl %d0 <== NOT EXECUTED
4a16e: 6002 bras 4a172 <pthread_attr_getschedpolicy+0x22><== NOT EXECUTED
const pthread_attr_t *attr,
int *policy
)
{
if ( !attr || !attr->is_initialized || !policy )
return EINVAL;
4a170: 7016 moveq #22,%d0 <== NOT EXECUTED
*policy = attr->schedpolicy;
return 0;
}
4a172: 4e5e unlk %fp <== NOT EXECUTED
...
0004a178 <pthread_attr_getscope>:
int pthread_attr_getscope(
const pthread_attr_t *attr,
int *contentionscope
)
{
4a178: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a17c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a180: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !contentionscope )
4a184: 4a88 tstl %a0 <== NOT EXECUTED
4a186: 6710 beqs 4a198 <pthread_attr_getscope+0x20> <== NOT EXECUTED
4a188: 4a90 tstl %a0@ <== NOT EXECUTED
4a18a: 670c beqs 4a198 <pthread_attr_getscope+0x20> <== NOT EXECUTED
4a18c: 4a89 tstl %a1 <== NOT EXECUTED
4a18e: 6708 beqs 4a198 <pthread_attr_getscope+0x20> <== NOT EXECUTED
return EINVAL;
*contentionscope = attr->contentionscope;
4a190: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
return 0;
4a194: 4280 clrl %d0 <== NOT EXECUTED
4a196: 6002 bras 4a19a <pthread_attr_getscope+0x22> <== NOT EXECUTED
const pthread_attr_t *attr,
int *contentionscope
)
{
if ( !attr || !attr->is_initialized || !contentionscope )
return EINVAL;
4a198: 7016 moveq #22,%d0 <== NOT EXECUTED
*contentionscope = attr->contentionscope;
return 0;
}
4a19a: 4e5e unlk %fp <== NOT EXECUTED
...
0004a1c8 <pthread_attr_getstack>:
int pthread_attr_getstack(
const pthread_attr_t *attr,
void **stackaddr,
size_t *stacksize
)
{
4a1c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a1cc: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a1d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a1d2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4a1d6: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
4a1da: 4a88 tstl %a0 <== NOT EXECUTED
4a1dc: 6718 beqs 4a1f6 <pthread_attr_getstack+0x2e> <== NOT EXECUTED
4a1de: 4a90 tstl %a0@ <== NOT EXECUTED
4a1e0: 6714 beqs 4a1f6 <pthread_attr_getstack+0x2e> <== NOT EXECUTED
4a1e2: 4a8a tstl %a2 <== NOT EXECUTED
4a1e4: 6710 beqs 4a1f6 <pthread_attr_getstack+0x2e> <== NOT EXECUTED
4a1e6: 4a89 tstl %a1 <== NOT EXECUTED
4a1e8: 670c beqs 4a1f6 <pthread_attr_getstack+0x2e> <== NOT EXECUTED
return EINVAL;
*stackaddr = attr->stackaddr;
4a1ea: 24a8 0004 movel %a0@(4),%a2@ <== NOT EXECUTED
*stacksize = attr->stacksize;
return 0;
4a1ee: 4280 clrl %d0 <== NOT EXECUTED
{
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
return EINVAL;
*stackaddr = attr->stackaddr;
*stacksize = attr->stacksize;
4a1f0: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
4a1f4: 6002 bras 4a1f8 <pthread_attr_getstack+0x30> <== NOT EXECUTED
void **stackaddr,
size_t *stacksize
)
{
if ( !attr || !attr->is_initialized || !stackaddr || !stacksize )
return EINVAL;
4a1f6: 7016 moveq #22,%d0 <== NOT EXECUTED
*stackaddr = attr->stackaddr;
*stacksize = attr->stacksize;
return 0;
}
4a1f8: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4a1fa: 4e5e unlk %fp <== NOT EXECUTED
...
0004a1a0 <pthread_attr_getstackaddr>:
int pthread_attr_getstackaddr(
const pthread_attr_t *attr,
void **stackaddr
)
{
4a1a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a1a4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a1a8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stackaddr )
4a1ac: 4a88 tstl %a0 <== NOT EXECUTED
4a1ae: 6710 beqs 4a1c0 <pthread_attr_getstackaddr+0x20> <== NOT EXECUTED
4a1b0: 4a90 tstl %a0@ <== NOT EXECUTED
4a1b2: 670c beqs 4a1c0 <pthread_attr_getstackaddr+0x20> <== NOT EXECUTED
4a1b4: 4a89 tstl %a1 <== NOT EXECUTED
4a1b6: 6708 beqs 4a1c0 <pthread_attr_getstackaddr+0x20> <== NOT EXECUTED
return EINVAL;
*stackaddr = attr->stackaddr;
4a1b8: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
4a1bc: 4280 clrl %d0 <== NOT EXECUTED
4a1be: 6002 bras 4a1c2 <pthread_attr_getstackaddr+0x22> <== NOT EXECUTED
const pthread_attr_t *attr,
void **stackaddr
)
{
if ( !attr || !attr->is_initialized || !stackaddr )
return EINVAL;
4a1c0: 7016 moveq #22,%d0 <== NOT EXECUTED
*stackaddr = attr->stackaddr;
return 0;
}
4a1c2: 4e5e unlk %fp <== NOT EXECUTED
...
0004a200 <pthread_attr_getstacksize>:
int pthread_attr_getstacksize(
const pthread_attr_t *attr,
size_t *stacksize
)
{
4a200: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a204: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a208: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !stacksize )
4a20c: 4a88 tstl %a0 <== NOT EXECUTED
4a20e: 6710 beqs 4a220 <pthread_attr_getstacksize+0x20> <== NOT EXECUTED
4a210: 4a90 tstl %a0@ <== NOT EXECUTED
4a212: 670c beqs 4a220 <pthread_attr_getstacksize+0x20> <== NOT EXECUTED
4a214: 4a89 tstl %a1 <== NOT EXECUTED
4a216: 6708 beqs 4a220 <pthread_attr_getstacksize+0x20> <== NOT EXECUTED
return EINVAL;
*stacksize = attr->stacksize;
4a218: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
4a21c: 4280 clrl %d0 <== NOT EXECUTED
4a21e: 6002 bras 4a222 <pthread_attr_getstacksize+0x22> <== NOT EXECUTED
const pthread_attr_t *attr,
size_t *stacksize
)
{
if ( !attr || !attr->is_initialized || !stacksize )
return EINVAL;
4a220: 7016 moveq #22,%d0 <== NOT EXECUTED
*stacksize = attr->stacksize;
return 0;
}
4a222: 4e5e unlk %fp <== NOT EXECUTED
...
0004b33c <pthread_attr_init>:
#include <rtems/posix/pthread.h>
int pthread_attr_init(
pthread_attr_t *attr
)
{
4b33c: 4e56 0000 linkw %fp,#0
4b340: 202e 0008 movel %fp@(8),%d0
if ( !attr )
4b344: 671a beqs 4b360 <pthread_attr_init+0x24> <== NEVER TAKEN
return EINVAL;
*attr = _POSIX_Threads_Default_attributes;
4b346: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
4b34a: 4879 0005 c30e pea 5c30e <_POSIX_Threads_Default_attributes>
4b350: 2f00 movel %d0,%sp@-
4b352: 4eb9 0004 ddbc jsr 4ddbc <memcpy>
return 0;
4b358: 4fef 000c lea %sp@(12),%sp
4b35c: 4280 clrl %d0
4b35e: 6002 bras 4b362 <pthread_attr_init+0x26>
int pthread_attr_init(
pthread_attr_t *attr
)
{
if ( !attr )
return EINVAL;
4b360: 7016 moveq #22,%d0
*attr = _POSIX_Threads_Default_attributes;
return 0;
}
4b362: 4e5e unlk %fp
...
0004ab58 <pthread_attr_setcputime>:
int pthread_attr_setcputime(
pthread_attr_t *attr,
int clock_allowed
)
{
4ab58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ab5c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4ab60: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4ab64: 4a88 tstl %a0 <== NOT EXECUTED
4ab66: 6712 beqs 4ab7a <pthread_attr_setcputime+0x22> <== NOT EXECUTED
4ab68: 4a90 tstl %a0@ <== NOT EXECUTED
4ab6a: 670e beqs 4ab7a <pthread_attr_setcputime+0x22> <== NOT EXECUTED
return EINVAL;
switch ( clock_allowed ) {
4ab6c: 7201 moveq #1,%d1 <== NOT EXECUTED
4ab6e: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ab70: 6508 bcss 4ab7a <pthread_attr_setcputime+0x22> <== NOT EXECUTED
case CLOCK_ENABLED:
case CLOCK_DISABLED:
attr->cputime_clock_allowed = clock_allowed;
4ab72: 2140 0038 movel %d0,%a0@(56) <== NOT EXECUTED
return 0;
4ab76: 4280 clrl %d0 <== NOT EXECUTED
4ab78: 6002 bras 4ab7c <pthread_attr_setcputime+0x24> <== NOT EXECUTED
default:
return EINVAL;
4ab7a: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
4ab7c: 4e5e unlk %fp <== NOT EXECUTED
0004a254 <pthread_attr_setdetachstate>:
int pthread_attr_setdetachstate(
pthread_attr_t *attr,
int detachstate
)
{
4a254: 4e56 0000 linkw %fp,#0
4a258: 206e 0008 moveal %fp@(8),%a0
4a25c: 202e 000c movel %fp@(12),%d0
if ( !attr || !attr->is_initialized )
4a260: 4a88 tstl %a0
4a262: 6712 beqs 4a276 <pthread_attr_setdetachstate+0x22><== NEVER TAKEN
4a264: 4a90 tstl %a0@
4a266: 670e beqs 4a276 <pthread_attr_setdetachstate+0x22><== NEVER TAKEN
return EINVAL;
switch ( detachstate ) {
4a268: 7201 moveq #1,%d1
4a26a: b280 cmpl %d0,%d1
4a26c: 6508 bcss 4a276 <pthread_attr_setdetachstate+0x22><== NEVER TAKEN
case PTHREAD_CREATE_DETACHED:
case PTHREAD_CREATE_JOINABLE:
attr->detachstate = detachstate;
4a26e: 2140 003c movel %d0,%a0@(60)
return 0;
4a272: 4280 clrl %d0
4a274: 6002 bras 4a278 <pthread_attr_setdetachstate+0x24>
default:
return EINVAL;
4a276: 7016 moveq #22,%d0
}
}
4a278: 4e5e unlk %fp <== NOT EXECUTED
0004a27c <pthread_attr_setguardsize>:
int pthread_attr_setguardsize(
pthread_attr_t *attr,
size_t guardsize
)
{
4a27c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a280: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4a284: 4a88 tstl %a0 <== NOT EXECUTED
4a286: 670e beqs 4a296 <pthread_attr_setguardsize+0x1a> <== NOT EXECUTED
4a288: 4a90 tstl %a0@ <== NOT EXECUTED
4a28a: 670a beqs 4a296 <pthread_attr_setguardsize+0x1a> <== NOT EXECUTED
return EINVAL;
attr->guardsize = guardsize;
return 0;
4a28c: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->guardsize = guardsize;
4a28e: 216e 000c 0034 movel %fp@(12),%a0@(52) <== NOT EXECUTED
return 0;
4a294: 6002 bras 4a298 <pthread_attr_setguardsize+0x1c> <== NOT EXECUTED
pthread_attr_t *attr,
size_t guardsize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4a296: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->guardsize = guardsize;
return 0;
}
4a298: 4e5e unlk %fp <== NOT EXECUTED
0004b368 <pthread_attr_setinheritsched>:
int pthread_attr_setinheritsched(
pthread_attr_t *attr,
int inheritsched
)
{
4b368: 4e56 0000 linkw %fp,#0
4b36c: 206e 0008 moveal %fp@(8),%a0
4b370: 222e 000c movel %fp@(12),%d1
4b374: 2f02 movel %d2,%sp@-
if ( !attr || !attr->is_initialized )
4b376: 4a88 tstl %a0
4b378: 671c beqs 4b396 <pthread_attr_setinheritsched+0x2e><== NEVER TAKEN
4b37a: 4a90 tstl %a0@
4b37c: 6718 beqs 4b396 <pthread_attr_setinheritsched+0x2e><== NEVER TAKEN
return EINVAL;
switch ( inheritsched ) {
4b37e: 2241 moveal %d1,%a1
4b380: 5389 subql #1,%a1
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
return 0;
default:
return ENOTSUP;
4b382: 203c 0000 0086 movel #134,%d0
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( inheritsched ) {
4b388: 7401 moveq #1,%d2
4b38a: b489 cmpl %a1,%d2
4b38c: 650a bcss 4b398 <pthread_attr_setinheritsched+0x30><== NEVER TAKEN
case PTHREAD_INHERIT_SCHED:
case PTHREAD_EXPLICIT_SCHED:
attr->inheritsched = inheritsched;
4b38e: 2141 0010 movel %d1,%a0@(16)
return 0;
4b392: 4200 clrb %d0
4b394: 6002 bras 4b398 <pthread_attr_setinheritsched+0x30>
pthread_attr_t *attr,
int inheritsched
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b396: 7016 moveq #22,%d0 <== NOT EXECUTED
return 0;
default:
return ENOTSUP;
}
}
4b398: 241f movel %sp@+,%d2
4b39a: 4e5e unlk %fp
...
0004a2d4 <pthread_attr_setschedparam>:
int pthread_attr_setschedparam(
pthread_attr_t *attr,
const struct sched_param *param
)
{
4a2d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a2d8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a2dc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !param )
4a2e0: 4a88 tstl %a0 <== NOT EXECUTED
4a2e2: 6720 beqs 4a304 <pthread_attr_setschedparam+0x30><== NOT EXECUTED
4a2e4: 4a90 tstl %a0@ <== NOT EXECUTED
4a2e6: 671c beqs 4a304 <pthread_attr_setschedparam+0x30><== NOT EXECUTED
4a2e8: 4a80 tstl %d0 <== NOT EXECUTED
4a2ea: 6718 beqs 4a304 <pthread_attr_setschedparam+0x30><== NOT EXECUTED
return EINVAL;
attr->schedparam = *param;
4a2ec: 4878 001c pea 1c <OPER2+0x8> <== NOT EXECUTED
4a2f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a2f2: 4868 0018 pea %a0@(24) <== NOT EXECUTED
4a2f6: 4eb9 0005 2c08 jsr 52c08 <memcpy> <== NOT EXECUTED
return 0;
4a2fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a300: 4280 clrl %d0 <== NOT EXECUTED
4a302: 6002 bras 4a306 <pthread_attr_setschedparam+0x32><== NOT EXECUTED
pthread_attr_t *attr,
const struct sched_param *param
)
{
if ( !attr || !attr->is_initialized || !param )
return EINVAL;
4a304: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->schedparam = *param;
return 0;
}
4a306: 4e5e unlk %fp <== NOT EXECUTED
...
0004a30c <pthread_attr_setschedpolicy>:
int pthread_attr_setschedpolicy(
pthread_attr_t *attr,
int policy
)
{
4a30c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a310: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a314: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
4a318: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4a31a: 4a88 tstl %a0 <== NOT EXECUTED
4a31c: 671e beqs 4a33c <pthread_attr_setschedpolicy+0x30><== NOT EXECUTED
4a31e: 4a90 tstl %a0@ <== NOT EXECUTED
4a320: 671a beqs 4a33c <pthread_attr_setschedpolicy+0x30><== NOT EXECUTED
return EINVAL;
switch ( policy ) {
4a322: 7004 moveq #4,%d0 <== NOT EXECUTED
4a324: b081 cmpl %d1,%d0 <== NOT EXECUTED
4a326: 6518 bcss 4a340 <pthread_attr_setschedpolicy+0x34><== NOT EXECUTED
4a328: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
4a32c: 7417 moveq #23,%d2 <== NOT EXECUTED
4a32e: e3a8 lsll %d1,%d0 <== NOT EXECUTED
4a330: c082 andl %d2,%d0 <== NOT EXECUTED
4a332: 670c beqs 4a340 <pthread_attr_setschedpolicy+0x34><== NOT EXECUTED
case SCHED_OTHER:
case SCHED_FIFO:
case SCHED_RR:
case SCHED_SPORADIC:
attr->schedpolicy = policy;
4a334: 2141 0014 movel %d1,%a0@(20) <== NOT EXECUTED
return 0;
4a338: 4280 clrl %d0 <== NOT EXECUTED
4a33a: 600a bras 4a346 <pthread_attr_setschedpolicy+0x3a><== NOT EXECUTED
pthread_attr_t *attr,
int policy
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4a33c: 7016 moveq #22,%d0 <== NOT EXECUTED
4a33e: 6006 bras 4a346 <pthread_attr_setschedpolicy+0x3a><== NOT EXECUTED
case SCHED_SPORADIC:
attr->schedpolicy = policy;
return 0;
default:
return ENOTSUP;
4a340: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED
}
}
4a346: 241f movel %sp@+,%d2 <== NOT EXECUTED
4a348: 4e5e unlk %fp <== NOT EXECUTED
0004a34c <pthread_attr_setscope>:
int pthread_attr_setscope(
pthread_attr_t *attr,
int contentionscope
)
{
4a34c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a350: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a354: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
4a358: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4a35a: 4a88 tstl %a0 <== NOT EXECUTED
4a35c: 671e beqs 4a37c <pthread_attr_setscope+0x30> <== NOT EXECUTED
4a35e: 4a90 tstl %a0@ <== NOT EXECUTED
4a360: 671a beqs 4a37c <pthread_attr_setscope+0x30> <== NOT EXECUTED
return EINVAL;
switch ( contentionscope ) {
4a362: 4a81 tstl %d1 <== NOT EXECUTED
4a364: 670e beqs 4a374 <pthread_attr_setscope+0x28> <== NOT EXECUTED
case PTHREAD_SCOPE_PROCESS:
attr->contentionscope = contentionscope;
return 0;
case PTHREAD_SCOPE_SYSTEM:
return ENOTSUP;
4a366: 203c 0000 0086 movel #134,%d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
switch ( contentionscope ) {
4a36c: 7401 moveq #1,%d2 <== NOT EXECUTED
4a36e: b481 cmpl %d1,%d2 <== NOT EXECUTED
4a370: 660a bnes 4a37c <pthread_attr_setscope+0x30> <== NOT EXECUTED
4a372: 600a bras 4a37e <pthread_attr_setscope+0x32> <== NOT EXECUTED
case PTHREAD_SCOPE_PROCESS:
attr->contentionscope = contentionscope;
4a374: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
return 0;
4a378: 4280 clrl %d0 <== NOT EXECUTED
4a37a: 6002 bras 4a37e <pthread_attr_setscope+0x32> <== NOT EXECUTED
case PTHREAD_SCOPE_SYSTEM:
return ENOTSUP;
default:
return EINVAL;
4a37c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
4a37e: 241f movel %sp@+,%d2 <== NOT EXECUTED
4a380: 4e5e unlk %fp <== NOT EXECUTED
0004a3a4 <pthread_attr_setstack>:
int pthread_attr_setstack(
pthread_attr_t *attr,
void *stackaddr,
size_t stacksize
)
{
4a3a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a3a8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a3ac: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4a3b0: 4a88 tstl %a0 <== NOT EXECUTED
4a3b2: 6724 beqs 4a3d8 <pthread_attr_setstack+0x34> <== NOT EXECUTED
4a3b4: 4a90 tstl %a0@ <== NOT EXECUTED
4a3b6: 6720 beqs 4a3d8 <pthread_attr_setstack+0x34> <== NOT EXECUTED
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4a3b8: 2039 0006 4c72 movel 64c72 <rtems_minimum_stack_size>,%d0 <== NOT EXECUTED
4a3be: d080 addl %d0,%d0 <== NOT EXECUTED
4a3c0: b081 cmpl %d1,%d0 <== NOT EXECUTED
4a3c2: 6306 blss 4a3ca <pthread_attr_setstack+0x26> <== NOT EXECUTED
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4a3c4: 2140 0008 movel %d0,%a0@(8) <== NOT EXECUTED
4a3c8: 6004 bras 4a3ce <pthread_attr_setstack+0x2a> <== NOT EXECUTED
else
attr->stacksize = stacksize;
4a3ca: 2141 0008 movel %d1,%a0@(8) <== NOT EXECUTED
attr->stackaddr = stackaddr;
return 0;
4a3ce: 4280 clrl %d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
4a3d0: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
return 0;
4a3d6: 6002 bras 4a3da <pthread_attr_setstack+0x36> <== NOT EXECUTED
void *stackaddr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4a3d8: 7016 moveq #22,%d0 <== NOT EXECUTED
else
attr->stacksize = stacksize;
attr->stackaddr = stackaddr;
return 0;
}
4a3da: 4e5e unlk %fp <== NOT EXECUTED
...
0004a384 <pthread_attr_setstackaddr>:
int pthread_attr_setstackaddr(
pthread_attr_t *attr,
void *stackaddr
)
{
4a384: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a388: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4a38c: 4a88 tstl %a0 <== NOT EXECUTED
4a38e: 670e beqs 4a39e <pthread_attr_setstackaddr+0x1a> <== NOT EXECUTED
4a390: 4a90 tstl %a0@ <== NOT EXECUTED
4a392: 670a beqs 4a39e <pthread_attr_setstackaddr+0x1a> <== NOT EXECUTED
return EINVAL;
attr->stackaddr = stackaddr;
return 0;
4a394: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
attr->stackaddr = stackaddr;
4a396: 216e 000c 0004 movel %fp@(12),%a0@(4) <== NOT EXECUTED
return 0;
4a39c: 6002 bras 4a3a0 <pthread_attr_setstackaddr+0x1c> <== NOT EXECUTED
pthread_attr_t *attr,
void *stackaddr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4a39e: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->stackaddr = stackaddr;
return 0;
}
4a3a0: 4e5e unlk %fp <== NOT EXECUTED
0004b3a0 <pthread_attr_setstacksize>:
int pthread_attr_setstacksize(
pthread_attr_t *attr,
size_t stacksize
)
{
4b3a0: 4e56 0000 linkw %fp,#0
4b3a4: 206e 0008 moveal %fp@(8),%a0
4b3a8: 222e 000c movel %fp@(12),%d1
if ( !attr || !attr->is_initialized )
4b3ac: 4a88 tstl %a0
4b3ae: 671e beqs 4b3ce <pthread_attr_setstacksize+0x2e> <== NEVER TAKEN
4b3b0: 4a90 tstl %a0@
4b3b2: 671a beqs 4b3ce <pthread_attr_setstacksize+0x2e> <== NEVER TAKEN
return EINVAL;
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
4b3b4: 2039 0005 d2a2 movel 5d2a2 <rtems_minimum_stack_size>,%d0
4b3ba: d080 addl %d0,%d0
4b3bc: b081 cmpl %d1,%d0
4b3be: 6306 blss 4b3c6 <pthread_attr_setstacksize+0x26>
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
4b3c0: 2140 0008 movel %d0,%a0@(8)
4b3c4: 6004 bras 4b3ca <pthread_attr_setstacksize+0x2a>
else
attr->stacksize = stacksize;
4b3c6: 2141 0008 movel %d1,%a0@(8)
return 0;
4b3ca: 4280 clrl %d0
4b3cc: 6002 bras 4b3d0 <pthread_attr_setstacksize+0x30>
pthread_attr_t *attr,
size_t stacksize
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
4b3ce: 7016 moveq #22,%d0 <== NOT EXECUTED
if (stacksize < PTHREAD_MINIMUM_STACK_SIZE)
attr->stacksize = PTHREAD_MINIMUM_STACK_SIZE;
else
attr->stacksize = stacksize;
return 0;
}
4b3d0: 4e5e unlk %fp <== NOT EXECUTED
00045938 <pthread_barrier_destroy>:
*/
int pthread_barrier_destroy(
pthread_barrier_t *barrier
)
{
45938: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4593c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45940: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45942: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_Barrier_Control *the_barrier = NULL;
Objects_Locations location;
if ( !barrier )
45944: 4a88 tstl %a0 <== NOT EXECUTED
45946: 6756 beqs 4599e <pthread_barrier_destroy+0x66> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get (
pthread_barrier_t *barrier,
Objects_Locations *location
)
{
return (POSIX_Barrier_Control *) _Objects_Get(
45948: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4594c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4594e: 4879 0005 f40a pea 5f40a <_POSIX_Barrier_Information> <== NOT EXECUTED
45954: 4eb9 0004 7d24 jsr 47d24 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_barrier = _POSIX_Barrier_Get( barrier, &location );
switch ( location ) {
4595a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4595e: 2440 moveal %d0,%a2 <== NOT EXECUTED
45960: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45964: 6638 bnes 4599e <pthread_barrier_destroy+0x66> <== NOT EXECUTED
45966: 47f9 0004 878a lea 4878a <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_barrier->Barrier.number_of_waiting_threads != 0 ) {
4596c: 4aaa 0058 tstl %a2@(88) <== NOT EXECUTED
45970: 6706 beqs 45978 <pthread_barrier_destroy+0x40> <== NOT EXECUTED
_Thread_Enable_dispatch();
45972: 4e93 jsr %a3@ <== NOT EXECUTED
return EBUSY;
45974: 7010 moveq #16,%d0 <== NOT EXECUTED
45976: 6028 bras 459a0 <pthread_barrier_destroy+0x68> <== NOT EXECUTED
}
_Objects_Close( &_POSIX_Barrier_Information, &the_barrier->Object );
45978: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4597a: 4879 0005 f40a pea 5f40a <_POSIX_Barrier_Information> <== NOT EXECUTED
45980: 4eb9 0004 7948 jsr 47948 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free (
POSIX_Barrier_Control *the_barrier
)
{
_Objects_Free( &_POSIX_Barrier_Information, &the_barrier->Object );
45986: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45988: 4879 0005 f40a pea 5f40a <_POSIX_Barrier_Information> <== NOT EXECUTED
4598e: 4eb9 0004 7bc0 jsr 47bc0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
45994: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
45996: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4599a: 4280 clrl %d0 <== NOT EXECUTED
4599c: 6002 bras 459a0 <pthread_barrier_destroy+0x68> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4599e: 7016 moveq #22,%d0 <== NOT EXECUTED
}
459a0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
459a4: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
459a8: 4e5e unlk %fp <== NOT EXECUTED
000459ac <pthread_barrier_init>:
int pthread_barrier_init(
pthread_barrier_t *barrier,
const pthread_barrierattr_t *attr,
unsigned int count
)
{
459ac: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
459b0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
459b4: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
459b8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
459bc: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
const pthread_barrierattr_t *the_attr;
/*
* Error check parameters
*/
if ( !barrier )
459c0: 4a8a tstl %a2 <== NOT EXECUTED
459c2: 6700 008e beqw 45a52 <pthread_barrier_init+0xa6> <== NOT EXECUTED
return EINVAL;
if ( count == 0 )
459c6: 4a82 tstl %d2 <== NOT EXECUTED
459c8: 6700 0088 beqw 45a52 <pthread_barrier_init+0xa6> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
459cc: 4a88 tstl %a0 <== NOT EXECUTED
459ce: 6614 bnes 459e4 <pthread_barrier_init+0x38> <== NOT EXECUTED
the_attr = attr;
} else {
(void) pthread_barrierattr_init( &my_attr );
459d0: 260e movel %fp,%d3 <== NOT EXECUTED
459d2: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED
459d8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
459da: 4eb9 0004 58f0 jsr 458f0 <pthread_barrierattr_init> <== NOT EXECUTED
459e0: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &my_attr;
459e2: 2043 moveal %d3,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
459e4: 4a90 tstl %a0@ <== NOT EXECUTED
459e6: 676a beqs 45a52 <pthread_barrier_init+0xa6> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
459e8: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
459ec: 6664 bnes 45a52 <pthread_barrier_init+0xa6> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
459ee: 2039 0005 f0ec movel 5f0ec <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
459f4: 5280 addql #1,%d0 <== NOT EXECUTED
}
/*
* Convert from POSIX attributes to Core Barrier attributes
*/
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
459f6: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
the_attributes.maximum_count = count;
459fa: 2d42 fffc movel %d2,%fp@(-4) <== NOT EXECUTED
459fe: 23c0 0005 f0ec movel %d0,5f0ec <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free barrier control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void )
{
return (POSIX_Barrier_Control *)
_Objects_Allocate( &_POSIX_Barrier_Information );
45a04: 4879 0005 f40a pea 5f40a <_POSIX_Barrier_Information> <== NOT EXECUTED
45a0a: 49f9 0004 878a lea 4878a <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED
45a10: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _POSIX_Barrier_Allocate();
if ( !the_barrier ) {
45a16: 588f addql #4,%sp <== NOT EXECUTED
45a18: 2640 moveal %d0,%a3 <== NOT EXECUTED
45a1a: 4a80 tstl %d0 <== NOT EXECUTED
45a1c: 6606 bnes 45a24 <pthread_barrier_init+0x78> <== NOT EXECUTED
_Thread_Enable_dispatch();
45a1e: 4e94 jsr %a4@ <== NOT EXECUTED
return EAGAIN;
45a20: 700b moveq #11,%d0 <== NOT EXECUTED
45a22: 6030 bras 45a54 <pthread_barrier_init+0xa8> <== NOT EXECUTED
}
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
45a24: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45a28: 486b 0010 pea %a3@(16) <== NOT EXECUTED
45a2c: 4eb9 0004 6fdc jsr 46fdc <_CORE_barrier_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
45a32: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
45a36: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45a38: 2079 0005 f422 moveal 5f422 <_POSIX_Barrier_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
45a3e: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45a40: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
45a44: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
);
/*
* Exit the critical section and return the user an operational barrier
*/
*barrier = the_barrier->Object.id;
45a48: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
45a4a: 4e94 jsr %a4@ <== NOT EXECUTED
return 0;
45a4c: 508f addql #8,%sp <== NOT EXECUTED
45a4e: 4280 clrl %d0 <== NOT EXECUTED
45a50: 6002 bras 45a54 <pthread_barrier_init+0xa8> <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
45a52: 7016 moveq #22,%d0 <== NOT EXECUTED
* Exit the critical section and return the user an operational barrier
*/
*barrier = the_barrier->Object.id;
_Thread_Enable_dispatch();
return 0;
}
45a54: 4cee 1c0c ffdc moveml %fp@(-36),%d2-%d3/%a2-%a4 <== NOT EXECUTED
45a5a: 4e5e unlk %fp <== NOT EXECUTED
...
00045a60 <pthread_barrier_wait>:
*/
int pthread_barrier_wait(
pthread_barrier_t *barrier
)
{
45a60: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
45a64: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_Barrier_Control *the_barrier = NULL;
Objects_Locations location;
if ( !barrier )
45a68: 4a88 tstl %a0 <== NOT EXECUTED
45a6a: 6750 beqs 45abc <pthread_barrier_wait+0x5c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get (
pthread_barrier_t *barrier,
Objects_Locations *location
)
{
return (POSIX_Barrier_Control *) _Objects_Get(
45a6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45a70: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
45a72: 4879 0005 f40a pea 5f40a <_POSIX_Barrier_Information> <== NOT EXECUTED
45a78: 4eb9 0004 7d24 jsr 47d24 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_barrier = _POSIX_Barrier_Get( barrier, &location );
switch ( location ) {
45a7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45a82: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45a86: 6634 bnes 45abc <pthread_barrier_wait+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
45a88: 42a7 clrl %sp@- <== NOT EXECUTED
45a8a: 2040 moveal %d0,%a0 <== NOT EXECUTED
45a8c: 42a7 clrl %sp@- <== NOT EXECUTED
45a8e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45a92: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
45a96: 4868 0010 pea %a0@(16) <== NOT EXECUTED
45a9a: 4eb9 0004 7018 jsr 47018 <_CORE_barrier_Wait> <== NOT EXECUTED
the_barrier->Object.id,
true,
0,
NULL
);
_Thread_Enable_dispatch();
45aa0: 4eb9 0004 878a jsr 4878a <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
45aa6: 2079 0005 f576 moveal 5f576 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_Barrier_Translate_core_barrier_return_code(
45aac: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
45ab0: 4eb9 0004 afe0 jsr 4afe0 <_POSIX_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
45ab6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45aba: 6002 bras 45abe <pthread_barrier_wait+0x5e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
45abc: 7016 moveq #22,%d0 <== NOT EXECUTED
}
45abe: 4e5e unlk %fp <== NOT EXECUTED
...
000458b0 <pthread_barrierattr_destroy>:
*/
int pthread_barrierattr_destroy(
pthread_barrierattr_t *attr
)
{
458b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
458b4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
458b8: 4a88 tstl %a0 <== NOT EXECUTED
458ba: 670a beqs 458c6 <pthread_barrierattr_destroy+0x16><== NOT EXECUTED
458bc: 4a90 tstl %a0@ <== NOT EXECUTED
458be: 6706 beqs 458c6 <pthread_barrierattr_destroy+0x16><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
458c0: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
458c2: 4280 clrl %d0 <== NOT EXECUTED
458c4: 6002 bras 458c8 <pthread_barrierattr_destroy+0x18><== NOT EXECUTED
int pthread_barrierattr_destroy(
pthread_barrierattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
458c6: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
458c8: 4e5e unlk %fp <== NOT EXECUTED
000458cc <pthread_barrierattr_getpshared>:
int pthread_barrierattr_getpshared(
const pthread_barrierattr_t *attr,
int *pshared
)
{
458cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
458d0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
458d4: 4a88 tstl %a0 <== NOT EXECUTED
458d6: 6710 beqs 458e8 <pthread_barrierattr_getpshared+0x1c><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
458d8: 4a90 tstl %a0@ <== NOT EXECUTED
458da: 670c beqs 458e8 <pthread_barrierattr_getpshared+0x1c><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
458dc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
458e0: 4280 clrl %d0 <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
458e2: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
458e6: 6002 bras 458ea <pthread_barrierattr_getpshared+0x1e><== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
458e8: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
458ea: 4e5e unlk %fp <== NOT EXECUTED
...
000458f0 <pthread_barrierattr_init>:
*/
int pthread_barrierattr_init(
pthread_barrierattr_t *attr
)
{
458f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
458f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
458f8: 4a88 tstl %a0 <== NOT EXECUTED
458fa: 670c beqs 45908 <pthread_barrierattr_init+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
458fc: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
458fe: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
45902: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
45904: 4280 clrl %d0 <== NOT EXECUTED
45906: 6002 bras 4590a <pthread_barrierattr_init+0x1a> <== NOT EXECUTED
int pthread_barrierattr_init(
pthread_barrierattr_t *attr
)
{
if ( !attr )
return EINVAL;
45908: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
4590a: 4e5e unlk %fp <== NOT EXECUTED
...
00045910 <pthread_barrierattr_setpshared>:
int pthread_barrierattr_setpshared(
pthread_barrierattr_t *attr,
int pshared
)
{
45910: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45914: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45918: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
4591c: 4a88 tstl %a0 <== NOT EXECUTED
4591e: 6712 beqs 45932 <pthread_barrierattr_setpshared+0x22><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
45920: 4a90 tstl %a0@ <== NOT EXECUTED
45922: 670e beqs 45932 <pthread_barrierattr_setpshared+0x22><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
45924: 7201 moveq #1,%d1 <== NOT EXECUTED
45926: b280 cmpl %d0,%d1 <== NOT EXECUTED
45928: 6508 bcss 45932 <pthread_barrierattr_setpshared+0x22><== NOT EXECUTED
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
4592a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
4592e: 4280 clrl %d0 <== NOT EXECUTED
45930: 6002 bras 45934 <pthread_barrierattr_setpshared+0x24><== NOT EXECUTED
default:
return EINVAL;
45932: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
45934: 4e5e unlk %fp <== NOT EXECUTED
00045144 <pthread_cancel>:
*/
int pthread_cancel(
pthread_t thread
)
{
45144: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
/*
* Don't even think about deleting a resource from an ISR.
*/
if ( _ISR_Is_in_progress() )
45148: 4ab9 0005 e602 tstl 5e602 <_Per_CPU_Information+0x8> <== NOT EXECUTED
4514e: 6638 bnes 45188 <pthread_cancel+0x44> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
45150: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45154: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45158: 4879 0005 e33e pea 5e33e <_POSIX_Threads_Information> <== NOT EXECUTED
4515e: 4eb9 0004 7058 jsr 47058 <_Objects_Get> <== NOT EXECUTED
return EPROTO;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
45164: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45168: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4516c: 661e bnes 4518c <pthread_cancel+0x48> <== NOT EXECUTED
case OBJECTS_LOCAL:
thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];
thread_support->cancelation_requested = 1;
4516e: 2240 moveal %d0,%a1 <== NOT EXECUTED
45170: 7201 moveq #1,%d1 <== NOT EXECUTED
45172: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
45176: 2141 00e0 movel %d1,%a0@(224) <== NOT EXECUTED
/* This enables dispatch implicitly */
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( the_thread );
4517a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4517c: 4eb9 0004 a040 jsr 4a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
return 0;
45182: 588f addql #4,%sp <== NOT EXECUTED
45184: 4280 clrl %d0 <== NOT EXECUTED
45186: 6006 bras 4518e <pthread_cancel+0x4a> <== NOT EXECUTED
/*
* Don't even think about deleting a resource from an ISR.
*/
if ( _ISR_Is_in_progress() )
return EPROTO;
45188: 7047 moveq #71,%d0 <== NOT EXECUTED
4518a: 6002 bras 4518e <pthread_cancel+0x4a> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4518c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4518e: 4e5e unlk %fp <== NOT EXECUTED
...
00044fc0 <pthread_cleanup_pop>:
*/
void pthread_cleanup_pop(
int execute
)
{
44fc0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
44fc4: 2039 0005 dde0 movel 5dde0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
44fca: 5280 addql #1,%d0 <== NOT EXECUTED
POSIX_Cancel_Handler_control tmp_handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
44fcc: 2079 0005 e26a moveal 5e26a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void pthread_cleanup_pop(
int execute
)
{
44fd2: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
44fd6: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
POSIX_Cancel_Handler_control tmp_handler;
Chain_Control *handler_stack;
POSIX_API_Control *thread_support;
ISR_Level level;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
44fda: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
44fde: 23c0 0005 dde0 movel %d0,5dde0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* ensure that we do not get prempted and deleted while we are holding
* memory that needs to be freed.
*/
_Thread_Disable_dispatch();
_ISR_Disable( level );
44fe4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44fea: 40c2 movew %sr,%d2 <== NOT EXECUTED
44fec: 8082 orl %d2,%d0 <== NOT EXECUTED
44fee: 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 );
44ff0: 2008 movel %a0,%d0 <== NOT EXECUTED
44ff2: 0680 0000 00e8 addil #232,%d0 <== NOT EXECUTED
44ff8: 45f9 0004 77e6 lea 477e6 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED
if ( _Chain_Is_empty( handler_stack ) ) {
44ffe: b0a8 00e4 cmpl %a0@(228),%d0 <== NOT EXECUTED
45002: 6606 bnes 4500a <pthread_cleanup_pop+0x4a> <== NOT EXECUTED
_Thread_Enable_dispatch();
45004: 4e92 jsr %a2@ <== NOT EXECUTED
_ISR_Enable( level );
45006: 46c2 movew %d2,%sr <== NOT EXECUTED
return;
45008: 603a bras 45044 <pthread_cleanup_pop+0x84> <== NOT EXECUTED
}
handler = (POSIX_Cancel_Handler_control *)
4500a: 2068 00ec moveal %a0@(236),%a0 <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4500e: 2650 moveal %a0@,%a3 <== NOT EXECUTED
previous = the_node->previous;
45010: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
next->previous = previous;
45014: 2749 0004 movel %a1,%a3@(4) <== NOT EXECUTED
previous->next = next;
45018: 228b movel %a3,%a1@ <== NOT EXECUTED
_Chain_Tail( handler_stack )->previous;
_Chain_Extract_unprotected( &handler->Node );
_ISR_Enable( level );
4501a: 46c2 movew %d2,%sr <== NOT EXECUTED
4501c: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
45020: 2628 000c movel %a0@(12),%d3 <== NOT EXECUTED
tmp_handler = *handler;
_Workspace_Free( handler );
45024: 2f08 movel %a0,%sp@- <== NOT EXECUTED
45026: 4eb9 0004 87fc jsr 487fc <_Workspace_Free> <== NOT EXECUTED
_Thread_Enable_dispatch();
4502c: 4e92 jsr %a2@ <== NOT EXECUTED
if ( execute )
4502e: 588f addql #4,%sp <== NOT EXECUTED
45030: 4a84 tstl %d4 <== NOT EXECUTED
45032: 6710 beqs 45044 <pthread_cleanup_pop+0x84> <== NOT EXECUTED
(*tmp_handler.routine)( tmp_handler.arg );
45034: 2242 moveal %d2,%a1 <== NOT EXECUTED
45036: 2d43 0008 movel %d3,%fp@(8) <== NOT EXECUTED
}
4503a: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
45040: 4e5e unlk %fp <== NOT EXECUTED
_Workspace_Free( handler );
_Thread_Enable_dispatch();
if ( execute )
(*tmp_handler.routine)( tmp_handler.arg );
45042: 4ed1 jmp %a1@ <== NOT EXECUTED
}
45044: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4504a: 4e5e unlk %fp <== NOT EXECUTED
...
000453d8 <pthread_cleanup_push>:
void pthread_cleanup_push(
void (*routine)( void * ),
void *arg
)
{
453d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
453dc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
453de: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
453e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
453e4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
/*
* The POSIX standard does not address what to do when the routine
* is NULL. It also does not address what happens when we cannot
* allocate memory or anything else bad happens.
*/
if ( !routine )
453e8: 6754 beqs 4543e <pthread_cleanup_push+0x66> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
453ea: 2039 0005 ea42 movel 5ea42 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
453f0: 5280 addql #1,%d0 <== NOT EXECUTED
453f2: 23c0 0005 ea42 movel %d0,5ea42 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return;
_Thread_Disable_dispatch();
handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
453f8: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
453fc: 4eb9 0004 9284 jsr 49284 <_Workspace_Allocate> <== NOT EXECUTED
if ( handler ) {
45402: 588f addql #4,%sp <== NOT EXECUTED
45404: 4a80 tstl %d0 <== NOT EXECUTED
45406: 6726 beqs 4542e <pthread_cleanup_push+0x56> <== NOT EXECUTED
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45408: 2079 0005 eecc moveal 5eecc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
handler_stack = &thread_support->Cancellation_Handlers;
4540e: 2228 0102 movel %a0@(258),%d1 <== NOT EXECUTED
handler->routine = routine;
45412: 2040 moveal %d0,%a0 <== NOT EXECUTED
handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
if ( handler ) {
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
handler_stack = &thread_support->Cancellation_Handlers;
45414: 0681 0000 00e4 addil #228,%d1 <== NOT EXECUTED
handler->routine = routine;
4541a: 2142 0008 movel %d2,%a0@(8) <== NOT EXECUTED
handler->arg = arg;
4541e: 2143 000c movel %d3,%a0@(12) <== NOT EXECUTED
_Chain_Append( handler_stack, &handler->Node );
45422: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45424: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45426: 4eb9 0004 6a84 jsr 46a84 <_Chain_Append> <== NOT EXECUTED
4542c: 508f addql #8,%sp <== NOT EXECUTED
}
_Thread_Enable_dispatch();
}
4542e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
45432: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
45436: 4e5e unlk %fp <== NOT EXECUTED
handler->routine = routine;
handler->arg = arg;
_Chain_Append( handler_stack, &handler->Node );
}
_Thread_Enable_dispatch();
45438: 4ef9 0004 81f6 jmp 481f6 <_Thread_Enable_dispatch> <== NOT EXECUTED
}
4543e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
45442: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
45446: 4e5e unlk %fp <== NOT EXECUTED
...
00046018 <pthread_cond_broadcast>:
*/
int pthread_cond_broadcast(
pthread_cond_t *cond
)
{
46018: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Signal_support( cond, true );
4601c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46020: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46024: 4eb9 0004 61ac jsr 461ac <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED
}
4602a: 4e5e unlk %fp <== NOT EXECUTED
...
00046030 <pthread_cond_destroy>:
*/
int pthread_cond_destroy(
pthread_cond_t *cond
)
{
46030: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46034: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46036: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
46038: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4603c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46040: 4eb9 0004 60a0 jsr 460a0 <_POSIX_Condition_variables_Get> <== NOT EXECUTED
switch ( location ) {
46046: 508f addql #8,%sp <== NOT EXECUTED
)
{
POSIX_Condition_variables_Control *the_cond;
Objects_Locations location;
the_cond = _POSIX_Condition_variables_Get( cond, &location );
46048: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
4604a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4604e: 6642 bnes 46092 <pthread_cond_destroy+0x62> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_queue_First( &the_cond->Wait_queue ) ) {
46050: 486a 0018 pea %a2@(24) <== NOT EXECUTED
46054: 47f9 0004 93d6 lea 493d6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
4605a: 4eb9 0004 9a48 jsr 49a48 <_Thread_queue_First> <== NOT EXECUTED
46060: 588f addql #4,%sp <== NOT EXECUTED
46062: 4a80 tstl %d0 <== NOT EXECUTED
46064: 6706 beqs 4606c <pthread_cond_destroy+0x3c> <== NOT EXECUTED
_Thread_Enable_dispatch();
46066: 4e93 jsr %a3@ <== NOT EXECUTED
return EBUSY;
46068: 7010 moveq #16,%d0 <== NOT EXECUTED
4606a: 6028 bras 46094 <pthread_cond_destroy+0x64> <== NOT EXECUTED
}
_Objects_Close(
4606c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4606e: 4879 0006 03c2 pea 603c2 <_POSIX_Condition_variables_Information><== NOT EXECUTED
46074: 4eb9 0004 8594 jsr 48594 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Free (
POSIX_Condition_variables_Control *the_condition_variable
)
{
_Objects_Free(
4607a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4607c: 4879 0006 03c2 pea 603c2 <_POSIX_Condition_variables_Information><== NOT EXECUTED
46082: 4eb9 0004 880c jsr 4880c <_Objects_Free> <== NOT EXECUTED
&_POSIX_Condition_variables_Information,
&the_cond->Object
);
_POSIX_Condition_variables_Free( the_cond );
_Thread_Enable_dispatch();
46088: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
4608a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4608e: 4280 clrl %d0 <== NOT EXECUTED
46090: 6002 bras 46094 <pthread_cond_destroy+0x64> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46092: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46094: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
46098: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4609c: 4e5e unlk %fp <== NOT EXECUTED
000460f4 <pthread_cond_init>:
int pthread_cond_init(
pthread_cond_t *cond,
const pthread_condattr_t *attr
)
{
460f4: 4e56 fff4 linkw %fp,#-12
460f8: 48d7 1c00 moveml %a2-%a4,%sp@
460fc: 246e 000c moveal %fp@(12),%a2
POSIX_Condition_variables_Control *the_cond;
const pthread_condattr_t *the_attr;
if ( attr ) the_attr = attr;
46100: 4a8a tstl %a2
46102: 6606 bnes 4610a <pthread_cond_init+0x16> <== NEVER TAKEN
else the_attr = &_POSIX_Condition_variables_Default_attributes;
46104: 45f9 0005 d7ce lea 5d7ce <_POSIX_Condition_variables_Default_attributes>,%a2
/*
* Be careful about attributes when global!!!
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
4610a: 7001 moveq #1,%d0
4610c: b0aa 0004 cmpl %a2@(4),%d0
46110: 6778 beqs 4618a <pthread_cond_init+0x96> <== NEVER TAKEN
return EINVAL;
if ( !the_attr->is_initialized )
46112: 4a92 tstl %a2@
46114: 6774 beqs 4618a <pthread_cond_init+0x96> <== NEVER TAKEN
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46116: 2039 0006 0018 movel 60018 <_Thread_Dispatch_disable_level>,%d0
4611c: 5280 addql #1,%d0
4611e: 23c0 0006 0018 movel %d0,60018 <_Thread_Dispatch_disable_level>
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control
*_POSIX_Condition_variables_Allocate( void )
{
return (POSIX_Condition_variables_Control *)
_Objects_Allocate( &_POSIX_Condition_variables_Information );
46124: 4879 0006 03c2 pea 603c2 <_POSIX_Condition_variables_Information>
4612a: 49f9 0004 93d6 lea 493d6 <_Thread_Enable_dispatch>,%a4
46130: 4eb9 0004 8518 jsr 48518 <_Objects_Allocate>
_Thread_Disable_dispatch();
the_cond = _POSIX_Condition_variables_Allocate();
if ( !the_cond ) {
46136: 588f addql #4,%sp
46138: 2640 moveal %d0,%a3
4613a: 4a80 tstl %d0
4613c: 6606 bnes 46144 <pthread_cond_init+0x50> <== ALWAYS TAKEN
_Thread_Enable_dispatch();
4613e: 4e94 jsr %a4@ <== NOT EXECUTED
return ENOMEM;
46140: 700c moveq #12,%d0 <== NOT EXECUTED
46142: 6048 bras 4618c <pthread_cond_init+0x98> <== NOT EXECUTED
}
the_cond->process_shared = the_attr->process_shared;
46144: 276a 0004 0010 movel %a2@(4),%a3@(16)
the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
4614a: 42ab 0014 clrl %a3@(20)
_Thread_queue_Initialize(
4614e: 4878 0074 pea 74 <DBL_MANT_DIG+0x3f>
46152: 2f3c 1000 0800 movel #268437504,%sp@-
46158: 42a7 clrl %sp@-
4615a: 486b 0018 pea %a3@(24)
4615e: 4eb9 0004 9adc jsr 49adc <_Thread_queue_Initialize>
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46164: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46168: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4616a: 2079 0006 03da moveal 603da <_POSIX_Condition_variables_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46170: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46172: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
&_POSIX_Condition_variables_Information,
&the_cond->Object,
0
);
*cond = the_cond->Object.id;
46176: 206e 0008 moveal %fp@(8),%a0
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
4617a: 42ab 000c clrl %a3@(12)
4617e: 2080 movel %d0,%a0@
_Thread_Enable_dispatch();
46180: 4e94 jsr %a4@
return 0;
46182: 4fef 0010 lea %sp@(16),%sp
46186: 4280 clrl %d0
46188: 6002 bras 4618c <pthread_cond_init+0x98>
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
return EINVAL;
if ( !the_attr->is_initialized )
return EINVAL;
4618a: 7016 moveq #22,%d0 <== NOT EXECUTED
*cond = the_cond->Object.id;
_Thread_Enable_dispatch();
return 0;
}
4618c: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4
46192: 4e5e unlk %fp
...
00046198 <pthread_cond_signal>:
*/
int pthread_cond_signal(
pthread_cond_t *cond
)
{
46198: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Signal_support( cond, false );
4619c: 42a7 clrl %sp@- <== NOT EXECUTED
4619e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
461a2: 4eb9 0004 61ac jsr 461ac <_POSIX_Condition_variables_Signal_support><== NOT EXECUTED
}
461a8: 4e5e unlk %fp <== NOT EXECUTED
0004620c <pthread_cond_timedwait>:
int pthread_cond_timedwait(
pthread_cond_t *cond,
pthread_mutex_t *mutex,
const struct timespec *abstime
)
{
4620c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
* is valid or not. If it isn't correct and in the future,
* then we do a polling operation and convert the UNSATISFIED
* status into the appropriate error.
*/
already_timedout = false;
status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks);
46210: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46214: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
46218: 4eb9 0004 6670 jsr 46670 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
4621e: 508f addql #8,%sp <== NOT EXECUTED
46220: 4a80 tstl %d0 <== NOT EXECUTED
46222: 6726 beqs 4624a <pthread_cond_timedwait+0x3e> <== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
already_timedout = true;
return _POSIX_Condition_variables_Wait_support(
46224: 7201 moveq #1,%d1 <== NOT EXECUTED
already_timedout = false;
status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks);
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
46226: 5380 subql #1,%d0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
already_timedout = true;
return _POSIX_Condition_variables_Wait_support(
46228: b280 cmpl %d0,%d1 <== NOT EXECUTED
4622a: 54c0 scc %d0 <== NOT EXECUTED
4622c: 49c0 extbl %d0 <== NOT EXECUTED
4622e: 4480 negl %d0 <== NOT EXECUTED
46230: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46232: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
46236: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4623a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4623e: 4eb9 0004 626c jsr 4626c <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED
46244: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46248: 6002 bras 4624c <pthread_cond_timedwait+0x40> <== NOT EXECUTED
* status into the appropriate error.
*/
already_timedout = false;
status = _POSIX_Absolute_timeout_to_ticks(abstime, &ticks);
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
4624a: 7016 moveq #22,%d0 <== NOT EXECUTED
cond,
mutex,
ticks,
already_timedout
);
}
4624c: 4e5e unlk %fp <== NOT EXECUTED
00046250 <pthread_cond_wait>:
int pthread_cond_wait(
pthread_cond_t *cond,
pthread_mutex_t *mutex
)
{
46250: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Condition_variables_Wait_support(
46254: 42a7 clrl %sp@- <== NOT EXECUTED
46256: 42a7 clrl %sp@- <== NOT EXECUTED
46258: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4625c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46260: 4eb9 0004 626c jsr 4626c <_POSIX_Condition_variables_Wait_support><== NOT EXECUTED
cond,
mutex,
THREAD_QUEUE_WAIT_FOREVER,
false
);
}
46266: 4e5e unlk %fp <== NOT EXECUTED
...
00045f90 <pthread_condattr_destroy>:
*/
int pthread_condattr_destroy(
pthread_condattr_t *attr
)
{
45f90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45f94: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
45f98: 4a88 tstl %a0 <== NOT EXECUTED
45f9a: 670a beqs 45fa6 <pthread_condattr_destroy+0x16> <== NOT EXECUTED
45f9c: 4a90 tstl %a0@ <== NOT EXECUTED
45f9e: 6706 beqs 45fa6 <pthread_condattr_destroy+0x16> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
45fa0: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
45fa2: 4280 clrl %d0 <== NOT EXECUTED
45fa4: 6002 bras 45fa8 <pthread_condattr_destroy+0x18> <== NOT EXECUTED
int pthread_condattr_destroy(
pthread_condattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
45fa6: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
45fa8: 4e5e unlk %fp <== NOT EXECUTED
00045fac <pthread_condattr_getpshared>:
int pthread_condattr_getpshared(
const pthread_condattr_t *attr,
int *pshared
)
{
45fac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45fb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
45fb4: 4a88 tstl %a0 <== NOT EXECUTED
45fb6: 670c beqs 45fc4 <pthread_condattr_getpshared+0x18><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
45fb8: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
45fbc: 4280 clrl %d0 <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
*pshared = attr->process_shared;
45fbe: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
45fc2: 6002 bras 45fc6 <pthread_condattr_getpshared+0x1a><== NOT EXECUTED
const pthread_condattr_t *attr,
int *pshared
)
{
if ( !attr )
return EINVAL;
45fc4: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
45fc6: 4e5e unlk %fp <== NOT EXECUTED
...
00045fcc <pthread_condattr_init>:
*/
int pthread_condattr_init(
pthread_condattr_t *attr
)
{
45fcc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45fd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
45fd4: 4a88 tstl %a0 <== NOT EXECUTED
45fd6: 6716 beqs 45fee <pthread_condattr_init+0x22> <== NOT EXECUTED
return EINVAL;
*attr = _POSIX_Condition_variables_Default_attributes;
45fd8: 2039 0005 d7ce movel 5d7ce <_POSIX_Condition_variables_Default_attributes>,%d0<== NOT EXECUTED
45fde: 2239 0005 d7d2 movel 5d7d2 <_POSIX_Condition_variables_Default_attributes+0x4>,%d1<== NOT EXECUTED
45fe4: 2080 movel %d0,%a0@ <== NOT EXECUTED
45fe6: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
return 0;
45fea: 4280 clrl %d0 <== NOT EXECUTED
45fec: 6002 bras 45ff0 <pthread_condattr_init+0x24> <== NOT EXECUTED
int pthread_condattr_init(
pthread_condattr_t *attr
)
{
if ( !attr )
return EINVAL;
45fee: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Condition_variables_Default_attributes;
return 0;
}
45ff0: 4e5e unlk %fp <== NOT EXECUTED
00045ff4 <pthread_condattr_setpshared>:
int pthread_condattr_setpshared(
pthread_condattr_t *attr,
int pshared
)
{
45ff4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45ff8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45ffc: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
46000: 4a88 tstl %a0 <== NOT EXECUTED
46002: 670e beqs 46012 <pthread_condattr_setpshared+0x1e><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
46004: 7201 moveq #1,%d1 <== NOT EXECUTED
46006: b280 cmpl %d0,%d1 <== NOT EXECUTED
46008: 6508 bcss 46012 <pthread_condattr_setpshared+0x1e><== NOT EXECUTED
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
4600a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
4600e: 4280 clrl %d0 <== NOT EXECUTED
46010: 6002 bras 46014 <pthread_condattr_setpshared+0x20><== NOT EXECUTED
default:
return EINVAL;
46012: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
46014: 4e5e unlk %fp <== NOT EXECUTED
00045700 <pthread_create>:
pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine)( void * ),
void *arg
)
{
45700: 4e56 ffbc linkw %fp,#-68
45704: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
45708: 246e 000c moveal %fp@(12),%a2
4570c: 282e 0010 movel %fp@(16),%d4
int schedpolicy = SCHED_RR;
struct sched_param schedparam;
Objects_Name name;
int rc;
if ( !start_routine )
45710: 6700 01e4 beqw 458f6 <pthread_create+0x1f6>
return EFAULT;
the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;
45714: 4a8a tstl %a2
45716: 6606 bnes 4571e <pthread_create+0x1e> <== ALWAYS TAKEN
45718: 45f9 0005 c30e lea 5c30e <_POSIX_Threads_Default_attributes>,%a2<== NOT EXECUTED
if ( !the_attr->is_initialized )
4571e: 4a92 tstl %a2@
45720: 6700 01d8 beqw 458fa <pthread_create+0x1fa>
* stack space if it is allowed to allocate it itself.
*
* NOTE: If the user provides the stack we will let it drop below
* twice the minimum.
*/
if ( the_attr->stackaddr && !_Stack_Is_enough(the_attr->stacksize) )
45724: 4aaa 0004 tstl %a2@(4)
45728: 670e beqs 45738 <pthread_create+0x38> <== ALWAYS TAKEN
4572a: 2039 0005 d2a2 movel 5d2a2 <rtems_minimum_stack_size>,%d0 <== NOT EXECUTED
45730: b0aa 0008 cmpl %a2@(8),%d0 <== NOT EXECUTED
45734: 6200 01c4 bhiw 458fa <pthread_create+0x1fa> <== NOT EXECUTED
* If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
* inherits scheduling attributes from the creating thread. If it is
* PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
* attributes structure.
*/
switch ( the_attr->inheritsched ) {
45738: 202a 0010 movel %a2@(16),%d0
4573c: 7201 moveq #1,%d1
4573e: b280 cmpl %d0,%d1
45740: 670c beqs 4574e <pthread_create+0x4e> <== NEVER TAKEN
45742: 123c 0002 moveb #2,%d1
45746: b280 cmpl %d0,%d1
45748: 6600 01b0 bnew 458fa <pthread_create+0x1fa>
4574c: 6018 bras 45766 <pthread_create+0x66>
case PTHREAD_INHERIT_SCHED:
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4574e: 2079 0005 efb2 moveal 5efb2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
45754: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
schedpolicy = api->schedpolicy;
45758: 2628 0084 movel %a0@(132),%d3 <== NOT EXECUTED
schedparam = api->schedparam;
4575c: 4878 001c pea 1c <OPER2+0x8> <== NOT EXECUTED
45760: 4868 0088 pea %a0@(136) <== NOT EXECUTED
45764: 600c bras 45772 <pthread_create+0x72> <== NOT EXECUTED
break;
case PTHREAD_EXPLICIT_SCHED:
schedpolicy = the_attr->schedpolicy;
45766: 262a 0014 movel %a2@(20),%d3
schedparam = the_attr->schedparam;
4576a: 4878 001c pea 1c <OPER2+0x8>
4576e: 486a 0018 pea %a2@(24)
45772: 486e ffdc pea %fp@(-36)
/*
* Check the contentionscope since rtems only supports PROCESS wide
* contention (i.e. no system wide contention).
*/
if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )
return ENOTSUP;
45776: 243c 0000 0086 movel #134,%d2
schedparam = api->schedparam;
break;
case PTHREAD_EXPLICIT_SCHED:
schedpolicy = the_attr->schedpolicy;
schedparam = the_attr->schedparam;
4577c: 4eb9 0004 ddbc jsr 4ddbc <memcpy>
break;
45782: 4fef 000c lea %sp@(12),%sp
/*
* Check the contentionscope since rtems only supports PROCESS wide
* contention (i.e. no system wide contention).
*/
if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )
45786: 4aaa 000c tstl %a2@(12)
4578a: 6600 0170 bnew 458fc <pthread_create+0x1fc>
return ENOTSUP;
/*
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
4578e: 2f2e ffdc movel %fp@(-36),%sp@-
45792: 4eb9 0004 b26c jsr 4b26c <_POSIX_Priority_Is_valid>
45798: 588f addql #4,%sp
4579a: 4a00 tstb %d0
4579c: 6700 015c beqw 458fa <pthread_create+0x1fa>
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
457a0: 486e fff8 pea %fp@(-8)
457a4: 486e fffc pea %fp@(-4)
457a8: 486e ffdc pea %fp@(-36)
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
return EINVAL;
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
457ac: 266e ffdc moveal %fp@(-36),%a3
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
457b0: 2f03 movel %d3,%sp@-
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
457b2: 1a39 0005 d2a6 moveb 5d2a6 <rtems_maximum_priority>,%d5
457b8: 4eb9 0004 b290 jsr 4b290 <_POSIX_Thread_Translate_sched_param>
schedpolicy,
&schedparam,
&budget_algorithm,
&budget_callout
);
if ( rc )
457be: 4fef 0010 lea %sp@(16),%sp
core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
/*
* Set the core scheduling policy information.
*/
rc = _POSIX_Thread_Translate_sched_param(
457c2: 2400 movel %d0,%d2
schedpolicy,
&schedparam,
&budget_algorithm,
&budget_callout
);
if ( rc )
457c4: 6600 0136 bnew 458fc <pthread_create+0x1fc>
#endif
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
457c8: 2f39 0005 ebe8 movel 5ebe8 <_RTEMS_Allocator_Mutex>,%sp@-
457ce: 4eb9 0004 6e40 jsr 46e40 <_API_Mutex_Lock>
* _POSIX_Threads_Allocate
*/
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
457d4: 4879 0005 ecea pea 5ecea <_POSIX_Threads_Information>
457da: 4eb9 0004 7788 jsr 47788 <_Objects_Allocate>
* Allocate the thread control block.
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
457e0: 508f addql #8,%sp
457e2: 2840 moveal %d0,%a4
457e4: 4a80 tstl %d0
457e6: 6616 bnes 457fe <pthread_create+0xfe> <== ALWAYS TAKEN
_RTEMS_Unlock_allocator();
457e8: 2f39 0005 ebe8 movel 5ebe8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
return EAGAIN;
457ee: 143c 000b moveb #11,%d2 <== NOT EXECUTED
*
* NOTE: Global threads are not currently supported.
*/
the_thread = _POSIX_Threads_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
457f2: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Unlock> <== NOT EXECUTED
return EAGAIN;
457f8: 588f addql #4,%sp <== NOT EXECUTED
457fa: 6000 0100 braw 458fc <pthread_create+0x1fc> <== NOT EXECUTED
static inline size_t _POSIX_Threads_Ensure_minimum_stack (
size_t size
)
{
if ( size >= PTHREAD_MINIMUM_STACK_SIZE )
457fe: 2039 0005 d2a2 movel 5d2a2 <rtems_minimum_stack_size>,%d0
45804: d080 addl %d0,%d0
/*
* Initialize the core thread for this task.
*/
name.name_p = NULL; /* posix threads don't have a name by default */
status = _Thread_Initialize(
45806: 226e fff8 moveal %fp@(-8),%a1
4580a: 206e fffc moveal %fp@(-4),%a0
4580e: 222a 0008 movel %a2@(8),%d1
45812: b280 cmpl %d0,%d1
45814: 6302 blss 45818 <pthread_create+0x118>
45816: 2001 movel %d1,%d0
45818: 42a7 clrl %sp@-
4581a: 0285 0000 00ff andil #255,%d5
45820: 42a7 clrl %sp@-
45822: 9a8b subl %a3,%d5
45824: 2f09 movel %a1,%sp@-
45826: 2f08 movel %a0,%sp@-
45828: 4878 0001 pea 1 <ADD>
4582c: 2f05 movel %d5,%sp@-
4582e: 4878 0001 pea 1 <ADD>
45832: 2f00 movel %d0,%sp@-
45834: 2f2a 0004 movel %a2@(4),%sp@-
45838: 2f0c movel %a4,%sp@-
4583a: 4879 0005 ecea pea 5ecea <_POSIX_Threads_Information>
45840: 4eb9 0004 86f4 jsr 486f4 <_Thread_Initialize>
budget_callout,
0, /* isr level */
name /* posix threads don't have a name */
);
if ( !status ) {
45846: 4fef 002c lea %sp@(44),%sp
4584a: 4a00 tstb %d0
4584c: 6624 bnes 45872 <pthread_create+0x172>
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
Thread_Control *the_pthread
)
{
_Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object );
4584e: 2f0c movel %a4,%sp@-
45850: 4879 0005 ecea pea 5ecea <_POSIX_Threads_Information>
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
return EAGAIN;
45856: 740b moveq #11,%d2
45858: 4eb9 0004 7a7c jsr 47a7c <_Objects_Free>
name /* posix threads don't have a name */
);
if ( !status ) {
_POSIX_Threads_Free( the_thread );
_RTEMS_Unlock_allocator();
4585e: 2f39 0005 ebe8 movel 5ebe8 <_RTEMS_Allocator_Mutex>,%sp@-
45864: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Unlock>
return EAGAIN;
4586a: 4fef 000c lea %sp@(12),%sp
4586e: 6000 008c braw 458fc <pthread_create+0x1fc>
}
/*
* finish initializing the per API structure
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
45872: 266c 0102 moveal %a4@(258),%a3
api->Attributes = *the_attr;
45876: 4878 0040 pea 40 <DBL_MANT_DIG+0xb>
4587a: 4bf9 0004 ddbc lea 4ddbc <memcpy>,%a5
45880: 2f0a movel %a2,%sp@-
45882: 2f0b movel %a3,%sp@-
45884: 4e95 jsr %a5@
api->detachstate = the_attr->detachstate;
45886: 276a 003c 0040 movel %a2@(60),%a3@(64)
api->schedpolicy = schedpolicy;
4588c: 2743 0084 movel %d3,%a3@(132)
api->schedparam = schedparam;
45890: 4878 001c pea 1c <OPER2+0x8>
45894: 486e ffdc pea %fp@(-36)
45898: 486b 0088 pea %a3@(136)
4589c: 4e95 jsr %a5@
/*
* POSIX threads are allocated and started in one operation.
*/
status = _Thread_Start(
4589e: 42a7 clrl %sp@-
458a0: 2f2e 0014 movel %fp@(20),%sp@-
458a4: 2f04 movel %d4,%sp@-
458a6: 4878 0001 pea 1 <ADD>
458aa: 2f0c movel %a4,%sp@-
458ac: 4eb9 0004 8fbc jsr 48fbc <_Thread_Start>
_RTEMS_Unlock_allocator();
return EINVAL;
}
#endif
if ( schedpolicy == SCHED_SPORADIC ) {
458b2: 4fef 002c lea %sp@(44),%sp
458b6: 7004 moveq #4,%d0
458b8: b083 cmpl %d3,%d0
458ba: 6622 bnes 458de <pthread_create+0x1de> <== ALWAYS TAKEN
_Watchdog_Insert_ticks(
458bc: 486b 0090 pea %a3@(144) <== NOT EXECUTED
458c0: 4eb9 0004 918c jsr 4918c <_Timespec_To_ticks> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
458c6: 2740 00b4 movel %d0,%a3@(180) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
458ca: 486b 00a8 pea %a3@(168) <== NOT EXECUTED
458ce: 4879 0005 ec08 pea 5ec08 <_Watchdog_Ticks_chain> <== NOT EXECUTED
458d4: 4eb9 0004 9490 jsr 49490 <_Watchdog_Insert> <== NOT EXECUTED
458da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
/*
* Return the id and indicate we successfully created the thread
*/
*thread = the_thread->Object.id;
458de: 206e 0008 moveal %fp@(8),%a0
458e2: 20ac 0008 movel %a4@(8),%a0@
_RTEMS_Unlock_allocator();
458e6: 2f39 0005 ebe8 movel 5ebe8 <_RTEMS_Allocator_Mutex>,%sp@-
458ec: 4eb9 0004 6ea0 jsr 46ea0 <_API_Mutex_Unlock>
return 0;
458f2: 588f addql #4,%sp
458f4: 6006 bras 458fc <pthread_create+0x1fc>
struct sched_param schedparam;
Objects_Name name;
int rc;
if ( !start_routine )
return EFAULT;
458f6: 740e moveq #14,%d2
458f8: 6002 bras 458fc <pthread_create+0x1fc>
/*
* Interpret the scheduling parameters.
*/
if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
return EINVAL;
458fa: 7416 moveq #22,%d2 <== NOT EXECUTED
*/
*thread = the_thread->Object.id;
_RTEMS_Unlock_allocator();
return 0;
}
458fc: 2002 movel %d2,%d0
458fe: 4cee 3c3c ffbc moveml %fp@(-68),%d2-%d5/%a2-%a5
45904: 4e5e unlk %fp <== NOT EXECUTED
0004579c <pthread_detach>:
#include <rtems/posix/pthread.h>
int pthread_detach(
pthread_t thread
)
{
4579c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
457a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
457a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
457a8: 4879 0005 f91a pea 5f91a <_POSIX_Threads_Information> <== NOT EXECUTED
457ae: 4eb9 0004 7908 jsr 47908 <_Objects_Get> <== NOT EXECUTED
register Thread_Control *the_thread;
POSIX_API_Control *api;
Objects_Locations location;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
457b4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
457b8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
457bc: 6614 bnes 457d2 <pthread_detach+0x36> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
api->detachstate = PTHREAD_CREATE_DETACHED;
457be: 2240 moveal %d0,%a1 <== NOT EXECUTED
457c0: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
457c4: 42a8 0040 clrl %a0@(64) <== NOT EXECUTED
_Thread_Enable_dispatch();
457c8: 4eb9 0004 836e jsr 4836e <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
457ce: 4280 clrl %d0 <== NOT EXECUTED
457d0: 6002 bras 457d4 <pthread_detach+0x38> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
457d2: 7003 moveq #3,%d0 <== NOT EXECUTED
}
457d4: 4e5e unlk %fp <== NOT EXECUTED
00045908 <pthread_equal>:
int pthread_equal(
pthread_t t1,
pthread_t t2
)
{
45908: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
* can to insure that both ids are valid. Otherwise, we will do the
* cheapest possible thing to determine if they are equal.
*/
#ifndef RTEMS_DEBUG
return _Objects_Are_ids_equal( t1, t2 );
4590c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
45910: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
45914: 57c0 seq %d0 <== NOT EXECUTED
break;
}
return status;
#endif
}
45916: 4e5e unlk %fp <== NOT EXECUTED
* can to insure that both ids are valid. Otherwise, we will do the
* cheapest possible thing to determine if they are equal.
*/
#ifndef RTEMS_DEBUG
return _Objects_Are_ids_equal( t1, t2 );
45918: 49c0 extbl %d0 <== NOT EXECUTED
break;
}
return status;
#endif
}
4591a: 4480 negl %d0 <== NOT EXECUTED
...
0004c4b0 <pthread_exit>:
}
void pthread_exit(
void *value_ptr
)
{
4c4b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_Thread_Exit( _Thread_Executing, value_ptr );
4c4b4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4c4b8: 2f39 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4c4be: 4eb9 0004 c440 jsr 4c440 <_POSIX_Thread_Exit> <== NOT EXECUTED
4c4c4: 508f addql #8,%sp <== NOT EXECUTED
}
4c4c6: 4e5e unlk %fp <== NOT EXECUTED
...
000454a4 <pthread_getcpuclockid>:
int pthread_getcpuclockid(
pthread_t pid,
clockid_t *clock_id
)
{
454a4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
454a8: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
454ae: 4e5e unlk %fp <== NOT EXECUTED
int pthread_getcpuclockid(
pthread_t pid,
clockid_t *clock_id
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
454b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
454b2: 7058 moveq #88,%d0 <== NOT EXECUTED
454b4: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
454b6: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00047780 <pthread_getschedparam>:
int pthread_getschedparam(
pthread_t thread,
int *policy,
struct sched_param *param
)
{
47780: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47784: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
47788: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
4778c: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Objects_Locations location;
POSIX_API_Control *api;
register Thread_Control *the_thread;
if ( !policy || !param )
47790: 4a8c tstl %a4 <== NOT EXECUTED
47792: 6758 beqs 477ec <pthread_getschedparam+0x6c> <== NOT EXECUTED
47794: 4a8a tstl %a2 <== NOT EXECUTED
47796: 6754 beqs 477ec <pthread_getschedparam+0x6c> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
47798: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4779c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
477a0: 4879 0006 283a pea 6283a <_POSIX_Threads_Information> <== NOT EXECUTED
477a6: 4eb9 0004 9944 jsr 49944 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
477ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
477b0: 2640 moveal %d0,%a3 <== NOT EXECUTED
477b2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
477b6: 6638 bnes 477f0 <pthread_getschedparam+0x70> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
477b8: 206b 0102 moveal %a3@(258),%a0 <== NOT EXECUTED
if ( policy )
*policy = api->schedpolicy;
477bc: 28a8 0084 movel %a0@(132),%a4@ <== NOT EXECUTED
if ( param ) {
*param = api->schedparam;
477c0: 4878 001c pea 1c <OPER2+0x8> <== NOT EXECUTED
477c4: 4868 0088 pea %a0@(136) <== NOT EXECUTED
477c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
477ca: 4eb9 0004 fcc4 jsr 4fcc4 <memcpy> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
477d0: 4280 clrl %d0 <== NOT EXECUTED
477d2: 1039 0006 0d96 moveb 60d96 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
477d8: 90ab 0014 subl %a3@(20),%d0 <== NOT EXECUTED
477dc: 2480 movel %d0,%a2@ <== NOT EXECUTED
param->sched_priority =
_POSIX_Priority_From_core( the_thread->current_priority );
}
_Thread_Enable_dispatch();
477de: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
477e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
477e8: 4280 clrl %d0 <== NOT EXECUTED
477ea: 6006 bras 477f2 <pthread_getschedparam+0x72> <== NOT EXECUTED
Objects_Locations location;
POSIX_API_Control *api;
register Thread_Control *the_thread;
if ( !policy || !param )
return EINVAL;
477ec: 7016 moveq #22,%d0 <== NOT EXECUTED
477ee: 6002 bras 477f2 <pthread_getschedparam+0x72> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
477f0: 7003 moveq #3,%d0 <== NOT EXECUTED
}
477f2: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED
477f8: 4e5e unlk %fp <== NOT EXECUTED
000456f4 <pthread_getspecific>:
*/
void *pthread_getspecific(
pthread_key_t key
)
{
456f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
456f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
456fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_key_t id,
Objects_Locations *location
)
{
return (POSIX_Keys_Control *)
_Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location );
456fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45700: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45704: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
4570a: 4eb9 0004 7a60 jsr 47a60 <_Objects_Get> <== NOT EXECUTED
uint32_t index;
Objects_Locations location;
void *key_data;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
45710: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45714: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45718: 662e bnes 45748 <pthread_getspecific+0x54> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
4571a: 2079 0005 fcc2 moveal 5fcc2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
45720: 7618 moveq #24,%d3 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
key_data = (void *) the_key->Values[ api ][ index ];
45722: 2240 moveal %d0,%a1 <== NOT EXECUTED
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
45724: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
45728: 2202 movel %d2,%d1 <== NOT EXECUTED
4572a: e6a9 lsrl %d3,%d1 <== NOT EXECUTED
4572c: 163c 0007 moveb #7,%d3 <== NOT EXECUTED
45730: c283 andl %d3,%d1 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
45732: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
key_data = (void *) the_key->Values[ api ][ index ];
45738: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED
4573c: 2430 2c00 movel %a0@(00000000,%d2:l:4),%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
45740: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return key_data;
45746: 6002 bras 4574a <pthread_getspecific+0x56> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return NULL;
45748: 4282 clrl %d2 <== NOT EXECUTED
}
4574a: 2002 movel %d2,%d0 <== NOT EXECUTED
4574c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
45750: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
45754: 4e5e unlk %fp <== NOT EXECUTED
0004a7d8 <pthread_join>:
int pthread_join(
pthread_t thread,
void **value_ptr
)
{
4a7d8: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4a7dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4a7de: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a7e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4a7e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4a7e8: 4879 0006 6706 pea 66706 <_POSIX_Threads_Information> <== NOT EXECUTED
4a7ee: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4a7f2: 4eb9 0004 c954 jsr 4c954 <_Objects_Get> <== NOT EXECUTED
POSIX_API_Control *api;
Objects_Locations location;
void *return_pointer;
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
4a7f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a7fc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4a800: 665c bnes 4a85e <pthread_join+0x86> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
4a802: 2240 moveal %d0,%a1 <== NOT EXECUTED
4a804: 2069 0102 moveal %a1@(258),%a0 <== NOT EXECUTED
if ( api->detachstate == PTHREAD_CREATE_DETACHED ) {
4a808: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED
4a80c: 660a bnes 4a818 <pthread_join+0x40> <== NOT EXECUTED
_Thread_Enable_dispatch();
4a80e: 4eb9 0004 d3ba jsr 4d3ba <_Thread_Enable_dispatch> <== NOT EXECUTED
return EINVAL;
4a814: 7016 moveq #22,%d0 <== NOT EXECUTED
4a816: 604c bras 4a864 <pthread_join+0x8c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Executing );
4a818: 2279 0006 69ce moveal 669ce <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4a81e: 47f9 0004 d3ba lea 4d3ba <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
}
if ( _Thread_Is_executing( the_thread ) ) {
4a824: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
4a826: 6606 bnes 4a82e <pthread_join+0x56> <== NOT EXECUTED
_Thread_Enable_dispatch();
4a828: 4e93 jsr %a3@ <== NOT EXECUTED
return EDEADLK;
4a82a: 702d moveq #45,%d0 <== NOT EXECUTED
4a82c: 6036 bras 4a864 <pthread_join+0x8c> <== NOT EXECUTED
/*
* Put ourself on the threads join list
*/
_Thread_Executing->Wait.return_argument = &return_pointer;
4a82e: 200e movel %fp,%d0 <== NOT EXECUTED
4a830: 5180 subql #8,%d0 <== NOT EXECUTED
4a832: 2340 0028 movel %d0,%a1@(40) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4a836: 7001 moveq #1,%d0 <== NOT EXECUTED
4a838: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &api->Join_List );
_Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
4a83c: 4879 0004 db30 pea 4db30 <_Thread_queue_Timeout> <== NOT EXECUTED
4a842: 42a7 clrl %sp@- <== NOT EXECUTED
4a844: 4868 0044 pea %a0@(68) <== NOT EXECUTED
4a848: 4eb9 0004 d81c jsr 4d81c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
4a84e: 4e93 jsr %a3@ <== NOT EXECUTED
if ( value_ptr )
4a850: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4a854: 4a8a tstl %a2 <== NOT EXECUTED
4a856: 670a beqs 4a862 <pthread_join+0x8a> <== NOT EXECUTED
*value_ptr = return_pointer;
4a858: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
4a85c: 6004 bras 4a862 <pthread_join+0x8a> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
4a85e: 7003 moveq #3,%d0 <== NOT EXECUTED
4a860: 6002 bras 4a864 <pthread_join+0x8c> <== NOT EXECUTED
_Thread_Enable_dispatch();
if ( value_ptr )
*value_ptr = return_pointer;
return 0;
4a862: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return ESRCH;
}
4a864: 246e fff0 moveal %fp@(-16),%a2 <== NOT EXECUTED
4a868: 266e fff4 moveal %fp@(-12),%a3 <== NOT EXECUTED
4a86c: 4e5e unlk %fp <== NOT EXECUTED
00045588 <pthread_key_create>:
int pthread_key_create(
pthread_key_t *key,
void (*destructor)( void * )
)
{
45588: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4558c: 2039 0005 f838 movel 5f838 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45592: 5280 addql #1,%d0 <== NOT EXECUTED
45594: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
45598: 23c0 0005 f838 movel %d0,5f838 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free keys control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void )
{
return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information );
4559e: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
455a4: 4eb9 0004 7608 jsr 47608 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch();
the_key = _POSIX_Keys_Allocate();
if ( !the_key ) {
455aa: 588f addql #4,%sp <== NOT EXECUTED
455ac: 2440 moveal %d0,%a2 <== NOT EXECUTED
455ae: 4a80 tstl %d0 <== NOT EXECUTED
455b0: 660c bnes 455be <pthread_key_create+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
455b2: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
455b8: 700b moveq #11,%d0 <== NOT EXECUTED
455ba: 6000 009a braw 45656 <pthread_key_create+0xce> <== NOT EXECUTED
}
the_key->destructor = destructor;
455be: 49f9 0005 f7f8 lea 5f7f8 <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED
int _EXFUN(pthread_once,
(pthread_once_t *__once_control, void (*__init_routine)(void)));
/* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */
int _EXFUN(pthread_key_create,
455c4: 47ea 0018 lea %a2@(24),%a3 <== NOT EXECUTED
_Thread_Enable_dispatch();
return ENOMEM;
}
the_key->Values[ the_api ] = table;
memset( table, '\0', bytes_to_allocate );
455c8: 4bf9 0004 de1c lea 4de1c <memset>,%a5 <== NOT EXECUTED
if ( !the_key ) {
_Thread_Enable_dispatch();
return EAGAIN;
}
the_key->destructor = destructor;
455ce: 256e 000c 0010 movel %fp@(12),%a2@(16) <== NOT EXECUTED
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
table = _Workspace_Allocate( bytes_to_allocate );
455d4: 263c 0004 95d4 movel #300500,%d3 <== NOT EXECUTED
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
455da: 205c moveal %a4@+,%a0 <== NOT EXECUTED
455dc: 4282 clrl %d2 <== NOT EXECUTED
455de: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
455e2: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED
* APIs are optional.
*
* NOTE: Currently RTEMS Classic API tasks are always enabled.
*/
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) {
the_key->Values[ the_api ] = NULL;
455e6: 4293 clrl %a3@ <== NOT EXECUTED
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
table = _Workspace_Allocate( bytes_to_allocate );
455e8: 2043 moveal %d3,%a0 <== NOT EXECUTED
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
455ea: 5282 addql #1,%d2 <== NOT EXECUTED
true,
INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY
);
#endif
bytes_to_allocate = sizeof( void * ) *
455ec: e58a lsll #2,%d2 <== NOT EXECUTED
(_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);
table = _Workspace_Allocate( bytes_to_allocate );
455ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
455f0: 4e90 jsr %a0@ <== NOT EXECUTED
if ( !table ) {
455f2: 588f addql #4,%sp <== NOT EXECUTED
455f4: 4a80 tstl %d0 <== NOT EXECUTED
455f6: 6624 bnes 4561c <pthread_key_create+0x94> <== NOT EXECUTED
_POSIX_Keys_Free_memory( the_key );
455f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
455fa: 4eb9 0004 56c4 jsr 456c4 <_POSIX_Keys_Free_memory> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free (
POSIX_Keys_Control *the_key
)
{
_Objects_Free( &_POSIX_Keys_Information, &the_key->Object );
45600: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45602: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
45608: 4eb9 0004 78fc jsr 478fc <_Objects_Free> <== NOT EXECUTED
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
4560e: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return ENOMEM;
45614: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45618: 700c moveq #12,%d0 <== NOT EXECUTED
4561a: 603a bras 45656 <pthread_key_create+0xce> <== NOT EXECUTED
}
the_key->Values[ the_api ] = table;
4561c: 26c0 movel %d0,%a3@+ <== NOT EXECUTED
memset( table, '\0', bytes_to_allocate );
4561e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45620: 42a7 clrl %sp@- <== NOT EXECUTED
45622: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45624: 4e95 jsr %a5@ <== NOT EXECUTED
* This is a bit more complex than one might initially expect because
* APIs are optional.
*
* NOTE: Currently RTEMS Classic API tasks are always enabled.
*/
for ( the_api = 1; the_api <= OBJECTS_APIS_LAST; the_api++ ) {
45626: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4562a: b9fc 0005 f804 cmpal #391172,%a4 <== NOT EXECUTED
45630: 66a8 bnes 455da <pthread_key_create+0x52> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
45632: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
45636: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45638: 2079 0005 fbc0 moveal 5fbc0 <_POSIX_Keys_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4563e: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45640: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
the_key->Values[ the_api ] = table;
memset( table, '\0', bytes_to_allocate );
}
_Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 );
*key = the_key->Object.id;
45644: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
45648: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
4564c: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4564e: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
45654: 4280 clrl %d0 <== NOT EXECUTED
}
45656: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4565c: 4e5e unlk %fp <== NOT EXECUTED
00045660 <pthread_key_delete>:
* 17.1.3 Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167
*/
int pthread_key_delete(
pthread_key_t key
)
{
45660: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
45664: 2f02 movel %d2,%sp@- <== NOT EXECUTED
pthread_key_t id,
Objects_Locations *location
)
{
return (POSIX_Keys_Control *)
_Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location );
45666: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4566a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4566e: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
45674: 4eb9 0004 7a60 jsr 47a60 <_Objects_Get> <== NOT EXECUTED
POSIX_Keys_Control *the_key;
Objects_Locations location;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
4567a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4567e: 2400 movel %d0,%d2 <== NOT EXECUTED
45680: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45684: 6632 bnes 456b8 <pthread_key_delete+0x58> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_POSIX_Keys_Information, &the_key->Object );
45686: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45688: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
4568e: 4eb9 0004 7684 jsr 47684 <_Objects_Close> <== NOT EXECUTED
_POSIX_Keys_Free_memory( the_key );
45694: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45696: 4eb9 0004 56c4 jsr 456c4 <_POSIX_Keys_Free_memory> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free (
POSIX_Keys_Control *the_key
)
{
_Objects_Free( &_POSIX_Keys_Information, &the_key->Object );
4569c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4569e: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
456a4: 4eb9 0004 78fc jsr 478fc <_Objects_Free> <== NOT EXECUTED
/*
* NOTE: The destructor is not called and it is the responsibility
* of the application to free the memory.
*/
_POSIX_Keys_Free( the_key );
_Thread_Enable_dispatch();
456aa: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
456b0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
456b4: 4280 clrl %d0 <== NOT EXECUTED
456b6: 6002 bras 456ba <pthread_key_delete+0x5a> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
456b8: 7016 moveq #22,%d0 <== NOT EXECUTED
}
456ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
456be: 4e5e unlk %fp <== NOT EXECUTED
...
0005a3b8 <pthread_kill>:
int pthread_kill(
pthread_t thread,
int sig
)
{
5a3b8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
5a3bc: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5a3c0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
POSIX_API_Control *api;
Thread_Control *the_thread;
Objects_Locations location;
if ( !sig )
5a3c4: 670a beqs 5a3d0 <pthread_kill+0x18> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
5a3c6: 2602 movel %d2,%d3 <== NOT EXECUTED
5a3c8: 5383 subql #1,%d3 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
5a3ca: 701f moveq #31,%d0 <== NOT EXECUTED
5a3cc: b083 cmpl %d3,%d0 <== NOT EXECUTED
5a3ce: 6410 bccs 5a3e0 <pthread_kill+0x28> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
5a3d0: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a3d6: 7216 moveq #22,%d1 <== NOT EXECUTED
5a3d8: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a3da: 2081 movel %d1,%a0@ <== NOT EXECUTED
5a3dc: 6000 0084 braw 5a462 <pthread_kill+0xaa> <== NOT EXECUTED
pthread_t id,
Objects_Locations *location
)
{
return (Thread_Control *)
_Objects_Get( &_POSIX_Threads_Information, (Objects_Id)id, location );
5a3e0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5a3e4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5a3e8: 4879 0005 dcca pea 5dcca <_POSIX_Threads_Information> <== NOT EXECUTED
5a3ee: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get> <== NOT EXECUTED
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
5a3f4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a3f8: 2440 moveal %d0,%a2 <== NOT EXECUTED
5a3fa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
5a3fe: 6656 bnes 5a456 <pthread_kill+0x9e> <== NOT EXECUTED
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5a400: 2202 movel %d2,%d1 <== NOT EXECUTED
5a402: 2002 movel %d2,%d0 <== NOT EXECUTED
5a404: e589 lsll #2,%d1 <== NOT EXECUTED
5a406: e988 lsll #4,%d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* If sig == 0 then just validate arguments
*/
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
5a408: 206a 0102 moveal %a2@(258),%a0 <== NOT EXECUTED
if ( sig ) {
if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {
5a40c: 9081 subl %d1,%d0 <== NOT EXECUTED
5a40e: 0680 0005 dfcc addil #384972,%d0 <== NOT EXECUTED
5a414: 7201 moveq #1,%d1 <== NOT EXECUTED
5a416: 2240 moveal %d0,%a1 <== NOT EXECUTED
5a418: b291 cmpl %a1@,%d1 <== NOT EXECUTED
5a41a: 6730 beqs 5a44c <pthread_kill+0x94> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
5a41c: 7001 moveq #1,%d0 <== NOT EXECUTED
5a41e: e7a8 lsll %d3,%d0 <== NOT EXECUTED
return 0;
}
/* XXX critical section */
api->signals_pending |= signo_to_mask( sig );
5a420: 81a8 00d4 orl %d0,%a0@(212) <== NOT EXECUTED
(void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
5a424: 42a7 clrl %sp@- <== NOT EXECUTED
5a426: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5a428: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5a42a: 4eb9 0005 a2bc jsr 5a2bc <_POSIX_signals_Unblock_thread> <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
5a430: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a434: 4ab9 0005 df8e tstl 5df8e <_Per_CPU_Information+0x8> <== NOT EXECUTED
5a43a: 6710 beqs 5a44c <pthread_kill+0x94> <== NOT EXECUTED
5a43c: b5f9 0005 df92 cmpal 5df92 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
5a442: 6608 bnes 5a44c <pthread_kill+0x94> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
5a444: 7001 moveq #1,%d0 <== NOT EXECUTED
5a446: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
5a44c: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
5a452: 4280 clrl %d0 <== NOT EXECUTED
5a454: 600e bras 5a464 <pthread_kill+0xac> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( ESRCH );
5a456: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a45c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a45e: 7003 moveq #3,%d0 <== NOT EXECUTED
5a460: 2080 movel %d0,%a0@ <== NOT EXECUTED
5a462: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
5a464: 4cee 040c fff0 moveml %fp@(-16),%d2-%d3/%a2 <== NOT EXECUTED
5a46a: 4e5e unlk %fp <== NOT EXECUTED
...
00046fd4 <pthread_mutex_destroy>:
*/
int pthread_mutex_destroy(
pthread_mutex_t *mutex
)
{
46fd4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46fd8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46fda: 2f0a movel %a2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
46fdc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46fe0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46fe4: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
46fea: 508f addql #8,%sp <== NOT EXECUTED
)
{
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
46fec: 2440 moveal %d0,%a2 <== NOT EXECUTED
switch ( location ) {
46fee: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46ff2: 6648 bnes 4703c <pthread_mutex_destroy+0x68> <== NOT EXECUTED
46ff4: 47f9 0004 a3aa lea 4a3aa <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
/*
* XXX: There is an error for the mutex being locked
* or being in use by a condition variable.
*/
if ( _CORE_mutex_Is_locked( &the_mutex->Mutex ) ) {
46ffa: 4aaa 0062 tstl %a2@(98) <== NOT EXECUTED
46ffe: 6606 bnes 47006 <pthread_mutex_destroy+0x32> <== NOT EXECUTED
_Thread_Enable_dispatch();
47000: 4e93 jsr %a3@ <== NOT EXECUTED
return EBUSY;
47002: 7010 moveq #16,%d0 <== NOT EXECUTED
47004: 6038 bras 4703e <pthread_mutex_destroy+0x6a> <== NOT EXECUTED
}
_Objects_Close( &_POSIX_Mutex_Information, &the_mutex->Object );
47006: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47008: 4879 0006 295c pea 6295c <_POSIX_Mutex_Information> <== NOT EXECUTED
4700e: 4eb9 0004 9568 jsr 49568 <_Objects_Close> <== NOT EXECUTED
_CORE_mutex_Flush( &the_mutex->Mutex, NULL, EINVAL );
47014: 4878 0016 pea 16 <OPER2+0x2> <== NOT EXECUTED
47018: 42a7 clrl %sp@- <== NOT EXECUTED
4701a: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4701e: 4eb9 0004 8c64 jsr 48c64 <_CORE_mutex_Flush> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Free (
POSIX_Mutex_Control *the_mutex
)
{
_Objects_Free( &_POSIX_Mutex_Information, &the_mutex->Object );
47024: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47026: 4879 0006 295c pea 6295c <_POSIX_Mutex_Information> <== NOT EXECUTED
4702c: 4eb9 0004 97e0 jsr 497e0 <_Objects_Free> <== NOT EXECUTED
_POSIX_Mutex_Free( the_mutex );
_Thread_Enable_dispatch();
47032: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
47034: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
47038: 4280 clrl %d0 <== NOT EXECUTED
4703a: 6002 bras 4703e <pthread_mutex_destroy+0x6a> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
4703c: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4703e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
47042: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
47046: 4e5e unlk %fp <== NOT EXECUTED
...
000470f4 <pthread_mutex_getprioceiling>:
int pthread_mutex_getprioceiling(
pthread_mutex_t *mutex,
int *prioceiling
)
{
470f4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
470f8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470fa: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
if ( !prioceiling )
470fe: 4a8a tstl %a2 <== NOT EXECUTED
47100: 6730 beqs 47132 <pthread_mutex_getprioceiling+0x3e><== NOT EXECUTED
return EINVAL;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
47102: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47106: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4710a: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
47110: 508f addql #8,%sp <== NOT EXECUTED
47112: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47116: 661a bnes 47132 <pthread_mutex_getprioceiling+0x3e><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
47118: 4281 clrl %d1 <== NOT EXECUTED
4711a: 1239 0006 0d96 moveb 60d96 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
47120: 2040 moveal %d0,%a0 <== NOT EXECUTED
47122: 92a8 005e subl %a0@(94),%d1 <== NOT EXECUTED
47126: 2481 movel %d1,%a2@ <== NOT EXECUTED
case OBJECTS_LOCAL:
*prioceiling = _POSIX_Priority_From_core(
the_mutex->Mutex.Attributes.priority_ceiling
);
_Thread_Enable_dispatch();
47128: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4712e: 4280 clrl %d0 <== NOT EXECUTED
47130: 6002 bras 47134 <pthread_mutex_getprioceiling+0x40><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47132: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47134: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47138: 4e5e unlk %fp <== NOT EXECUTED
0004713c <pthread_mutex_init>:
int pthread_mutex_init(
pthread_mutex_t *mutex,
const pthread_mutexattr_t *attr
)
{
4713c: 4e56 fff0 linkw %fp,#-16
47140: 48d7 1c04 moveml %d2/%a2-%a4,%sp@
47144: 286e 0008 moveal %fp@(8),%a4
47148: 266e 000c moveal %fp@(12),%a3
POSIX_Mutex_Control *the_mutex;
CORE_mutex_Attributes *the_mutex_attr;
const pthread_mutexattr_t *the_attr;
CORE_mutex_Disciplines the_discipline;
if ( attr ) the_attr = attr;
4714c: 4a8b tstl %a3
4714e: 6606 bnes 47156 <pthread_mutex_init+0x1a> <== NEVER TAKEN
else the_attr = &_POSIX_Mutex_Default_attributes;
47150: 47f9 0006 29d0 lea 629d0 <_POSIX_Mutex_Default_attributes>,%a3
/* Check for NULL mutex */
if ( !mutex )
47156: 4a8c tstl %a4
47158: 6700 00ec beqw 47246 <pthread_mutex_init+0x10a>
}
}
}
#endif
if ( !the_attr->is_initialized )
4715c: 4a93 tstl %a3@
4715e: 6700 00e6 beqw 47246 <pthread_mutex_init+0x10a>
return EINVAL;
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
47162: 202b 0004 movel %a3@(4),%d0
47166: 7201 moveq #1,%d1
47168: b280 cmpl %d0,%d1
4716a: 6700 00d6 beqw 47242 <pthread_mutex_init+0x106>
return ENOSYS;
if ( the_attr->process_shared != PTHREAD_PROCESS_PRIVATE )
4716e: 4a80 tstl %d0
47170: 6600 00d4 bnew 47246 <pthread_mutex_init+0x10a>
return EINVAL;
/*
* Determine the discipline of the mutex
*/
switch ( the_attr->protocol ) {
47174: 202b 000c movel %a3@(12),%d0
47178: b280 cmpl %d0,%d1
4717a: 6716 beqs 47192 <pthread_mutex_init+0x56> <== NEVER TAKEN
4717c: 123c 0002 moveb #2,%d1
47180: b280 cmpl %d0,%d1
47182: 670a beqs 4718e <pthread_mutex_init+0x52> <== NEVER TAKEN
47184: 4a80 tstl %d0
47186: 6600 00be bnew 47246 <pthread_mutex_init+0x10a>
case PTHREAD_PRIO_NONE:
the_discipline = CORE_MUTEX_DISCIPLINES_FIFO;
4718a: 4282 clrl %d2
4718c: 6006 bras 47194 <pthread_mutex_init+0x58>
break;
case PTHREAD_PRIO_INHERIT:
the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
break;
case PTHREAD_PRIO_PROTECT:
the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
4718e: 7403 moveq #3,%d2 <== NOT EXECUTED
break;
47190: 6002 bras 47194 <pthread_mutex_init+0x58> <== NOT EXECUTED
switch ( the_attr->protocol ) {
case PTHREAD_PRIO_NONE:
the_discipline = CORE_MUTEX_DISCIPLINES_FIFO;
break;
case PTHREAD_PRIO_INHERIT:
the_discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
47192: 7402 moveq #2,%d2 <== NOT EXECUTED
}
/*
* Validate the priority ceiling field -- should always be valid.
*/
if ( !_POSIX_Priority_Is_valid( the_attr->prio_ceiling ) )
47194: 2f2b 0008 movel %a3@(8),%sp@-
47198: 4eb9 0004 74c8 jsr 474c8 <_POSIX_Priority_Is_valid>
4719e: 588f addql #4,%sp
471a0: 4a00 tstb %d0
471a2: 6700 00a2 beqw 47246 <pthread_mutex_init+0x10a>
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
/*
* Validate the mutex type and set appropriate SuperCore mutex
* attributes.
*/
switch ( the_attr->type ) {
471a6: 7003 moveq #3,%d0
471a8: b0ab 0010 cmpl %a3@(16),%d0
471ac: 6500 0098 bcsw 47246 <pthread_mutex_init+0x10a>
471b0: 2039 0006 2678 movel 62678 <_Thread_Dispatch_disable_level>,%d0
471b6: 5280 addql #1,%d0
471b8: 23c0 0006 2678 movel %d0,62678 <_Thread_Dispatch_disable_level>
* _POSIX_Mutex_Allocate
*/
RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void )
{
return (POSIX_Mutex_Control *) _Objects_Allocate( &_POSIX_Mutex_Information );
471be: 4879 0006 295c pea 6295c <_POSIX_Mutex_Information>
471c4: 4eb9 0004 94ec jsr 494ec <_Objects_Allocate>
*/
_Thread_Disable_dispatch();
the_mutex = _POSIX_Mutex_Allocate();
if ( !the_mutex ) {
471ca: 588f addql #4,%sp
471cc: 2440 moveal %d0,%a2
471ce: 4a80 tstl %d0
471d0: 660a bnes 471dc <pthread_mutex_init+0xa0> <== ALWAYS TAKEN
_Thread_Enable_dispatch();
471d2: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return EAGAIN;
471d8: 700b moveq #11,%d0 <== NOT EXECUTED
471da: 606c bras 47248 <pthread_mutex_init+0x10c> <== NOT EXECUTED
the_mutex->process_shared = the_attr->process_shared;
the_mutex_attr = &the_mutex->Mutex.Attributes;
if ( the_attr->recursive )
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
471dc: 4aab 0014 tstl %a3@(20)
471e0: 57c0 seq %d0
if ( !the_mutex ) {
_Thread_Enable_dispatch();
return EAGAIN;
}
the_mutex->process_shared = the_attr->process_shared;
471e2: 256b 0004 0010 movel %a3@(4),%a2@(16)
the_mutex_attr = &the_mutex->Mutex.Attributes;
if ( the_attr->recursive )
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
471e8: 49c0 extbl %d0
471ea: 4480 negl %d0
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
471ec: 7201 moveq #1,%d1
the_mutex->process_shared = the_attr->process_shared;
the_mutex_attr = &the_mutex->Mutex.Attributes;
if ( the_attr->recursive )
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
471ee: 2540 0054 movel %d0,%a2@(84)
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
471f2: 4280 clrl %d0
else
the_mutex_attr->lock_nesting_behavior = CORE_MUTEX_NESTING_IS_ERROR;
the_mutex_attr->only_owner_release = true;
471f4: 1541 0058 moveb %d1,%a2@(88)
471f8: 1039 0006 0d96 moveb 60d96 <rtems_maximum_priority>,%d0
471fe: 90ab 0008 subl %a3@(8),%d0
the_mutex_attr->priority_ceiling =
_POSIX_Priority_To_core( the_attr->prio_ceiling );
the_mutex_attr->discipline = the_discipline;
47202: 2542 005a movel %d2,%a2@(90)
47206: 2540 005e movel %d0,%a2@(94)
/*
* Must be initialized to unlocked.
*/
_CORE_mutex_Initialize(
4720a: 4878 0001 pea 1 <ADD>
4720e: 486a 0054 pea %a2@(84)
47212: 486a 0014 pea %a2@(20)
47216: 4eb9 0004 8c70 jsr 48c70 <_CORE_mutex_Initialize>
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4721c: 202a 0008 movel %a2@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
47220: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47222: 2079 0006 2974 moveal 62974 <_POSIX_Mutex_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
47228: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4722a: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4)
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
4722e: 42aa 000c clrl %a2@(12)
CORE_MUTEX_UNLOCKED
);
_Objects_Open_u32( &_POSIX_Mutex_Information, &the_mutex->Object, 0 );
*mutex = the_mutex->Object.id;
47232: 2880 movel %d0,%a4@
_Thread_Enable_dispatch();
47234: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch>
return 0;
4723a: 4fef 000c lea %sp@(12),%sp
4723e: 4280 clrl %d0
47240: 6006 bras 47248 <pthread_mutex_init+0x10c>
/*
* We only support process private mutexes.
*/
if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )
return ENOSYS;
47242: 7058 moveq #88,%d0 <== NOT EXECUTED
47244: 6002 bras 47248 <pthread_mutex_init+0x10c> <== NOT EXECUTED
case PTHREAD_MUTEX_ERRORCHECK:
case PTHREAD_MUTEX_DEFAULT:
break;
default:
return EINVAL;
47246: 7016 moveq #22,%d0 <== NOT EXECUTED
*mutex = the_mutex->Object.id;
_Thread_Enable_dispatch();
return 0;
}
47248: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4
4724e: 4e5e unlk %fp
...
00047254 <pthread_mutex_lock>:
*/
int pthread_mutex_lock(
pthread_mutex_t *mutex
)
{
47254: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Mutex_Lock_support( mutex, true, THREAD_QUEUE_WAIT_FOREVER );
47258: 42a7 clrl %sp@- <== NOT EXECUTED
4725a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4725e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47262: 4eb9 0004 726c jsr 4726c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
}
47268: 4e5e unlk %fp <== NOT EXECUTED
000472d4 <pthread_mutex_setprioceiling>:
int pthread_mutex_setprioceiling(
pthread_mutex_t *mutex,
int prioceiling,
int *old_ceiling
)
{
472d4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
472d8: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
472dc: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
472e0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
472e4: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
Priority_Control the_priority;
if ( !old_ceiling )
472e8: 4a8a tstl %a2 <== NOT EXECUTED
472ea: 676c beqs 47358 <pthread_mutex_setprioceiling+0x84><== NOT EXECUTED
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
472ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
472ee: 4eb9 0004 74c8 jsr 474c8 <_POSIX_Priority_Is_valid> <== NOT EXECUTED
472f4: 588f addql #4,%sp <== NOT EXECUTED
472f6: 4a00 tstb %d0 <== NOT EXECUTED
472f8: 675e beqs 47358 <pthread_mutex_setprioceiling+0x84><== NOT EXECUTED
/*
* Must acquire the mutex before we can change it's ceiling.
* POSIX says block until we acquire it.
*/
(void) pthread_mutex_lock( mutex );
472fa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
472fc: 1839 0006 0d96 moveb 60d96 <rtems_maximum_priority>,%d4 <== NOT EXECUTED
47302: 4eb9 0004 7254 jsr 47254 <pthread_mutex_lock> <== NOT EXECUTED
* operations.
*
* NOTE: This makes it easier to get 100% binary coverage since the
* bad Id case is handled by the switch.
*/
the_mutex = _POSIX_Mutex_Get( mutex, &location );
47308: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4730c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4730e: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
47314: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* operations.
*
* NOTE: This makes it easier to get 100% binary coverage since the
* bad Id case is handled by the switch.
*/
the_mutex = _POSIX_Mutex_Get( mutex, &location );
47318: 2040 moveal %d0,%a0 <== NOT EXECUTED
switch ( location ) {
4731a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4731e: 6638 bnes 47358 <pthread_mutex_setprioceiling+0x84><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
47320: 4280 clrl %d0 <== NOT EXECUTED
47322: 1039 0006 0d96 moveb 60d96 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
47328: 90a8 005e subl %a0@(94),%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
4732c: 0284 0000 00ff andil #255,%d4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
return (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
47332: 2480 movel %d0,%a2@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
47334: 9882 subl %d2,%d4 <== NOT EXECUTED
47336: 2144 005e movel %d4,%a0@(94) <== NOT EXECUTED
);
the_mutex->Mutex.Attributes.priority_ceiling = the_priority;
/*
* We are required to unlock the mutex before we return.
*/
_CORE_mutex_Surrender(
4733a: 42a7 clrl %sp@- <== NOT EXECUTED
4733c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
47340: 4868 0014 pea %a0@(20) <== NOT EXECUTED
47344: 4eb9 0004 8e20 jsr 48e20 <_CORE_mutex_Surrender> <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
4734a: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
47350: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47354: 4280 clrl %d0 <== NOT EXECUTED
47356: 6002 bras 4735a <pthread_mutex_setprioceiling+0x86><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47358: 7016 moveq #22,%d0 <== NOT EXECUTED
}
4735a: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
47360: 4e5e unlk %fp <== NOT EXECUTED
00047364 <pthread_mutex_timedlock>:
int pthread_mutex_timedlock(
pthread_mutex_t *mutex,
const struct timespec *abstime
)
{
47364: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47368: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4736a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
*
* If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,
* POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
* then we should not wait.
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
4736c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47370: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47374: 4eb9 0004 744c jsr 4744c <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
int _EXFUN(pthread_mutex_trylock, (pthread_mutex_t *__mutex));
int _EXFUN(pthread_mutex_unlock, (pthread_mutex_t *__mutex));
#if defined(_POSIX_TIMEOUTS)
int _EXFUN(pthread_mutex_timedlock,
4737a: 508f addql #8,%sp <== NOT EXECUTED
4737c: 2400 movel %d0,%d2 <== NOT EXECUTED
4737e: 7003 moveq #3,%d0 <== NOT EXECUTED
47380: b082 cmpl %d2,%d0 <== NOT EXECUTED
47382: 57c3 seq %d3 <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );
47384: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
47388: 4483 negl %d3 <== NOT EXECUTED
4738a: 4280 clrl %d0 <== NOT EXECUTED
4738c: 1003 moveb %d3,%d0 <== NOT EXECUTED
4738e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47390: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47394: 4eb9 0004 726c jsr 4726c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
* This service only gives us the option to block. We used a polling
* attempt to lock if the abstime was not in the future. If we did
* not obtain the mutex, then not look at the status immediately,
* make sure the right reason is returned.
*/
if ( !do_wait && (lock_status == EBUSY) ) {
4739a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4739e: 4a03 tstb %d3 <== NOT EXECUTED
473a0: 661c bnes 473be <pthread_mutex_timedlock+0x5a> <== NOT EXECUTED
473a2: 7210 moveq #16,%d1 <== NOT EXECUTED
473a4: b280 cmpl %d0,%d1 <== NOT EXECUTED
473a6: 6616 bnes 473be <pthread_mutex_timedlock+0x5a> <== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
473a8: 4a82 tstl %d2 <== NOT EXECUTED
473aa: 670c beqs 473b8 <pthread_mutex_timedlock+0x54> <== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
473ac: 5382 subql #1,%d2 <== NOT EXECUTED
473ae: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
473b2: b282 cmpl %d2,%d1 <== NOT EXECUTED
473b4: 6508 bcss 473be <pthread_mutex_timedlock+0x5a> <== NOT EXECUTED
473b6: 6004 bras 473bc <pthread_mutex_timedlock+0x58> <== NOT EXECUTED
* not obtain the mutex, then not look at the status immediately,
* make sure the right reason is returned.
*/
if ( !do_wait && (lock_status == EBUSY) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
473b8: 7016 moveq #22,%d0 <== NOT EXECUTED
473ba: 6002 bras 473be <pthread_mutex_timedlock+0x5a> <== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
473bc: 7074 moveq #116,%d0 <== NOT EXECUTED
}
return lock_status;
}
473be: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
473c2: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
473c6: 4e5e unlk %fp <== NOT EXECUTED
...
000473e4 <pthread_mutex_trylock>:
*/
int pthread_mutex_trylock(
pthread_mutex_t *mutex
)
{
473e4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Mutex_Lock_support( mutex, false, THREAD_QUEUE_WAIT_FOREVER );
473e8: 42a7 clrl %sp@- <== NOT EXECUTED
473ea: 42a7 clrl %sp@- <== NOT EXECUTED
473ec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
473f0: 4eb9 0004 726c jsr 4726c <_POSIX_Mutex_Lock_support> <== NOT EXECUTED
}
473f6: 4e5e unlk %fp <== NOT EXECUTED
...
000473fc <pthread_mutex_unlock>:
*/
int pthread_mutex_unlock(
pthread_mutex_t *mutex
)
{
473fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47400: 2f02 movel %d2,%sp@- <== NOT EXECUTED
register POSIX_Mutex_Control *the_mutex;
Objects_Locations location;
CORE_mutex_Status status;
the_mutex = _POSIX_Mutex_Get( mutex, &location );
47402: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47406: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4740a: 4eb9 0004 704c jsr 4704c <_POSIX_Mutex_Get> <== NOT EXECUTED
switch ( location ) {
47410: 508f addql #8,%sp <== NOT EXECUTED
47412: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47416: 6628 bnes 47440 <pthread_mutex_unlock+0x44> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_mutex_Surrender(
47418: 2040 moveal %d0,%a0 <== NOT EXECUTED
4741a: 42a7 clrl %sp@- <== NOT EXECUTED
4741c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
47420: 4868 0014 pea %a0@(20) <== NOT EXECUTED
47424: 4eb9 0004 8e20 jsr 48e20 <_CORE_mutex_Surrender> <== NOT EXECUTED
4742a: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
4742c: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Mutex_Translate_core_mutex_return_code( status );
47432: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47434: 4eb9 0004 73cc jsr 473cc <_POSIX_Mutex_Translate_core_mutex_return_code><== NOT EXECUTED
4743a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4743e: 6002 bras 47442 <pthread_mutex_unlock+0x46> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
47440: 7016 moveq #22,%d0 <== NOT EXECUTED
}
47442: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47446: 4e5e unlk %fp <== NOT EXECUTED
...
00046e88 <pthread_mutexattr_destroy>:
*/
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
)
{
46e88: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46e8c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
46e90: 4a88 tstl %a0 <== NOT EXECUTED
46e92: 670a beqs 46e9e <pthread_mutexattr_destroy+0x16> <== NOT EXECUTED
46e94: 4a90 tstl %a0@ <== NOT EXECUTED
46e96: 6706 beqs 46e9e <pthread_mutexattr_destroy+0x16> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
46e98: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
46e9a: 4280 clrl %d0 <== NOT EXECUTED
46e9c: 6002 bras 46ea0 <pthread_mutexattr_destroy+0x18> <== NOT EXECUTED
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
)
{
if ( !attr || !attr->is_initialized )
return EINVAL;
46e9e: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
46ea0: 4e5e unlk %fp <== NOT EXECUTED
00046ea4 <pthread_mutexattr_getprioceiling>:
int pthread_mutexattr_getprioceiling(
const pthread_mutexattr_t *attr,
int *prioceiling
)
{
46ea4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46ea8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46eac: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !prioceiling )
46eb0: 4a88 tstl %a0 <== NOT EXECUTED
46eb2: 6710 beqs 46ec4 <pthread_mutexattr_getprioceiling+0x20><== NOT EXECUTED
46eb4: 4a90 tstl %a0@ <== NOT EXECUTED
46eb6: 670c beqs 46ec4 <pthread_mutexattr_getprioceiling+0x20><== NOT EXECUTED
46eb8: 4a89 tstl %a1 <== NOT EXECUTED
46eba: 6708 beqs 46ec4 <pthread_mutexattr_getprioceiling+0x20><== NOT EXECUTED
return EINVAL;
*prioceiling = attr->prio_ceiling;
46ebc: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
return 0;
46ec0: 4280 clrl %d0 <== NOT EXECUTED
46ec2: 6002 bras 46ec6 <pthread_mutexattr_getprioceiling+0x22><== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *prioceiling
)
{
if ( !attr || !attr->is_initialized || !prioceiling )
return EINVAL;
46ec4: 7016 moveq #22,%d0 <== NOT EXECUTED
*prioceiling = attr->prio_ceiling;
return 0;
}
46ec6: 4e5e unlk %fp <== NOT EXECUTED
...
00046ecc <pthread_mutexattr_getprotocol>:
int pthread_mutexattr_getprotocol(
const pthread_mutexattr_t *attr,
int *protocol
)
{
46ecc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46ed0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46ed4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !protocol )
46ed8: 4a88 tstl %a0 <== NOT EXECUTED
46eda: 6710 beqs 46eec <pthread_mutexattr_getprotocol+0x20><== NOT EXECUTED
46edc: 4a90 tstl %a0@ <== NOT EXECUTED
46ede: 670c beqs 46eec <pthread_mutexattr_getprotocol+0x20><== NOT EXECUTED
46ee0: 4a89 tstl %a1 <== NOT EXECUTED
46ee2: 6708 beqs 46eec <pthread_mutexattr_getprotocol+0x20><== NOT EXECUTED
return EINVAL;
*protocol = attr->protocol;
46ee4: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
return 0;
46ee8: 4280 clrl %d0 <== NOT EXECUTED
46eea: 6002 bras 46eee <pthread_mutexattr_getprotocol+0x22><== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *protocol
)
{
if ( !attr || !attr->is_initialized || !protocol )
return EINVAL;
46eec: 7016 moveq #22,%d0 <== NOT EXECUTED
*protocol = attr->protocol;
return 0;
}
46eee: 4e5e unlk %fp <== NOT EXECUTED
...
00046ef4 <pthread_mutexattr_getpshared>:
int pthread_mutexattr_getpshared(
const pthread_mutexattr_t *attr,
int *pshared
)
{
46ef4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46ef8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46efc: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr || !attr->is_initialized || !pshared )
46f00: 4a88 tstl %a0 <== NOT EXECUTED
46f02: 6710 beqs 46f14 <pthread_mutexattr_getpshared+0x20><== NOT EXECUTED
46f04: 4a90 tstl %a0@ <== NOT EXECUTED
46f06: 670c beqs 46f14 <pthread_mutexattr_getpshared+0x20><== NOT EXECUTED
46f08: 4a89 tstl %a1 <== NOT EXECUTED
46f0a: 6708 beqs 46f14 <pthread_mutexattr_getpshared+0x20><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
46f0c: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
46f10: 4280 clrl %d0 <== NOT EXECUTED
46f12: 6002 bras 46f16 <pthread_mutexattr_getpshared+0x22><== NOT EXECUTED
const pthread_mutexattr_t *attr,
int *pshared
)
{
if ( !attr || !attr->is_initialized || !pshared )
return EINVAL;
46f14: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
46f16: 4e5e unlk %fp <== NOT EXECUTED
...
0004521c <pthread_mutexattr_gettype>:
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
int pthread_mutexattr_gettype(
const pthread_mutexattr_t *attr,
int *type
)
{
4521c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45220: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45224: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
if ( !attr )
45228: 4a88 tstl %a0 <== NOT EXECUTED
4522a: 6710 beqs 4523c <pthread_mutexattr_gettype+0x20> <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
4522c: 4a90 tstl %a0@ <== NOT EXECUTED
4522e: 670c beqs 4523c <pthread_mutexattr_gettype+0x20> <== NOT EXECUTED
return EINVAL;
if ( !type )
45230: 4a89 tstl %a1 <== NOT EXECUTED
45232: 6708 beqs 4523c <pthread_mutexattr_gettype+0x20> <== NOT EXECUTED
return EINVAL;
*type = attr->type;
45234: 22a8 0010 movel %a0@(16),%a1@ <== NOT EXECUTED
return 0;
45238: 4280 clrl %d0 <== NOT EXECUTED
4523a: 6002 bras 4523e <pthread_mutexattr_gettype+0x22> <== NOT EXECUTED
if ( !attr->is_initialized )
return EINVAL;
if ( !type )
return EINVAL;
4523c: 7016 moveq #22,%d0 <== NOT EXECUTED
*type = attr->type;
return 0;
}
4523e: 4e5e unlk %fp <== NOT EXECUTED
...
00046f1c <pthread_mutexattr_init>:
*/
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
)
{
46f1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46f20: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !attr )
46f24: 671a beqs 46f40 <pthread_mutexattr_init+0x24> <== NOT EXECUTED
return EINVAL;
*attr = _POSIX_Mutex_Default_attributes;
46f26: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
46f2a: 4879 0006 29d0 pea 629d0 <_POSIX_Mutex_Default_attributes> <== NOT EXECUTED
46f30: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46f32: 4eb9 0004 fcc4 jsr 4fcc4 <memcpy> <== NOT EXECUTED
return 0;
46f38: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46f3c: 4280 clrl %d0 <== NOT EXECUTED
46f3e: 6002 bras 46f42 <pthread_mutexattr_init+0x26> <== NOT EXECUTED
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
)
{
if ( !attr )
return EINVAL;
46f40: 7016 moveq #22,%d0 <== NOT EXECUTED
*attr = _POSIX_Mutex_Default_attributes;
return 0;
}
46f42: 4e5e unlk %fp <== NOT EXECUTED
...
00046f48 <pthread_mutexattr_setprioceiling>:
int pthread_mutexattr_setprioceiling(
pthread_mutexattr_t *attr,
int prioceiling
)
{
46f48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46f4c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46f4e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
46f52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46f54: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
46f58: 4a8a tstl %a2 <== NOT EXECUTED
46f5a: 671a beqs 46f76 <pthread_mutexattr_setprioceiling+0x2e><== NOT EXECUTED
46f5c: 4a92 tstl %a2@ <== NOT EXECUTED
46f5e: 6716 beqs 46f76 <pthread_mutexattr_setprioceiling+0x2e><== NOT EXECUTED
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
46f60: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46f62: 4eb9 0004 74c8 jsr 474c8 <_POSIX_Priority_Is_valid> <== NOT EXECUTED
46f68: 588f addql #4,%sp <== NOT EXECUTED
46f6a: 4a00 tstb %d0 <== NOT EXECUTED
46f6c: 6708 beqs 46f76 <pthread_mutexattr_setprioceiling+0x2e><== NOT EXECUTED
return EINVAL;
attr->prio_ceiling = prioceiling;
46f6e: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
return 0;
46f72: 4280 clrl %d0 <== NOT EXECUTED
46f74: 6002 bras 46f78 <pthread_mutexattr_setprioceiling+0x30><== NOT EXECUTED
{
if ( !attr || !attr->is_initialized )
return EINVAL;
if ( !_POSIX_Priority_Is_valid( prioceiling ) )
return EINVAL;
46f76: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->prio_ceiling = prioceiling;
return 0;
}
46f78: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46f7c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46f80: 4e5e unlk %fp <== NOT EXECUTED
00046f84 <pthread_mutexattr_setprotocol>:
int pthread_mutexattr_setprotocol(
pthread_mutexattr_t *attr,
int protocol
)
{
46f84: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46f88: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46f8c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
46f90: 4a88 tstl %a0 <== NOT EXECUTED
46f92: 6712 beqs 46fa6 <pthread_mutexattr_setprotocol+0x22><== NOT EXECUTED
46f94: 4a90 tstl %a0@ <== NOT EXECUTED
46f96: 670e beqs 46fa6 <pthread_mutexattr_setprotocol+0x22><== NOT EXECUTED
return EINVAL;
switch ( protocol ) {
46f98: 7202 moveq #2,%d1 <== NOT EXECUTED
46f9a: b280 cmpl %d0,%d1 <== NOT EXECUTED
46f9c: 6508 bcss 46fa6 <pthread_mutexattr_setprotocol+0x22><== NOT EXECUTED
case PTHREAD_PRIO_NONE:
case PTHREAD_PRIO_INHERIT:
case PTHREAD_PRIO_PROTECT:
attr->protocol = protocol;
46f9e: 2140 000c movel %d0,%a0@(12) <== NOT EXECUTED
return 0;
46fa2: 4280 clrl %d0 <== NOT EXECUTED
46fa4: 6002 bras 46fa8 <pthread_mutexattr_setprotocol+0x24><== NOT EXECUTED
default:
return EINVAL;
46fa6: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
46fa8: 4e5e unlk %fp <== NOT EXECUTED
00046fac <pthread_mutexattr_setpshared>:
int pthread_mutexattr_setpshared(
pthread_mutexattr_t *attr,
int pshared
)
{
46fac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46fb0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46fb4: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
46fb8: 4a88 tstl %a0 <== NOT EXECUTED
46fba: 6712 beqs 46fce <pthread_mutexattr_setpshared+0x22><== NOT EXECUTED
46fbc: 4a90 tstl %a0@ <== NOT EXECUTED
46fbe: 670e beqs 46fce <pthread_mutexattr_setpshared+0x22><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
46fc0: 7201 moveq #1,%d1 <== NOT EXECUTED
46fc2: b280 cmpl %d0,%d1 <== NOT EXECUTED
46fc4: 6508 bcss 46fce <pthread_mutexattr_setpshared+0x22><== NOT EXECUTED
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
46fc6: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
46fca: 4280 clrl %d0 <== NOT EXECUTED
46fcc: 6002 bras 46fd0 <pthread_mutexattr_setpshared+0x24><== NOT EXECUTED
default:
return EINVAL;
46fce: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
46fd0: 4e5e unlk %fp <== NOT EXECUTED
00045270 <pthread_mutexattr_settype>:
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
int pthread_mutexattr_settype(
pthread_mutexattr_t *attr,
int type
)
{
45270: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45274: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45278: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr || !attr->is_initialized )
4527c: 4a88 tstl %a0 <== NOT EXECUTED
4527e: 6712 beqs 45292 <pthread_mutexattr_settype+0x22> <== NOT EXECUTED
45280: 4a90 tstl %a0@ <== NOT EXECUTED
45282: 670e beqs 45292 <pthread_mutexattr_settype+0x22> <== NOT EXECUTED
return EINVAL;
switch ( type ) {
45284: 7203 moveq #3,%d1 <== NOT EXECUTED
45286: b280 cmpl %d0,%d1 <== NOT EXECUTED
45288: 6508 bcss 45292 <pthread_mutexattr_settype+0x22> <== NOT EXECUTED
case PTHREAD_MUTEX_NORMAL:
case PTHREAD_MUTEX_RECURSIVE:
case PTHREAD_MUTEX_ERRORCHECK:
case PTHREAD_MUTEX_DEFAULT:
attr->type = type;
4528a: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
return 0;
4528e: 4280 clrl %d0 <== NOT EXECUTED
45290: 6002 bras 45294 <pthread_mutexattr_settype+0x24> <== NOT EXECUTED
default:
return EINVAL;
45292: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
45294: 4e5e unlk %fp <== NOT EXECUTED
00045d0c <pthread_once>:
int pthread_once(
pthread_once_t *once_control,
void (*init_routine)(void)
)
{
45d0c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
45d10: 2f0b movel %a3,%sp@- <== NOT EXECUTED
45d12: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
45d16: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45d18: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !once_control || !init_routine )
45d1c: 4a8a tstl %a2 <== NOT EXECUTED
45d1e: 674a beqs 45d6a <pthread_once+0x5e> <== NOT EXECUTED
45d20: 4a8b tstl %a3 <== NOT EXECUTED
45d22: 6746 beqs 45d6a <pthread_once+0x5e> <== NOT EXECUTED
return EINVAL;
if ( !once_control->init_executed ) {
45d24: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
45d28: 6644 bnes 45d6e <pthread_once+0x62> <== NOT EXECUTED
rtems_mode saveMode;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
45d2a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45d2e: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
45d32: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
45d36: 4eb9 0004 681c jsr 4681c <rtems_task_mode> <== NOT EXECUTED
if ( !once_control->init_executed ) {
45d3c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45d40: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
45d44: 660c bnes 45d52 <pthread_once+0x46> <== NOT EXECUTED
once_control->is_initialized = true;
45d46: 7001 moveq #1,%d0 <== NOT EXECUTED
45d48: 2480 movel %d0,%a2@ <== NOT EXECUTED
once_control->init_executed = true;
45d4a: 7001 moveq #1,%d0 <== NOT EXECUTED
45d4c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
(*init_routine)();
45d50: 4e93 jsr %a3@ <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
45d52: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45d56: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
45d5a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
45d5e: 4eb9 0004 681c jsr 4681c <rtems_task_mode> <== NOT EXECUTED
45d64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45d68: 6004 bras 45d6e <pthread_once+0x62> <== NOT EXECUTED
pthread_once_t *once_control,
void (*init_routine)(void)
)
{
if ( !once_control || !init_routine )
return EINVAL;
45d6a: 7016 moveq #22,%d0 <== NOT EXECUTED
45d6c: 6002 bras 45d70 <pthread_once+0x64> <== NOT EXECUTED
once_control->init_executed = true;
(*init_routine)();
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
}
return 0;
45d6e: 4280 clrl %d0 <== NOT EXECUTED
}
45d70: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
45d74: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
45d78: 4e5e unlk %fp <== NOT EXECUTED
00046468 <pthread_rwlock_destroy>:
*/
int pthread_rwlock_destroy(
pthread_rwlock_t *rwlock
)
{
46468: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4646c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46470: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46472: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock = NULL;
Objects_Locations location;
if ( !rwlock )
46474: 4a88 tstl %a0 <== NOT EXECUTED
46476: 6760 beqs 464d8 <pthread_rwlock_destroy+0x70> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get (
pthread_rwlock_t *RWLock,
Objects_Locations *location
)
{
return (POSIX_RWLock_Control *) _Objects_Get(
46478: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4647c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4647e: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
46484: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
4648a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4648e: 2440 moveal %d0,%a2 <== NOT EXECUTED
46490: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46494: 6642 bnes 464d8 <pthread_rwlock_destroy+0x70> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* If there is at least one thread waiting, then do not delete it.
*/
if ( _Thread_queue_First( &the_rwlock->RWLock.Wait_queue ) != NULL ) {
46496: 486a 0010 pea %a2@(16) <== NOT EXECUTED
4649a: 47f9 0004 97ea lea 497ea <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
464a0: 4eb9 0004 9f60 jsr 49f60 <_Thread_queue_First> <== NOT EXECUTED
464a6: 588f addql #4,%sp <== NOT EXECUTED
464a8: 4a80 tstl %d0 <== NOT EXECUTED
464aa: 6706 beqs 464b2 <pthread_rwlock_destroy+0x4a> <== NOT EXECUTED
_Thread_Enable_dispatch();
464ac: 4e93 jsr %a3@ <== NOT EXECUTED
return EBUSY;
464ae: 7010 moveq #16,%d0 <== NOT EXECUTED
464b0: 6028 bras 464da <pthread_rwlock_destroy+0x72> <== NOT EXECUTED
/*
* POSIX doesn't require behavior when it is locked.
*/
_Objects_Close( &_POSIX_RWLock_Information, &the_rwlock->Object );
464b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
464b4: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
464ba: 4eb9 0004 89a8 jsr 489a8 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free (
POSIX_RWLock_Control *the_RWLock
)
{
_Objects_Free( &_POSIX_RWLock_Information, &the_RWLock->Object );
464c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
464c2: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
464c8: 4eb9 0004 8c20 jsr 48c20 <_Objects_Free> <== NOT EXECUTED
_POSIX_RWLock_Free( the_rwlock );
_Thread_Enable_dispatch();
464ce: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
464d0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
464d4: 4280 clrl %d0 <== NOT EXECUTED
464d6: 6002 bras 464da <pthread_rwlock_destroy+0x72> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
464d8: 7016 moveq #22,%d0 <== NOT EXECUTED
}
464da: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
464de: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
464e2: 4e5e unlk %fp <== NOT EXECUTED
...
000464e8 <pthread_rwlock_init>:
int pthread_rwlock_init(
pthread_rwlock_t *rwlock,
const pthread_rwlockattr_t *attr
)
{
464e8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
464ec: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
464f0: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
464f4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
const pthread_rwlockattr_t *the_attr;
/*
* Error check parameters
*/
if ( !rwlock )
464f8: 4a8a tstl %a2 <== NOT EXECUTED
464fa: 6700 0084 beqw 46580 <pthread_rwlock_init+0x98> <== NOT EXECUTED
return EINVAL;
/*
* If the user passed in NULL, use the default attributes
*/
if ( attr ) {
464fe: 4a88 tstl %a0 <== NOT EXECUTED
46500: 6614 bnes 46516 <pthread_rwlock_init+0x2e> <== NOT EXECUTED
the_attr = attr;
} else {
(void) pthread_rwlockattr_init( &default_attr );
46502: 240e movel %fp,%d2 <== NOT EXECUTED
46504: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED
4650a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4650c: 4eb9 0004 6e04 jsr 46e04 <pthread_rwlockattr_init> <== NOT EXECUTED
46512: 588f addql #4,%sp <== NOT EXECUTED
the_attr = &default_attr;
46514: 2042 moveal %d2,%a0 <== NOT EXECUTED
}
/*
* Now start error checking the attributes that we are going to use
*/
if ( !the_attr->is_initialized )
46516: 4a90 tstl %a0@ <== NOT EXECUTED
46518: 6766 beqs 46580 <pthread_rwlock_init+0x98> <== NOT EXECUTED
return EINVAL;
switch ( the_attr->process_shared ) {
4651a: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
4651e: 6660 bnes 46580 <pthread_rwlock_init+0x98> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46520: 2039 0006 076c movel 6076c <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46526: 5280 addql #1,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(
CORE_RWLock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
46528: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
4652c: 23c0 0006 076c movel %d0,6076c <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free RWLock control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void )
{
return (POSIX_RWLock_Control *)
_Objects_Allocate( &_POSIX_RWLock_Information );
46532: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
46538: 49f9 0004 97ea lea 497ea <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED
4653e: 4eb9 0004 892c jsr 4892c <_Objects_Allocate> <== NOT EXECUTED
*/
_Thread_Disable_dispatch(); /* prevents deletion */
the_rwlock = _POSIX_RWLock_Allocate();
if ( !the_rwlock ) {
46544: 588f addql #4,%sp <== NOT EXECUTED
46546: 2640 moveal %d0,%a3 <== NOT EXECUTED
46548: 4a80 tstl %d0 <== NOT EXECUTED
4654a: 6606 bnes 46552 <pthread_rwlock_init+0x6a> <== NOT EXECUTED
_Thread_Enable_dispatch();
4654c: 4e94 jsr %a4@ <== NOT EXECUTED
return EAGAIN;
4654e: 700b moveq #11,%d0 <== NOT EXECUTED
46550: 6030 bras 46582 <pthread_rwlock_init+0x9a> <== NOT EXECUTED
}
_CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );
46552: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46556: 486b 0010 pea %a3@(16) <== NOT EXECUTED
4655a: 4eb9 0004 8128 jsr 48128 <_CORE_RWLock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46560: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
46564: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46566: 2079 0006 090c moveal 6090c <_POSIX_RWLock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4656c: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4656e: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
46572: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
&_POSIX_RWLock_Information,
&the_rwlock->Object,
0
);
*rwlock = the_rwlock->Object.id;
46576: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
46578: 4e94 jsr %a4@ <== NOT EXECUTED
return 0;
4657a: 508f addql #8,%sp <== NOT EXECUTED
4657c: 4280 clrl %d0 <== NOT EXECUTED
4657e: 6002 bras 46582 <pthread_rwlock_init+0x9a> <== NOT EXECUTED
switch ( the_attr->process_shared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
46580: 7016 moveq #22,%d0 <== NOT EXECUTED
*rwlock = the_rwlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
46582: 4cee 1c04 ffe4 moveml %fp@(-28),%d2/%a2-%a4 <== NOT EXECUTED
46588: 4e5e unlk %fp <== NOT EXECUTED
0004658c <pthread_rwlock_rdlock>:
*/
int pthread_rwlock_rdlock(
pthread_rwlock_t *rwlock
)
{
4658c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46590: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46592: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
46596: 4a8a tstl %a2 <== NOT EXECUTED
46598: 674e beqs 465e8 <pthread_rwlock_rdlock+0x5c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get (
pthread_rwlock_t *RWLock,
Objects_Locations *location
)
{
return (POSIX_RWLock_Control *) _Objects_Get(
4659a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4659e: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
465a0: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
465a6: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
465ac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
465b0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
465b4: 6632 bnes 465e8 <pthread_rwlock_rdlock+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
465b6: 42a7 clrl %sp@- <== NOT EXECUTED
465b8: 2040 moveal %d0,%a0 <== NOT EXECUTED
465ba: 42a7 clrl %sp@- <== NOT EXECUTED
465bc: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
465c0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
465c2: 4868 0010 pea %a0@(16) <== NOT EXECUTED
465c6: 4eb9 0004 815c jsr 4815c <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
true, /* we are willing to wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
465cc: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
465d2: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
465d8: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
465dc: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
465e2: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
465e6: 6002 bras 465ea <pthread_rwlock_rdlock+0x5e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
465e8: 7016 moveq #22,%d0 <== NOT EXECUTED
}
465ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
465ee: 4e5e unlk %fp <== NOT EXECUTED
...
000465f4 <pthread_rwlock_timedrdlock>:
int pthread_rwlock_timedrdlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
465f4: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
465f8: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
465fc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Locations location;
Watchdog_Interval ticks;
bool do_wait = true;
POSIX_Absolute_timeout_conversion_results_t status;
if ( !rwlock )
46600: 4a8a tstl %a2 <== NOT EXECUTED
46602: 6700 008c beqw 46690 <pthread_rwlock_timedrdlock+0x9c><== NOT EXECUTED
*
* If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,
* POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
* then we should not wait.
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
46606: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4660a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4660e: 4eb9 0004 c1e8 jsr 4c1e8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
46614: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46618: 2400 movel %d0,%d2 <== NOT EXECUTED
4661a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4661c: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
46622: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
46628: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4662c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46630: 665e bnes 46690 <pthread_rwlock_timedrdlock+0x9c><== NOT EXECUTED
int _EXFUN(pthread_rwlock_init,
(pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr));
int _EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_timedrdlock,
46632: 7203 moveq #3,%d1 <== NOT EXECUTED
46634: b282 cmpl %d2,%d1 <== NOT EXECUTED
46636: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
46638: 42a7 clrl %sp@- <== NOT EXECUTED
4663a: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
4663e: 4483 negl %d3 <== NOT EXECUTED
46640: 4281 clrl %d1 <== NOT EXECUTED
46642: 1203 moveb %d3,%d1 <== NOT EXECUTED
46644: 2040 moveal %d0,%a0 <== NOT EXECUTED
46646: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46648: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4664a: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4664e: 4eb9 0004 815c jsr 4815c <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
46654: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait ) {
4665a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4665e: 4a03 tstb %d3 <== NOT EXECUTED
46660: 661a bnes 4667c <pthread_rwlock_timedrdlock+0x88><== NOT EXECUTED
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
46662: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
46668: 7002 moveq #2,%d0 <== NOT EXECUTED
4666a: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
4666e: 660c bnes 4667c <pthread_rwlock_timedrdlock+0x88><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
46670: 4a82 tstl %d2 <== NOT EXECUTED
46672: 671c beqs 46690 <pthread_rwlock_timedrdlock+0x9c><== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
46674: 5382 subql #1,%d2 <== NOT EXECUTED
46676: 7201 moveq #1,%d1 <== NOT EXECUTED
46678: b282 cmpl %d2,%d1 <== NOT EXECUTED
4667a: 6418 bccs 46694 <pthread_rwlock_timedrdlock+0xa0><== NOT EXECUTED
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
4667c: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
46682: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
46686: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
4668c: 588f addql #4,%sp <== NOT EXECUTED
4668e: 6006 bras 46696 <pthread_rwlock_timedrdlock+0xa2><== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !do_wait ) {
if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
46690: 7016 moveq #22,%d0 <== NOT EXECUTED
46692: 6002 bras 46696 <pthread_rwlock_timedrdlock+0xa2><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
46694: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46696: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4669c: 4e5e unlk %fp <== NOT EXECUTED
000466a0 <pthread_rwlock_timedwrlock>:
int pthread_rwlock_timedwrlock(
pthread_rwlock_t *rwlock,
const struct timespec *abstime
)
{
466a0: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
466a4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
466a8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Objects_Locations location;
Watchdog_Interval ticks;
bool do_wait = true;
POSIX_Absolute_timeout_conversion_results_t status;
if ( !rwlock )
466ac: 4a8a tstl %a2 <== NOT EXECUTED
466ae: 6700 008c beqw 4673c <pthread_rwlock_timedwrlock+0x9c><== NOT EXECUTED
*
* If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,
* POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
* then we should not wait.
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
466b2: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
466b6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
466ba: 4eb9 0004 c1e8 jsr 4c1e8 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
466c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
466c4: 2400 movel %d0,%d2 <== NOT EXECUTED
466c6: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
466c8: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
466ce: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
466d4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
466d8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
466dc: 665e bnes 4673c <pthread_rwlock_timedwrlock+0x9c><== NOT EXECUTED
(pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
int _EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));
int _EXFUN(pthread_rwlock_timedwrlock,
466de: 7203 moveq #3,%d1 <== NOT EXECUTED
466e0: b282 cmpl %d2,%d1 <== NOT EXECUTED
466e2: 57c3 seq %d3 <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
466e4: 42a7 clrl %sp@- <== NOT EXECUTED
466e6: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
466ea: 4483 negl %d3 <== NOT EXECUTED
466ec: 4281 clrl %d1 <== NOT EXECUTED
466ee: 1203 moveb %d3,%d1 <== NOT EXECUTED
466f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
466f2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
466f4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
466f6: 4868 0010 pea %a0@(16) <== NOT EXECUTED
466fa: 4eb9 0004 820c jsr 4820c <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
do_wait,
ticks,
NULL
);
_Thread_Enable_dispatch();
46700: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !do_wait &&
46706: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4670a: 4a03 tstb %d3 <== NOT EXECUTED
4670c: 661a bnes 46728 <pthread_rwlock_timedwrlock+0x88><== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
4670e: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
ticks,
NULL
);
_Thread_Enable_dispatch();
if ( !do_wait &&
46714: 7002 moveq #2,%d0 <== NOT EXECUTED
46716: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
4671a: 660c bnes 46728 <pthread_rwlock_timedwrlock+0x88><== NOT EXECUTED
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
4671c: 4a82 tstl %d2 <== NOT EXECUTED
4671e: 671c beqs 4673c <pthread_rwlock_timedwrlock+0x9c><== NOT EXECUTED
return EINVAL;
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
46720: 5382 subql #1,%d2 <== NOT EXECUTED
46722: 7201 moveq #1,%d1 <== NOT EXECUTED
46724: b282 cmpl %d2,%d1 <== NOT EXECUTED
46726: 6418 bccs 46740 <pthread_rwlock_timedwrlock+0xa0><== NOT EXECUTED
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
46728: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
}
return _POSIX_RWLock_Translate_core_RWLock_return_code(
4672e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
46732: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
46738: 588f addql #4,%sp <== NOT EXECUTED
4673a: 6006 bras 46742 <pthread_rwlock_timedwrlock+0xa2><== NOT EXECUTED
_Thread_Enable_dispatch();
if ( !do_wait &&
(_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )
return EINVAL;
4673c: 7016 moveq #22,%d0 <== NOT EXECUTED
4673e: 6002 bras 46742 <pthread_rwlock_timedwrlock+0xa2><== NOT EXECUTED
if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
return ETIMEDOUT;
46740: 7074 moveq #116,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return EINVAL;
}
46742: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
46748: 4e5e unlk %fp <== NOT EXECUTED
00046764 <pthread_rwlock_tryrdlock>:
*/
int pthread_rwlock_tryrdlock(
pthread_rwlock_t *rwlock
)
{
46764: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46768: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4676a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
4676e: 4a8a tstl %a2 <== NOT EXECUTED
46770: 674c beqs 467be <pthread_rwlock_tryrdlock+0x5a> <== NOT EXECUTED
46772: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46776: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
46778: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
4677e: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
46784: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46788: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4678c: 6630 bnes 467be <pthread_rwlock_tryrdlock+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_reading(
4678e: 42a7 clrl %sp@- <== NOT EXECUTED
46790: 2040 moveal %d0,%a0 <== NOT EXECUTED
46792: 42a7 clrl %sp@- <== NOT EXECUTED
46794: 42a7 clrl %sp@- <== NOT EXECUTED
46796: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
46798: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4679c: 4eb9 0004 815c jsr 4815c <_CORE_RWLock_Obtain_for_reading> <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
467a2: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
467a8: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
467ae: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
467b2: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
467b8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
467bc: 6002 bras 467c0 <pthread_rwlock_tryrdlock+0x5c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
467be: 7016 moveq #22,%d0 <== NOT EXECUTED
}
467c0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
467c4: 4e5e unlk %fp <== NOT EXECUTED
000467c8 <pthread_rwlock_trywrlock>:
*/
int pthread_rwlock_trywrlock(
pthread_rwlock_t *rwlock
)
{
467c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
467cc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
467ce: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
467d2: 4a8a tstl %a2 <== NOT EXECUTED
467d4: 674c beqs 46822 <pthread_rwlock_trywrlock+0x5a> <== NOT EXECUTED
467d6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
467da: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
467dc: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
467e2: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
467e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
467ec: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
467f0: 6630 bnes 46822 <pthread_rwlock_trywrlock+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
467f2: 42a7 clrl %sp@- <== NOT EXECUTED
467f4: 2040 moveal %d0,%a0 <== NOT EXECUTED
467f6: 42a7 clrl %sp@- <== NOT EXECUTED
467f8: 42a7 clrl %sp@- <== NOT EXECUTED
467fa: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
467fc: 4868 0010 pea %a0@(16) <== NOT EXECUTED
46800: 4eb9 0004 820c jsr 4820c <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
false, /* we are not willing to wait */
0,
NULL
);
_Thread_Enable_dispatch();
46806: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
4680c: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
46812: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
46816: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
4681c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
46820: 6002 bras 46824 <pthread_rwlock_trywrlock+0x5c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46822: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46824: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
46828: 4e5e unlk %fp <== NOT EXECUTED
0004682c <pthread_rwlock_unlock>:
*/
int pthread_rwlock_unlock(
pthread_rwlock_t *rwlock
)
{
4682c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46830: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46834: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
CORE_RWLock_Status status;
if ( !rwlock )
46836: 4a88 tstl %a0 <== NOT EXECUTED
46838: 673c beqs 46876 <pthread_rwlock_unlock+0x4a> <== NOT EXECUTED
4683a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4683e: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46840: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
46846: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
4684c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46850: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46854: 6620 bnes 46876 <pthread_rwlock_unlock+0x4a> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_RWLock_Release( &the_rwlock->RWLock );
46856: 2040 moveal %d0,%a0 <== NOT EXECUTED
46858: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4685c: 4eb9 0004 8298 jsr 48298 <_CORE_RWLock_Release> <== NOT EXECUTED
46862: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
46864: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code( status );
4686a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4686c: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
46872: 508f addql #8,%sp <== NOT EXECUTED
46874: 6002 bras 46878 <pthread_rwlock_unlock+0x4c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
46876: 7016 moveq #22,%d0 <== NOT EXECUTED
}
46878: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4687c: 4e5e unlk %fp <== NOT EXECUTED
00046880 <pthread_rwlock_wrlock>:
*/
int pthread_rwlock_wrlock(
pthread_rwlock_t *rwlock
)
{
46880: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46884: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46886: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_RWLock_Control *the_rwlock;
Objects_Locations location;
if ( !rwlock )
4688a: 4a8a tstl %a2 <== NOT EXECUTED
4688c: 674e beqs 468dc <pthread_rwlock_wrlock+0x5c> <== NOT EXECUTED
4688e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46892: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
46894: 4879 0006 08f4 pea 608f4 <_POSIX_RWLock_Information> <== NOT EXECUTED
4689a: 4eb9 0004 8d84 jsr 48d84 <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_rwlock = _POSIX_RWLock_Get( rwlock, &location );
switch ( location ) {
468a0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
468a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
468a8: 6632 bnes 468dc <pthread_rwlock_wrlock+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_RWLock_Obtain_for_writing(
468aa: 42a7 clrl %sp@- <== NOT EXECUTED
468ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
468ae: 42a7 clrl %sp@- <== NOT EXECUTED
468b0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
468b4: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
468b6: 4868 0010 pea %a0@(16) <== NOT EXECUTED
468ba: 4eb9 0004 820c jsr 4820c <_CORE_RWLock_Obtain_for_writing> <== NOT EXECUTED
true, /* do not timeout -- wait forever */
0,
NULL
);
_Thread_Enable_dispatch();
468c0: 4eb9 0004 97ea jsr 497ea <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_RWLock_Translate_core_RWLock_return_code(
(CORE_RWLock_Status) _Thread_Executing->Wait.return_code
468c6: 2079 0006 0bf6 moveal 60bf6 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
0,
NULL
);
_Thread_Enable_dispatch();
return _POSIX_RWLock_Translate_core_RWLock_return_code(
468cc: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
468d0: 4eb9 0004 674c jsr 4674c <_POSIX_RWLock_Translate_core_RWLock_return_code><== NOT EXECUTED
468d6: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
468da: 6002 bras 468de <pthread_rwlock_wrlock+0x5e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
468dc: 7016 moveq #22,%d0 <== NOT EXECUTED
}
468de: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
468e2: 4e5e unlk %fp <== NOT EXECUTED
...
00046dc4 <pthread_rwlockattr_destroy>:
*/
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
46dc4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46dc8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr || attr->is_initialized == false )
46dcc: 4a88 tstl %a0 <== NOT EXECUTED
46dce: 670a beqs 46dda <pthread_rwlockattr_destroy+0x16><== NOT EXECUTED
46dd0: 4a90 tstl %a0@ <== NOT EXECUTED
46dd2: 6706 beqs 46dda <pthread_rwlockattr_destroy+0x16><== NOT EXECUTED
return EINVAL;
attr->is_initialized = false;
46dd4: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
46dd6: 4280 clrl %d0 <== NOT EXECUTED
46dd8: 6002 bras 46ddc <pthread_rwlockattr_destroy+0x18><== NOT EXECUTED
int pthread_rwlockattr_destroy(
pthread_rwlockattr_t *attr
)
{
if ( !attr || attr->is_initialized == false )
return EINVAL;
46dda: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = false;
return 0;
}
46ddc: 4e5e unlk %fp <== NOT EXECUTED
00046de0 <pthread_rwlockattr_getpshared>:
int pthread_rwlockattr_getpshared(
const pthread_rwlockattr_t *attr,
int *pshared
)
{
46de0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46de4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
46de8: 4a88 tstl %a0 <== NOT EXECUTED
46dea: 6710 beqs 46dfc <pthread_rwlockattr_getpshared+0x1c><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
46dec: 4a90 tstl %a0@ <== NOT EXECUTED
46dee: 670c beqs 46dfc <pthread_rwlockattr_getpshared+0x1c><== NOT EXECUTED
return EINVAL;
*pshared = attr->process_shared;
46df0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
return 0;
46df4: 4280 clrl %d0 <== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
*pshared = attr->process_shared;
46df6: 22a8 0004 movel %a0@(4),%a1@ <== NOT EXECUTED
return 0;
46dfa: 6002 bras 46dfe <pthread_rwlockattr_getpshared+0x1e><== NOT EXECUTED
{
if ( !attr )
return EINVAL;
if ( !attr->is_initialized )
return EINVAL;
46dfc: 7016 moveq #22,%d0 <== NOT EXECUTED
*pshared = attr->process_shared;
return 0;
}
46dfe: 4e5e unlk %fp <== NOT EXECUTED
...
00046e04 <pthread_rwlockattr_init>:
*/
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
46e04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46e08: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !attr )
46e0c: 4a88 tstl %a0 <== NOT EXECUTED
46e0e: 670c beqs 46e1c <pthread_rwlockattr_init+0x18> <== NOT EXECUTED
return EINVAL;
attr->is_initialized = true;
46e10: 7001 moveq #1,%d0 <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
46e12: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
)
{
if ( !attr )
return EINVAL;
attr->is_initialized = true;
46e16: 2080 movel %d0,%a0@ <== NOT EXECUTED
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
46e18: 4280 clrl %d0 <== NOT EXECUTED
46e1a: 6002 bras 46e1e <pthread_rwlockattr_init+0x1a> <== NOT EXECUTED
int pthread_rwlockattr_init(
pthread_rwlockattr_t *attr
)
{
if ( !attr )
return EINVAL;
46e1c: 7016 moveq #22,%d0 <== NOT EXECUTED
attr->is_initialized = true;
attr->process_shared = PTHREAD_PROCESS_PRIVATE;
return 0;
}
46e1e: 4e5e unlk %fp <== NOT EXECUTED
...
00046e24 <pthread_rwlockattr_setpshared>:
int pthread_rwlockattr_setpshared(
pthread_rwlockattr_t *attr,
int pshared
)
{
46e24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46e28: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
46e2c: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
if ( !attr )
46e30: 4a88 tstl %a0 <== NOT EXECUTED
46e32: 6712 beqs 46e46 <pthread_rwlockattr_setpshared+0x22><== NOT EXECUTED
return EINVAL;
if ( !attr->is_initialized )
46e34: 4a90 tstl %a0@ <== NOT EXECUTED
46e36: 670e beqs 46e46 <pthread_rwlockattr_setpshared+0x22><== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
46e38: 7201 moveq #1,%d1 <== NOT EXECUTED
46e3a: b280 cmpl %d0,%d1 <== NOT EXECUTED
46e3c: 6508 bcss 46e46 <pthread_rwlockattr_setpshared+0x22><== NOT EXECUTED
case PTHREAD_PROCESS_SHARED:
case PTHREAD_PROCESS_PRIVATE:
attr->process_shared = pshared;
46e3e: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
return 0;
46e42: 4280 clrl %d0 <== NOT EXECUTED
46e44: 6002 bras 46e48 <pthread_rwlockattr_setpshared+0x24><== NOT EXECUTED
default:
return EINVAL;
46e46: 7016 moveq #22,%d0 <== NOT EXECUTED
}
}
46e48: 4e5e unlk %fp <== NOT EXECUTED
00045234 <pthread_setcancelstate>:
int pthread_setcancelstate(
int state,
int *oldstate
)
{
45234: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45238: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4523c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
* Don't even think about deleting a resource from an ISR.
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
45240: 4ab9 0005 e602 tstl 5e602 <_Per_CPU_Information+0x8> <== NOT EXECUTED
45246: 663c bnes 45284 <pthread_setcancelstate+0x50> <== NOT EXECUTED
return EPROTO;
if ( !oldstate )
45248: 4a89 tstl %a1 <== NOT EXECUTED
4524a: 673c beqs 45288 <pthread_setcancelstate+0x54> <== NOT EXECUTED
return EINVAL;
if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE )
4524c: 7201 moveq #1,%d1 <== NOT EXECUTED
4524e: b280 cmpl %d0,%d1 <== NOT EXECUTED
45250: 6536 bcss 45288 <pthread_setcancelstate+0x54> <== NOT EXECUTED
return EINVAL;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45252: 2079 0005 e606 moveal 5e606 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45258: 2239 0005 e17c movel 5e17c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
4525e: 5281 addql #1,%d1 <== NOT EXECUTED
45260: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
45264: 23c1 0005 e17c movel %d1,5e17c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
*oldstate = thread_support->cancelability_state;
4526a: 22a8 00d8 movel %a0@(216),%a1@ <== NOT EXECUTED
thread_support->cancelability_state = state;
4526e: 2140 00d8 movel %d0,%a0@(216) <== NOT EXECUTED
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing);
45272: 2f39 0005 e606 movel 5e606 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
45278: 4eb9 0004 a040 jsr 4a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
4527e: 588f addql #4,%sp <== NOT EXECUTED
45280: 4280 clrl %d0 <== NOT EXECUTED
45282: 6006 bras 4528a <pthread_setcancelstate+0x56> <== NOT EXECUTED
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
return EPROTO;
45284: 7047 moveq #71,%d0 <== NOT EXECUTED
45286: 6002 bras 4528a <pthread_setcancelstate+0x56> <== NOT EXECUTED
if ( !oldstate )
return EINVAL;
if ( state != PTHREAD_CANCEL_ENABLE && state != PTHREAD_CANCEL_DISABLE )
return EINVAL;
45288: 7016 moveq #22,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
4528a: 4e5e unlk %fp <== NOT EXECUTED
...
00045290 <pthread_setcanceltype>:
int pthread_setcanceltype(
int type,
int *oldtype
)
{
45290: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45294: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45298: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
* Don't even think about deleting a resource from an ISR.
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
4529c: 4ab9 0005 e602 tstl 5e602 <_Per_CPU_Information+0x8> <== NOT EXECUTED
452a2: 663c bnes 452e0 <pthread_setcanceltype+0x50> <== NOT EXECUTED
return EPROTO;
if ( !oldtype )
452a4: 4a89 tstl %a1 <== NOT EXECUTED
452a6: 673c beqs 452e4 <pthread_setcanceltype+0x54> <== NOT EXECUTED
return EINVAL;
if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS )
452a8: 7201 moveq #1,%d1 <== NOT EXECUTED
452aa: b280 cmpl %d0,%d1 <== NOT EXECUTED
452ac: 6536 bcss 452e4 <pthread_setcanceltype+0x54> <== NOT EXECUTED
return EINVAL;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
452ae: 2079 0005 e606 moveal 5e606 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
452b4: 2239 0005 e17c movel 5e17c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
452ba: 5281 addql #1,%d1 <== NOT EXECUTED
452bc: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
452c0: 23c1 0005 e17c movel %d1,5e17c <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
*oldtype = thread_support->cancelability_type;
452c6: 22a8 00dc movel %a0@(220),%a1@ <== NOT EXECUTED
thread_support->cancelability_type = type;
452ca: 2140 00dc movel %d0,%a0@(220) <== NOT EXECUTED
_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch(_Thread_Executing);
452ce: 2f39 0005 e606 movel 5e606 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
452d4: 4eb9 0004 a040 jsr 4a040 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch><== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
452da: 588f addql #4,%sp <== NOT EXECUTED
452dc: 4280 clrl %d0 <== NOT EXECUTED
452de: 6006 bras 452e6 <pthread_setcanceltype+0x56> <== NOT EXECUTED
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
return EPROTO;
452e0: 7047 moveq #71,%d0 <== NOT EXECUTED
452e2: 6002 bras 452e6 <pthread_setcanceltype+0x56> <== NOT EXECUTED
if ( !oldtype )
return EINVAL;
if ( type != PTHREAD_CANCEL_DEFERRED && type != PTHREAD_CANCEL_ASYNCHRONOUS )
return EINVAL;
452e4: 7016 moveq #22,%d0 <== NOT EXECUTED
/*
* _Thread_Enable_dispatch is invoked by above call.
*/
return 0;
}
452e6: 4e5e unlk %fp <== NOT EXECUTED
...
00047b70 <pthread_setschedparam>:
int pthread_setschedparam(
pthread_t thread,
int policy,
struct sched_param *param
)
{
47b70: 4e56 ffe0 linkw %fp,#-32
47b74: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
47b78: 242e 000c movel %fp@(12),%d2
47b7c: 282e 0010 movel %fp@(16),%d4
int rc;
/*
* Check all the parameters
*/
if ( !param )
47b80: 6700 00e0 beqw 47c62 <pthread_setschedparam+0xf2>
return EINVAL;
rc = _POSIX_Thread_Translate_sched_param(
47b84: 486e fff8 pea %fp@(-8)
47b88: 486e fffc pea %fp@(-4)
47b8c: 2f04 movel %d4,%sp@-
47b8e: 2f02 movel %d2,%sp@-
47b90: 4eb9 0004 d06c jsr 4d06c <_POSIX_Thread_Translate_sched_param>
policy,
param,
&budget_algorithm,
&budget_callout
);
if ( rc )
47b96: 4fef 0010 lea %sp@(16),%sp
* Check all the parameters
*/
if ( !param )
return EINVAL;
rc = _POSIX_Thread_Translate_sched_param(
47b9a: 2600 movel %d0,%d3
policy,
param,
&budget_algorithm,
&budget_callout
);
if ( rc )
47b9c: 6600 00ca bnew 47c68 <pthread_setschedparam+0xf8>
47ba0: 486e fff4 pea %fp@(-12)
47ba4: 2f2e 0008 movel %fp@(8),%sp@-
47ba8: 4879 0006 283a pea 6283a <_POSIX_Threads_Information>
47bae: 4eb9 0004 9944 jsr 49944 <_Objects_Get>
/*
* Actually change the scheduling policy and parameters
*/
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
47bb4: 4fef 000c lea %sp@(12),%sp
47bb8: 2640 moveal %d0,%a3
47bba: 4aae fff4 tstl %fp@(-12)
47bbe: 6600 00a6 bnew 47c66 <pthread_setschedparam+0xf6>
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
47bc2: 246b 0102 moveal %a3@(258),%a2
if ( api->schedpolicy == SCHED_SPORADIC )
47bc6: 7004 moveq #4,%d0
47bc8: b0aa 0084 cmpl %a2@(132),%d0
47bcc: 660c bnes 47bda <pthread_setschedparam+0x6a> <== ALWAYS TAKEN
(void) _Watchdog_Remove( &api->Sporadic_timer );
47bce: 486a 00a8 pea %a2@(168) <== NOT EXECUTED
47bd2: 4eb9 0004 b3b8 jsr 4b3b8 <_Watchdog_Remove> <== NOT EXECUTED
47bd8: 588f addql #4,%sp <== NOT EXECUTED
api->schedpolicy = policy;
47bda: 2542 0084 movel %d2,%a2@(132)
api->schedparam = *param;
47bde: 4878 001c pea 1c <OPER2+0x8>
47be2: 2f04 movel %d4,%sp@-
47be4: 486a 0088 pea %a2@(136)
47be8: 4eb9 0004 fcc4 jsr 4fcc4 <memcpy>
the_thread->budget_algorithm = budget_algorithm;
47bee: 276e fffc 007a movel %fp@(-4),%a3@(122)
the_thread->budget_callout = budget_callout;
switch ( api->schedpolicy ) {
47bf4: 4fef 000c lea %sp@(12),%sp
(void) _Watchdog_Remove( &api->Sporadic_timer );
api->schedpolicy = policy;
api->schedparam = *param;
the_thread->budget_algorithm = budget_algorithm;
the_thread->budget_callout = budget_callout;
47bf8: 276e fff8 007e movel %fp@(-8),%a3@(126)
switch ( api->schedpolicy ) {
47bfe: 4a82 tstl %d2
47c00: 6d58 blts 47c5a <pthread_setschedparam+0xea> <== NEVER TAKEN
47c02: 7002 moveq #2,%d0
47c04: b082 cmpl %d2,%d0
47c06: 6c0a bges 47c12 <pthread_setschedparam+0xa2> <== ALWAYS TAKEN
47c08: 103c 0004 moveb #4,%d0 <== NOT EXECUTED
47c0c: b082 cmpl %d2,%d0 <== NOT EXECUTED
47c0e: 664a bnes 47c5a <pthread_setschedparam+0xea> <== NOT EXECUTED
47c10: 602a bras 47c3c <pthread_setschedparam+0xcc> <== NOT EXECUTED
47c12: 4280 clrl %d0
47c14: 1039 0006 0d96 moveb 60d96 <rtems_maximum_priority>,%d0
case SCHED_OTHER:
case SCHED_FIFO:
case SCHED_RR:
the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;
47c1a: 41f9 0006 2630 lea 62630 <_Thread_Ticks_per_timeslice>,%a0
47c20: 90aa 0088 subl %a2@(136),%d0
47c24: 2750 0076 movel %a0@,%a3@(118)
the_thread->real_priority =
47c28: 2740 0018 movel %d0,%a3@(24)
_POSIX_Priority_To_core( api->schedparam.sched_priority );
_Thread_Change_priority(
47c2c: 4878 0001 pea 1 <ADD>
47c30: 2f00 movel %d0,%sp@-
47c32: 2f0b movel %a3,%sp@-
47c34: 4eb9 0004 9f10 jsr 49f10 <_Thread_Change_priority>
47c3a: 601a bras 47c56 <pthread_setschedparam+0xe6>
true
);
break;
case SCHED_SPORADIC:
api->ss_high_priority = api->schedparam.sched_priority;
47c3c: 256a 0088 00a4 movel %a2@(136),%a2@(164) <== NOT EXECUTED
_Watchdog_Remove( &api->Sporadic_timer );
47c42: 486a 00a8 pea %a2@(168) <== NOT EXECUTED
47c46: 4eb9 0004 b3b8 jsr 4b3b8 <_Watchdog_Remove> <== NOT EXECUTED
_POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );
47c4c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47c4e: 42a7 clrl %sp@- <== NOT EXECUTED
47c50: 4eb9 0004 7a4c jsr 47a4c <_POSIX_Threads_Sporadic_budget_TSR><== NOT EXECUTED
break;
47c56: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
47c5a: 4eb9 0004 a3aa jsr 4a3aa <_Thread_Enable_dispatch>
return 0;
47c60: 6006 bras 47c68 <pthread_setschedparam+0xf8>
/*
* Check all the parameters
*/
if ( !param )
return EINVAL;
47c62: 7616 moveq #22,%d3 <== NOT EXECUTED
47c64: 6002 bras 47c68 <pthread_setschedparam+0xf8> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return ESRCH;
47c66: 7603 moveq #3,%d3 <== NOT EXECUTED
}
47c68: 2003 movel %d3,%d0
47c6a: 4cee 0c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a3
47c70: 4e5e unlk %fp <== NOT EXECUTED
00045758 <pthread_setspecific>:
int pthread_setspecific(
pthread_key_t key,
const void *value
)
{
45758: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4575c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4575e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45760: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45764: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45768: 4879 0005 fba8 pea 5fba8 <_POSIX_Keys_Information> <== NOT EXECUTED
4576e: 4eb9 0004 7a60 jsr 47a60 <_Objects_Get> <== NOT EXECUTED
uint32_t api;
uint32_t index;
Objects_Locations location;
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
45774: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45778: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4577c: 6634 bnes 457b2 <pthread_setspecific+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
4577e: 2079 0005 fcc2 moveal 5fcc2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
45784: 7618 moveq #24,%d3 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
the_key->Values[ api ][ index ] = (void *) value;
45786: 2240 moveal %d0,%a1 <== NOT EXECUTED
the_key = _POSIX_Keys_Get( key, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = _Objects_Get_API( _Thread_Executing->Object.id );
45788: 2428 0008 movel %a0@(8),%d2 <== NOT EXECUTED
4578c: 2202 movel %d2,%d1 <== NOT EXECUTED
4578e: e6a9 lsrl %d3,%d1 <== NOT EXECUTED
45790: 163c 0007 moveb #7,%d3 <== NOT EXECUTED
45794: c283 andl %d3,%d1 <== NOT EXECUTED
index = _Objects_Get_index( _Thread_Executing->Object.id );
45796: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_key->Values[ api ][ index ] = (void *) value;
4579c: 2071 1c14 moveal %a1@(00000014,%d1:l:4),%a0 <== NOT EXECUTED
457a0: 43ee 000c lea %fp@(12),%a1 <== NOT EXECUTED
457a4: 2191 2c00 movel %a1@,%a0@(00000000,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
457a8: 4eb9 0004 84c6 jsr 484c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
457ae: 4280 clrl %d0 <== NOT EXECUTED
457b0: 6002 bras 457b4 <pthread_setspecific+0x5c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
457b2: 7016 moveq #22,%d0 <== NOT EXECUTED
}
457b4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
457b8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
457bc: 4e5e unlk %fp <== NOT EXECUTED
0004b540 <pthread_sigmask>:
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
4b540: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b544: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4b548: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b54a: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4b54e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set && !oset )
4b552: 4a89 tstl %a1 <== NOT EXECUTED
4b554: 6604 bnes 4b55a <pthread_sigmask+0x1a> <== NOT EXECUTED
4b556: 4a8a tstl %a2 <== NOT EXECUTED
4b558: 6742 beqs 4b59c <pthread_sigmask+0x5c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
4b55a: 2079 0005 fc42 moveal 5fc42 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4b560: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
if ( oset )
4b564: 4a8a tstl %a2 <== NOT EXECUTED
4b566: 6704 beqs 4b56c <pthread_sigmask+0x2c> <== NOT EXECUTED
*oset = api->signals_blocked;
4b568: 24a8 00d0 movel %a0@(208),%a2@ <== NOT EXECUTED
if ( !set )
4b56c: 4a89 tstl %a1 <== NOT EXECUTED
4b56e: 6756 beqs 4b5c6 <pthread_sigmask+0x86> <== NOT EXECUTED
return 0;
switch ( how ) {
4b570: 7201 moveq #1,%d1 <== NOT EXECUTED
4b572: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b574: 670e beqs 4b584 <pthread_sigmask+0x44> <== NOT EXECUTED
4b576: 123c 0002 moveb #2,%d1 <== NOT EXECUTED
4b57a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4b57c: 670e beqs 4b58c <pthread_sigmask+0x4c> <== NOT EXECUTED
4b57e: 4a80 tstl %d0 <== NOT EXECUTED
4b580: 6714 beqs 4b596 <pthread_sigmask+0x56> <== NOT EXECUTED
4b582: 6018 bras 4b59c <pthread_sigmask+0x5c> <== NOT EXECUTED
case SIG_BLOCK:
api->signals_blocked |= *set;
4b584: 2011 movel %a1@,%d0 <== NOT EXECUTED
4b586: 81a8 00d0 orl %d0,%a0@(208) <== NOT EXECUTED
break;
4b58a: 6020 bras 4b5ac <pthread_sigmask+0x6c> <== NOT EXECUTED
case SIG_UNBLOCK:
api->signals_blocked &= ~*set;
4b58c: 2011 movel %a1@,%d0 <== NOT EXECUTED
4b58e: 4680 notl %d0 <== NOT EXECUTED
4b590: c1a8 00d0 andl %d0,%a0@(208) <== NOT EXECUTED
break;
4b594: 6016 bras 4b5ac <pthread_sigmask+0x6c> <== NOT EXECUTED
case SIG_SETMASK:
api->signals_blocked = *set;
4b596: 2151 00d0 movel %a1@,%a0@(208) <== NOT EXECUTED
break;
4b59a: 6010 bras 4b5ac <pthread_sigmask+0x6c> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( EINVAL );
4b59c: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
4b5a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b5a4: 7016 moveq #22,%d0 <== NOT EXECUTED
4b5a6: 2080 movel %d0,%a0@ <== NOT EXECUTED
4b5a8: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b5aa: 601c bras 4b5c8 <pthread_sigmask+0x88> <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
(api->signals_pending | _POSIX_signals_Pending) ) {
4b5ac: 2039 0005 fe68 movel 5fe68 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4b5b2: 2228 00d0 movel %a0@(208),%d1 <== NOT EXECUTED
4b5b6: 4681 notl %d1 <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
4b5b8: 80a8 00d4 orl %a0@(212),%d0 <== NOT EXECUTED
/* XXX are there critical section problems here? */
/* XXX evaluate the new set */
if ( ~api->signals_blocked &
4b5bc: c081 andl %d1,%d0 <== NOT EXECUTED
4b5be: 6706 beqs 4b5c6 <pthread_sigmask+0x86> <== NOT EXECUTED
(api->signals_pending | _POSIX_signals_Pending) ) {
_Thread_Dispatch();
4b5c0: 4eb9 0004 83e8 jsr 483e8 <_Thread_Dispatch> <== NOT EXECUTED
}
return 0;
4b5c6: 4280 clrl %d0 <== NOT EXECUTED
}
4b5c8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b5cc: 4e5e unlk %fp <== NOT EXECUTED
000456f0 <pthread_spin_destroy>:
*/
int pthread_spin_destroy(
pthread_spinlock_t *spinlock
)
{
456f0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
456f4: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
456f8: 2f0b movel %a3,%sp@- <== NOT EXECUTED
456fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
if ( !spinlock )
456fc: 4a88 tstl %a0 <== NOT EXECUTED
456fe: 6756 beqs 45756 <pthread_spin_destroy+0x66> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get (
pthread_spinlock_t *spinlock,
Objects_Locations *location
)
{
return (POSIX_Spinlock_Control *) _Objects_Get(
45700: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45704: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
45706: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
4570c: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
45712: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45716: 2440 moveal %d0,%a2 <== NOT EXECUTED
45718: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4571c: 6638 bnes 45756 <pthread_spin_destroy+0x66> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy(
CORE_spinlock_Control *the_spinlock
)
{
return (the_spinlock->users != 0);
4571e: 202a 0018 movel %a2@(24),%d0 <== NOT EXECUTED
45722: 47f9 0004 8142 lea 48142 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _CORE_spinlock_Is_busy( &the_spinlock->Spinlock ) ) {
45728: 6706 beqs 45730 <pthread_spin_destroy+0x40> <== NOT EXECUTED
_Thread_Enable_dispatch();
4572a: 4e93 jsr %a3@ <== NOT EXECUTED
return EBUSY;
4572c: 7010 moveq #16,%d0 <== NOT EXECUTED
4572e: 6028 bras 45758 <pthread_spin_destroy+0x68> <== NOT EXECUTED
}
_Objects_Close( &_POSIX_Spinlock_Information, &the_spinlock->Object );
45730: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45732: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
45738: 4eb9 0004 7300 jsr 47300 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free (
POSIX_Spinlock_Control *the_spinlock
)
{
_Objects_Free( &_POSIX_Spinlock_Information, &the_spinlock->Object );
4573e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45740: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
45746: 4eb9 0004 7578 jsr 47578 <_Objects_Free> <== NOT EXECUTED
_POSIX_Spinlock_Free( the_spinlock );
_Thread_Enable_dispatch();
4574c: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
4574e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45752: 4280 clrl %d0 <== NOT EXECUTED
45754: 6002 bras 45758 <pthread_spin_destroy+0x68> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
45756: 7016 moveq #22,%d0 <== NOT EXECUTED
}
45758: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4575c: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
45760: 4e5e unlk %fp <== NOT EXECUTED
00045764 <pthread_spin_init>:
int pthread_spin_init(
pthread_spinlock_t *spinlock,
int pshared
)
{
45764: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
45768: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
4576c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock;
CORE_spinlock_Attributes attributes;
if ( !spinlock )
45770: 4a8a tstl %a2 <== NOT EXECUTED
45772: 6764 beqs 457d8 <pthread_spin_init+0x74> <== NOT EXECUTED
return EINVAL;
switch ( pshared ) {
45774: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
45778: 665e bnes 457d8 <pthread_spin_init+0x74> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4577a: 2039 0005 ead8 movel 5ead8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45780: 5280 addql #1,%d0 <== NOT EXECUTED
45782: 23c0 0005 ead8 movel %d0,5ead8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free spinlock control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void )
{
return (POSIX_Spinlock_Control *)
_Objects_Allocate( &_POSIX_Spinlock_Information );
45788: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
4578e: 49f9 0004 8142 lea 48142 <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED
45794: 4eb9 0004 7284 jsr 47284 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_spinlock = _POSIX_Spinlock_Allocate();
if ( !the_spinlock ) {
4579a: 588f addql #4,%sp <== NOT EXECUTED
4579c: 2640 moveal %d0,%a3 <== NOT EXECUTED
4579e: 4a80 tstl %d0 <== NOT EXECUTED
457a0: 6606 bnes 457a8 <pthread_spin_init+0x44> <== NOT EXECUTED
_Thread_Enable_dispatch();
457a2: 4e94 jsr %a4@ <== NOT EXECUTED
return EAGAIN;
457a4: 700b moveq #11,%d0 <== NOT EXECUTED
457a6: 6032 bras 457da <pthread_spin_init+0x76> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes(
CORE_spinlock_Attributes *the_attributes
)
{
the_attributes->XXX = 0;
457a8: 204e moveal %fp,%a0 <== NOT EXECUTED
457aa: 42a0 clrl %a0@- <== NOT EXECUTED
}
_CORE_spinlock_Initialize_attributes( &attributes );
_CORE_spinlock_Initialize( &the_spinlock->Spinlock, &attributes );
457ac: 2f08 movel %a0,%sp@- <== NOT EXECUTED
457ae: 486b 0010 pea %a3@(16) <== NOT EXECUTED
457b2: 4eb9 0004 6c80 jsr 46c80 <_CORE_spinlock_Initialize> <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
457b8: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
457bc: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
457be: 2079 0005 ecec moveal 5ecec <_POSIX_Spinlock_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
457c4: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
457c6: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
457ca: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
_Objects_Open_u32( &_POSIX_Spinlock_Information, &the_spinlock->Object, 0 );
*spinlock = the_spinlock->Object.id;
457ce: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
457d0: 4e94 jsr %a4@ <== NOT EXECUTED
return 0;
457d2: 508f addql #8,%sp <== NOT EXECUTED
457d4: 4280 clrl %d0 <== NOT EXECUTED
457d6: 6002 bras 457da <pthread_spin_init+0x76> <== NOT EXECUTED
switch ( pshared ) {
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
break;
case PTHREAD_PROCESS_SHARED:
default:
return EINVAL;
457d8: 7016 moveq #22,%d0 <== NOT EXECUTED
*spinlock = the_spinlock->Object.id;
_Thread_Enable_dispatch();
return 0;
}
457da: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED
457e0: 4e5e unlk %fp <== NOT EXECUTED
000457e4 <pthread_spin_lock>:
*/
int pthread_spin_lock(
pthread_spinlock_t *spinlock
)
{
457e4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
457e8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
457ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
457ee: 4a88 tstl %a0 <== NOT EXECUTED
457f0: 6744 beqs 45836 <pthread_spin_lock+0x52> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get (
pthread_spinlock_t *spinlock,
Objects_Locations *location
)
{
return (POSIX_Spinlock_Control *) _Objects_Get(
457f2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
457f6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
457f8: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
457fe: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
45804: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45808: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4580c: 6628 bnes 45836 <pthread_spin_lock+0x52> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, true, 0 );
4580e: 42a7 clrl %sp@- <== NOT EXECUTED
45810: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45814: 2040 moveal %d0,%a0 <== NOT EXECUTED
45816: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4581a: 4eb9 0004 6cf0 jsr 46cf0 <_CORE_spinlock_Wait> <== NOT EXECUTED
45820: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
45822: 4eb9 0004 8142 jsr 48142 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
45828: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4582a: 4eb9 0004 5840 jsr 45840 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
45830: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45834: 6002 bras 45838 <pthread_spin_lock+0x54> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
45836: 7016 moveq #22,%d0 <== NOT EXECUTED
}
45838: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4583c: 4e5e unlk %fp <== NOT EXECUTED
00045858 <pthread_spin_trylock>:
*/
int pthread_spin_trylock(
pthread_spinlock_t *spinlock
)
{
45858: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4585c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45860: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
45862: 4a88 tstl %a0 <== NOT EXECUTED
45864: 6742 beqs 458a8 <pthread_spin_trylock+0x50> <== NOT EXECUTED
45866: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4586a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4586c: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
45872: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
45878: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4587c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45880: 6626 bnes 458a8 <pthread_spin_trylock+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Wait( &the_spinlock->Spinlock, false, 0 );
45882: 42a7 clrl %sp@- <== NOT EXECUTED
45884: 2040 moveal %d0,%a0 <== NOT EXECUTED
45886: 42a7 clrl %sp@- <== NOT EXECUTED
45888: 4868 0010 pea %a0@(16) <== NOT EXECUTED
4588c: 4eb9 0004 6cf0 jsr 46cf0 <_CORE_spinlock_Wait> <== NOT EXECUTED
45892: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
45894: 4eb9 0004 8142 jsr 48142 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
4589a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4589c: 4eb9 0004 5840 jsr 45840 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
458a2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
458a6: 6002 bras 458aa <pthread_spin_trylock+0x52> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
458a8: 7016 moveq #22,%d0 <== NOT EXECUTED
}
458aa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
458ae: 4e5e unlk %fp <== NOT EXECUTED
...
000458b4 <pthread_spin_unlock>:
*/
int pthread_spin_unlock(
pthread_spinlock_t *spinlock
)
{
458b4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
458b8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
458bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
POSIX_Spinlock_Control *the_spinlock = NULL;
Objects_Locations location;
CORE_spinlock_Status status;
if ( !spinlock )
458be: 4a88 tstl %a0 <== NOT EXECUTED
458c0: 673c beqs 458fe <pthread_spin_unlock+0x4a> <== NOT EXECUTED
458c2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
458c6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
458c8: 4879 0005 ecd4 pea 5ecd4 <_POSIX_Spinlock_Information> <== NOT EXECUTED
458ce: 4eb9 0004 76dc jsr 476dc <_Objects_Get> <== NOT EXECUTED
return EINVAL;
the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
switch ( location ) {
458d4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
458d8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
458dc: 6620 bnes 458fe <pthread_spin_unlock+0x4a> <== NOT EXECUTED
case OBJECTS_LOCAL:
status = _CORE_spinlock_Release( &the_spinlock->Spinlock );
458de: 2040 moveal %d0,%a0 <== NOT EXECUTED
458e0: 4868 0010 pea %a0@(16) <== NOT EXECUTED
458e4: 4eb9 0004 6ca0 jsr 46ca0 <_CORE_spinlock_Release> <== NOT EXECUTED
458ea: 2400 movel %d0,%d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
458ec: 4eb9 0004 8142 jsr 48142 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
458f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
458f4: 4eb9 0004 5840 jsr 45840 <_POSIX_Spinlock_Translate_core_spinlock_return_code><== NOT EXECUTED
458fa: 508f addql #8,%sp <== NOT EXECUTED
458fc: 6002 bras 45900 <pthread_spin_unlock+0x4c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return EINVAL;
458fe: 7016 moveq #22,%d0 <== NOT EXECUTED
}
45900: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
45904: 4e5e unlk %fp <== NOT EXECUTED
00045b04 <pthread_testcancel>:
*
* 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183
*/
void pthread_testcancel( void )
{
45b04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45b08: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* Don't even think about deleting a resource from an ISR.
* Besides this request is supposed to be for _Thread_Executing
* and the ISR context is not a thread.
*/
if ( _ISR_Is_in_progress() )
45b0a: 4ab9 0005 eec8 tstl 5eec8 <_Per_CPU_Information+0x8> <== NOT EXECUTED
45b10: 6646 bnes 45b58 <pthread_testcancel+0x54> <== NOT EXECUTED
return;
thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45b12: 2079 0005 eecc moveal 5eecc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
45b18: 2039 0005 ea42 movel 5ea42 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45b1e: 5280 addql #1,%d0 <== NOT EXECUTED
45b20: 2068 0102 moveal %a0@(258),%a0 <== NOT EXECUTED
45b24: 23c0 0005 ea42 movel %d0,5ea42 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
45b2a: 4aa8 00d8 tstl %a0@(216) <== NOT EXECUTED
45b2e: 660a bnes 45b3a <pthread_testcancel+0x36> <== NOT EXECUTED
/* Setting Cancelability State, P1003.1c/Draft 10, p. 183 */
int _EXFUN(pthread_setcancelstate, (int __state, int *__oldstate));
int _EXFUN(pthread_setcanceltype, (int __type, int *__oldtype));
void _EXFUN(pthread_testcancel, (void));
45b30: 4aa8 00e0 tstl %a0@(224) <== NOT EXECUTED
45b34: 56c2 sne %d2 <== NOT EXECUTED
45b36: 4482 negl %d2 <== NOT EXECUTED
45b38: 6002 bras 45b3c <pthread_testcancel+0x38> <== NOT EXECUTED
*/
void pthread_testcancel( void )
{
POSIX_API_Control *thread_support;
bool cancel = false;
45b3a: 4202 clrb %d2 <== NOT EXECUTED
_Thread_Disable_dispatch();
if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
thread_support->cancelation_requested )
cancel = true;
_Thread_Enable_dispatch();
45b3c: 4eb9 0004 81f6 jsr 481f6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( cancel )
45b42: 4a02 tstb %d2 <== NOT EXECUTED
45b44: 6712 beqs 45b58 <pthread_testcancel+0x54> <== NOT EXECUTED
_POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );
45b46: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
45b4a: 2f39 0005 eecc movel 5eecc <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
45b50: 4eb9 0004 af90 jsr 4af90 <_POSIX_Thread_Exit> <== NOT EXECUTED
45b56: 508f addql #8,%sp <== NOT EXECUTED
}
45b58: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
45b5c: 4e5e unlk %fp <== NOT EXECUTED
0004361c <putk>:
* putk
*
* Kernel putk (e.g. puts) function requiring minimal infrastrure.
*/
void putk(const char *s)
{
4361c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43620: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43622: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
const char *p;
for (p=s ; *p ; p++ )
43626: 6008 bras 43630 <putk+0x14> <== NOT EXECUTED
BSP_output_char(*p);
43628: 49c0 extbl %d0 <== NOT EXECUTED
4362a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4362c: 4e91 jsr %a1@ <== NOT EXECUTED
4362e: 588f addql #4,%sp <== NOT EXECUTED
43630: 2279 0005 c560 moveal 5c560 <BSP_output_char>,%a1 <== NOT EXECUTED
*/
void putk(const char *s)
{
const char *p;
for (p=s ; *p ; p++ )
43636: 101a moveb %a2@+,%d0 <== NOT EXECUTED
43638: 66ee bnes 43628 <putk+0xc> <== NOT EXECUTED
BSP_output_char(*p);
BSP_output_char('\n');
4363a: 700a moveq #10,%d0 <== NOT EXECUTED
}
4363c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
const char *p;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43640: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
43644: 4e5e unlk %fp <== NOT EXECUTED
{
const char *p;
for (p=s ; *p ; p++ )
BSP_output_char(*p);
BSP_output_char('\n');
43646: 4ed1 jmp %a1@ <== NOT EXECUTED
00059dec <read>:
ssize_t read(
int fd,
void *buffer,
size_t count
)
{
59dec: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
59df0: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
59df4: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
59df8: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
59dfc: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
59e00: b0b9 0005 c1a4 cmpl 5c1a4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
59e06: 641a bccs 59e22 <read+0x36> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
59e08: 2400 movel %d0,%d2 <== NOT EXECUTED
59e0a: ed88 lsll #6,%d0 <== NOT EXECUTED
59e0c: e78a lsll #3,%d2 <== NOT EXECUTED
59e0e: 2479 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a2 <== NOT EXECUTED
59e14: 9082 subl %d2,%d0 <== NOT EXECUTED
59e16: d5c0 addal %d0,%a2 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
59e18: 202a 0014 movel %a2@(20),%d0 <== NOT EXECUTED
59e1c: 0800 0008 btst #8,%d0 <== NOT EXECUTED
59e20: 660e bnes 59e30 <read+0x44> <== NOT EXECUTED
59e22: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59e28: 7209 moveq #9,%d1 <== NOT EXECUTED
59e2a: 2040 moveal %d0,%a0 <== NOT EXECUTED
59e2c: 2081 movel %d1,%a0@ <== NOT EXECUTED
59e2e: 601a bras 59e4a <read+0x5e> <== NOT EXECUTED
rtems_libio_check_buffer( buffer );
59e30: 4a81 tstl %d1 <== NOT EXECUTED
59e32: 670a beqs 59e3e <read+0x52> <== NOT EXECUTED
rtems_libio_check_count( count );
59e34: 4a88 tstl %a0 <== NOT EXECUTED
59e36: 6744 beqs 59e7c <read+0x90> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
59e38: 0800 0001 btst #1,%d0 <== NOT EXECUTED
59e3c: 6610 bnes 59e4e <read+0x62> <== NOT EXECUTED
59e3e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59e44: 2040 moveal %d0,%a0 <== NOT EXECUTED
59e46: 7016 moveq #22,%d0 <== NOT EXECUTED
59e48: 2080 movel %d0,%a0@ <== NOT EXECUTED
59e4a: 70ff moveq #-1,%d0 <== NOT EXECUTED
59e4c: 6030 bras 59e7e <read+0x92> <== NOT EXECUTED
/*
* Now process the read().
*/
rc = (*iop->pathinfo.handlers->read_h)( iop, buffer, count );
59e4e: 226a 0020 moveal %a2@(32),%a1 <== NOT EXECUTED
59e52: 2f08 movel %a0,%sp@- <== NOT EXECUTED
59e54: 2f01 movel %d1,%sp@- <== NOT EXECUTED
59e56: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59e58: 2069 0008 moveal %a1@(8),%a0 <== NOT EXECUTED
59e5c: 4e90 jsr %a0@ <== NOT EXECUTED
if ( rc > 0 )
59e5e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59e62: 4a80 tstl %d0 <== NOT EXECUTED
59e64: 6f18 bles 59e7e <read+0x92> <== NOT EXECUTED
iop->offset += rc;
59e66: 2400 movel %d0,%d2 <== NOT EXECUTED
59e68: 5bc1 smi %d1 <== NOT EXECUTED
59e6a: 49c1 extbl %d1 <== NOT EXECUTED
59e6c: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED
59e70: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
59e74: d781 addxl %d1,%d3 <== NOT EXECUTED
59e76: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
59e7a: 6002 bras 59e7e <read+0x92> <== 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 );
59e7c: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
59e7e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
59e84: 4e5e unlk %fp <== NOT EXECUTED
000454a0 <readlink>:
ssize_t readlink(
const char *pathname,
char *buf,
size_t bufsize
)
{
454a0: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
454a4: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
454a8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
454ac: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
rtems_filesystem_location_info_t loc;
int result;
if (!buf)
454b0: 660e bnes 454c0 <readlink+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
454b2: 4eb9 0004 f1d0 jsr 4f1d0 <__errno> <== NOT EXECUTED
454b8: 720e moveq #14,%d1 <== NOT EXECUTED
454ba: 2040 moveal %d0,%a0 <== NOT EXECUTED
454bc: 2081 movel %d1,%a0@ <== NOT EXECUTED
454be: 6076 bras 45536 <readlink+0x96> <== NOT EXECUTED
result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
454c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
454c2: 240e movel %fp,%d2 <== NOT EXECUTED
454c4: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
454ca: 4eb9 0005 0d10 jsr 50d10 <strlen> <== NOT EXECUTED
454d0: 4297 clrl %sp@ <== NOT EXECUTED
454d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
454d4: 42a7 clrl %sp@- <== NOT EXECUTED
454d6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
454d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
454da: 4eb9 0004 4484 jsr 44484 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, false );
if ( result != 0 )
454e0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
454e4: 4a80 tstl %d0 <== NOT EXECUTED
454e6: 664e bnes 45536 <readlink+0x96> <== NOT EXECUTED
return -1;
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_SYM_LINK ){
454e8: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
454ec: 45f9 0004 4550 lea 44550 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
454f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
454f4: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
454f8: 4e90 jsr %a0@ <== NOT EXECUTED
454fa: 588f addql #4,%sp <== NOT EXECUTED
454fc: 7204 moveq #4,%d1 <== NOT EXECUTED
454fe: b280 cmpl %d0,%d1 <== NOT EXECUTED
45500: 6714 beqs 45516 <readlink+0x76> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45502: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45504: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
45506: 4eb9 0004 f1d0 jsr 4f1d0 <__errno> <== NOT EXECUTED
4550c: 588f addql #4,%sp <== NOT EXECUTED
4550e: 2040 moveal %d0,%a0 <== NOT EXECUTED
45510: 7016 moveq #22,%d0 <== NOT EXECUTED
45512: 2080 movel %d0,%a0@ <== NOT EXECUTED
45514: 6020 bras 45536 <readlink+0x96> <== NOT EXECUTED
}
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
45516: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4551a: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
4551e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45520: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45522: 2068 003c moveal %a0@(60),%a0 <== NOT EXECUTED
45526: 4e90 jsr %a0@ <== NOT EXECUTED
45528: 2600 movel %d0,%d3 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4552a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4552c: 4e92 jsr %a2@ <== NOT EXECUTED
return result;
4552e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45532: 2003 movel %d3,%d0 <== NOT EXECUTED
45534: 6002 bras 45538 <readlink+0x98> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
result = rtems_filesystem_evaluate_path( pathname, strlen( pathname ),
0, &loc, false );
if ( result != 0 )
return -1;
45536: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->readlink_h)( &loc, buf, bufsize );
rtems_filesystem_freenode( &loc );
return result;
}
45538: 4cee 040c ffe0 moveml %fp@(-32),%d2-%d3/%a2 <== NOT EXECUTED
4553e: 4e5e unlk %fp <== NOT EXECUTED
...
00044298 <readv>:
ssize_t readv(
int fd,
const struct iovec *iov,
int iovcnt
)
{
44298: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4429c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
442a0: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
442a4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
442a8: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
int v;
int bytes;
rtems_libio_t *iop;
bool all_zeros;
rtems_libio_check_fd( fd );
442ac: b0b9 0005 cc04 cmpl 5cc04 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
442b2: 641a bccs 442ce <readv+0x36> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
442b4: 2200 movel %d0,%d1 <== NOT EXECUTED
442b6: ed88 lsll #6,%d0 <== NOT EXECUTED
442b8: e789 lsll #3,%d1 <== NOT EXECUTED
442ba: 2679 0005 e414 moveal 5e414 <rtems_libio_iops>,%a3 <== NOT EXECUTED
442c0: 9081 subl %d1,%d0 <== NOT EXECUTED
442c2: d7c0 addal %d0,%a3 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
442c4: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
442c8: 0800 0008 btst #8,%d0 <== NOT EXECUTED
442cc: 6610 bnes 442de <readv+0x46> <== NOT EXECUTED
442ce: 4eb9 0004 d5c8 jsr 4d5c8 <__errno> <== NOT EXECUTED
442d4: 7209 moveq #9,%d1 <== NOT EXECUTED
442d6: 2040 moveal %d0,%a0 <== NOT EXECUTED
442d8: 2081 movel %d1,%a0@ <== NOT EXECUTED
442da: 6000 009e braw 4437a <readv+0xe2> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ );
442de: 0800 0001 btst #1,%d0 <== NOT EXECUTED
442e2: 672c beqs 44310 <readv+0x78> <== NOT EXECUTED
/*
* Argument validation on IO vector
*/
if ( !iov )
442e4: 4a8a tstl %a2 <== NOT EXECUTED
442e6: 6728 beqs 44310 <readv+0x78> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
442e8: 4a83 tstl %d3 <== NOT EXECUTED
442ea: 6f24 bles 44310 <readv+0x78> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
442ec: 0c83 0000 0400 cmpil #1024,%d3 <== NOT EXECUTED
442f2: 6e1c bgts 44310 <readv+0x78> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
442f4: 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 )
442f6: 93c9 subal %a1,%a1 <== NOT EXECUTED
442f8: 4281 clrl %d1 <== NOT EXECUTED
442fa: 7001 moveq #1,%d0 <== NOT EXECUTED
442fc: 6002 bras 44300 <readv+0x68> <== 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;
442fe: 2204 movel %d4,%d1 <== 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 )
44300: 4a90 tstl %a0@ <== NOT EXECUTED
44302: 670c beqs 44310 <readv+0x78> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* check for wrap */
old = total;
total += iov[v].iov_len;
44304: 2428 0004 movel %a0@(4),%d2 <== NOT EXECUTED
44308: 2801 movel %d1,%d4 <== NOT EXECUTED
4430a: d882 addl %d2,%d4 <== NOT EXECUTED
if ( total < old )
4430c: b284 cmpl %d4,%d1 <== NOT EXECUTED
4430e: 6f0e bles 4431e <readv+0x86> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
44310: 4eb9 0004 d5c8 jsr 4d5c8 <__errno> <== NOT EXECUTED
44316: 2040 moveal %d0,%a0 <== NOT EXECUTED
44318: 7016 moveq #22,%d0 <== NOT EXECUTED
4431a: 2080 movel %d0,%a0@ <== NOT EXECUTED
4431c: 605c bras 4437a <readv+0xe2> <== NOT EXECUTED
if ( iov[v].iov_len )
all_zeros = false;
4431e: 4a82 tstl %d2 <== NOT EXECUTED
44320: 57c1 seq %d1 <== 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++ ) {
44322: 5289 addql #1,%a1 <== NOT EXECUTED
44324: 5088 addql #8,%a0 <== NOT EXECUTED
total += iov[v].iov_len;
if ( total < old )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
44326: c081 andl %d1,%d0 <== 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++ ) {
44328: b689 cmpl %a1,%d3 <== NOT EXECUTED
4432a: 6ed2 bgts 442fe <readv+0x66> <== 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 ) {
4432c: 4a00 tstb %d0 <== NOT EXECUTED
4432e: 6646 bnes 44376 <readv+0xde> <== NOT EXECUTED
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t readv(
44330: 588a addql #4,%a2 <== NOT EXECUTED
44332: 4284 clrl %d4 <== NOT EXECUTED
44334: 4282 clrl %d2 <== NOT EXECUTED
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
bytes = (*iop->pathinfo.handlers->read_h)(
44336: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED
4433a: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
4433c: 2f2a fffc movel %a2@(-4),%sp@- <== NOT EXECUTED
44340: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44342: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
44346: 4e90 jsr %a0@ <== NOT EXECUTED
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
44348: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4434c: 4a80 tstl %d0 <== NOT EXECUTED
4434e: 6d2a blts 4437a <readv+0xe2> <== NOT EXECUTED
return -1;
if ( bytes > 0 ) {
44350: 6716 beqs 44368 <readv+0xd0> <== NOT EXECUTED
iop->offset += bytes;
total += bytes;
44352: d480 addl %d0,%d2 <== NOT EXECUTED
if ( bytes < 0 )
return -1;
if ( bytes > 0 ) {
iop->offset += bytes;
44354: 2c00 movel %d0,%d6 <== NOT EXECUTED
44356: 5bc5 smi %d5 <== NOT EXECUTED
44358: 49c5 extbl %d5 <== NOT EXECUTED
4435a: ddab 0010 addl %d6,%a3@(16) <== NOT EXECUTED
4435e: 222b 000c movel %a3@(12),%d1 <== NOT EXECUTED
44362: d385 addxl %d5,%d1 <== NOT EXECUTED
44364: 2741 000c movel %d1,%a3@(12) <== NOT EXECUTED
total += bytes;
}
if (bytes != iov[ v ].iov_len)
44368: b092 cmpl %a2@,%d0 <== NOT EXECUTED
4436a: 6610 bnes 4437c <readv+0xe4> <== NOT EXECUTED
}
/*
* Now process the readv().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
4436c: 5284 addql #1,%d4 <== NOT EXECUTED
4436e: 508a addql #8,%a2 <== NOT EXECUTED
44370: b684 cmpl %d4,%d3 <== NOT EXECUTED
44372: 6ec2 bgts 44336 <readv+0x9e> <== NOT EXECUTED
44374: 6006 bras 4437c <readv+0xe4> <== 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;
44376: 4282 clrl %d2 <== NOT EXECUTED
44378: 6002 bras 4437c <readv+0xe4> <== NOT EXECUTED
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
4437a: 74ff moveq #-1,%d2 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
4437c: 2002 movel %d2,%d0 <== NOT EXECUTED
4437e: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
44384: 4e5e unlk %fp <== NOT EXECUTED
00059f0c <realloc>:
/*
* Do not attempt to allocate memory if in a critical section or ISR.
*/
if (_System_state_Is_up(_System_state_Get())) {
59f0c: 7003 moveq #3,%d0
void *realloc(
void *ptr,
size_t size
)
{
59f0e: 4e56 fff0 linkw %fp,#-16
uintptr_t old_size;
char *new_area;
MSBUMP(realloc_calls, 1);
59f12: 52b9 0005 d9dc addql #1,5d9dc <rtems_malloc_statistics+0x10>
void *realloc(
void *ptr,
size_t size
)
{
59f18: 48d7 001c moveml %d2-%d4,%sp@
59f1c: 242e 0008 movel %fp@(8),%d2
59f20: 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())) {
59f24: b0b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d0
59f2a: 6614 bnes 59f40 <realloc+0x34> <== NEVER TAKEN
if (_Thread_Dispatch_disable_level > 0)
59f2c: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
59f32: 6600 00aa bnew 59fde <realloc+0xd2>
return (void *) 0;
if (_ISR_Nest_level > 0)
59f36: 4ab9 0005 df8e tstl 5df8e <_Per_CPU_Information+0x8>
59f3c: 6600 00a0 bnew 59fde <realloc+0xd2>
}
/*
* Continue with realloc().
*/
if ( !ptr )
59f40: 4a82 tstl %d2
59f42: 6610 bnes 59f54 <realloc+0x48> <== NEVER TAKEN
return malloc( size );
59f44: 2f03 movel %d3,%sp@-
59f46: 4eb9 0004 2a9c jsr 42a9c <malloc>
59f4c: 588f addql #4,%sp
59f4e: 2400 movel %d0,%d2
59f50: 6000 008e braw 59fe0 <realloc+0xd4>
if ( !size ) {
59f54: 4a83 tstl %d3 <== NOT EXECUTED
59f56: 660c bnes 59f64 <realloc+0x58> <== NOT EXECUTED
free( ptr );
59f58: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59f5a: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
return (void *) 0;
59f60: 588f addql #4,%sp <== NOT EXECUTED
59f62: 607a bras 59fde <realloc+0xd2> <== NOT EXECUTED
}
if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
59f64: 486e fffc pea %fp@(-4) <== NOT EXECUTED
59f68: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59f6a: 2f39 0005 c1b0 movel 5c1b0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
59f70: 4eb9 0005 a484 jsr 5a484 <_Protected_heap_Get_block_size> <== NOT EXECUTED
59f76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59f7a: 4a00 tstb %d0 <== NOT EXECUTED
59f7c: 660e bnes 59f8c <realloc+0x80> <== NOT EXECUTED
errno = EINVAL;
59f7e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
59f84: 2040 moveal %d0,%a0 <== NOT EXECUTED
59f86: 7016 moveq #22,%d0 <== NOT EXECUTED
59f88: 2080 movel %d0,%a0@ <== NOT EXECUTED
59f8a: 6052 bras 59fde <realloc+0xd2> <== NOT EXECUTED
}
/*
* Now resize it.
*/
if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
59f8c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59f8e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59f90: 2f39 0005 c1b0 movel 5c1b0 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
59f96: 4eb9 0005 a4c0 jsr 5a4c0 <_Protected_heap_Resize_block> <== NOT EXECUTED
59f9c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59fa0: 4a00 tstb %d0 <== NOT EXECUTED
59fa2: 663c bnes 59fe0 <realloc+0xd4> <== 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 );
59fa4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59fa6: 4eb9 0004 2a9c jsr 42a9c <malloc> <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
59fac: 588f addql #4,%sp <== NOT EXECUTED
* and the C Standard.
*/
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
59fae: 53b9 0005 d9d0 subql #1,5d9d0 <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 );
59fb4: 2800 movel %d0,%d4 <== NOT EXECUTED
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
59fb6: 6726 beqs 59fde <realloc+0xd2> <== NOT EXECUTED
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
59fb8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
59fbc: b083 cmpl %d3,%d0 <== NOT EXECUTED
59fbe: 6402 bccs 59fc2 <realloc+0xb6> <== NOT EXECUTED
59fc0: 2600 movel %d0,%d3 <== NOT EXECUTED
59fc2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59fc4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59fc6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59fc8: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
free( ptr );
59fce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return new_area;
59fd0: 2404 movel %d4,%d2 <== NOT EXECUTED
if ( !new_area ) {
return (void *) 0;
}
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
59fd2: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
return new_area;
59fd8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
59fdc: 6002 bras 59fe0 <realloc+0xd4> <== NOT EXECUTED
new_area = malloc( size );
MSBUMP(malloc_calls, (uint32_t) -1); /* subtract off the malloc */
if ( !new_area ) {
return (void *) 0;
59fde: 4282 clrl %d2 <== NOT EXECUTED
memcpy( new_area, ptr, (size < old_size) ? size : old_size );
free( ptr );
return new_area;
}
59fe0: 2002 movel %d2,%d0
59fe2: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4
59fe8: 4e5e unlk %fp <== NOT EXECUTED
0004389c <rmdir>:
#include <rtems/seterr.h>
int rmdir(
const char *pathname
)
{
4389c: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED
438a0: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
438a4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Get the parent node of the node we wish to remove. Find the parent path.
*/
parentpathlen = rtems_filesystem_dirname ( pathname );
438a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
438aa: 4eb9 0004 2b58 jsr 42b58 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( parentpathlen == 0 )
438b0: 588f addql #4,%sp <== NOT EXECUTED
/*
* Get the parent node of the node we wish to remove. Find the parent path.
*/
parentpathlen = rtems_filesystem_dirname ( pathname );
438b2: 2a00 movel %d0,%d5 <== NOT EXECUTED
438b4: 200e movel %fp,%d0 <== NOT EXECUTED
438b6: 0680 ffff ffe8 addil #-24,%d0 <== NOT EXECUTED
if ( parentpathlen == 0 )
438bc: 4a85 tstl %d5 <== NOT EXECUTED
438be: 6616 bnes 438d6 <rmdir+0x3a> <== NOT EXECUTED
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
438c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
438c2: 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;
438c6: 4204 clrb %d4 <== NOT EXECUTED
*/
parentpathlen = rtems_filesystem_dirname ( pathname );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( pathname, &i, &parentloc );
438c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
438ca: 4eb9 0004 39c0 jsr 439c0 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
438d0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
438d4: 601e bras 438f4 <rmdir+0x58> <== NOT EXECUTED
else {
result = rtems_filesystem_evaluate_path(pathname, parentpathlen,
438d6: 42a7 clrl %sp@- <== NOT EXECUTED
438d8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
438da: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
438de: 2f05 movel %d5,%sp@- <== NOT EXECUTED
438e0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
438e2: 4eb9 0004 2b0c jsr 42b0c <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&parentloc,
false );
if ( result != 0 )
438e8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
438ec: 4a80 tstl %d0 <== NOT EXECUTED
438ee: 6600 00c2 bnew 439b2 <rmdir+0x116> <== NOT EXECUTED
return -1;
free_parentloc = true;
438f2: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
438f4: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
438f8: 260e movel %fp,%d3 <== NOT EXECUTED
438fa: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
43900: 240e movel %fp,%d2 <== NOT EXECUTED
43902: 0682 ffff ffd4 addil #-44,%d2 <== NOT EXECUTED
name = pathname + parentpathlen;
43908: d5c5 addal %d5,%a2 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
4390a: 47f9 0004 e4a0 lea 4e4a0 <strlen>,%a3 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
43910: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43912: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43914: 4eb9 0004 d9a8 jsr 4d9a8 <memcpy> <== NOT EXECUTED
name = pathname + parentpathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
4391a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4391c: 4e93 jsr %a3@ <== NOT EXECUTED
4391e: 2e80 movel %d0,%sp@ <== NOT EXECUTED
43920: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43922: 4eb9 0004 2b9a jsr 42b9a <rtems_filesystem_prefix_separators><== NOT EXECUTED
43928: d5c0 addal %d0,%a2 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
4392a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4392c: 4e93 jsr %a3@ <== NOT EXECUTED
4392e: 4297 clrl %sp@ <== NOT EXECUTED
43930: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43932: 42a7 clrl %sp@- <== NOT EXECUTED
43934: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43936: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43938: 4eb9 0004 2a9c jsr 42a9c <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &loc, false );
if ( result != 0 ) {
4393e: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
43942: 4a80 tstl %d0 <== NOT EXECUTED
43944: 6710 beqs 43956 <rmdir+0xba> <== NOT EXECUTED
if ( free_parentloc )
43946: 4a04 tstb %d4 <== NOT EXECUTED
43948: 6768 beqs 439b2 <rmdir+0x116> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
4394a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4394c: 4eb9 0004 2bd8 jsr 42bd8 <rtems_filesystem_freenode> <== NOT EXECUTED
43952: 588f addql #4,%sp <== NOT EXECUTED
43954: 605c bras 439b2 <rmdir+0x116> <== NOT EXECUTED
}
/*
* Verify you can remove this node as a directory.
*/
if ( (*loc.ops->node_type_h)( &loc ) != RTEMS_FILESYSTEM_DIRECTORY ) {
43956: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
4395a: 45f9 0004 2bd8 lea 42bd8 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
43960: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43962: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
43966: 4e90 jsr %a0@ <== NOT EXECUTED
43968: 588f addql #4,%sp <== NOT EXECUTED
4396a: 7201 moveq #1,%d1 <== NOT EXECUTED
4396c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4396e: 671e beqs 4398e <rmdir+0xf2> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
43970: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43972: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_parentloc )
43974: 588f addql #4,%sp <== NOT EXECUTED
43976: 4a04 tstb %d4 <== NOT EXECUTED
43978: 6706 beqs 43980 <rmdir+0xe4> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
4397a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4397c: 4e92 jsr %a2@ <== NOT EXECUTED
4397e: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOTDIR );
43980: 4eb9 0004 d0fc jsr 4d0fc <__errno> <== NOT EXECUTED
43986: 2040 moveal %d0,%a0 <== NOT EXECUTED
43988: 7014 moveq #20,%d0 <== NOT EXECUTED
4398a: 2080 movel %d0,%a0@ <== NOT EXECUTED
4398c: 6024 bras 439b2 <rmdir+0x116> <== NOT EXECUTED
/*
* Use the filesystems rmnod to remove the node.
*/
result = (*loc.handlers->rmnod_h)( &parentloc, &loc );
4398e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43990: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
43994: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43996: 2068 0034 moveal %a0@(52),%a0 <== NOT EXECUTED
4399a: 4e90 jsr %a0@ <== NOT EXECUTED
4399c: 2a00 movel %d0,%d5 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4399e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
439a0: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_parentloc )
439a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
439a6: 4a04 tstb %d4 <== NOT EXECUTED
439a8: 670a beqs 439b4 <rmdir+0x118> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
439aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
439ac: 4e92 jsr %a2@ <== NOT EXECUTED
439ae: 588f addql #4,%sp <== NOT EXECUTED
439b0: 6002 bras 439b4 <rmdir+0x118> <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return -1;
439b2: 7aff moveq #-1,%d5 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
439b4: 2005 movel %d5,%d0 <== NOT EXECUTED
439b6: 4cee 0c3c ffbc moveml %fp@(-68),%d2-%d5/%a2-%a3 <== NOT EXECUTED
439bc: 4e5e unlk %fp <== NOT EXECUTED
000464b8 <rtems_aio_enqueue>:
* errno - otherwise
*/
int
rtems_aio_enqueue (rtems_aio_request *req)
{
464b8: 4e56 ffc0 linkw %fp,#-64 <== NOT EXECUTED
464bc: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
struct sched_param param;
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
464c0: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
464c6: 4bf9 0004 6ddc lea 46ddc <pthread_mutex_lock>,%a5 <== NOT EXECUTED
* errno - otherwise
*/
int
rtems_aio_enqueue (rtems_aio_request *req)
{
464cc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
struct sched_param param;
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
464d0: 4e95 jsr %a5@ <== NOT EXECUTED
if (result != 0) {
464d2: 588f addql #4,%sp <== NOT EXECUTED
struct sched_param param;
/* The queue should be initialized */
AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
result = pthread_mutex_lock (&aio_request_queue.mutex);
464d4: 2400 movel %d0,%d2 <== NOT EXECUTED
if (result != 0) {
464d6: 670c beqs 464e4 <rtems_aio_enqueue+0x2c> <== NOT EXECUTED
free (req);
464d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
464da: 4eb9 0004 31fc jsr 431fc <free> <== NOT EXECUTED
464e0: 6000 01c2 braw 466a4 <rtems_aio_enqueue+0x1ec> <== NOT EXECUTED
return result;
}
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
464e4: 47f9 0004 75b8 lea 475b8 <pthread_self>,%a3 <== NOT EXECUTED
464ea: 4e93 jsr %a3@ <== NOT EXECUTED
464ec: 486e ffdc pea %fp@(-36) <== NOT EXECUTED
464f0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
464f4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
464f6: 4eb9 0004 71dc jsr 471dc <pthread_getschedparam> <== NOT EXECUTED
req->caller_thread = pthread_self ();
464fc: 4e93 jsr %a3@ <== NOT EXECUTED
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
464fe: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
req->policy = policy;
req->aiocbp->error_code = EINPROGRESS;
46502: 7277 moveq #119,%d1 <== NOT EXECUTED
req->aiocbp->return_value = 0;
if ((aio_request_queue.idle_threads == 0) &&
46504: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
req->caller_thread = pthread_self ();
46508: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
4650c: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
46510: 90a8 0014 subl %a0@(20),%d0 <== NOT EXECUTED
req->policy = policy;
46514: 256e fff8 0008 movel %fp@(-8),%a2@(8) <== NOT EXECUTED
/* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
we can use aio_reqprio to lower the priority of the request */
pthread_getschedparam (pthread_self(), &policy, ¶m);
req->caller_thread = pthread_self ();
req->priority = param.sched_priority - req->aiocbp->aio_reqprio;
4651a: 2540 000c movel %d0,%a2@(12) <== NOT EXECUTED
req->policy = policy;
req->aiocbp->error_code = EINPROGRESS;
4651e: 2141 0030 movel %d1,%a0@(48) <== NOT EXECUTED
req->aiocbp->return_value = 0;
46522: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
if ((aio_request_queue.idle_threads == 0) &&
46526: 4ab9 0006 04f0 tstl 604f0 <aio_request_queue+0x68> <== NOT EXECUTED
4652c: 6600 00ae bnew 465dc <rtems_aio_enqueue+0x124> <== NOT EXECUTED
46530: 7004 moveq #4,%d0 <== NOT EXECUTED
46532: b0b9 0006 04ec cmpl 604ec <aio_request_queue+0x64>,%d0 <== NOT EXECUTED
46538: 6d00 00a2 bltw 465dc <rtems_aio_enqueue+0x124> <== NOT EXECUTED
aio_request_queue.active_threads < AIO_MAX_THREADS)
/* we still have empty places on the active_threads chain */
{
chain = &aio_request_queue.work_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
4653c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46540: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46542: 4879 0006 04d0 pea 604d0 <aio_request_queue+0x48> <== NOT EXECUTED
46548: 4eb9 0004 60b2 jsr 460b2 <rtems_aio_search_fd> <== NOT EXECUTED
if (r_chain->new_fd == 1) {
4654e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46552: 7201 moveq #1,%d1 <== NOT EXECUTED
if ((aio_request_queue.idle_threads == 0) &&
aio_request_queue.active_threads < AIO_MAX_THREADS)
/* we still have empty places on the active_threads chain */
{
chain = &aio_request_queue.work_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
46554: 2640 moveal %d0,%a3 <== NOT EXECUTED
46556: 2800 movel %d0,%d4 <== NOT EXECUTED
46558: 2600 movel %d0,%d3 <== NOT EXECUTED
4655a: 5084 addql #8,%d4 <== NOT EXECUTED
4655c: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED
46562: 49eb 0020 lea %a3@(32),%a4 <== NOT EXECUTED
if (r_chain->new_fd == 1) {
46566: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED
4656a: 665e bnes 465ca <rtems_aio_enqueue+0x112> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert(_Chain_Head(the_chain), the_node);
4656c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4656e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46570: 4eb9 0004 8694 jsr 48694 <_Chain_Insert> <== NOT EXECUTED
rtems_chain_prepend (&r_chain->perfd, &req->next_prio);
r_chain->new_fd = 0;
46576: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
4657a: 42a7 clrl %sp@- <== NOT EXECUTED
4657c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4657e: 4eb9 0004 6cc4 jsr 46cc4 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
46584: 42a7 clrl %sp@- <== NOT EXECUTED
46586: 2f0c movel %a4,%sp@- <== NOT EXECUTED
46588: 4eb9 0004 6964 jsr 46964 <pthread_cond_init> <== NOT EXECUTED
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
4658e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46590: 487a fbb2 pea %pc@(46144 <rtems_aio_handle>) <== NOT EXECUTED
46594: 4879 0006 0490 pea 60490 <aio_request_queue+0x8> <== NOT EXECUTED
4659a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4659e: 4eb9 0004 6fd4 jsr 46fd4 <pthread_create> <== NOT EXECUTED
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
465a4: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
r_chain->new_fd = 0;
pthread_mutex_init (&r_chain->mutex, NULL);
pthread_cond_init (&r_chain->cond, NULL);
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
465a8: 2600 movel %d0,%d3 <== NOT EXECUTED
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
465aa: 6714 beqs 465c0 <rtems_aio_enqueue+0x108> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
465ac: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
return result;
465b2: 2403 movel %d3,%d2 <== NOT EXECUTED
AIO_printf ("New thread \n");
result = pthread_create (&thid, &aio_request_queue.attr,
rtems_aio_handle, (void *) r_chain);
if (result != 0) {
pthread_mutex_unlock (&aio_request_queue.mutex);
465b4: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
return result;
465ba: 588f addql #4,%sp <== NOT EXECUTED
465bc: 6000 00e8 braw 466a6 <rtems_aio_enqueue+0x1ee> <== NOT EXECUTED
}
++aio_request_queue.active_threads;
465c0: 52b9 0006 04ec addql #1,604ec <aio_request_queue+0x64> <== NOT EXECUTED
465c6: 6000 00d0 braw 46698 <rtems_aio_enqueue+0x1e0> <== NOT EXECUTED
}
else {
/* put request in the fd chain it belongs to */
pthread_mutex_lock (&r_chain->mutex);
465ca: 2f03 movel %d3,%sp@- <== NOT EXECUTED
465cc: 4e95 jsr %a5@ <== NOT EXECUTED
rtems_aio_insert_prio (&r_chain->perfd, req);
465ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED
465d0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
465d2: 4eb9 0004 63b4 jsr 463b4 <rtems_aio_insert_prio> <== NOT EXECUTED
pthread_cond_signal (&r_chain->cond);
465d8: 2f0c movel %a4,%sp@- <== NOT EXECUTED
465da: 603c bras 46618 <rtems_aio_enqueue+0x160> <== NOT EXECUTED
else
{
/* the maximum number of threads has been already created
even though some of them might be idle.
The request belongs to one of the active fd chain */
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
465dc: 42a7 clrl %sp@- <== NOT EXECUTED
465de: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
465e0: 49f9 0004 60b2 lea 460b2 <rtems_aio_search_fd>,%a4 <== NOT EXECUTED
465e6: 4879 0006 04d0 pea 604d0 <aio_request_queue+0x48> <== NOT EXECUTED
465ec: 4e94 jsr %a4@ <== NOT EXECUTED
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
465ee: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else
{
/* the maximum number of threads has been already created
even though some of them might be idle.
The request belongs to one of the active fd chain */
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
465f2: 2640 moveal %d0,%a3 <== NOT EXECUTED
req->aiocbp->aio_fildes, 0);
if (r_chain != NULL)
465f4: 4a80 tstl %d0 <== NOT EXECUTED
465f6: 6734 beqs 4662c <rtems_aio_enqueue+0x174> <== NOT EXECUTED
{
pthread_mutex_lock (&r_chain->mutex);
465f8: 2600 movel %d0,%d3 <== NOT EXECUTED
465fa: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED
46600: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46602: 4eb9 0004 6ddc jsr 46ddc <pthread_mutex_lock> <== NOT EXECUTED
rtems_aio_insert_prio (&r_chain->perfd, req);
46608: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4660a: 486b 0008 pea %a3@(8) <== NOT EXECUTED
4660e: 4eb9 0004 63b4 jsr 463b4 <rtems_aio_insert_prio> <== NOT EXECUTED
pthread_cond_signal (&r_chain->cond);
46614: 486b 0020 pea %a3@(32) <== NOT EXECUTED
46618: 4eb9 0004 6a08 jsr 46a08 <pthread_cond_signal> <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
4661e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46620: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
46626: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4662a: 606c bras 46698 <rtems_aio_enqueue+0x1e0> <== NOT EXECUTED
} else {
/* or to the idle chain */
chain = &aio_request_queue.idle_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
4662c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46630: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
46634: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46636: 4879 0006 04dc pea 604dc <aio_request_queue+0x54> <== NOT EXECUTED
4663c: 4e94 jsr %a4@ <== NOT EXECUTED
if (r_chain->new_fd == 1) {
4663e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46642: 7201 moveq #1,%d1 <== NOT EXECUTED
} else {
/* or to the idle chain */
chain = &aio_request_queue.idle_req;
r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
46644: 2640 moveal %d0,%a3 <== NOT EXECUTED
46646: 5080 addql #8,%d0 <== NOT EXECUTED
if (r_chain->new_fd == 1) {
46648: b2ab 0018 cmpl %a3@(24),%d1 <== NOT EXECUTED
4664c: 663e bnes 4668c <rtems_aio_enqueue+0x1d4> <== NOT EXECUTED
4664e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46650: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46652: 4eb9 0004 8694 jsr 48694 <_Chain_Insert> <== NOT EXECUTED
/* If this is a new fd chain we signal the idle threads that
might be waiting for requests */
AIO_printf (" New chain on waiting queue \n ");
rtems_chain_prepend (&r_chain->perfd, &req->next_prio);
r_chain->new_fd = 0;
46658: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
4665c: 42a7 clrl %sp@- <== NOT EXECUTED
4665e: 486b 001c pea %a3@(28) <== NOT EXECUTED
46662: 4eb9 0004 6cc4 jsr 46cc4 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
46668: 42a7 clrl %sp@- <== NOT EXECUTED
4666a: 486b 0020 pea %a3@(32) <== NOT EXECUTED
4666e: 4eb9 0004 6964 jsr 46964 <pthread_cond_init> <== NOT EXECUTED
pthread_cond_signal (&aio_request_queue.new_req);
46674: 4879 0006 048c pea 6048c <aio_request_queue+0x4> <== NOT EXECUTED
4667a: 4eb9 0004 6a08 jsr 46a08 <pthread_cond_signal> <== NOT EXECUTED
++aio_request_queue.idle_threads;
46680: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
46684: 52b9 0006 04f0 addql #1,604f0 <aio_request_queue+0x68> <== NOT EXECUTED
4668a: 600c bras 46698 <rtems_aio_enqueue+0x1e0> <== NOT EXECUTED
} else
/* just insert the request in the existing fd chain */
rtems_aio_insert_prio (&r_chain->perfd, req);
4668c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4668e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46690: 4eb9 0004 63b4 jsr 463b4 <rtems_aio_insert_prio> <== NOT EXECUTED
46696: 508f addql #8,%sp <== NOT EXECUTED
}
}
pthread_mutex_unlock (&aio_request_queue.mutex);
46698: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
4669e: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
return 0;
466a4: 588f addql #4,%sp <== NOT EXECUTED
}
466a6: 2002 movel %d2,%d0 <== NOT EXECUTED
466a8: 4cee 3c1c ffc0 moveml %fp@(-64),%d2-%d4/%a2-%a5 <== NOT EXECUTED
466ae: 4e5e unlk %fp <== NOT EXECUTED
...
00046144 <rtems_aio_handle>:
* NULL - if error
*/
static void *
rtems_aio_handle (void *arg)
{
46144: 4e56 ffa8 linkw %fp,#-88 <== NOT EXECUTED
46148: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
4614c: 240e movel %fp,%d2 <== NOT EXECUTED
node = rtems_chain_first (chain);
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
4614e: 280e movel %fp,%d4 <== NOT EXECUTED
/* acquire the mutex of the current fd chain.
we don't need to lock the queue mutex since we can
add requests to idle fd chains or even active ones
if the working request has been extracted from the
chain */
result = pthread_mutex_lock (&r_chain->mutex);
46150: 2e3c 0004 6ddc movel #290268,%d7 <== NOT EXECUTED
46156: 4bf9 0004 6e74 lea 46e74 <pthread_mutex_unlock>,%a5 <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
4615c: 0682 ffff fff4 addil #-12,%d2 <== NOT EXECUTED
46162: 2c3c 0004 6834 movel #288820,%d6 <== NOT EXECUTED
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
46168: 2a3c 0004 6a7c movel #289404,%d5 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4616e: 49f9 0004 8638 lea 48638 <_Chain_Extract>,%a4 <== NOT EXECUTED
node = rtems_chain_first (chain);
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
46174: 0684 ffff ffd8 addil #-40,%d4 <== NOT EXECUTED
static void *
rtems_aio_handle (void *arg)
{
rtems_aio_request_chain *r_chain = arg;
4617a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/* acquire the mutex of the current fd chain.
we don't need to lock the queue mutex since we can
add requests to idle fd chains or even active ones
if the working request has been extracted from the
chain */
result = pthread_mutex_lock (&r_chain->mutex);
4617e: 260a movel %a2,%d3 <== NOT EXECUTED
46180: 0683 0000 001c addil #28,%d3 <== NOT EXECUTED
46186: 2047 moveal %d7,%a0 <== NOT EXECUTED
46188: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4618a: 4e90 jsr %a0@ <== NOT EXECUTED
if (result != 0)
4618c: 588f addql #4,%sp <== NOT EXECUTED
4618e: 4a80 tstl %d0 <== NOT EXECUTED
46190: 6600 0216 bnew 463a8 <rtems_aio_handle+0x264> <== 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 );
46194: 200a movel %a2,%d0 <== NOT EXECUTED
46196: 0680 0000 000c addil #12,%d0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4619c: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED
/* If the locked chain is not empty, take the first
request extract it, unlock the chain and process
the request, in this way the user can supply more
requests to this fd chain */
if (!rtems_chain_is_empty (chain)) {
461a0: b08b cmpl %a3,%d0 <== NOT EXECUTED
461a2: 6700 00da beqw 4627e <rtems_aio_handle+0x13a> <== NOT EXECUTED
node = rtems_chain_first (chain);
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
461a6: 41f9 0004 75b8 lea 475b8 <pthread_self>,%a0 <== NOT EXECUTED
461ac: 2d48 ffd0 movel %a0,%fp@(-48) <== NOT EXECUTED
461b0: 4e90 jsr %a0@ <== NOT EXECUTED
461b2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
461b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
461b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461ba: 4eb9 0004 71dc jsr 471dc <pthread_getschedparam> <== NOT EXECUTED
param.sched_priority = req->priority;
pthread_setschedparam (pthread_self(), req->policy, ¶m);
461c0: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
req = (rtems_aio_request *) node;
/* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING
discussion in rtems_aio_enqueue () */
pthread_getschedparam (pthread_self(), &policy, ¶m);
param.sched_priority = req->priority;
461c4: 2d6b 000c ffd8 movel %a3@(12),%fp@(-40) <== NOT EXECUTED
pthread_setschedparam (pthread_self(), req->policy, ¶m);
461ca: 206e ffd0 moveal %fp@(-48),%a0 <== NOT EXECUTED
461ce: 2d40 ffd4 movel %d0,%fp@(-44) <== NOT EXECUTED
461d2: 4e90 jsr %a0@ <== NOT EXECUTED
461d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
461d6: 2f2e ffd4 movel %fp@(-44),%sp@- <== NOT EXECUTED
461da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461dc: 4eb9 0004 75cc jsr 475cc <pthread_setschedparam> <== NOT EXECUTED
461e2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
461e4: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_chain_extract (node);
pthread_mutex_unlock (&r_chain->mutex);
461e6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
461e8: 4e95 jsr %a5@ <== NOT EXECUTED
switch (req->aiocbp->aio_lio_opcode) {
461ea: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED
461ee: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
461f2: 7202 moveq #2,%d1 <== NOT EXECUTED
461f4: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED
461f8: b280 cmpl %d0,%d1 <== NOT EXECUTED
461fa: 672a beqs 46226 <rtems_aio_handle+0xe2> <== NOT EXECUTED
461fc: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
46200: b280 cmpl %d0,%d1 <== NOT EXECUTED
46202: 6740 beqs 46244 <rtems_aio_handle+0x100> <== NOT EXECUTED
46204: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
46208: b280 cmpl %d0,%d1 <== NOT EXECUTED
4620a: 6648 bnes 46254 <rtems_aio_handle+0x110> <== NOT EXECUTED
case LIO_READ:
result = pread (req->aiocbp->aio_fildes,
4620c: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
46210: 2f28 0004 movel %a0@(4),%sp@- <== NOT EXECUTED
46214: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED
46218: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4621c: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4621e: 4eb9 0004 fa46 jsr 4fa46 <pread> <== NOT EXECUTED
46224: 6018 bras 4623e <rtems_aio_handle+0xfa> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
case LIO_WRITE:
result = pwrite (req->aiocbp->aio_fildes,
46226: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4622a: 2f28 0004 movel %a0@(4),%sp@- <== NOT EXECUTED
4622e: 2f28 0010 movel %a0@(16),%sp@- <== NOT EXECUTED
46232: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
46236: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46238: 4eb9 0004 fb0e jsr 4fb0e <pwrite> <== NOT EXECUTED
(void *) req->aiocbp->aio_buf,
req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
break;
4623e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46242: 600a bras 4624e <rtems_aio_handle+0x10a> <== NOT EXECUTED
case LIO_SYNC:
result = fsync (req->aiocbp->aio_fildes);
46244: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
46246: 4eb9 0004 c1c4 jsr 4c1c4 <fsync> <== NOT EXECUTED
break;
4624c: 588f addql #4,%sp <== NOT EXECUTED
default:
result = -1;
}
if (result == -1) {
4624e: 72ff moveq #-1,%d1 <== NOT EXECUTED
46250: b280 cmpl %d0,%d1 <== NOT EXECUTED
46252: 661a bnes 4626e <rtems_aio_handle+0x12a> <== NOT EXECUTED
req->aiocbp->return_value = -1;
46254: 266b 0014 moveal %a3@(20),%a3 <== NOT EXECUTED
46258: 70ff moveq #-1,%d0 <== NOT EXECUTED
4625a: 2740 0034 movel %d0,%a3@(52) <== NOT EXECUTED
req->aiocbp->error_code = errno;
4625e: 4eb9 0004 efa0 jsr 4efa0 <__errno> <== NOT EXECUTED
46264: 2040 moveal %d0,%a0 <== NOT EXECUTED
46266: 2750 0030 movel %a0@,%a3@(48) <== NOT EXECUTED
4626a: 6000 ff12 braw 4617e <rtems_aio_handle+0x3a> <== NOT EXECUTED
} else {
req->aiocbp->return_value = result;
4626e: 206b 0014 moveal %a3@(20),%a0 <== NOT EXECUTED
46272: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
req->aiocbp->error_code = 0;
46276: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
4627a: 6000 ff02 braw 4617e <rtems_aio_handle+0x3a> <== NOT EXECUTED
wait for a signal on chain, this will unlock the queue.
The fd chain is already unlocked */
struct timespec timeout;
pthread_mutex_unlock (&r_chain->mutex);
4627e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46280: 4e95 jsr %a5@ <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
46282: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
46288: 2047 moveal %d7,%a0 <== NOT EXECUTED
4628a: 4e90 jsr %a0@ <== NOT EXECUTED
if (rtems_chain_is_empty (chain))
4628c: 508f addql #8,%sp <== NOT EXECUTED
4628e: b7ea 0008 cmpal %a2@(8),%a3 <== NOT EXECUTED
46292: 6600 feea bnew 4617e <rtems_aio_handle+0x3a> <== NOT EXECUTED
{
clock_gettime (CLOCK_REALTIME, &timeout);
46296: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46298: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4629c: 2046 moveal %d6,%a0 <== NOT EXECUTED
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
4629e: 47ea 0020 lea %a2@(32),%a3 <== NOT EXECUTED
pthread_mutex_unlock (&r_chain->mutex);
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
462a2: 4e90 jsr %a0@ <== NOT EXECUTED
timeout.tv_sec += 3;
462a4: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&r_chain->cond,
462a8: 2045 moveal %d5,%a0 <== NOT EXECUTED
462aa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
462ac: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
pthread_mutex_lock (&aio_request_queue.mutex);
if (rtems_chain_is_empty (chain))
{
clock_gettime (CLOCK_REALTIME, &timeout);
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
462b2: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
result = pthread_cond_timedwait (&r_chain->cond,
462b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
462b8: 4e90 jsr %a0@ <== NOT EXECUTED
&aio_request_queue.mutex, &timeout);
/* If no requests were added to the chain we delete the fd chain from
the queue and start working with idle fd chains */
if (result == ETIMEDOUT) {
462ba: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
462be: 7274 moveq #116,%d1 <== NOT EXECUTED
462c0: b280 cmpl %d0,%d1 <== NOT EXECUTED
462c2: 6600 feba bnew 4617e <rtems_aio_handle+0x3a> <== NOT EXECUTED
462c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
462c8: 4e94 jsr %a4@ <== NOT EXECUTED
rtems_chain_extract (&r_chain->next_fd);
pthread_mutex_destroy (&r_chain->mutex);
462ca: 2f03 movel %d3,%sp@- <== NOT EXECUTED
462cc: 4eb9 0004 6ba4 jsr 46ba4 <pthread_mutex_destroy> <== NOT EXECUTED
pthread_cond_destroy (&r_chain->cond);
462d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
462d4: 4eb9 0004 68a0 jsr 468a0 <pthread_cond_destroy> <== NOT EXECUTED
free (r_chain);
462da: 2f0a movel %a2,%sp@- <== NOT EXECUTED
462dc: 4eb9 0004 31fc jsr 431fc <free> <== NOT EXECUTED
/* If the idle chain is empty sleep for 3 seconds and wait for a
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
462e2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
462e6: 41f9 0006 04e0 lea 604e0 <aio_request_queue+0x58>,%a0 <== NOT EXECUTED
462ec: b1f9 0006 04dc cmpal 604dc <aio_request_queue+0x54>,%a0 <== NOT EXECUTED
462f2: 6600 00a6 bnew 4639a <rtems_aio_handle+0x256> <== NOT EXECUTED
++aio_request_queue.idle_threads;
clock_gettime (CLOCK_REALTIME, &timeout);
462f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
462f8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
free (r_chain);
/* If the idle chain is empty sleep for 3 seconds and wait for a
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
++aio_request_queue.idle_threads;
462fc: 52b9 0006 04f0 addql #1,604f0 <aio_request_queue+0x68> <== NOT EXECUTED
clock_gettime (CLOCK_REALTIME, &timeout);
46302: 2046 moveal %d6,%a0 <== NOT EXECUTED
46304: 4e90 jsr %a0@ <== NOT EXECUTED
timeout.tv_sec += 3;
46306: 56ae fff4 addql #3,%fp@(-12) <== NOT EXECUTED
timeout.tv_nsec = 0;
result = pthread_cond_timedwait (&aio_request_queue.new_req,
4630a: 2045 moveal %d5,%a0 <== NOT EXECUTED
4630c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4630e: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
46314: 4879 0006 048c pea 6048c <aio_request_queue+0x4> <== NOT EXECUTED
signal. The thread now becomes idle. */
if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {
++aio_request_queue.idle_threads;
clock_gettime (CLOCK_REALTIME, &timeout);
timeout.tv_sec += 3;
timeout.tv_nsec = 0;
4631a: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
result = pthread_cond_timedwait (&aio_request_queue.new_req,
4631e: 4e90 jsr %a0@ <== NOT EXECUTED
&aio_request_queue.mutex,
&timeout);
/* If no new fd chain was added in the idle requests
then this thread is finished */
if (result == ETIMEDOUT) {
46320: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46324: 7274 moveq #116,%d1 <== NOT EXECUTED
46326: b280 cmpl %d0,%d1 <== NOT EXECUTED
46328: 6610 bnes 4633a <rtems_aio_handle+0x1f6> <== NOT EXECUTED
pthread_mutex_unlock (&aio_request_queue.mutex);
4632a: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
46330: 4eb9 0004 6e74 jsr 46e74 <pthread_mutex_unlock> <== NOT EXECUTED
return NULL;
46336: 588f addql #4,%sp <== NOT EXECUTED
46338: 606e bras 463a8 <rtems_aio_handle+0x264> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4633a: 2679 0006 04dc moveal 604dc <aio_request_queue+0x54>,%a3 <== NOT EXECUTED
return NULL;
}
/* Otherwise move this chain to the working chain and
start the loop all over again */
--aio_request_queue.idle_threads;
46340: 53b9 0006 04f0 subql #1,604f0 <aio_request_queue+0x68> <== NOT EXECUTED
46346: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46348: 4e94 jsr %a4@ <== NOT EXECUTED
node = rtems_chain_first (&aio_request_queue.idle_req);
rtems_chain_extract (node);
r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,
4634a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4634e: 2f2b 0014 movel %a3@(20),%sp@- <== NOT EXECUTED
46352: 4879 0006 04d0 pea 604d0 <aio_request_queue+0x48> <== NOT EXECUTED
46358: 4eb9 0004 60b2 jsr 460b2 <rtems_aio_search_fd> <== NOT EXECUTED
4635e: 2440 moveal %d0,%a2 <== NOT EXECUTED
((rtems_aio_request_chain *)node)->fildes,
1);
r_chain->new_fd = 0;
46360: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
pthread_mutex_init (&r_chain->mutex, NULL);
46364: 42a7 clrl %sp@- <== NOT EXECUTED
46366: 486a 001c pea %a2@(28) <== NOT EXECUTED
4636a: 4eb9 0004 6cc4 jsr 46cc4 <pthread_mutex_init> <== NOT EXECUTED
pthread_cond_init (&r_chain->cond, NULL);
46370: 42a7 clrl %sp@- <== NOT EXECUTED
46372: 486a 0020 pea %a2@(32) <== NOT EXECUTED
46376: 4eb9 0004 6964 jsr 46964 <pthread_cond_init> <== NOT EXECUTED
r_chain->perfd = ((rtems_aio_request_chain *)node)->perfd;
4637c: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
46380: 4878 000c pea c <OPER1> <== NOT EXECUTED
46384: 486b 0008 pea %a3@(8) <== NOT EXECUTED
46388: 486a 0008 pea %a2@(8) <== NOT EXECUTED
4638c: 4eb9 0004 f8cc jsr 4f8cc <memcpy> <== NOT EXECUTED
46392: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46396: 6000 fde6 braw 4617e <rtems_aio_handle+0x3a> <== NOT EXECUTED
}
else
/* If there was a request added in the initial fd chain then release
the mutex and process it */
pthread_mutex_unlock (&aio_request_queue.mutex);
4639a: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
463a0: 4e95 jsr %a5@ <== NOT EXECUTED
463a2: 588f addql #4,%sp <== NOT EXECUTED
463a4: 6000 fdd8 braw 4617e <rtems_aio_handle+0x3a> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
463a8: 4280 clrl %d0 <== NOT EXECUTED
463aa: 4cee 3cfc ffa8 moveml %fp@(-88),%d2-%d7/%a2-%a5 <== NOT EXECUTED
463b0: 4e5e unlk %fp <== NOT EXECUTED
00045fc8 <rtems_aio_init>:
* 0 - if initialization succeeded
*/
int
rtems_aio_init (void)
{
45fc8: 4e56 0000 linkw %fp,#0
45fcc: 2f02 movel %d2,%sp@-
int result = 0;
result = pthread_attr_init (&aio_request_queue.attr);
45fce: 4879 0006 0490 pea 60490 <aio_request_queue+0x8>
45fd4: 4eb9 0004 6f80 jsr 46f80 <pthread_attr_init>
if (result != 0)
45fda: 588f addql #4,%sp
int
rtems_aio_init (void)
{
int result = 0;
result = pthread_attr_init (&aio_request_queue.attr);
45fdc: 2400 movel %d0,%d2
if (result != 0)
45fde: 6600 00c8 bnew 460a8 <rtems_aio_init+0xe0>
return result;
result =
45fe2: 42a7 clrl %sp@-
45fe4: 4879 0006 0490 pea 60490 <aio_request_queue+0x8>
45fea: 4eb9 0004 6fac jsr 46fac <pthread_attr_setdetachstate>
pthread_attr_setdetachstate (&aio_request_queue.attr,
PTHREAD_CREATE_DETACHED);
if (result != 0)
45ff0: 508f addql #8,%sp
45ff2: 4a80 tstl %d0
45ff4: 670e beqs 46004 <rtems_aio_init+0x3c> <== ALWAYS TAKEN
pthread_attr_destroy (&aio_request_queue.attr);
45ff6: 4879 0006 0490 pea 60490 <aio_request_queue+0x8> <== NOT EXECUTED
45ffc: 4eb9 0004 6f64 jsr 46f64 <pthread_attr_destroy> <== NOT EXECUTED
46002: 588f addql #4,%sp <== NOT EXECUTED
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
46004: 42a7 clrl %sp@-
46006: 4879 0006 0488 pea 60488 <aio_request_queue>
4600c: 4eb9 0004 6cc4 jsr 46cc4 <pthread_mutex_init>
if (result != 0)
46012: 508f addql #8,%sp
46014: 4a80 tstl %d0
46016: 670e beqs 46026 <rtems_aio_init+0x5e> <== ALWAYS TAKEN
pthread_attr_destroy (&aio_request_queue.attr);
46018: 4879 0006 0490 pea 60490 <aio_request_queue+0x8> <== NOT EXECUTED
4601e: 4eb9 0004 6f64 jsr 46f64 <pthread_attr_destroy> <== NOT EXECUTED
46024: 588f addql #4,%sp <== NOT EXECUTED
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
46026: 42a7 clrl %sp@-
46028: 4879 0006 048c pea 6048c <aio_request_queue+0x4>
4602e: 4eb9 0004 6964 jsr 46964 <pthread_cond_init>
if (result != 0) {
46034: 508f addql #8,%sp
result = pthread_mutex_init (&aio_request_queue.mutex, NULL);
if (result != 0)
pthread_attr_destroy (&aio_request_queue.attr);
result = pthread_cond_init (&aio_request_queue.new_req, NULL);
46036: 2400 movel %d0,%d2
if (result != 0) {
46038: 671a beqs 46054 <rtems_aio_init+0x8c> <== ALWAYS TAKEN
pthread_mutex_destroy (&aio_request_queue.mutex);
4603a: 4879 0006 0488 pea 60488 <aio_request_queue> <== NOT EXECUTED
46040: 4eb9 0004 6ba4 jsr 46ba4 <pthread_mutex_destroy> <== NOT EXECUTED
pthread_attr_destroy (&aio_request_queue.attr);
46046: 4879 0006 0490 pea 60490 <aio_request_queue+0x8> <== NOT EXECUTED
4604c: 4eb9 0004 6f64 jsr 46f64 <pthread_attr_destroy> <== NOT EXECUTED
46052: 508f addql #8,%sp <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
46054: 42b9 0006 04d4 clrl 604d4 <aio_request_queue+0x4c>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
4605a: 203c 0006 04d4 movel #394452,%d0
46060: 23c0 0006 04d0 movel %d0,604d0 <aio_request_queue+0x48>
head->previous = NULL;
tail->previous = head;
46066: 203c 0006 04d0 movel #394448,%d0
4606c: 23c0 0006 04d8 movel %d0,604d8 <aio_request_queue+0x50>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
46072: 203c 0006 04e0 movel #394464,%d0
46078: 23c0 0006 04dc movel %d0,604dc <aio_request_queue+0x54>
head->previous = NULL;
tail->previous = head;
4607e: 203c 0006 04dc movel #394460,%d0
46084: 23c0 0006 04e4 movel %d0,604e4 <aio_request_queue+0x5c>
rtems_chain_initialize_empty (&aio_request_queue.work_req);
rtems_chain_initialize_empty (&aio_request_queue.idle_req);
aio_request_queue.active_threads = 0;
aio_request_queue.idle_threads = 0;
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
4608a: 203c 0000 b00b movel #45067,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
46090: 42b9 0006 04e0 clrl 604e0 <aio_request_queue+0x58>
}
rtems_chain_initialize_empty (&aio_request_queue.work_req);
rtems_chain_initialize_empty (&aio_request_queue.idle_req);
aio_request_queue.active_threads = 0;
46096: 42b9 0006 04ec clrl 604ec <aio_request_queue+0x64>
aio_request_queue.idle_threads = 0;
4609c: 42b9 0006 04f0 clrl 604f0 <aio_request_queue+0x68>
aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;
460a2: 23c0 0006 04e8 movel %d0,604e8 <aio_request_queue+0x60>
return result;
}
460a8: 2002 movel %d2,%d0
460aa: 242e fffc movel %fp@(-4),%d2
460ae: 4e5e unlk %fp <== NOT EXECUTED
000463b4 <rtems_aio_insert_prio>:
* NONE
*/
void
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{
463b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
463b8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
463bc: 2240 moveal %d0,%a1 <== NOT EXECUTED
* NONE
*/
void
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{
463be: 2f0b movel %a3,%sp@- <== NOT EXECUTED
463c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
463c2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
463c6: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
rtems_chain_node *node;
AIO_printf ("FD exists \n");
node = rtems_chain_first (chain);
if (rtems_chain_is_empty (chain)) {
463c8: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
463ca: 672e beqs 463fa <rtems_aio_insert_prio+0x46> <== NOT EXECUTED
AIO_printf ("First in chain \n");
rtems_chain_prepend (chain, &req->next_prio);
} else {
AIO_printf ("Add by priority \n");
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
463cc: 2668 0014 moveal %a0@(20),%a3 <== NOT EXECUTED
463d0: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
while (req->aiocbp->aio_reqprio > prio &&
463d4: 266a 0014 moveal %a2@(20),%a3 <== NOT EXECUTED
463d8: 222b 0014 movel %a3@(20),%d1 <== NOT EXECUTED
463dc: 600a bras 463e8 <rtems_aio_insert_prio+0x34> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
463de: 2050 moveal %a0@,%a0 <== NOT EXECUTED
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (req->aiocbp->aio_reqprio > prio &&
!rtems_chain_is_tail (chain, node)) {
node = rtems_chain_next (node);
prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
463e0: 2668 0014 moveal %a0@(20),%a3 <== NOT EXECUTED
463e4: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
rtems_chain_prepend (chain, &req->next_prio);
} else {
AIO_printf ("Add by priority \n");
int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;
while (req->aiocbp->aio_reqprio > prio &&
463e8: b081 cmpl %d1,%d0 <== NOT EXECUTED
463ea: 6c04 bges 463f0 <rtems_aio_insert_prio+0x3c> <== NOT EXECUTED
463ec: b3c8 cmpal %a0,%a1 <== NOT EXECUTED
463ee: 66ee bnes 463de <rtems_aio_insert_prio+0x2a> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(
rtems_chain_node *after_node,
rtems_chain_node *the_node
)
{
_Chain_Insert( after_node, the_node );
463f0: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
463f4: 2d68 0004 0008 movel %a0@(4),%fp@(8) <== NOT EXECUTED
}
rtems_chain_insert (node->previous, &req->next_prio);
}
}
463fa: 245f moveal %sp@+,%a2 <== NOT EXECUTED
463fc: 265f moveal %sp@+,%a3 <== NOT EXECUTED
463fe: 4e5e unlk %fp <== NOT EXECUTED
46400: 4ef9 0004 8694 jmp 48694 <_Chain_Insert> <== NOT EXECUTED
00046406 <rtems_aio_remove_fd>:
* Output parameters:
* NONE
*/
void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain)
{
46406: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4640a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4640e: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
46412: 2408 movel %a0,%d2 <== NOT EXECUTED
46414: 0682 0000 000c addil #12,%d2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
4641a: 49f9 0004 8638 lea 48638 <_Chain_Extract>,%a4 <== NOT EXECUTED
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
node = rtems_chain_next (node);
req->aiocbp->error_code = ECANCELED;
req->aiocbp->return_value = -1;
free (req);
46420: 47f9 0004 31fc lea 431fc <free>,%a3 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
46426: 2468 0008 moveal %a0@(8),%a2 <== NOT EXECUTED
rtems_chain_control *chain;
rtems_chain_node *node;
chain = &r_chain->perfd;
node = rtems_chain_first (chain);
while (!rtems_chain_is_tail (chain, node))
4642a: 6022 bras 4644e <rtems_aio_remove_fd+0x48> <== NOT EXECUTED
4642c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4642e: 4e94 jsr %a4@ <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
46430: 2612 movel %a2@,%d3 <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
node = rtems_chain_next (node);
req->aiocbp->error_code = ECANCELED;
46432: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED
46438: 226a 0014 moveal %a2@(20),%a1 <== NOT EXECUTED
4643c: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED
req->aiocbp->return_value = -1;
46440: 70ff moveq #-1,%d0 <== NOT EXECUTED
46442: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
free (req);
46446: 2f0a movel %a2,%sp@- <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
node = rtems_chain_next (node);
46448: 2443 moveal %d3,%a2 <== NOT EXECUTED
req->aiocbp->error_code = ECANCELED;
req->aiocbp->return_value = -1;
free (req);
4644a: 4e93 jsr %a3@ <== NOT EXECUTED
while (!rtems_chain_is_tail (chain, node))
{
rtems_chain_extract (node);
rtems_aio_request *req = (rtems_aio_request *) node;
node = rtems_chain_next (node);
4644c: 508f addql #8,%sp <== NOT EXECUTED
rtems_chain_control *chain;
rtems_chain_node *node;
chain = &r_chain->perfd;
node = rtems_chain_first (chain);
while (!rtems_chain_is_tail (chain, node))
4644e: b48a cmpl %a2,%d2 <== NOT EXECUTED
46450: 66da bnes 4642c <rtems_aio_remove_fd+0x26> <== NOT EXECUTED
node = rtems_chain_next (node);
req->aiocbp->error_code = ECANCELED;
req->aiocbp->return_value = -1;
free (req);
}
}
46452: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
46458: 4e5e unlk %fp <== NOT EXECUTED
0004645c <rtems_aio_remove_req>:
* AIO_NOTCANCELED - if request was not canceled
* AIO_CANCELED - if request was canceled
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
4645c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
46460: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
* AIO_NOTCANCELED - if request was not canceled
* AIO_CANCELED - if request was canceled
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
46464: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46466: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
4646a: 2458 moveal %a0@+,%a2 <== NOT EXECUTED
* AIO_CANCELED - if request was canceled
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
if (rtems_chain_is_empty (chain))
4646c: b1ca cmpal %a2,%a0 <== NOT EXECUTED
4646e: 6608 bnes 46478 <rtems_aio_remove_req+0x1c> <== NOT EXECUTED
46470: 6038 bras 464aa <rtems_aio_remove_req+0x4e> <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
46472: 2451 moveal %a1@,%a2 <== NOT EXECUTED
rtems_chain_node *node = rtems_chain_first (chain);
rtems_aio_request *current;
current = (rtems_aio_request *) node;
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
46474: b1ca cmpal %a2,%a0 <== NOT EXECUTED
46476: 6736 beqs 464ae <rtems_aio_remove_req+0x52> <== NOT EXECUTED
node = rtems_chain_next (node);
current = (rtems_aio_request *) node;
46478: 224a moveal %a2,%a1 <== NOT EXECUTED
rtems_chain_node *node = rtems_chain_first (chain);
rtems_aio_request *current;
current = (rtems_aio_request *) node;
while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
4647a: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4647e: 66f2 bnes 46472 <rtems_aio_remove_req+0x16> <== NOT EXECUTED
46480: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46482: 4eb9 0004 8638 jsr 48638 <_Chain_Extract> <== NOT EXECUTED
if (rtems_chain_is_tail (chain, node))
return AIO_NOTCANCELED;
else
{
rtems_chain_extract (node);
current->aiocbp->error_code = ECANCELED;
46488: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
4648c: 203c 0000 008c movel #140,%d0 <== NOT EXECUTED
46492: 2140 0030 movel %d0,%a0@(48) <== NOT EXECUTED
current->aiocbp->return_value = -1;
46496: 70ff moveq #-1,%d0 <== NOT EXECUTED
46498: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
free (current);
4649c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4649e: 4eb9 0004 31fc jsr 431fc <free> <== NOT EXECUTED
}
return AIO_CANCELED;
464a4: 508f addql #8,%sp <== NOT EXECUTED
464a6: 4280 clrl %d0 <== NOT EXECUTED
464a8: 6006 bras 464b0 <rtems_aio_remove_req+0x54> <== NOT EXECUTED
*/
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{
if (rtems_chain_is_empty (chain))
return AIO_ALLDONE;
464aa: 7002 moveq #2,%d0 <== NOT EXECUTED
464ac: 6002 bras 464b0 <rtems_aio_remove_req+0x54> <== NOT EXECUTED
node = rtems_chain_next (node);
current = (rtems_aio_request *) node;
}
if (rtems_chain_is_tail (chain, node))
return AIO_NOTCANCELED;
464ae: 7001 moveq #1,%d0 <== NOT EXECUTED
current->aiocbp->return_value = -1;
free (current);
}
return AIO_CANCELED;
}
464b0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
464b4: 4e5e unlk %fp <== NOT EXECUTED
000460b2 <rtems_aio_search_fd>:
*
*/
rtems_aio_request_chain *
rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create)
{
460b2: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
460b6: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
460ba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
460be: 204a moveal %a2,%a0 <== NOT EXECUTED
*
*/
rtems_aio_request_chain *
rtems_aio_search_fd (rtems_chain_control *chain, int fildes, int create)
{
460c0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
}
AIO_printf ("Thread finished\n");
return NULL;
}
460c4: 2858 moveal %a0@+,%a4 <== NOT EXECUTED
460c6: 6002 bras 460ca <rtems_aio_search_fd+0x18> <== NOT EXECUTED
460c8: 2854 moveal %a4@,%a4 <== NOT EXECUTED
rtems_chain_node *node;
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
460ca: 202c 0014 movel %a4@(20),%d0 <== NOT EXECUTED
node = rtems_chain_next (node);
460ce: 264c moveal %a4,%a3 <== NOT EXECUTED
rtems_chain_node *node;
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
460d0: b480 cmpl %d0,%d2 <== NOT EXECUTED
460d2: 6e04 bgts 460d8 <rtems_aio_search_fd+0x26> <== NOT EXECUTED
node = rtems_chain_next (node);
r_chain = (rtems_aio_request_chain *) node;
}
if (r_chain->fildes == fildes)
460d4: 6708 beqs 460de <rtems_aio_search_fd+0x2c> <== NOT EXECUTED
460d6: 600c bras 460e4 <rtems_aio_search_fd+0x32> <== NOT EXECUTED
rtems_chain_node *node;
node = rtems_chain_first (chain);
r_chain = (rtems_aio_request_chain *) node;
while (r_chain->fildes < fildes && !rtems_chain_is_tail (chain, node)) {
460d8: b1cc cmpal %a4,%a0 <== NOT EXECUTED
460da: 66ec bnes 460c8 <rtems_aio_search_fd+0x16> <== NOT EXECUTED
460dc: 6006 bras 460e4 <rtems_aio_search_fd+0x32> <== NOT EXECUTED
node = rtems_chain_next (node);
r_chain = (rtems_aio_request_chain *) node;
}
if (r_chain->fildes == fildes)
r_chain->new_fd = 0;
460de: 42ac 0018 clrl %a4@(24) <== NOT EXECUTED
460e2: 6054 bras 46138 <rtems_aio_search_fd+0x86> <== NOT EXECUTED
else {
if (create == 0)
460e4: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
460e8: 674c beqs 46136 <rtems_aio_search_fd+0x84> <== NOT EXECUTED
r_chain = NULL;
else {
r_chain = malloc (sizeof (rtems_aio_request_chain));
460ea: 4878 0024 pea 24 <OPER2+0x10> <== NOT EXECUTED
460ee: 4eb9 0004 3724 jsr 43724 <malloc> <== NOT EXECUTED
rtems_chain_initialize_empty (&r_chain->perfd);
if (rtems_chain_is_empty (chain))
460f4: 588f addql #4,%sp <== NOT EXECUTED
r_chain->new_fd = 0;
else {
if (create == 0)
r_chain = NULL;
else {
r_chain = malloc (sizeof (rtems_aio_request_chain));
460f6: 2a40 moveal %d0,%a5 <== NOT EXECUTED
460f8: 2840 moveal %d0,%a4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
460fa: 5080 addql #8,%d0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
460fc: 41ed 000c lea %a5@(12),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
46100: 2b40 0010 movel %d0,%a5@(16) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
46104: 200a movel %a2,%d0 <== NOT EXECUTED
46106: 5880 addql #4,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
46108: 2b48 0008 movel %a0,%a5@(8) <== NOT EXECUTED
4610c: 41f9 0004 8694 lea 48694 <_Chain_Insert>,%a0 <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
46112: 42ad 000c clrl %a5@(12) <== NOT EXECUTED
rtems_chain_initialize_empty (&r_chain->perfd);
if (rtems_chain_is_empty (chain))
46116: b092 cmpl %a2@,%d0 <== NOT EXECUTED
46118: 6606 bnes 46120 <rtems_aio_search_fd+0x6e> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert(_Chain_Head(the_chain), the_node);
4611a: 2f0d movel %a5,%sp@- <== NOT EXECUTED
4611c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4611e: 6006 bras 46126 <rtems_aio_search_fd+0x74> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(
rtems_chain_node *after_node,
rtems_chain_node *the_node
)
{
_Chain_Insert( after_node, the_node );
46120: 2f0d movel %a5,%sp@- <== NOT EXECUTED
46122: 2f2b 0004 movel %a3@(4),%sp@- <== NOT EXECUTED
46126: 4e90 jsr %a0@ <== NOT EXECUTED
46128: 508f addql #8,%sp <== NOT EXECUTED
rtems_chain_prepend (chain, &r_chain->next_fd);
else
rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd);
r_chain->new_fd = 1;
4612a: 7001 moveq #1,%d0 <== NOT EXECUTED
r_chain->fildes = fildes;
4612c: 2b42 0014 movel %d2,%a5@(20) <== NOT EXECUTED
if (rtems_chain_is_empty (chain))
rtems_chain_prepend (chain, &r_chain->next_fd);
else
rtems_chain_insert (rtems_chain_previous (node), &r_chain->next_fd);
r_chain->new_fd = 1;
46130: 2b40 0018 movel %d0,%a5@(24) <== NOT EXECUTED
46134: 6002 bras 46138 <rtems_aio_search_fd+0x86> <== NOT EXECUTED
if (r_chain->fildes == fildes)
r_chain->new_fd = 0;
else {
if (create == 0)
r_chain = NULL;
46136: 99cc subal %a4,%a4 <== NOT EXECUTED
r_chain->new_fd = 1;
r_chain->fildes = fildes;
}
}
return r_chain;
}
46138: 200c movel %a4,%d0 <== NOT EXECUTED
4613a: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
46140: 4e5e unlk %fp <== NOT EXECUTED
00042cc0 <rtems_assoc_local_by_name>:
uint32_t rtems_assoc_local_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
42cc0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
42cc4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
42cc8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42ccc: 4eb9 0004 2ed0 jsr 42ed0 <rtems_assoc_ptr_by_name> <== NOT EXECUTED
if (nap)
42cd2: 508f addql #8,%sp <== NOT EXECUTED
42cd4: 4a80 tstl %d0 <== NOT EXECUTED
42cd6: 6708 beqs 42ce0 <rtems_assoc_local_by_name+0x20> <== NOT EXECUTED
return nap->local_value;
42cd8: 2040 moveal %d0,%a0 <== NOT EXECUTED
42cda: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
42cde: 6002 bras 42ce2 <rtems_assoc_local_by_name+0x22> <== NOT EXECUTED
return 0;
42ce0: 4280 clrl %d0 <== NOT EXECUTED
}
42ce2: 4e5e unlk %fp <== NOT EXECUTED
...
00049608 <rtems_assoc_local_by_remote>:
uint32_t rtems_assoc_local_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
49608: 4e56 0000 linkw %fp,#0
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
4960c: 2f2e 000c movel %fp@(12),%sp@-
49610: 2f2e 0008 movel %fp@(8),%sp@-
49614: 4eb9 0004 96b8 jsr 496b8 <rtems_assoc_ptr_by_remote>
if (nap)
4961a: 508f addql #8,%sp
4961c: 4a80 tstl %d0
4961e: 6708 beqs 49628 <rtems_assoc_local_by_remote+0x20><== NEVER TAKEN
return nap->local_value;
49620: 2040 moveal %d0,%a0
49622: 2028 0004 movel %a0@(4),%d0
49626: 6002 bras 4962a <rtems_assoc_local_by_remote+0x22>
return 0;
49628: 4280 clrl %d0 <== NOT EXECUTED
}
4962a: 4e5e unlk %fp
...
0004c17c <rtems_assoc_name_bad>:
uint32_t bad_value
#else
uint32_t bad_value __attribute((unused))
#endif
)
{
4c17c: 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;
}
4c180: 203c 0005 c45c movel #377948,%d0 <== NOT EXECUTED
4c186: 4e5e unlk %fp <== NOT EXECUTED
...
00049630 <rtems_assoc_name_by_local>:
const char *rtems_assoc_name_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
49630: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49634: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49636: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
4963a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4963c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
49640: 4eb9 0004 9668 jsr 49668 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
49646: 508f addql #8,%sp <== NOT EXECUTED
49648: 4a80 tstl %d0 <== NOT EXECUTED
4964a: 670c beqs 49658 <rtems_assoc_name_by_local+0x28> <== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(local_value);
}
4964c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4964e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
49652: 4e5e unlk %fp <== NOT EXECUTED
49654: 2010 movel %a0@,%d0 <== NOT EXECUTED
49656: 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);
49658: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
4965c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
49660: 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);
49662: 4ef9 0004 c17c jmp 4c17c <rtems_assoc_name_bad> <== NOT EXECUTED
00042d50 <rtems_assoc_name_by_local_bitfield>:
char *rtems_assoc_name_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
42d50: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
42d54: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
42d58: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
42d5c: 7620 moveq #32,%d3 <== NOT EXECUTED
for (b = 1; b; b <<= 1) {
42d5e: 7401 moveq #1,%d2 <== NOT EXECUTED
if (b & value) {
if (*buffer)
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_local(ap, b));
42d60: 49f9 0004 2db0 lea 42db0 <rtems_assoc_name_by_local>,%a4 <== NOT EXECUTED
42d66: 47f9 0004 e280 lea 4e280 <strcat>,%a3 <== NOT EXECUTED
char *rtems_assoc_name_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
42d6c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
42d70: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
42d74: 4212 clrb %a2@ <== NOT EXECUTED
for (b = 1; b; b <<= 1) {
if (b & value) {
42d76: 2002 movel %d2,%d0 <== NOT EXECUTED
42d78: c084 andl %d4,%d0 <== NOT EXECUTED
42d7a: 6720 beqs 42d9c <rtems_assoc_name_by_local_bitfield+0x4c><== NOT EXECUTED
if (*buffer)
42d7c: 4a12 tstb %a2@ <== NOT EXECUTED
42d7e: 670c beqs 42d8c <rtems_assoc_name_by_local_bitfield+0x3c><== NOT EXECUTED
strcat(buffer, " ");
42d80: 4879 0005 c413 pea 5c413 <rtems_filesystem_default_pathconf+0xaf><== NOT EXECUTED
42d86: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42d88: 4e93 jsr %a3@ <== NOT EXECUTED
42d8a: 508f addql #8,%sp <== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_local(ap, b));
42d8c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42d8e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
42d90: 4e94 jsr %a4@ <== NOT EXECUTED
42d92: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42d94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42d96: 4e93 jsr %a3@ <== NOT EXECUTED
42d98: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
42d9c: 5383 subql #1,%d3 <== NOT EXECUTED
42d9e: d482 addl %d2,%d2 <== NOT EXECUTED
42da0: 4a83 tstl %d3 <== NOT EXECUTED
42da2: 66d2 bnes 42d76 <rtems_assoc_name_by_local_bitfield+0x26><== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_local(ap, b));
}
}
return buffer;
}
42da4: 200a movel %a2,%d0 <== NOT EXECUTED
42da6: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
42dac: 4e5e unlk %fp <== NOT EXECUTED
00042e48 <rtems_assoc_name_by_remote>:
const char *rtems_assoc_name_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
42e48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42e4c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42e4e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_remote(ap, remote_value);
42e52: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42e54: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42e58: 4eb9 0004 2f30 jsr 42f30 <rtems_assoc_ptr_by_remote> <== NOT EXECUTED
if (nap)
42e5e: 508f addql #8,%sp <== NOT EXECUTED
42e60: 4a80 tstl %d0 <== NOT EXECUTED
42e62: 670c beqs 42e70 <rtems_assoc_name_by_remote+0x28><== NOT EXECUTED
return nap->name;
return rtems_assoc_name_bad(remote_value);
}
42e64: 2040 moveal %d0,%a0 <== NOT EXECUTED
42e66: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42e6a: 4e5e unlk %fp <== NOT EXECUTED
42e6c: 2010 movel %a0@,%d0 <== NOT EXECUTED
42e6e: 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);
42e70: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
42e74: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42e78: 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);
42e7a: 4ef9 0004 a230 jmp 4a230 <rtems_assoc_name_bad> <== NOT EXECUTED
00042de8 <rtems_assoc_name_by_remote_bitfield>:
char *rtems_assoc_name_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
42de8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
42dec: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
42df0: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
42df4: 7620 moveq #32,%d3 <== NOT EXECUTED
for (b = 1; b; b <<= 1) {
42df6: 7401 moveq #1,%d2 <== NOT EXECUTED
if (b & value) {
if (*buffer)
strcat(buffer, " ");
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
42df8: 49f9 0004 2e48 lea 42e48 <rtems_assoc_name_by_remote>,%a4 <== NOT EXECUTED
42dfe: 47f9 0004 e280 lea 4e280 <strcat>,%a3 <== NOT EXECUTED
char *rtems_assoc_name_by_remote_bitfield(
const rtems_assoc_t *ap,
uint32_t value,
char *buffer
)
{
42e04: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
42e08: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
uint32_t b;
*buffer = 0;
42e0c: 4212 clrb %a2@ <== NOT EXECUTED
for (b = 1; b; b <<= 1) {
if (b & value) {
42e0e: 2002 movel %d2,%d0 <== NOT EXECUTED
42e10: c084 andl %d4,%d0 <== NOT EXECUTED
42e12: 6720 beqs 42e34 <rtems_assoc_name_by_remote_bitfield+0x4c><== NOT EXECUTED
if (*buffer)
42e14: 4a12 tstb %a2@ <== NOT EXECUTED
42e16: 670c beqs 42e24 <rtems_assoc_name_by_remote_bitfield+0x3c><== NOT EXECUTED
strcat(buffer, " ");
42e18: 4879 0005 c413 pea 5c413 <rtems_filesystem_default_pathconf+0xaf><== NOT EXECUTED
42e1e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42e20: 4e93 jsr %a3@ <== NOT EXECUTED
42e22: 508f addql #8,%sp <== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
42e24: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42e26: 2f05 movel %d5,%sp@- <== NOT EXECUTED
42e28: 4e94 jsr %a4@ <== NOT EXECUTED
42e2a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42e2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42e2e: 4e93 jsr %a3@ <== NOT EXECUTED
42e30: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
{
uint32_t b;
*buffer = 0;
for (b = 1; b; b <<= 1) {
42e34: 5383 subql #1,%d3 <== NOT EXECUTED
42e36: d482 addl %d2,%d2 <== NOT EXECUTED
42e38: 4a83 tstl %d3 <== NOT EXECUTED
42e3a: 66d2 bnes 42e0e <rtems_assoc_name_by_remote_bitfield+0x26><== NOT EXECUTED
strcat(buffer, rtems_assoc_name_by_remote(ap, b));
}
}
return buffer;
}
42e3c: 200a movel %a2,%d0 <== NOT EXECUTED
42e3e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
42e44: 4e5e unlk %fp <== NOT EXECUTED
00049668 <rtems_assoc_ptr_by_local>:
const rtems_assoc_t *rtems_assoc_ptr_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
49668: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4966c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4966e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
49672: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49674: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
49678: 2012 movel %a2@,%d0 <== NOT EXECUTED
4967a: 6718 beqs 49694 <rtems_assoc_ptr_by_local+0x2c> <== NOT EXECUTED
4967c: 4879 0005 b5d0 pea 5b5d0 <IMFS_memfile_handlers+0x38> <== NOT EXECUTED
49682: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49684: 4eb9 0004 d84c jsr 4d84c <strcmp> <== NOT EXECUTED
4968a: 508f addql #8,%sp <== NOT EXECUTED
4968c: 4a80 tstl %d0 <== NOT EXECUTED
4968e: 6604 bnes 49694 <rtems_assoc_ptr_by_local+0x2c> <== NOT EXECUTED
default_ap = ap++;
49690: 200a movel %a2,%d0 <== NOT EXECUTED
49692: 600a bras 4969e <rtems_assoc_ptr_by_local+0x36> <== 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;
49694: 4280 clrl %d0 <== NOT EXECUTED
49696: 600a bras 496a2 <rtems_assoc_ptr_by_local+0x3a> <== NOT EXECUTED
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
if (ap->local_value == local_value)
49698: b4aa 0004 cmpl %a2@(4),%d2 <== NOT EXECUTED
4969c: 670a beqs 496a8 <rtems_assoc_ptr_by_local+0x40> <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
4969e: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED
496a2: 4a92 tstl %a2@ <== NOT EXECUTED
496a4: 66f2 bnes 49698 <rtems_assoc_ptr_by_local+0x30> <== NOT EXECUTED
if (ap->local_value == local_value)
return ap;
return default_ap;
496a6: 2440 moveal %d0,%a2 <== NOT EXECUTED
}
496a8: 200a movel %a2,%d0 <== NOT EXECUTED
496aa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
496ae: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
496b2: 4e5e unlk %fp <== NOT EXECUTED
...
00042ed0 <rtems_assoc_ptr_by_name>:
const rtems_assoc_t *rtems_assoc_ptr_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
42ed0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
42ed4: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
42ed8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
42edc: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
42ee0: 2012 movel %a2@,%d0 <== NOT EXECUTED
42ee2: 671c beqs 42f00 <rtems_assoc_ptr_by_name+0x30> <== NOT EXECUTED
42ee4: 4879 0005 b9d3 pea 5b9d3 <_rodata_start+0x603> <== NOT EXECUTED
42eea: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42eec: 4eb9 0004 e2ec jsr 4e2ec <strcmp> <== NOT EXECUTED
42ef2: 508f addql #8,%sp <== NOT EXECUTED
42ef4: 4a80 tstl %d0 <== NOT EXECUTED
42ef6: 6608 bnes 42f00 <rtems_assoc_ptr_by_name+0x30> <== NOT EXECUTED
default_ap = ap++;
42ef8: 240a movel %a2,%d2 <== NOT EXECUTED
42efa: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED
42efe: 6016 bras 42f16 <rtems_assoc_ptr_by_name+0x46> <== 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;
42f00: 4282 clrl %d2 <== NOT EXECUTED
42f02: 6012 bras 42f16 <rtems_assoc_ptr_by_name+0x46> <== NOT EXECUTED
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
if (strcmp(ap->name, name) == 0)
42f04: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42f06: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42f08: 4e93 jsr %a3@ <== NOT EXECUTED
42f0a: 508f addql #8,%sp <== NOT EXECUTED
42f0c: 4a80 tstl %d0 <== NOT EXECUTED
42f0e: 6712 beqs 42f22 <rtems_assoc_ptr_by_name+0x52> <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
42f10: 45ea 000c lea %a2@(12),%a2 <== NOT EXECUTED
42f14: 6006 bras 42f1c <rtems_assoc_ptr_by_name+0x4c> <== NOT EXECUTED
if (strcmp(ap->name, name) == 0)
42f16: 47f9 0004 e2ec lea 4e2ec <strcmp>,%a3 <== NOT EXECUTED
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
42f1c: 2012 movel %a2@,%d0 <== NOT EXECUTED
42f1e: 66e4 bnes 42f04 <rtems_assoc_ptr_by_name+0x34> <== NOT EXECUTED
if (strcmp(ap->name, name) == 0)
return ap;
return default_ap;
42f20: 2442 moveal %d2,%a2 <== NOT EXECUTED
}
42f22: 200a movel %a2,%d0 <== NOT EXECUTED
42f24: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
42f2a: 4e5e unlk %fp <== NOT EXECUTED
...
000496b8 <rtems_assoc_ptr_by_remote>:
const rtems_assoc_t *rtems_assoc_ptr_by_remote(
const rtems_assoc_t *ap,
uint32_t remote_value
)
{
496b8: 4e56 0000 linkw %fp,#0
496bc: 2f0a movel %a2,%sp@-
496be: 246e 0008 moveal %fp@(8),%a2
496c2: 2f02 movel %d2,%sp@-
496c4: 242e 000c movel %fp@(12),%d2
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
496c8: 2012 movel %a2@,%d0
496ca: 6718 beqs 496e4 <rtems_assoc_ptr_by_remote+0x2c> <== NEVER TAKEN
496cc: 4879 0005 b5d0 pea 5b5d0 <IMFS_memfile_handlers+0x38>
496d2: 2f00 movel %d0,%sp@-
496d4: 4eb9 0004 d84c jsr 4d84c <strcmp>
496da: 508f addql #8,%sp
496dc: 4a80 tstl %d0
496de: 6604 bnes 496e4 <rtems_assoc_ptr_by_remote+0x2c> <== ALWAYS TAKEN
default_ap = ap++;
496e0: 200a movel %a2,%d0 <== NOT EXECUTED
496e2: 600a bras 496ee <rtems_assoc_ptr_by_remote+0x36> <== NOT EXECUTED
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;
496e4: 4280 clrl %d0
496e6: 600a bras 496f2 <rtems_assoc_ptr_by_remote+0x3a>
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
if (ap->remote_value == remote_value)
496e8: b4aa 0008 cmpl %a2@(8),%d2
496ec: 670a beqs 496f8 <rtems_assoc_ptr_by_remote+0x40>
const rtems_assoc_t *default_ap = 0;
if (rtems_assoc_is_default(ap))
default_ap = ap++;
for ( ; ap->name; ap++)
496ee: 45ea 000c lea %a2@(12),%a2
496f2: 4a92 tstl %a2@
496f4: 66f2 bnes 496e8 <rtems_assoc_ptr_by_remote+0x30> <== ALWAYS TAKEN
if (ap->remote_value == remote_value)
return ap;
return default_ap;
496f6: 2440 moveal %d0,%a2 <== NOT EXECUTED
}
496f8: 200a movel %a2,%d0
496fa: 242e fff8 movel %fp@(-8),%d2
496fe: 246e fffc moveal %fp@(-4),%a2
49702: 4e5e unlk %fp
...
00042fc0 <rtems_assoc_remote_by_local>:
uint32_t rtems_assoc_remote_by_local(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
42fc0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_local(ap, local_value);
42fc4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
42fc8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42fcc: 4eb9 0004 2e80 jsr 42e80 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if (nap)
42fd2: 508f addql #8,%sp <== NOT EXECUTED
42fd4: 4a80 tstl %d0 <== NOT EXECUTED
42fd6: 6708 beqs 42fe0 <rtems_assoc_remote_by_local+0x20><== NOT EXECUTED
return nap->remote_value;
42fd8: 2040 moveal %d0,%a0 <== NOT EXECUTED
42fda: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
42fde: 6002 bras 42fe2 <rtems_assoc_remote_by_local+0x22><== NOT EXECUTED
return 0;
42fe0: 4280 clrl %d0 <== NOT EXECUTED
}
42fe2: 4e5e unlk %fp <== NOT EXECUTED
...
00042f80 <rtems_assoc_remote_by_local_bitfield>:
uint32_t rtems_assoc_remote_by_local_bitfield(
const rtems_assoc_t *ap,
uint32_t local_value
)
{
42f80: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
42f84: 48d7 047c moveml %d2-%d6/%a2,%sp@ <== NOT EXECUTED
42f88: 2c2e 0008 movel %fp@(8),%d6 <== NOT EXECUTED
42f8c: 7820 moveq #32,%d4 <== NOT EXECUTED
uint32_t b;
uint32_t remote_value = 0;
42f8e: 4283 clrl %d3 <== NOT EXECUTED
for (b = 1; b; b <<= 1)
42f90: 7401 moveq #1,%d2 <== NOT EXECUTED
if (b & local_value)
remote_value |= rtems_assoc_remote_by_local(ap, b);
42f92: 45f9 0004 2fc0 lea 42fc0 <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
)
{
42f98: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
if (b & local_value)
42f9c: 2002 movel %d2,%d0 <== NOT EXECUTED
42f9e: c085 andl %d5,%d0 <== NOT EXECUTED
42fa0: 670a beqs 42fac <rtems_assoc_remote_by_local_bitfield+0x2c><== NOT EXECUTED
remote_value |= rtems_assoc_remote_by_local(ap, b);
42fa2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42fa4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
42fa6: 4e92 jsr %a2@ <== NOT EXECUTED
42fa8: 508f addql #8,%sp <== NOT EXECUTED
42faa: 8680 orl %d0,%d3 <== NOT EXECUTED
)
{
uint32_t b;
uint32_t remote_value = 0;
for (b = 1; b; b <<= 1)
42fac: 5384 subql #1,%d4 <== NOT EXECUTED
42fae: d482 addl %d2,%d2 <== NOT EXECUTED
42fb0: 4a84 tstl %d4 <== NOT EXECUTED
42fb2: 66e8 bnes 42f9c <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;
}
42fb4: 2003 movel %d3,%d0 <== NOT EXECUTED
42fb6: 4cee 047c ffe8 moveml %fp@(-24),%d2-%d6/%a2 <== NOT EXECUTED
42fbc: 4e5e unlk %fp <== NOT EXECUTED
00042fe8 <rtems_assoc_remote_by_name>:
uint32_t rtems_assoc_remote_by_name(
const rtems_assoc_t *ap,
const char *name
)
{
42fe8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
const rtems_assoc_t *nap;
nap = rtems_assoc_ptr_by_name(ap, name);
42fec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
42ff0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42ff4: 4eb9 0004 2ed0 jsr 42ed0 <rtems_assoc_ptr_by_name> <== NOT EXECUTED
if (nap)
42ffa: 508f addql #8,%sp <== NOT EXECUTED
42ffc: 4a80 tstl %d0 <== NOT EXECUTED
42ffe: 6708 beqs 43008 <rtems_assoc_remote_by_name+0x20><== NOT EXECUTED
return nap->remote_value;
43000: 2040 moveal %d0,%a0 <== NOT EXECUTED
43002: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
43006: 6002 bras 4300a <rtems_assoc_remote_by_name+0x22><== NOT EXECUTED
return 0;
43008: 4280 clrl %d0 <== NOT EXECUTED
}
4300a: 4e5e unlk %fp <== NOT EXECUTED
...
0004cc68 <rtems_barrier_create>:
rtems_name name,
rtems_attribute attribute_set,
uint32_t maximum_waiters,
rtems_id *id
)
{
4cc68: 4e56 ffe4 linkw %fp,#-28
4cc6c: 202e 0010 movel %fp@(16),%d0
4cc70: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@
4cc74: 242e 0008 movel %fp@(8),%d2
4cc78: 262e 000c movel %fp@(12),%d3
4cc7c: 246e 0014 moveal %fp@(20),%a2
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
4cc80: 4a82 tstl %d2
4cc82: 677e beqs 4cd02 <rtems_barrier_create+0x9a> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
4cc84: 4a8a tstl %a2
4cc86: 677e beqs 4cd06 <rtems_barrier_create+0x9e> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
4cc88: 0803 0004 btst #4,%d3
4cc8c: 670a beqs 4cc98 <rtems_barrier_create+0x30> <== NEVER TAKEN
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
4cc8e: 42ae fff8 clrl %fp@(-8)
if ( maximum_waiters == 0 )
4cc92: 4a80 tstl %d0
4cc94: 6608 bnes 4cc9e <rtems_barrier_create+0x36> <== ALWAYS TAKEN
4cc96: 6072 bras 4cd0a <rtems_barrier_create+0xa2> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
4cc98: 7201 moveq #1,%d1 <== NOT EXECUTED
4cc9a: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
the_attributes.maximum_count = maximum_waiters;
4cc9e: 2d40 fffc movel %d0,%fp@(-4)
4cca2: 2039 0005 feac movel 5feac <_Thread_Dispatch_disable_level>,%d0
4cca8: 5280 addql #1,%d0
4ccaa: 23c0 0005 feac movel %d0,5feac <_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 );
4ccb0: 4879 0006 0708 pea 60708 <_Barrier_Information>
4ccb6: 49f9 0004 9452 lea 49452 <_Thread_Enable_dispatch>,%a4
4ccbc: 4eb9 0004 8564 jsr 48564 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4ccc2: 588f addql #4,%sp
4ccc4: 2640 moveal %d0,%a3
4ccc6: 4a80 tstl %d0
4ccc8: 6606 bnes 4ccd0 <rtems_barrier_create+0x68> <== ALWAYS TAKEN
_Thread_Enable_dispatch();
4ccca: 4e94 jsr %a4@ <== NOT EXECUTED
return RTEMS_TOO_MANY;
4cccc: 7005 moveq #5,%d0 <== NOT EXECUTED
4ccce: 603c bras 4cd0c <rtems_barrier_create+0xa4> <== NOT EXECUTED
}
the_barrier->attribute_set = attribute_set;
4ccd0: 2743 0010 movel %d3,%a3@(16)
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
4ccd4: 486e fff8 pea %fp@(-8)
4ccd8: 486b 0014 pea %a3@(20)
4ccdc: 4eb9 0004 d43c jsr 4d43c <_CORE_barrier_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4cce2: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4cce6: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4cce8: 2079 0006 0720 moveal 60720 <_Barrier_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ccee: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ccf0: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ccf4: 2742 000c movel %d2,%a3@(12)
&_Barrier_Information,
&the_barrier->Object,
(Objects_Name) name
);
*id = the_barrier->Object.id;
4ccf8: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
4ccfa: 4e94 jsr %a4@
return RTEMS_SUCCESSFUL;
4ccfc: 508f addql #8,%sp
4ccfe: 4280 clrl %d0
4cd00: 600a bras 4cd0c <rtems_barrier_create+0xa4>
{
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4cd02: 7003 moveq #3,%d0 <== NOT EXECUTED
4cd04: 6006 bras 4cd0c <rtems_barrier_create+0xa4> <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
4cd06: 7009 moveq #9,%d0 <== NOT EXECUTED
4cd08: 6002 bras 4cd0c <rtems_barrier_create+0xa4> <== 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;
4cd0a: 700a moveq #10,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4cd0c: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4
4cd12: 4e5e unlk %fp
...
0004cd18 <rtems_barrier_delete>:
*/
rtems_status_code rtems_barrier_delete(
rtems_id id
)
{
4cd18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4cd1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4cd1e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cd22: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cd26: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4cd2c: 4eb9 0004 89bc jsr 489bc <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4cd32: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cd36: 2440 moveal %d0,%a2 <== NOT EXECUTED
4cd38: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4cd3c: 663a bnes 4cd78 <rtems_barrier_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Flush(
4cd3e: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4cd42: 42a7 clrl %sp@- <== NOT EXECUTED
4cd44: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4cd48: 4eb9 0004 9ac4 jsr 49ac4 <_Thread_queue_Flush> <== NOT EXECUTED
&the_barrier->Barrier,
NULL,
CORE_BARRIER_WAS_DELETED
);
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
4cd4e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cd50: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4cd56: 4eb9 0004 85e0 jsr 485e0 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Barrier_Free (
Barrier_Control *the_barrier
)
{
_Objects_Free( &_Barrier_Information, &the_barrier->Object );
4cd5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cd5e: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4cd64: 4eb9 0004 8858 jsr 48858 <_Objects_Free> <== NOT EXECUTED
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4cd6a: 4eb9 0004 9452 jsr 49452 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4cd70: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4cd74: 4280 clrl %d0 <== NOT EXECUTED
4cd76: 6002 bras 4cd7a <rtems_barrier_delete+0x62> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4cd78: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4cd7a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4cd7e: 4e5e unlk %fp <== NOT EXECUTED
...
00045dac <rtems_barrier_ident>:
rtems_status_code rtems_barrier_ident(
rtems_name name,
rtems_id *id
)
{
45dac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
45db0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
45db4: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
45dba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45dbe: 4879 0005 efb8 pea 5efb8 <_Barrier_Information> <== NOT EXECUTED
45dc4: 4eb9 0004 7de4 jsr 47de4 <_Objects_Name_to_id_u32> <== NOT EXECUTED
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
45dca: 41f9 0005 c8ae lea 5c8ae <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
45dd0: 4e5e unlk %fp <== NOT EXECUTED
45dd2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
0004cdb4 <rtems_barrier_release>:
rtems_status_code rtems_barrier_release(
rtems_id id,
uint32_t *released
)
{
4cdb4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4cdb8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cdba: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4cdbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4cdc0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
4cdc4: 4a8a tstl %a2 <== NOT EXECUTED
4cdc6: 673c beqs 4ce04 <rtems_barrier_release+0x50> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4cdc8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cdcc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4cdce: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4cdd4: 4eb9 0004 89bc jsr 489bc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4cdda: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cdde: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4cde2: 6624 bnes 4ce08 <rtems_barrier_release+0x54> <== NOT EXECUTED
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
4cde4: 42a7 clrl %sp@- <== NOT EXECUTED
4cde6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4cde8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4cdea: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4cdee: 4eb9 0004 d478 jsr 4d478 <_CORE_barrier_Release> <== NOT EXECUTED
4cdf4: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4cdf6: 4eb9 0004 9452 jsr 49452 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4cdfc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ce00: 4280 clrl %d0 <== NOT EXECUTED
4ce02: 6006 bras 4ce0a <rtems_barrier_release+0x56> <== NOT EXECUTED
{
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
return RTEMS_INVALID_ADDRESS;
4ce04: 7009 moveq #9,%d0 <== NOT EXECUTED
4ce06: 6002 bras 4ce0a <rtems_barrier_release+0x56> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ce08: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ce0a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4ce0e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ce12: 4e5e unlk %fp <== NOT EXECUTED
...
0004ce18 <rtems_barrier_wait>:
rtems_status_code rtems_barrier_wait(
rtems_id id,
rtems_interval timeout
)
{
4ce18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4ce1c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ce1e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ce22: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4ce26: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ce28: 4879 0006 0708 pea 60708 <_Barrier_Information> <== NOT EXECUTED
4ce2e: 4eb9 0004 89bc jsr 489bc <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4ce34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ce38: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4ce3c: 6634 bnes 4ce72 <rtems_barrier_wait+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
4ce3e: 42a7 clrl %sp@- <== NOT EXECUTED
4ce40: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4ce44: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ce46: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4ce4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ce4c: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4ce50: 4eb9 0004 d4ac jsr 4d4ac <_CORE_barrier_Wait> <== NOT EXECUTED
id,
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
4ce56: 4eb9 0004 9452 jsr 49452 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4ce5c: 2079 0006 0336 moveal 60336 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4ce62: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4ce66: 4eb9 0004 e5b4 jsr 4e5b4 <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
4ce6c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4ce70: 6002 bras 4ce74 <rtems_barrier_wait+0x5c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ce72: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ce74: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4ce78: 4e5e unlk %fp <== NOT EXECUTED
0004220c <rtems_bsp_cmdline_get>:
#include <rtems/bspcmdline.h>
extern const char *bsp_boot_cmdline;
const char *rtems_bsp_cmdline_get(void)
{
4220c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return bsp_boot_cmdline;
}
42210: 2039 0005 e550 movel 5e550 <bsp_boot_cmdline>,%d0 <== NOT EXECUTED
42216: 4e5e unlk %fp <== NOT EXECUTED
...
0004221c <rtems_bsp_cmdline_get_param>:
const char *rtems_bsp_cmdline_get_param(
const char *name,
char *value,
size_t length
)
{
4221c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
42220: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
42224: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
42228: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4222c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
const char *p;
if ( !name )
42230: 4a80 tstl %d0 <== NOT EXECUTED
42232: 674e beqs 42282 <rtems_bsp_cmdline_get_param+0x66><== NOT EXECUTED
return NULL;
if ( !value )
42234: 4a8a tstl %a2 <== NOT EXECUTED
42236: 674a beqs 42282 <rtems_bsp_cmdline_get_param+0x66><== NOT EXECUTED
return NULL;
if ( !length )
42238: 4a82 tstl %d2 <== NOT EXECUTED
4223a: 6746 beqs 42282 <rtems_bsp_cmdline_get_param+0x66><== NOT EXECUTED
return NULL;
value[0] = '\0';
4223c: 4212 clrb %a2@ <== NOT EXECUTED
p = rtems_bsp_cmdline_get_param_raw( name );
4223e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42240: 4eb9 0004 2290 jsr 42290 <rtems_bsp_cmdline_get_param_raw> <== NOT EXECUTED
if ( !p )
42246: 588f addql #4,%sp <== NOT EXECUTED
42248: 4a80 tstl %d0 <== NOT EXECUTED
4224a: 6736 beqs 42282 <rtems_bsp_cmdline_get_param+0x66><== NOT EXECUTED
4224c: 2240 moveal %d0,%a1 <== NOT EXECUTED
4224e: 204a moveal %a2,%a0 <== NOT EXECUTED
42250: 4283 clrl %d3 <== NOT EXECUTED
42252: 4281 clrl %d1 <== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42254: 5382 subql #1,%d2 <== NOT EXECUTED
42256: 6020 bras 42278 <rtems_bsp_cmdline_get_param+0x5c><== NOT EXECUTED
if ( *p == '\"' ) {
42258: 7a22 moveq #34,%d5 <== NOT EXECUTED
4225a: 1004 moveb %d4,%d0 <== NOT EXECUTED
4225c: 49c0 extbl %d0 <== NOT EXECUTED
4225e: ba80 cmpl %d0,%d5 <== NOT EXECUTED
42260: 6604 bnes 42266 <rtems_bsp_cmdline_get_param+0x4a><== NOT EXECUTED
quotes++;
42262: 5283 addql #1,%d3 <== NOT EXECUTED
42264: 600c bras 42272 <rtems_bsp_cmdline_get_param+0x56><== NOT EXECUTED
} else if ( ((quotes % 2) == 0) && *p == ' ' )
42266: 0803 0000 btst #0,%d3 <== NOT EXECUTED
4226a: 6606 bnes 42272 <rtems_bsp_cmdline_get_param+0x56><== NOT EXECUTED
4226c: 7a20 moveq #32,%d5 <== NOT EXECUTED
4226e: ba80 cmpl %d0,%d5 <== NOT EXECUTED
42270: 6712 beqs 42284 <rtems_bsp_cmdline_get_param+0x68><== NOT EXECUTED
break;
value[i++] = *p++;
42272: 5281 addql #1,%d1 <== NOT EXECUTED
42274: 10c4 moveb %d4,%a0@+ <== NOT EXECUTED
value[i] = '\0';
42276: 4210 clrb %a0@ <== NOT EXECUTED
int i;
int quotes;
const char *p = start;
quotes=0;
for (i=0 ; *p && i<length-1; ) {
42278: 1819 moveb %a1@+,%d4 <== NOT EXECUTED
4227a: 6708 beqs 42284 <rtems_bsp_cmdline_get_param+0x68><== NOT EXECUTED
4227c: b481 cmpl %d1,%d2 <== NOT EXECUTED
4227e: 62d8 bhis 42258 <rtems_bsp_cmdline_get_param+0x3c><== NOT EXECUTED
42280: 6002 bras 42284 <rtems_bsp_cmdline_get_param+0x68><== NOT EXECUTED
value[0] = '\0';
p = rtems_bsp_cmdline_get_param_raw( name );
if ( !p )
return NULL;
42282: 95ca subal %a2,%a2 <== NOT EXECUTED
copy_string( p, value, length );
return value;
}
42284: 200a movel %a2,%d0 <== NOT EXECUTED
42286: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
4228c: 4e5e unlk %fp <== NOT EXECUTED
00042290 <rtems_bsp_cmdline_get_param_raw>:
extern const char *bsp_boot_cmdline;
const char *rtems_bsp_cmdline_get_param_raw(
const char *name
)
{
42290: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
42294: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
const char *p;
if ( !name )
42298: 6716 beqs 422b0 <rtems_bsp_cmdline_get_param_raw+0x20><== NOT EXECUTED
return NULL;
if ( !bsp_boot_cmdline )
4229a: 2039 0005 e550 movel 5e550 <bsp_boot_cmdline>,%d0 <== NOT EXECUTED
422a0: 670e beqs 422b0 <rtems_bsp_cmdline_get_param_raw+0x20><== NOT EXECUTED
return NULL;
p = strstr(bsp_boot_cmdline, name);
422a2: 2f01 movel %d1,%sp@- <== NOT EXECUTED
422a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
422a6: 4eb9 0004 e698 jsr 4e698 <strstr> <== NOT EXECUTED
422ac: 508f addql #8,%sp <== NOT EXECUTED
/* printf( "raw: %p (%s)\n", p, p ); */
return p;
422ae: 6002 bras 422b2 <rtems_bsp_cmdline_get_param_raw+0x22><== NOT EXECUTED
if ( !name )
return NULL;
if ( !bsp_boot_cmdline )
return NULL;
422b0: 4280 clrl %d0 <== NOT EXECUTED
p = strstr(bsp_boot_cmdline, name);
/* printf( "raw: %p (%s)\n", p, p ); */
return p;
}
422b2: 4e5e unlk %fp <== NOT EXECUTED
...
000422b8 <rtems_bsp_cmdline_get_param_rhs>:
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
422b8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
422bc: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
422c0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
422c4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
422c8: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
const char *p;
const char *rhs;
char *d;
p = rtems_bsp_cmdline_get_param( name, value, length );
422cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
422ce: 2f04 movel %d4,%sp@- <== NOT EXECUTED
422d0: 4eb9 0004 221c jsr 4221c <rtems_bsp_cmdline_get_param> <== NOT EXECUTED
if ( !p )
422d6: 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 );
422da: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( !p )
422dc: 6746 beqs 42324 <rtems_bsp_cmdline_get_param_rhs+0x6c><== NOT EXECUTED
return NULL;
rhs = &p[strlen(name)];
422de: 2f04 movel %d4,%sp@- <== NOT EXECUTED
422e0: 4eb9 0004 e20c jsr 4e20c <strlen> <== NOT EXECUTED
422e6: 588f addql #4,%sp <== NOT EXECUTED
422e8: 2043 moveal %d3,%a0 <== NOT EXECUTED
422ea: d1c0 addal %d0,%a0 <== NOT EXECUTED
if ( *rhs != '=' )
422ec: 723d moveq #61,%d1 <== NOT EXECUTED
422ee: 1010 moveb %a0@,%d0 <== NOT EXECUTED
422f0: 49c0 extbl %d0 <== NOT EXECUTED
422f2: b280 cmpl %d0,%d1 <== NOT EXECUTED
422f4: 662e bnes 42324 <rtems_bsp_cmdline_get_param_rhs+0x6c><== NOT EXECUTED
return NULL;
rhs++;
422f6: 5288 addql #1,%a0 <== NOT EXECUTED
if ( *rhs == '\"' )
422f8: 123c 0022 moveb #34,%d1 <== NOT EXECUTED
422fc: 1010 moveb %a0@,%d0 <== NOT EXECUTED
422fe: 49c0 extbl %d0 <== NOT EXECUTED
42300: b280 cmpl %d0,%d1 <== NOT EXECUTED
42302: 6602 bnes 42306 <rtems_bsp_cmdline_get_param_rhs+0x4e><== NOT EXECUTED
rhs++;
42304: 5288 addql #1,%a0 <== NOT EXECUTED
const char *rtems_bsp_cmdline_get_param_rhs(
const char *name,
char *value,
size_t length
)
{
42306: 2242 moveal %d2,%a1 <== NOT EXECUTED
42308: 6002 bras 4230c <rtems_bsp_cmdline_get_param_rhs+0x54><== NOT EXECUTED
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
4230a: 12c0 moveb %d0,%a1@+ <== NOT EXECUTED
return NULL;
rhs++;
if ( *rhs == '\"' )
rhs++;
for ( d=value ; *rhs ; )
4230c: 1018 moveb %a0@+,%d0 <== NOT EXECUTED
4230e: 66fa bnes 4230a <rtems_bsp_cmdline_get_param_rhs+0x52><== NOT EXECUTED
*d++ = *rhs++;
if ( *(d-1) == '\"' )
42310: 2049 moveal %a1,%a0 <== NOT EXECUTED
42312: 7222 moveq #34,%d1 <== NOT EXECUTED
42314: 1020 moveb %a0@-,%d0 <== NOT EXECUTED
42316: 49c0 extbl %d0 <== NOT EXECUTED
42318: b280 cmpl %d0,%d1 <== NOT EXECUTED
4231a: 6702 beqs 4231e <rtems_bsp_cmdline_get_param_rhs+0x66><== NOT EXECUTED
4231c: 2049 moveal %a1,%a0 <== NOT EXECUTED
d--;
*d = '\0';
return value;
4231e: 2002 movel %d2,%d0 <== NOT EXECUTED
rhs++;
for ( d=value ; *rhs ; )
*d++ = *rhs++;
if ( *(d-1) == '\"' )
d--;
*d = '\0';
42320: 4210 clrb %a0@ <== NOT EXECUTED
return value;
42322: 6002 bras 42326 <rtems_bsp_cmdline_get_param_rhs+0x6e><== NOT EXECUTED
if ( !p )
return NULL;
rhs = &p[strlen(name)];
if ( *rhs != '=' )
return NULL;
42324: 4280 clrl %d0 <== NOT EXECUTED
if ( *(d-1) == '\"' )
d--;
*d = '\0';
return value;
}
42326: 4cee 001c fff4 moveml %fp@(-12),%d2-%d4 <== NOT EXECUTED
4232c: 4e5e unlk %fp <== NOT EXECUTED
00046b5c <rtems_build_id>:
uint32_t api,
uint32_t class,
uint32_t node,
uint32_t index
)
{
46b5c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46b60: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
46b64: 2f03 movel %d3,%sp@- <== 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) |
46b66: 761b moveq #27,%d3 <== NOT EXECUTED
46b68: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46b6a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
46b6e: e7a8 lsll %d3,%d0 <== NOT EXECUTED
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
46b70: 163c 0018 moveb #24,%d3 <== NOT EXECUTED
46b74: e7aa lsll %d3,%d2 <== NOT EXECUTED
46b76: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
46b7a: 8082 orl %d2,%d0 <== NOT EXECUTED
return _Objects_Build_id( api, class, node, index );
}
46b7c: 241f movel %sp@+,%d2 <== NOT EXECUTED
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
46b7e: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED
#if !defined(RTEMS_USE_16_BIT_OBJECT)
(( (Objects_Id) node ) << OBJECTS_NODE_START_BIT) |
46b82: 4841 swap %d1 <== NOT EXECUTED
46b84: 4241 clrw %d1 <== NOT EXECUTED
46b86: 261f movel %sp@+,%d3 <== NOT EXECUTED
46b88: 4e5e unlk %fp <== NOT EXECUTED
46b8a: 8081 orl %d1,%d0 <== NOT EXECUTED
...
00046b90 <rtems_build_name>:
char C1,
char C2,
char C3,
char C4
)
{
46b90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
46b94: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED
46b98: 122e 000b moveb %fp@(11),%d1 <== NOT EXECUTED
char C1,
char C2,
char C3,
char C4
)
{
46b9c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
46b9e: 7418 moveq #24,%d2 <== NOT EXECUTED
46ba0: 49c0 extbl %d0 <== NOT EXECUTED
46ba2: 49c1 extbl %d1 <== NOT EXECUTED
46ba4: 4840 swap %d0 <== NOT EXECUTED
46ba6: 4240 clrw %d0 <== NOT EXECUTED
46ba8: e5a9 lsll %d2,%d1 <== NOT EXECUTED
}
46baa: 241f movel %sp@+,%d2 <== NOT EXECUTED
char C2,
char C3,
char C4
)
{
return _Objects_Build_name( C1, C2, C3, C4 );
46bac: 8081 orl %d1,%d0 <== NOT EXECUTED
46bae: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED
46bb2: 49c1 extbl %d1 <== NOT EXECUTED
46bb4: e189 lsll #8,%d1 <== NOT EXECUTED
46bb6: 8081 orl %d1,%d0 <== NOT EXECUTED
46bb8: 122e 0017 moveb %fp@(23),%d1 <== NOT EXECUTED
}
46bbc: 4e5e unlk %fp <== NOT EXECUTED
char C2,
char C3,
char C4
)
{
return _Objects_Build_name( C1, C2, C3, C4 );
46bbe: 49c1 extbl %d1 <== NOT EXECUTED
}
46bc0: 8081 orl %d1,%d0 <== NOT EXECUTED
000460dc <rtems_chain_append_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
460dc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
460e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
460e2: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
460e6: 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 );
460e8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
460ec: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
460f0: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
460f4: 4eb9 0004 6670 jsr 46670 <_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 ) {
460fa: 508f addql #8,%sp <== NOT EXECUTED
460fc: 4a00 tstb %d0 <== NOT EXECUTED
460fe: 6718 beqs 46118 <rtems_chain_append_with_notification+0x3c><== NOT EXECUTED
sc = rtems_event_send( task, events );
46100: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
46104: 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 );
46108: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4610c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46110: 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 );
46112: 4ef9 0004 5760 jmp 45760 <rtems_event_send> <== NOT EXECUTED
}
return sc;
}
46118: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4611c: 4280 clrl %d0 <== NOT EXECUTED
4611e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
46122: 4e5e unlk %fp <== NOT EXECUTED
...
00046128 <rtems_chain_get_with_notification>:
rtems_chain_control *chain,
rtems_id task,
rtems_event_set events,
rtems_chain_node **node
)
{
46128: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4612c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4612e: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
46132: 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 );
46134: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
46138: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4613c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
46140: 4eb9 0004 6710 jsr 46710 <_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 ) {
46146: 508f addql #8,%sp <== NOT EXECUTED
46148: 4a00 tstb %d0 <== NOT EXECUTED
4614a: 6718 beqs 46164 <rtems_chain_get_with_notification+0x3c><== NOT EXECUTED
sc = rtems_event_send( task, events );
4614c: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
46150: 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 );
46154: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
46158: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4615c: 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 );
4615e: 4ef9 0004 5760 jmp 45760 <rtems_event_send> <== NOT EXECUTED
}
return sc;
}
46164: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46168: 4280 clrl %d0 <== NOT EXECUTED
4616a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4616e: 4e5e unlk %fp <== NOT EXECUTED
...
00046174 <rtems_chain_get_with_wait>:
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
46174: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
46178: 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(
4617c: 260e movel %fp,%d3 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
4617e: 47f9 0004 6758 lea 46758 <_Chain_Get>,%a3 <== NOT EXECUTED
46184: 5983 subql #4,%d3 <== NOT EXECUTED
46186: 45f9 0004 55fc lea 455fc <rtems_event_receive>,%a2 <== NOT EXECUTED
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
4618c: 2c2e 0008 movel %fp@(8),%d6 <== NOT EXECUTED
46190: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
46194: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
46198: 6012 bras 461ac <rtems_chain_get_with_wait+0x38> <== NOT EXECUTED
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
) {
rtems_event_set out;
sc = rtems_event_receive(
4619a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4619c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4619e: 42a7 clrl %sp@- <== NOT EXECUTED
461a0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
461a2: 4e92 jsr %a2@ <== NOT EXECUTED
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
461a4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
461a8: 4a80 tstl %d0 <== NOT EXECUTED
461aa: 660c bnes 461b8 <rtems_chain_get_with_wait+0x44> <== NOT EXECUTED
461ac: 2f06 movel %d6,%sp@- <== NOT EXECUTED
461ae: 4e93 jsr %a3@ <== NOT EXECUTED
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
461b0: 588f addql #4,%sp <== NOT EXECUTED
461b2: 2400 movel %d0,%d2 <== NOT EXECUTED
461b4: 67e4 beqs 4619a <rtems_chain_get_with_wait+0x26> <== NOT EXECUTED
461b6: 4280 clrl %d0 <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
461b8: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
461bc: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
461be: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
461c4: 4e5e unlk %fp <== NOT EXECUTED
000461c8 <rtems_chain_prepend_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
461c8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
461cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
461ce: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
461d2: 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 );
461d4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
461d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
461dc: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
461e0: 4eb9 0004 67bc jsr 467bc <_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) {
461e6: 508f addql #8,%sp <== NOT EXECUTED
461e8: 4a00 tstb %d0 <== NOT EXECUTED
461ea: 6718 beqs 46204 <rtems_chain_prepend_with_notification+0x3c><== NOT EXECUTED
sc = rtems_event_send( task, events );
461ec: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
461f0: 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 );
461f4: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
461f8: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
461fc: 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 );
461fe: 4ef9 0004 5760 jmp 45760 <rtems_event_send> <== NOT EXECUTED
}
return sc;
}
46204: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46208: 4280 clrl %d0 <== NOT EXECUTED
4620a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4620e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ef40 <rtems_clock_get>:
rtems_status_code rtems_clock_get(
rtems_clock_get_options option,
void *time_buffer
)
{
4ef40: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4ef44: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4ef48: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ef4a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if ( !time_buffer )
4ef4e: 4a8a tstl %a2 <== NOT EXECUTED
4ef50: 6760 beqs 4efb2 <rtems_clock_get+0x72> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
4ef52: 4a80 tstl %d0 <== NOT EXECUTED
4ef54: 6610 bnes 4ef66 <rtems_clock_get+0x26> <== NOT EXECUTED
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
4ef56: 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;
}
4ef5a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ef5e: 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 );
4ef60: 4ef9 0004 f010 jmp 4f010 <rtems_clock_get_tod> <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
4ef66: 7201 moveq #1,%d1 <== NOT EXECUTED
4ef68: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ef6a: 6610 bnes 4ef7c <rtems_clock_get+0x3c> <== NOT EXECUTED
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
4ef6c: 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;
}
4ef70: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ef74: 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);
4ef76: 4ef9 0004 efc0 jmp 4efc0 <rtems_clock_get_seconds_since_epoch><== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
4ef7c: 7202 moveq #2,%d1 <== NOT EXECUTED
4ef7e: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ef80: 6608 bnes 4ef8a <rtems_clock_get+0x4a> <== NOT EXECUTED
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_since_boot();
4ef82: 4eb9 0004 f000 jsr 4f000 <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
4ef88: 600c bras 4ef96 <rtems_clock_get+0x56> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
4ef8a: 7203 moveq #3,%d1 <== NOT EXECUTED
4ef8c: b280 cmpl %d0,%d1 <== NOT EXECUTED
4ef8e: 660c bnes 4ef9c <rtems_clock_get+0x5c> <== NOT EXECUTED
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_per_second();
4ef90: 4eb9 0004 efe8 jsr 4efe8 <rtems_clock_get_ticks_per_second><== NOT EXECUTED
4ef96: 2480 movel %d0,%a2@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4ef98: 4280 clrl %d0 <== NOT EXECUTED
4ef9a: 601c bras 4efb8 <rtems_clock_get+0x78> <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
4ef9c: 7204 moveq #4,%d1 <== NOT EXECUTED
4ef9e: b280 cmpl %d0,%d1 <== NOT EXECUTED
4efa0: 6614 bnes 4efb6 <rtems_clock_get+0x76> <== NOT EXECUTED
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
4efa2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
}
4efa6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4efaa: 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 );
4efac: 4ef9 0004 f0c4 jmp 4f0c4 <rtems_clock_get_tod_timeval> <== NOT EXECUTED
rtems_clock_get_options option,
void *time_buffer
)
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
4efb2: 7009 moveq #9,%d0 <== NOT EXECUTED
4efb4: 6002 bras 4efb8 <rtems_clock_get+0x78> <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
4efb6: 700a moveq #10,%d0 <== NOT EXECUTED
}
4efb8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4efbc: 4e5e unlk %fp <== NOT EXECUTED
00045d94 <rtems_clock_get_seconds_since_epoch>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
45d94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45d98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !the_interval )
45d9c: 4a88 tstl %a0 <== NOT EXECUTED
45d9e: 6712 beqs 45db2 <rtems_clock_get_seconds_since_epoch+0x1e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
45da0: 4a39 0006 7a08 tstb 67a08 <_TOD_Is_set> <== NOT EXECUTED
45da6: 670e beqs 45db6 <rtems_clock_get_seconds_since_epoch+0x22><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
45da8: 20b9 0006 7aa2 movel 67aa2 <_TOD_Now>,%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45dae: 4280 clrl %d0 <== NOT EXECUTED
45db0: 6006 bras 45db8 <rtems_clock_get_seconds_since_epoch+0x24><== NOT EXECUTED
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
45db2: 7009 moveq #9,%d0 <== NOT EXECUTED
45db4: 6002 bras 45db8 <rtems_clock_get_seconds_since_epoch+0x24><== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
45db6: 700b moveq #11,%d0 <== NOT EXECUTED
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
45db8: 4e5e unlk %fp <== NOT EXECUTED
00044fc0 <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();
}
44fc0: 41f9 0005 c260 lea 5c260 <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)
{
44fc6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
}
44fca: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
44fd0: 4e5e unlk %fp <== NOT EXECUTED
44fd2: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00044fd8 <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)
{
44fd8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Watchdog_Ticks_since_boot;
44fdc: 2039 0005 dc32 movel 5dc32 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
}
44fe2: 4e5e unlk %fp <== NOT EXECUTED
...
00045de4 <rtems_clock_get_tod>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod(
rtems_time_of_day *time_buffer
)
{
45de4: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
45de8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45dea: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
45dee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
45df0: 4a8a tstl %a2 <== NOT EXECUTED
45df2: 6700 0090 beqw 45e84 <rtems_clock_get_tod+0xa0> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
45df6: 4a39 0006 7a08 tstb 67a08 <_TOD_Is_set> <== NOT EXECUTED
45dfc: 6700 008a beqw 45e88 <rtems_clock_get_tod+0xa4> <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
45e00: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45e06: 40c2 movew %sr,%d2 <== NOT EXECUTED
45e08: 8082 orl %d2,%d0 <== NOT EXECUTED
45e0a: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
45e0c: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
45e10: 4eb9 0004 759c jsr 4759c <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
45e16: 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;
45e18: 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 );
45e1e: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
45e22: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
45e26: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
45e2a: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED
time->tv_usec = useconds;
45e30: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED
45e34: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
45e38: 4eb9 0004 e5b4 jsr 4e5b4 <gmtime_r> <== NOT EXECUTED
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
45e3e: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
45e42: 41e8 076c lea %a0@(1900),%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;
45e46: 4fef 000c lea %sp@(12),%sp <== 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;
45e4a: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
45e4e: 5280 addql #1,%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;
45e50: 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 /
45e52: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
45e56: 41f9 0005 e390 lea 5e390 <Configuration+0xc>,%a0 <== 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;
45e5c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
tmbuf->day = time.tm_mday;
45e60: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED
tmbuf->hour = time.tm_hour;
45e66: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED
tmbuf->minute = time.tm_min;
45e6c: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED
tmbuf->second = time.tm_sec;
45e72: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED
tmbuf->ticks = now.tv_usec /
45e78: 4c50 1001 remul %a0@,%d1,%d1 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
45e7c: 4280 clrl %d0 <== 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 /
45e7e: 2541 0018 movel %d1,%a2@(24) <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
45e82: 6006 bras 45e8a <rtems_clock_get_tod+0xa6> <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
45e84: 7009 moveq #9,%d0 <== NOT EXECUTED
45e86: 6002 bras 45e8a <rtems_clock_get_tod+0xa6> <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
45e88: 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;
}
45e8a: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
45e8e: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
45e92: 4e5e unlk %fp <== NOT EXECUTED
...
0004f0c4 <rtems_clock_get_tod_timeval>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
4f0c4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
4f0c8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4f0ca: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4f0ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( !time )
4f0d0: 4a8a tstl %a2 <== NOT EXECUTED
4f0d2: 673c beqs 4f110 <rtems_clock_get_tod_timeval+0x4c><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
4f0d4: 4a39 0007 65bc tstb 765bc <_TOD_Is_set> <== NOT EXECUTED
4f0da: 6738 beqs 4f114 <rtems_clock_get_tod_timeval+0x50><== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
4f0dc: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4f0e2: 40c2 movew %sr,%d2 <== NOT EXECUTED
4f0e4: 8082 orl %d2,%d0 <== NOT EXECUTED
4f0e6: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
4f0e8: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4f0ec: 4eb9 0005 327c jsr 5327c <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
4f0f2: 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;
4f0f4: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
4f0fa: 588f addql #4,%sp <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
4f0fc: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
4f100: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
4f104: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
time->tv_usec = useconds;
4f108: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
4f10c: 4280 clrl %d0 <== NOT EXECUTED
4f10e: 6006 bras 4f116 <rtems_clock_get_tod_timeval+0x52><== NOT EXECUTED
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
if ( !time )
return RTEMS_INVALID_ADDRESS;
4f110: 7009 moveq #9,%d0 <== NOT EXECUTED
4f112: 6002 bras 4f116 <rtems_clock_get_tod_timeval+0x52><== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
4f114: 700b moveq #11,%d0 <== NOT EXECUTED
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
4f116: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4f11a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4f11e: 4e5e unlk %fp <== NOT EXECUTED
...
000451f8 <rtems_clock_get_uptime>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
451f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
451fc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !uptime )
45200: 670e beqs 45210 <rtems_clock_get_uptime+0x18> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_TOD_Get_uptime_as_timespec( uptime );
45202: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45204: 4eb9 0004 6764 jsr 46764 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4520a: 588f addql #4,%sp <== NOT EXECUTED
4520c: 4280 clrl %d0 <== NOT EXECUTED
4520e: 6002 bras 45212 <rtems_clock_get_uptime+0x1a> <== NOT EXECUTED
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
if ( !uptime )
return RTEMS_INVALID_ADDRESS;
45210: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Get_uptime_as_timespec( uptime );
return RTEMS_SUCCESSFUL;
}
45212: 4e5e unlk %fp <== NOT EXECUTED
...
00045eb4 <rtems_clock_set>:
*/
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
)
{
45eb4: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
45eb8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45eba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
struct timespec newtime;
if ( !time_buffer )
45ebe: 4a8a tstl %a2 <== NOT EXECUTED
45ec0: 675a beqs 45f1c <rtems_clock_set+0x68> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
45ec2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45ec4: 4eb9 0004 6004 jsr 46004 <_TOD_Validate> <== NOT EXECUTED
45eca: 588f addql #4,%sp <== NOT EXECUTED
45ecc: 4a00 tstb %d0 <== NOT EXECUTED
45ece: 6750 beqs 45f20 <rtems_clock_set+0x6c> <== NOT EXECUTED
newtime.tv_sec = _TOD_To_seconds( time_buffer );
45ed0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45ed2: 4eb9 0004 5f68 jsr 45f68 <_TOD_To_seconds> <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
45ed8: 41f9 0005 e390 lea 5e390 <Configuration+0xc>,%a0 <== NOT EXECUTED
45ede: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
45ee4: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
45ee8: 202a 0018 movel %a2@(24),%d0 <== NOT EXECUTED
45eec: 4c10 0800 mulsl %a0@,%d0 <== NOT EXECUTED
45ef0: 4c00 1800 mulsl %d0,%d1 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45ef4: 2039 0006 79f8 movel 679f8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45efa: 5280 addql #1,%d0 <== NOT EXECUTED
45efc: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
45f00: 23c0 0006 79f8 movel %d0,679f8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
45f06: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45f0a: 4eb9 0004 7694 jsr 47694 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
45f10: 4eb9 0004 8b46 jsr 48b46 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45f16: 508f addql #8,%sp <== NOT EXECUTED
45f18: 4280 clrl %d0 <== NOT EXECUTED
45f1a: 6006 bras 45f22 <rtems_clock_set+0x6e> <== NOT EXECUTED
)
{
struct timespec newtime;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
45f1c: 7009 moveq #9,%d0 <== NOT EXECUTED
45f1e: 6002 bras 45f22 <rtems_clock_set+0x6e> <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
45f20: 7014 moveq #20,%d0 <== NOT EXECUTED
}
45f22: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
45f26: 4e5e unlk %fp <== NOT EXECUTED
...
00044fe8 <rtems_clock_set_nanoseconds_extension>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
44fe8: 4e56 0000 linkw %fp,#0
44fec: 202e 0008 movel %fp@(8),%d0
if ( !routine )
44ff0: 670a beqs 44ffc <rtems_clock_set_nanoseconds_extension+0x14><== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_Watchdog_Nanoseconds_since_tick_handler = routine;
44ff2: 23c0 0005 c3c4 movel %d0,5c3c4 <_Watchdog_Nanoseconds_since_tick_handler>
return RTEMS_SUCCESSFUL;
44ff8: 4280 clrl %d0
44ffa: 6002 bras 44ffe <rtems_clock_set_nanoseconds_extension+0x16>
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
if ( !routine )
return RTEMS_INVALID_ADDRESS;
44ffc: 7009 moveq #9,%d0 <== NOT EXECUTED
_Watchdog_Nanoseconds_since_tick_handler = routine;
return RTEMS_SUCCESSFUL;
}
44ffe: 4e5e unlk %fp
...
00045004 <rtems_clock_tick>:
*
* NOTE: This routine only works for leap-years through 2099.
*/
rtems_status_code rtems_clock_tick( void )
{
45004: 4e56 0000 linkw %fp,#0
_TOD_Tickle_ticks();
45008: 4eb9 0004 6418 jsr 46418 <_TOD_Tickle_ticks>
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
4500e: 4879 0005 dbe8 pea 5dbe8 <_Watchdog_Ticks_chain> <== NOT EXECUTED
45014: 4eb9 0004 86b8 jsr 486b8 <_Watchdog_Tickle> <== NOT EXECUTED
_Watchdog_Tickle_ticks();
_Thread_Tickle_timeslice();
4501a: 4eb9 0004 81b0 jsr 481b0 <_Thread_Tickle_timeslice> <== NOT EXECUTED
if ( _Thread_Is_context_switch_necessary() &&
45020: 588f addql #4,%sp <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void )
{
return ( _Thread_Dispatch_necessary );
45022: 1039 0005 df9e moveb 5df9e <_Per_CPU_Information+0x18>,%d0 <== NOT EXECUTED
45028: 670e beqs 45038 <rtems_clock_tick+0x34> <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void )
{
return ( _Thread_Dispatch_disable_level == 0 );
4502a: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45030: 6606 bnes 45038 <rtems_clock_tick+0x34> <== NOT EXECUTED
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
45032: 4eb9 0004 765c jsr 4765c <_Thread_Dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
45038: 4280 clrl %d0 <== NOT EXECUTED
4503a: 4e5e unlk %fp <== NOT EXECUTED
...
00042aac <rtems_cpu_usage_report>:
void rtems_cpu_usage_report( void )
{
42aac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );
42ab0: 4879 0004 4220 pea 44220 <printk_plugin> <== NOT EXECUTED
42ab6: 42a7 clrl %sp@- <== NOT EXECUTED
42ab8: 4eb9 0004 292c jsr 4292c <rtems_cpu_usage_report_with_plugin><== NOT EXECUTED
42abe: 508f addql #8,%sp <== NOT EXECUTED
}
42ac0: 4e5e unlk %fp <== NOT EXECUTED
0004292c <rtems_cpu_usage_report_with_plugin>:
void rtems_cpu_usage_report_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
4292c: 4e56 ff98 linkw %fp,#-104 <== NOT EXECUTED
42930: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
42934: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
42938: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Timestamp_Control uptime, total, ran, last_context_switch;
#else
uint32_t total_units = 0;
#endif
if ( !print )
4293c: 4a8a tstl %a2 <== NOT EXECUTED
4293e: 6700 0162 beqw 42aa2 <rtems_cpu_usage_report_with_plugin+0x176><== 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 );
42942: 260e movel %fp,%d3 <== NOT EXECUTED
42944: 0683 ffff fff0 addil #-16,%d3 <== NOT EXECUTED
_Timestamp_Subtract( &CPU_usage_Uptime_at_last_reset, &uptime, &total );
4294a: 280e movel %fp,%d4 <== NOT EXECUTED
4294c: 0684 ffff ffe8 addil #-24,%d4 <== 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 );
42952: 2c0e movel %fp,%d6 <== 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 );
42954: 2a0e movel %fp,%d5 <== NOT EXECUTED
}
}
}
#endif
(*print)(
42956: 49f9 0006 79b8 lea 679b8 <_Objects_Information_table+0x4>,%a4<== 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 );
4295c: 0686 ffff ffc3 addil #-61,%d6 <== 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 );
42962: 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;
42968: 2039 0006 7ac4 movel 67ac4 <_Thread_Time_of_last_context_switch>,%d0<== NOT EXECUTED
4296e: 2239 0006 7ac8 movel 67ac8 <_Thread_Time_of_last_context_switch+0x4>,%d1<== NOT EXECUTED
_TOD_Get_uptime( &uptime );
42974: 2f03 movel %d3,%sp@- <== 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;
42976: 2d40 ffd8 movel %d0,%fp@(-40) <== NOT EXECUTED
4297a: 2d41 ffdc movel %d1,%fp@(-36) <== NOT EXECUTED
_TOD_Get_uptime( &uptime );
4297e: 4eb9 0004 7600 jsr 47600 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract( &CPU_usage_Uptime_at_last_reset, &uptime, &total );
42984: 2f04 movel %d4,%sp@- <== 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 );
42986: 0684 ffff ffe8 addil #-24,%d4 <== 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 );
4298c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4298e: 4879 0006 7ef0 pea 67ef0 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED
42994: 4eb9 0004 972c jsr 4972c <_Timespec_Subtract> <== NOT EXECUTED
}
}
}
#endif
(*print)(
4299a: 4879 0005 caae pea 5caae <IntUartPollCallbacks.6370+0x20> <== NOT EXECUTED
429a0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
429a2: 4e92 jsr %a2@ <== NOT EXECUTED
/*PAGE
*
* rtems_cpu_usage_report
*/
void rtems_cpu_usage_report_with_plugin(
429a4: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
429a8: 205c moveal %a4@+,%a0 <== NOT EXECUTED
429aa: 2a68 0004 moveal %a0@(4),%a5 <== NOT EXECUTED
if ( information ) {
429ae: 4a8d tstl %a5 <== NOT EXECUTED
429b0: 6700 00c4 beqw 42a76 <rtems_cpu_usage_report_with_plugin+0x14a><== NOT EXECUTED
429b4: 7601 moveq #1,%d3 <== NOT EXECUTED
429b6: 6000 00b2 braw 42a6a <rtems_cpu_usage_report_with_plugin+0x13e><== NOT EXECUTED
for ( i=1 ; i <= information->maximum ; i++ ) {
the_thread = (Thread_Control *)information->local_table[ i ];
429ba: 206d 0018 moveal %a5@(24),%a0 <== NOT EXECUTED
429be: 2670 3c00 moveal %a0@(00000000,%d3:l:4),%a3 <== NOT EXECUTED
if ( !the_thread )
429c2: 4a8b tstl %a3 <== NOT EXECUTED
429c4: 6700 00a2 beqw 42a68 <rtems_cpu_usage_report_with_plugin+0x13c><== NOT EXECUTED
continue;
rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
429c8: 2f06 movel %d6,%sp@- <== NOT EXECUTED
429ca: 4878 000d pea d <OPER1+0x1> <== NOT EXECUTED
429ce: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
429d2: 4eb9 0004 6404 jsr 46404 <rtems_object_get_name> <== NOT EXECUTED
(*print)(
429d8: 2f06 movel %d6,%sp@- <== NOT EXECUTED
429da: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
429de: 4879 0005 cc20 pea 5cc20 <IntUartPollCallbacks.6370+0x192> <== NOT EXECUTED
429e4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
429e6: 4e92 jsr %a2@ <== 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 ) {
429e8: 2079 0006 7ebc moveal 67ebc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
429ee: 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;
429f2: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED
429f6: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
429fa: 266b 0008 moveal %a3@(8),%a3 <== 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;
429fe: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
42a02: 2d41 ffe4 movel %d1,%fp@(-28) <== NOT EXECUTED
if ( _Thread_Executing->Object.id == the_thread->Object.id ) {
42a06: b7e8 0008 cmpal %a0@(8),%a3 <== NOT EXECUTED
42a0a: 661e bnes 42a2a <rtems_cpu_usage_report_with_plugin+0xfe><== NOT EXECUTED
Timestamp_Control used;
_Timestamp_Subtract( &last_context_switch, &uptime, &used );
42a0c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42a0e: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
42a12: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
42a16: 4eb9 0004 972c jsr 4972c <_Timespec_Subtract> <== NOT EXECUTED
_Timestamp_Add_to( &ran, &used );
42a1c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42a1e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
42a20: 4eb9 0004 961c jsr 4961c <_Timespec_Add_to> <== NOT EXECUTED
42a26: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
};
_Timestamp_Divide( &ran, &total, &ival, &fval );
42a2a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
42a2e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
42a32: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED
42a36: 2f05 movel %d5,%sp@- <== NOT EXECUTED
42a38: 4eb9 0004 9654 jsr 49654 <_Timespec_Divide> <== NOT EXECUTED
/*
* Print the information
*/
(*print)( context,
42a3e: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
42a42: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
42a48: 202e ffe4 movel %fp@(-28),%d0 <== NOT EXECUTED
42a4c: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
42a50: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED
42a54: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a56: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
42a5a: 4879 0005 cc33 pea 5cc33 <IntUartPollCallbacks.6370+0x1a5> <== NOT EXECUTED
42a60: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42a62: 4e92 jsr %a2@ <== NOT EXECUTED
42a64: 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++ ) {
42a68: 5283 addql #1,%d3 <== NOT EXECUTED
42a6a: 4280 clrl %d0 <== NOT EXECUTED
42a6c: 302d 000e movew %a5@(14),%d0 <== NOT EXECUTED
42a70: b083 cmpl %d3,%d0 <== NOT EXECUTED
42a72: 6400 ff46 bccw 429ba <rtems_cpu_usage_report_with_plugin+0x8e><== NOT EXECUTED
" ID | NAME | TICKS | PERCENT\n"
#endif
"------------+----------------------------------------+---------------+---------\n"
);
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
42a76: b9fc 0006 79c4 cmpal #424388,%a4 <== NOT EXECUTED
42a7c: 6600 ff2a bnew 429a8 <rtems_cpu_usage_report_with_plugin+0x7c><== NOT EXECUTED
}
}
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)(
42a80: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
42a84: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
42a8a: 4c43 0000 remul %d3,%d0,%d0 <== NOT EXECUTED
42a8e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42a90: 2f2e ffe8 movel %fp@(-24),%sp@- <== NOT EXECUTED
42a94: 4879 0005 cc4b pea 5cc4b <IntUartPollCallbacks.6370+0x1bd> <== NOT EXECUTED
42a9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42a9c: 4e92 jsr %a2@ <== NOT EXECUTED
42a9e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
"-------------------------------------------------------------------------------\n",
_Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,
total_units
);
#endif
}
42aa2: 4cee 3cfc ff98 moveml %fp@(-104),%d2-%d7/%a2-%a5 <== NOT EXECUTED
42aa8: 4e5e unlk %fp <== NOT EXECUTED
00042ad8 <rtems_cpu_usage_reset>:
/*
* rtems_cpu_usage_reset
*/
void rtems_cpu_usage_reset( void )
{
42ad8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
42adc: 4879 0006 7ef0 pea 67ef0 <CPU_usage_Uptime_at_last_reset> <== NOT EXECUTED
42ae2: 4eb9 0004 7600 jsr 47600 <_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);
42ae8: 487a ffda pea %pc@(42ac4 <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;
42aec: 2039 0006 7ef0 movel 67ef0 <CPU_usage_Uptime_at_last_reset>,%d0<== NOT EXECUTED
42af2: 2239 0006 7ef4 movel 67ef4 <CPU_usage_Uptime_at_last_reset+0x4>,%d1<== NOT EXECUTED
42af8: 23c0 0006 7ac4 movel %d0,67ac4 <_Thread_Time_of_last_context_switch><== NOT EXECUTED
42afe: 23c1 0006 7ac8 movel %d1,67ac8 <_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);
42b04: 4eb9 0004 7b4c jsr 47b4c <rtems_iterate_over_all_threads> <== NOT EXECUTED
42b0a: 508f addql #8,%sp <== NOT EXECUTED
}
42b0c: 4e5e unlk %fp <== NOT EXECUTED
0004a930 <rtems_debug_enable>:
* rtems_debug_enable
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
4a930: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level |= to_be_enabled;
4a934: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4a938: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
_Debug_Level |= to_be_enabled;
4a93a: 81b9 0005 dbd0 orl %d0,5dbd0 <_Debug_Level> <== NOT EXECUTED
}
0004a96a <rtems_debug_is_enabled>:
* rtems_debug_is_enabled
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
4a96a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (_Debug_Level & level) ? true : false;
4a96e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4a972: 4e5e unlk %fp <== NOT EXECUTED
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
return (_Debug_Level & level) ? true : false;
4a974: c0b9 0005 dbd0 andl 5dbd0 <_Debug_Level>,%d0 <== NOT EXECUTED
4a97a: 56c0 sne %d0 <== NOT EXECUTED
}
4a97c: 4480 negl %d0 <== NOT EXECUTED
0004c884 <rtems_deviceio_errno>:
[RTEMS_IO_ERROR] = EIO,
[RTEMS_PROXY_BLOCKING] = EIO
};
int rtems_deviceio_errno(rtems_status_code sc)
{
4c884: 4e56 0000 linkw %fp,#0
4c888: 202e 0008 movel %fp@(8),%d0
4c88c: 2f02 movel %d2,%sp@-
if (sc == RTEMS_SUCCESSFUL) {
4c88e: 4a80 tstl %d0
4c890: 6722 beqs 4c8b4 <rtems_deviceio_errno+0x30> <== ALWAYS TAKEN
return 0;
} else {
int eno = EINVAL;
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
4c892: 721c moveq #28,%d1 <== NOT EXECUTED
4c894: b280 cmpl %d0,%d1 <== NOT EXECUTED
4c896: 650c bcss 4c8a4 <rtems_deviceio_errno+0x20> <== NOT EXECUTED
eno = status_code_to_errno [sc];
4c898: 41f9 0005 b82e lea 5b82e <status_code_to_errno>,%a0 <== NOT EXECUTED
4c89e: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED
4c8a2: 6002 bras 4c8a6 <rtems_deviceio_errno+0x22> <== NOT EXECUTED
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
} else {
int eno = EINVAL;
4c8a4: 7416 moveq #22,%d2 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4c8a6: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4c8ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
return -1;
4c8ae: 70ff moveq #-1,%d0 <== NOT EXECUTED
if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
eno = status_code_to_errno [sc];
}
errno = eno;
4c8b0: 2082 movel %d2,%a0@ <== NOT EXECUTED
return -1;
4c8b2: 6002 bras 4c8b6 <rtems_deviceio_errno+0x32> <== NOT EXECUTED
};
int rtems_deviceio_errno(rtems_status_code sc)
{
if (sc == RTEMS_SUCCESSFUL) {
return 0;
4c8b4: 4280 clrl %d0
errno = eno;
return -1;
}
}
4c8b6: 242e fffc movel %fp@(-4),%d2
4c8ba: 4e5e unlk %fp
...
000425cc <rtems_error>:
int rtems_error(
rtems_error_code_t error_flag,
const char *printf_format,
...
)
{
425cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
425d0: 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);
425d2: 486e 0010 pea %fp@(16) <== NOT EXECUTED
425d6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
int rtems_error(
rtems_error_code_t error_flag,
const char *printf_format,
...
)
{
425da: 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);
425de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
425e0: 4eba fe9e jsr %pc@(42480 <rtems_verror>) <== NOT EXECUTED
va_end(arglist);
if (error_flag & RTEMS_ERROR_PANIC) {
425e4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
425e8: 0802 001d btst #29,%d2 <== NOT EXECUTED
425ec: 671e beqs 4260c <rtems_error+0x40> <== NOT EXECUTED
rtems_error(0, "fatal error, exiting");
425ee: 4879 0005 ad9e pea 5ad9e <IMFS_ops+0x7e> <== NOT EXECUTED
425f4: 42a7 clrl %sp@- <== NOT EXECUTED
425f6: 4eb9 0004 25cc jsr 425cc <rtems_error> <== NOT EXECUTED
_exit(errno);
425fc: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42602: 2040 moveal %d0,%a0 <== NOT EXECUTED
42604: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
42606: 4eb9 0004 2f58 jsr 42f58 <_exit> <== NOT EXECUTED
}
if (error_flag & RTEMS_ERROR_ABORT) {
4260c: 0802 001c btst #28,%d2 <== NOT EXECUTED
42610: 6714 beqs 42626 <rtems_error+0x5a> <== NOT EXECUTED
rtems_error(0, "fatal error, aborting");
42612: 4879 0005 adb3 pea 5adb3 <IMFS_ops+0x93> <== NOT EXECUTED
42618: 42a7 clrl %sp@- <== NOT EXECUTED
4261a: 4eb9 0004 25cc jsr 425cc <rtems_error> <== NOT EXECUTED
abort();
42620: 4eb9 0004 c91c jsr 4c91c <abort> <== NOT EXECUTED
}
return chars_written;
}
42626: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4262a: 4e5e unlk %fp <== NOT EXECUTED
00045040 <rtems_event_receive>:
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45040: 4e56 0000 linkw %fp,#0
45044: 202e 0008 movel %fp@(8),%d0
45048: 206e 0014 moveal %fp@(20),%a0
RTEMS_API_Control *api;
if ( !event_out )
4504c: 4a88 tstl %a0
4504e: 6748 beqs 45098 <rtems_event_receive+0x58> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
45050: 2279 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a1
45056: 2269 00fe moveal %a1@(254),%a1
if ( _Event_sets_Is_empty( event_in ) ) {
4505a: 4a80 tstl %d0
4505c: 6604 bnes 45062 <rtems_event_receive+0x22> <== ALWAYS TAKEN
*event_out = api->pending_events;
4505e: 2091 movel %a1@,%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45060: 6038 bras 4509a <rtems_event_receive+0x5a> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45062: 2239 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d1
45068: 5281 addql #1,%d1
4506a: 23c1 0005 db08 movel %d1,5db08 <_Thread_Dispatch_disable_level>
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
45070: 2f08 movel %a0,%sp@-
45072: 2f2e 0010 movel %fp@(16),%sp@-
45076: 2f2e 000c movel %fp@(12),%sp@-
4507a: 2f00 movel %d0,%sp@-
4507c: 4eb9 0004 50a0 jsr 450a0 <_Event_Seize>
_Thread_Enable_dispatch();
45082: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return( _Thread_Executing->Wait.return_code );
45088: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
4508e: 4fef 0010 lea %sp@(16),%sp
45092: 2028 0034 movel %a0@(52),%d0
45096: 6002 bras 4509a <rtems_event_receive+0x5a>
)
{
RTEMS_API_Control *api;
if ( !event_out )
return RTEMS_INVALID_ADDRESS;
45098: 7009 moveq #9,%d0
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
}
4509a: 4e5e unlk %fp
...
000451a4 <rtems_event_send>:
rtems_status_code rtems_event_send(
rtems_id id,
rtems_event_set event_in
)
{
451a4: 4e56 fffc linkw %fp,#-4
451a8: 2f02 movel %d2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
the_thread = _Thread_Get( id, &location );
451aa: 486e fffc pea %fp@(-4)
451ae: 2f2e 0008 movel %fp@(8),%sp@-
451b2: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get>
switch ( location ) {
451b8: 508f addql #8,%sp
451ba: 4aae fffc tstl %fp@(-4)
451be: 662e bnes 451ee <rtems_event_send+0x4a> <== NEVER TAKEN
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
451c0: 2240 moveal %d0,%a1
rtems_event_set *the_event_set
)
{
ISR_Level level;
_ISR_Disable( level );
451c2: 223c 0000 0700 movel #1792,%d1
451c8: 2069 00fe moveal %a1@(254),%a0
451cc: 40c2 movew %sr,%d2
451ce: 8282 orl %d2,%d1
451d0: 46c1 movew %d1,%sr
*the_event_set |= the_new_events;
451d2: 222e 000c movel %fp@(12),%d1
451d6: 8390 orl %d1,%a0@
_ISR_Enable( level );
451d8: 46c2 movew %d2,%sr
_Event_sets_Post( event_in, &api->pending_events );
_Event_Surrender( the_thread );
451da: 2f00 movel %d0,%sp@-
451dc: 4eb9 0004 51f8 jsr 451f8 <_Event_Surrender>
_Thread_Enable_dispatch();
451e2: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
451e8: 588f addql #4,%sp
451ea: 4280 clrl %d0
451ec: 6002 bras 451f0 <rtems_event_send+0x4c>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
451ee: 7004 moveq #4,%d0 <== NOT EXECUTED
}
451f0: 242e fff8 movel %fp@(-8),%d2
451f4: 4e5e unlk %fp <== NOT EXECUTED
00046df4 <rtems_extension_create>:
rtems_status_code rtems_extension_create(
rtems_name name,
const rtems_extensions_table *extension_table,
rtems_id *id
)
{
46df4: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
46df8: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
46dfc: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
46e00: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED
Extension_Control *the_extension;
if ( !id )
46e04: 4a8c tstl %a4 <== NOT EXECUTED
46e06: 6770 beqs 46e78 <rtems_extension_create+0x84> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
46e08: 4a82 tstl %d2 <== NOT EXECUTED
46e0a: 6770 beqs 46e7c <rtems_extension_create+0x88> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46e0c: 2039 0006 79f8 movel 679f8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46e12: 5280 addql #1,%d0 <== NOT EXECUTED
46e14: 23c0 0006 79f8 movel %d0,679f8 <_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 );
46e1a: 4879 0006 7b80 pea 67b80 <_Extension_Information> <== NOT EXECUTED
46e20: 47f9 0004 8b46 lea 48b46 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
46e26: 4eb9 0004 7ba0 jsr 47ba0 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
46e2c: 588f addql #4,%sp <== NOT EXECUTED
46e2e: 2440 moveal %d0,%a2 <== NOT EXECUTED
46e30: 4a80 tstl %d0 <== NOT EXECUTED
46e32: 6606 bnes 46e3a <rtems_extension_create+0x46> <== NOT EXECUTED
_Thread_Enable_dispatch();
46e34: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_TOO_MANY;
46e36: 7005 moveq #5,%d0 <== NOT EXECUTED
46e38: 6044 bras 46e7e <rtems_extension_create+0x8a> <== 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;
46e3a: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
46e3e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
46e42: 486a 0024 pea %a2@(36) <== NOT EXECUTED
46e46: 4eb9 0004 e5d0 jsr 4e5d0 <memcpy> <== NOT EXECUTED
_User_extensions_Add_set( extension );
46e4c: 486a 0010 pea %a2@(16) <== NOT EXECUTED
46e50: 4eb9 0004 9770 jsr 49770 <_User_extensions_Add_set> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46e56: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46e5a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46e5c: 2079 0006 7b98 moveal 67b98 <_Extension_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46e62: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46e64: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
46e68: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
&_Extension_Information,
&the_extension->Object,
(Objects_Name) name
);
*id = the_extension->Object.id;
46e6c: 2880 movel %d0,%a4@ <== NOT EXECUTED
_Thread_Enable_dispatch();
46e6e: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46e70: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46e74: 4280 clrl %d0 <== NOT EXECUTED
46e76: 6006 bras 46e7e <rtems_extension_create+0x8a> <== NOT EXECUTED
)
{
Extension_Control *the_extension;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46e78: 7009 moveq #9,%d0 <== NOT EXECUTED
46e7a: 6002 bras 46e7e <rtems_extension_create+0x8a> <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46e7c: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46e7e: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
46e84: 4e5e unlk %fp <== NOT EXECUTED
00046c6c <rtems_extension_delete>:
#include <rtems/extension.h>
rtems_status_code rtems_extension_delete(
rtems_id id
)
{
46c6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46c70: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Extension_Control *)
_Objects_Get( &_Extension_Information, id, location );
46c72: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46c76: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46c7a: 4879 0006 74f0 pea 674f0 <_Extension_Information> <== NOT EXECUTED
46c80: 4eb9 0004 7d88 jsr 47d88 <_Objects_Get> <== NOT EXECUTED
Extension_Control *the_extension;
Objects_Locations location;
the_extension = _Extension_Get( id, &location );
switch ( location ) {
46c86: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46c8a: 2440 moveal %d0,%a2 <== NOT EXECUTED
46c8c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46c90: 6634 bnes 46cc6 <rtems_extension_delete+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
46c92: 486a 0010 pea %a2@(16) <== NOT EXECUTED
46c96: 4eb9 0004 9438 jsr 49438 <_User_extensions_Remove_set> <== NOT EXECUTED
_Objects_Close( &_Extension_Information, &the_extension->Object );
46c9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46c9e: 4879 0006 74f0 pea 674f0 <_Extension_Information> <== NOT EXECUTED
46ca4: 4eb9 0004 79ac jsr 479ac <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Extension_Free (
Extension_Control *the_extension
)
{
_Objects_Free( &_Extension_Information, &the_extension->Object );
46caa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46cac: 4879 0006 74f0 pea 674f0 <_Extension_Information> <== NOT EXECUTED
46cb2: 4eb9 0004 7c24 jsr 47c24 <_Objects_Free> <== NOT EXECUTED
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
46cb8: 4eb9 0004 87ee jsr 487ee <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46cbe: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46cc2: 4280 clrl %d0 <== NOT EXECUTED
46cc4: 6002 bras 46cc8 <rtems_extension_delete+0x5c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46cc6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46cc8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
46ccc: 4e5e unlk %fp <== NOT EXECUTED
00047674 <rtems_extension_ident>:
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
)
{
47674: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47678: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4767c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
47682: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47686: 4879 0006 06a0 pea 606a0 <_Extension_Information> <== NOT EXECUTED
4768c: 4eb9 0004 887c jsr 4887c <_Objects_Name_to_id_u32> <== NOT EXECUTED
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
47692: 41f9 0005 dafa lea 5dafa <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
47698: 4e5e unlk %fp <== NOT EXECUTED
4769a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00042720 <rtems_filesystem_dirname>:
int rtems_filesystem_dirname(
const char *pathname
)
{
42720: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
42724: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
42728: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int len = strlen( pathname );
while ( len ) {
len--;
if ( rtems_filesystem_is_separator( pathname[len] ) )
4272c: 47f9 0004 34c8 lea 434c8 <rtems_filesystem_is_separator>,%a3<== NOT EXECUTED
int rtems_filesystem_dirname(
const char *pathname
)
{
int len = strlen( pathname );
42732: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42734: 4eb9 0004 dda4 jsr 4dda4 <strlen> <== NOT EXECUTED
4273a: 588f addql #4,%sp <== NOT EXECUTED
4273c: 2400 movel %d0,%d2 <== NOT EXECUTED
flags,
pathloc,
follow_link );
}
int rtems_filesystem_dirname(
4273e: d5c0 addal %d0,%a2 <== NOT EXECUTED
const char *pathname
)
{
int len = strlen( pathname );
while ( len ) {
42740: 6010 bras 42752 <rtems_filesystem_dirname+0x32> <== NOT EXECUTED
len--;
42742: 5382 subql #1,%d2 <== NOT EXECUTED
if ( rtems_filesystem_is_separator( pathname[len] ) )
42744: 1022 moveb %a2@-,%d0 <== NOT EXECUTED
42746: 49c0 extbl %d0 <== NOT EXECUTED
42748: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4274a: 4e93 jsr %a3@ <== NOT EXECUTED
4274c: 588f addql #4,%sp <== NOT EXECUTED
4274e: 4a80 tstl %d0 <== NOT EXECUTED
42750: 6604 bnes 42756 <rtems_filesystem_dirname+0x36> <== NOT EXECUTED
const char *pathname
)
{
int len = strlen( pathname );
while ( len ) {
42752: 4a82 tstl %d2 <== NOT EXECUTED
42754: 66ec bnes 42742 <rtems_filesystem_dirname+0x22> <== NOT EXECUTED
if ( rtems_filesystem_is_separator( pathname[len] ) )
break;
}
return len;
}
42756: 2002 movel %d2,%d0 <== NOT EXECUTED
42758: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4275e: 4e5e unlk %fp <== NOT EXECUTED
00042664 <rtems_filesystem_evaluate_relative_path>:
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc,
int follow_link
)
{
42664: 4e56 fff0 linkw %fp,#-16
42668: 48d7 041c moveml %d2-%d4/%a2,%sp@
4266c: 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 );
42670: 206a 000c moveal %a2@(12),%a0
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc,
int follow_link
)
{
42674: 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 );
42678: 2f0a movel %a2,%sp@-
size_t pathnamelen,
int flags,
rtems_filesystem_location_info_t *pathloc,
int follow_link
)
{
4267a: 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 );
4267e: 2f03 movel %d3,%sp@-
42680: 2f2e 000c movel %fp@(12),%sp@-
42684: 2f2e 0008 movel %fp@(8),%sp@-
42688: 2050 moveal %a0@,%a0
4268a: 4e90 jsr %a0@
/*
* Get the Node type and determine if you need to follow the link or
* not.
*/
if ( (result == 0) && follow_link ) {
4268c: 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 );
42690: 2400 movel %d0,%d2
/*
* Get the Node type and determine if you need to follow the link or
* not.
*/
if ( (result == 0) && follow_link ) {
42692: 6634 bnes 426c8 <rtems_filesystem_evaluate_relative_path+0x64>
42694: 4a84 tstl %d4
42696: 6730 beqs 426c8 <rtems_filesystem_evaluate_relative_path+0x64>
type = (*pathloc->ops->node_type_h)( pathloc );
42698: 206a 000c moveal %a2@(12),%a0
4269c: 2f0a movel %a2,%sp@-
4269e: 2068 0010 moveal %a0@(16),%a0
426a2: 4e90 jsr %a0@
if ( ( type == RTEMS_FILESYSTEM_HARD_LINK ) ||
426a4: 588f addql #4,%sp
426a6: 7201 moveq #1,%d1
426a8: 5780 subql #3,%d0
426aa: b280 cmpl %d0,%d1
426ac: 651a bcss 426c8 <rtems_filesystem_evaluate_relative_path+0x64><== 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 );
426ae: 206a 000c moveal %a2@(12),%a0 <== NOT EXECUTED
426b2: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
426b6: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
426ba: 2268 0034 moveal %a0@(52),%a1 <== NOT EXECUTED
}
}
return result;
}
426be: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
426c4: 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 );
426c6: 4ed1 jmp %a1@ <== NOT EXECUTED
}
}
return result;
}
426c8: 2002 movel %d2,%d0
426ca: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2
426d0: 4e5e unlk %fp <== NOT EXECUTED
00049b7e <rtems_filesystem_get_mount_handler>:
rtems_filesystem_fsmount_me_t
rtems_filesystem_get_mount_handler(
const char *type
)
{
49b7e: 4e56 fff8 linkw %fp,#-8
49b82: 202e 0008 movel %fp@(8),%d0
find_arg fa = {
49b86: 42ae fffc clrl %fp@(-4)
49b8a: 2d40 fff8 movel %d0,%fp@(-8)
.type = type,
.mount_h = NULL
};
if ( type != NULL ) {
49b8e: 6710 beqs 49ba0 <rtems_filesystem_get_mount_handler+0x22><== NEVER TAKEN
rtems_filesystem_iterate( find_handler, &fa );
49b90: 486e fff8 pea %fp@(-8)
49b94: 487a ff16 pea %pc@(49aac <find_handler>)
49b98: 4eb9 0004 9b16 jsr 49b16 <rtems_filesystem_iterate>
49b9e: 508f addql #8,%sp
}
return fa.mount_h;
}
49ba0: 202e fffc movel %fp@(-4),%d0
49ba4: 4e5e unlk %fp <== NOT EXECUTED
00043464 <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)
{
43464: 4e56 0000 linkw %fp,#0
if (rtems_filesystem_is_separator(path[0])) {
43468: 206e 0008 moveal %fp@(8),%a0
#include "rtems/libio_.h"
void rtems_filesystem_get_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
4346c: 2f0a movel %a2,%sp@-
4346e: 246e 000c moveal %fp@(12),%a2
43472: 2f02 movel %d2,%sp@-
43474: 242e 0010 movel %fp@(16),%d2
if (rtems_filesystem_is_separator(path[0])) {
43478: 1010 moveb %a0@,%d0
4347a: 49c0 extbl %d0
4347c: 2f00 movel %d0,%sp@-
4347e: 4eb9 0004 34c8 jsr 434c8 <rtems_filesystem_is_separator>
43484: 2279 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a1
4348a: 588f addql #4,%sp
4348c: 41f9 0004 d1f8 lea 4d1f8 <memcpy>,%a0
43492: 4a80 tstl %d0
43494: 6712 beqs 434a8 <rtems_filesystem_get_start_loc+0x44><== NEVER TAKEN
*loc = rtems_filesystem_root;
43496: 4878 0014 pea 14 <OPER2>
4349a: 4869 0018 pea %a1@(24)
4349e: 2f02 movel %d2,%sp@-
434a0: 4e90 jsr %a0@
*index = 1;
434a2: 7001 moveq #1,%d0
434a4: 2480 movel %d0,%a2@
434a6: 600e bras 434b6 <rtems_filesystem_get_start_loc+0x52>
}
else {
*loc = rtems_filesystem_current;
434a8: 4878 0014 pea 14 <OPER2>
434ac: 4869 0004 pea %a1@(4) <== NOT EXECUTED
434b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
434b2: 4e90 jsr %a0@ <== NOT EXECUTED
*index = 0;
434b4: 4292 clrl %a2@ <== NOT EXECUTED
}
}
434b6: 242e fff8 movel %fp@(-8),%d2
*loc = rtems_filesystem_root;
*index = 1;
}
else {
*loc = rtems_filesystem_current;
*index = 0;
434ba: 4fef 000c lea %sp@(12),%sp
}
}
434be: 246e fffc moveal %fp@(-4),%a2
434c2: 4e5e unlk %fp
...
00049ccc <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)
{
49ccc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (rtems_filesystem_is_separator(path[0])) {
49cd0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
#include "rtems/libio_.h"
void rtems_filesystem_get_sym_start_loc(const char *path,
int *index,
rtems_filesystem_location_info_t *loc)
{
49cd4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49cd6: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if (rtems_filesystem_is_separator(path[0])) {
49cda: 1010 moveb %a0@,%d0 <== NOT EXECUTED
49cdc: 49c0 extbl %d0 <== NOT EXECUTED
49cde: 2f00 movel %d0,%sp@- <== NOT EXECUTED
49ce0: 4eb9 0004 34c8 jsr 434c8 <rtems_filesystem_is_separator> <== NOT EXECUTED
49ce6: 588f addql #4,%sp <== NOT EXECUTED
49ce8: 4a80 tstl %d0 <== NOT EXECUTED
49cea: 6724 beqs 49d10 <rtems_filesystem_get_sym_start_loc+0x44><== NOT EXECUTED
*loc = rtems_filesystem_root;
49cec: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
49cf0: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
49cf6: 41e8 0018 lea %a0@(24),%a0 <== NOT EXECUTED
49cfa: 2f08 movel %a0,%sp@- <== NOT EXECUTED
49cfc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49d00: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
*index = 1;
49d06: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49d0a: 7001 moveq #1,%d0 <== NOT EXECUTED
49d0c: 2480 movel %d0,%a2@ <== NOT EXECUTED
49d0e: 6002 bras 49d12 <rtems_filesystem_get_sym_start_loc+0x46><== NOT EXECUTED
}
else {
*index = 0;
49d10: 4292 clrl %a2@ <== NOT EXECUTED
}
}
49d12: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49d16: 4e5e unlk %fp <== NOT EXECUTED
...
00042328 <rtems_filesystem_initialize>:
/*
* Set the default umask to "022".
*/
rtems_filesystem_umask = 022;
42328: 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 )
{
4232a: 4e56 ffe0 linkw %fp,#-32
/*
* Set the default umask to "022".
*/
rtems_filesystem_umask = 022;
4232e: 2079 0005 c3c0 moveal 5c3c0 <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 )
{
42334: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
/*
* Set the default umask to "022".
*/
rtems_filesystem_umask = 022;
42338: 2140 002c movel %d0,%a0@(44)
/*
* mount the first filesystem.
*/
if ( rtems_filesystem_mount_table_size == 0 )
4233c: 4ab9 0005 a9ae tstl 5a9ae <rtems_filesystem_mount_table_size>
42342: 6608 bnes 4234c <rtems_filesystem_initialize+0x24><== ALWAYS TAKEN
rtems_fatal_error_occurred( 0xABCD0001 );
42344: 2f3c abcd 0001 movel #-1412628479,%sp@- <== NOT EXECUTED
4234a: 602c bras 42378 <rtems_filesystem_initialize+0x50><== NOT EXECUTED
mt = &rtems_filesystem_mount_table[0];
4234c: 2079 0005 c1ac moveal 5c1ac <rtems_filesystem_mount_table>,%a0
status = mount( mt->device, mt->mount_point, mt->type, mt->fsoptions, NULL );
42352: 42a7 clrl %sp@-
42354: 2f28 0004 movel %a0@(4),%sp@-
42358: 2f10 movel %a0@,%sp@-
4235a: 2f28 000c movel %a0@(12),%sp@-
4235e: 2f28 0008 movel %a0@(8),%sp@-
42362: 4eb9 0004 2c98 jsr 42c98 <mount>
if ( status == -1 )
42368: 4fef 0014 lea %sp@(20),%sp
4236c: 72ff moveq #-1,%d1
4236e: b280 cmpl %d0,%d1
42370: 660c bnes 4237e <rtems_filesystem_initialize+0x56><== ALWAYS TAKEN
rtems_fatal_error_occurred( 0xABCD0002 );
42372: 2f3c abcd 0002 movel #-1412628478,%sp@- <== NOT EXECUTED
42378: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred> <== NOT EXECUTED
rtems_filesystem_link_counts = 0;
4237e: 2079 0005 c3c0 moveal 5c3c0 <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);
42384: 240e movel %fp,%d2
42386: 0682 ffff ffec addil #-20,%d2
4238c: 47f9 0004 26d4 lea 426d4 <rtems_filesystem_evaluate_path>,%a3
rtems_filesystem_root = loc;
42392: 45f9 0004 d1f8 lea 4d1f8 <memcpy>,%a2
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;
42398: 4240 clrw %d0
4239a: 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);
4239e: 42a7 clrl %sp@-
423a0: 2f02 movel %d2,%sp@-
423a2: 42a7 clrl %sp@-
423a4: 4878 0001 pea 1 <ADD>
423a8: 4879 0005 ad68 pea 5ad68 <IMFS_ops+0x48>
423ae: 4e93 jsr %a3@
rtems_filesystem_root = loc;
423b0: 4878 0014 pea 14 <OPER2>
423b4: 2079 0005 c3c0 moveal 5c3c0 <rtems_current_user_env>,%a0
423ba: 41e8 0018 lea %a0@(24),%a0
423be: 2f02 movel %d2,%sp@-
423c0: 2f08 movel %a0,%sp@-
423c2: 4e92 jsr %a2@
/* One more clone for the current node */
rtems_filesystem_evaluate_path("/", 1, 0, &loc, 0);
423c4: 4fef 001c lea %sp@(28),%sp
423c8: 4297 clrl %sp@
423ca: 2f02 movel %d2,%sp@-
423cc: 42a7 clrl %sp@-
423ce: 4878 0001 pea 1 <ADD>
423d2: 4879 0005 ad68 pea 5ad68 <IMFS_ops+0x48>
423d8: 4e93 jsr %a3@
rtems_filesystem_current = loc;
423da: 4878 0014 pea 14 <OPER2>
423de: 2039 0005 c3c0 movel 5c3c0 <rtems_current_user_env>,%d0
423e4: 5880 addql #4,%d0
423e6: 2f02 movel %d2,%sp@-
423e8: 2f00 movel %d0,%sp@-
423ea: 4e92 jsr %a2@
*
* 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);
423ec: 4fef 0020 lea %sp@(32),%sp
423f0: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca>
423f4: 4879 0005 ad6a pea 5ad6a <IMFS_ops+0x4a>
423fa: 4eb9 0004 2b48 jsr 42b48 <mkdir>
if ( status != 0 )
42400: 508f addql #8,%sp
42402: 4a80 tstl %d0
42404: 670a beqs 42410 <rtems_filesystem_initialize+0xe8><== ALWAYS TAKEN
rtems_fatal_error_occurred( 0xABCD0003 );
42406: 2f3c abcd 0003 movel #-1412628477,%sp@- <== NOT EXECUTED
4240c: 6000 ff6a braw 42378 <rtems_filesystem_initialize+0x50><== NOT EXECUTED
* 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.
*/
}
42410: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3
42416: 4e5e unlk %fp
...
000434c8 <rtems_filesystem_is_separator>:
*
* NOTE: This function handles MS-DOS and UNIX style names.
*/
int rtems_filesystem_is_separator(char ch)
{
434c8: 4e56 0000 linkw %fp,#0
434cc: 102e 000b moveb %fp@(11),%d0
434d0: 2f02 movel %d2,%sp@-
return ((ch == '/') || (ch == '\\') || (ch == '\0'));
434d2: 742f moveq #47,%d2
434d4: 1200 moveb %d0,%d1
434d6: 49c1 extbl %d1
434d8: b481 cmpl %d1,%d2
434da: 6712 beqs 434ee <rtems_filesystem_is_separator+0x26>
434dc: 143c 005c moveb #92,%d2
434e0: b481 cmpl %d1,%d2
434e2: 670a beqs 434ee <rtems_filesystem_is_separator+0x26><== NEVER TAKEN
434e4: 4a00 tstb %d0
434e6: 57c0 seq %d0
434e8: 49c0 extbl %d0
434ea: 4480 negl %d0
434ec: 6002 bras 434f0 <rtems_filesystem_is_separator+0x28>
434ee: 7001 moveq #1,%d0
}
434f0: 241f movel %sp@+,%d2
434f2: 4e5e unlk %fp
...
00049b16 <rtems_filesystem_iterate>:
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
49b16: 4e56 fff0 linkw %fp,#-16
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
49b1a: 4200 clrb %d0
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
49b1c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
49b20: 266e 0008 moveal %fp@(8),%a3
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
49b24: 45f9 0005 a98e lea 5a98e <rtems_filesystem_table>,%a2
bool rtems_filesystem_iterate(
rtems_per_filesystem_routine routine,
void *routine_arg
)
{
49b2a: 242e 000c movel %fp@(12),%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 ) {
49b2e: 600a bras 49b3a <rtems_filesystem_iterate+0x24>
stop = (*routine)( table_entry, routine_arg );
49b30: 2f02 movel %d2,%sp@-
49b32: 2f0a movel %a2,%sp@-
++table_entry;
49b34: 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 );
49b36: 4e93 jsr %a3@
++table_entry;
49b38: 508f addql #8,%sp
{
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
rtems_chain_node *node = NULL;
bool stop = false;
while ( table_entry->type && !stop ) {
49b3a: 4a92 tstl %a2@
49b3c: 6706 beqs 49b44 <rtems_filesystem_iterate+0x2e>
49b3e: 4a00 tstb %d0
49b40: 67ee beqs 49b30 <rtems_filesystem_iterate+0x1a>
49b42: 6030 bras 49b74 <rtems_filesystem_iterate+0x5e>
49b44: 1600 moveb %d0,%d3
stop = (*routine)( table_entry, routine_arg );
++table_entry;
}
if ( !stop ) {
49b46: 662c bnes 49b74 <rtems_filesystem_iterate+0x5e> <== ALWAYS TAKEN
rtems_libio_lock();
49b48: 4eba ff9a jsr %pc@(49ae4 <rtems_libio_lock>) <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b4c: 2479 0005 c3c8 moveal 5c3c8 <filesystem_chain>,%a2 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
49b52: 600e bras 49b62 <rtems_filesystem_iterate+0x4c> <== 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 );
49b54: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49b56: 486a 0008 pea %a2@(8) <== NOT EXECUTED
49b5a: 4e93 jsr %a3@ <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
49b5c: 2452 moveal %a2@,%a2 <== NOT EXECUTED
if ( !stop ) {
rtems_libio_lock();
for (
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
node = rtems_chain_next( node )
49b5e: 508f addql #8,%sp <== NOT EXECUTED
) {
const filesystem_node *fsn = (filesystem_node *) node;
stop = (*routine)( &fsn->entry, routine_arg );
49b60: 1600 moveb %d0,%d3 <== NOT EXECUTED
++table_entry;
}
if ( !stop ) {
rtems_libio_lock();
for (
49b62: b5fc 0005 c3cc cmpal #377804,%a2 <== NOT EXECUTED
49b68: 6704 beqs 49b6e <rtems_filesystem_iterate+0x58> <== NOT EXECUTED
node = rtems_chain_first( &filesystem_chain );
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
49b6a: 4a03 tstb %d3 <== NOT EXECUTED
49b6c: 67e6 beqs 49b54 <rtems_filesystem_iterate+0x3e> <== NOT EXECUTED
) {
const filesystem_node *fsn = (filesystem_node *) node;
stop = (*routine)( &fsn->entry, routine_arg );
}
rtems_libio_unlock();
49b6e: 4eba ff90 jsr %pc@(49b00 <rtems_libio_unlock>) <== NOT EXECUTED
49b72: 1003 moveb %d3,%d0 <== NOT EXECUTED
}
return stop;
}
49b74: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
49b7a: 4e5e unlk %fp <== NOT EXECUTED
00042c4e <rtems_filesystem_mount_iterate>:
bool rtems_filesystem_mount_iterate(
rtems_per_filesystem_mount_routine routine,
void *routine_arg
)
{
42c4e: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
42c52: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
42c56: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
42c5a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
rtems_chain_node *node = NULL;
bool stop = false;
rtems_libio_lock();
42c5e: 4eba ffbc jsr %pc@(42c1c <rtems_libio_lock>) <== NOT EXECUTED
stop = (*routine)( mt_entry, routine_arg );
}
rtems_libio_unlock();
return stop;
}
42c62: 2479 0005 c2a4 moveal 5c2a4 <mount_chain>,%a2 <== NOT EXECUTED
rtems_per_filesystem_mount_routine routine,
void *routine_arg
)
{
rtems_chain_node *node = NULL;
bool stop = false;
42c68: 4200 clrb %d0 <== NOT EXECUTED
rtems_libio_lock();
for (
42c6a: 600a bras 42c76 <rtems_filesystem_mount_iterate+0x28><== 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 );
42c6c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42c6e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42c70: 4e93 jsr %a3@ <== NOT EXECUTED
}
rtems_libio_unlock();
return stop;
}
42c72: 2452 moveal %a2@,%a2 <== NOT EXECUTED
rtems_libio_lock();
for (
node = rtems_chain_first( &mount_chain );
!rtems_chain_is_tail( &mount_chain, node ) && !stop;
node = rtems_chain_next( node )
42c74: 508f addql #8,%sp <== NOT EXECUTED
{
rtems_chain_node *node = NULL;
bool stop = false;
rtems_libio_lock();
for (
42c76: b5fc 0005 c2a8 cmpal #377512,%a2 <== NOT EXECUTED
42c7c: 6704 beqs 42c82 <rtems_filesystem_mount_iterate+0x34><== NOT EXECUTED
node = rtems_chain_first( &mount_chain );
!rtems_chain_is_tail( &mount_chain, node ) && !stop;
42c7e: 4a00 tstb %d0 <== NOT EXECUTED
42c80: 67ea beqs 42c6c <rtems_filesystem_mount_iterate+0x1e><== NOT EXECUTED
const rtems_filesystem_mount_table_entry_t *mt_entry =
(rtems_filesystem_mount_table_entry_t *) node;
stop = (*routine)( mt_entry, routine_arg );
}
rtems_libio_unlock();
42c82: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
42c86: 4eba ffb0 jsr %pc@(42c38 <rtems_libio_unlock>) <== NOT EXECUTED
return stop;
}
42c8a: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
42c8e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
42c94: 4e5e unlk %fp <== NOT EXECUTED
00042762 <rtems_filesystem_prefix_separators>:
int rtems_filesystem_prefix_separators(
const char *pathname,
int pathnamelen
)
{
42762: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
42766: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4276a: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Eat any separators at start of the path.
*/
int stripped = 0;
4276e: 4282 clrl %d2 <== NOT EXECUTED
while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
42770: 47f9 0004 34c8 lea 434c8 <rtems_filesystem_is_separator>,%a3<== NOT EXECUTED
)
{
/*
* Eat any separators at start of the path.
*/
int stripped = 0;
42776: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while ( *pathname && pathnamelen && rtems_filesystem_is_separator( *pathname ) )
4277a: 6002 bras 4277e <rtems_filesystem_prefix_separators+0x1c><== NOT EXECUTED
{
pathname++;
pathnamelen--;
stripped++;
4277c: 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 ) )
4277e: 101a moveb %a2@+,%d0 <== NOT EXECUTED
42780: 6710 beqs 42792 <rtems_filesystem_prefix_separators+0x30><== NOT EXECUTED
42782: b483 cmpl %d3,%d2 <== NOT EXECUTED
42784: 670c beqs 42792 <rtems_filesystem_prefix_separators+0x30><== NOT EXECUTED
42786: 49c0 extbl %d0 <== NOT EXECUTED
42788: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4278a: 4e93 jsr %a3@ <== NOT EXECUTED
4278c: 588f addql #4,%sp <== NOT EXECUTED
4278e: 4a80 tstl %d0 <== NOT EXECUTED
42790: 66ea bnes 4277c <rtems_filesystem_prefix_separators+0x1a><== NOT EXECUTED
pathname++;
pathnamelen--;
stripped++;
}
return stripped;
}
42792: 2002 movel %d2,%d0 <== NOT EXECUTED
42794: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4279a: 4e5e unlk %fp <== NOT EXECUTED
...
00049ba8 <rtems_filesystem_register>:
int
rtems_filesystem_register(
const char *type,
rtems_filesystem_fsmount_me_t mount_h
)
{
49ba8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
49bac: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
49bb0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
size_t type_size = strlen(type) + 1;
49bb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49bb6: 4eb9 0004 dda4 jsr 4dda4 <strlen> <== NOT EXECUTED
49bbc: 588f addql #4,%sp <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
49bbe: 2040 moveal %d0,%a0 <== NOT EXECUTED
49bc0: 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;
49bc4: 2600 movel %d0,%d3 <== NOT EXECUTED
49bc6: 5283 addql #1,%d3 <== NOT EXECUTED
size_t fsn_size = sizeof( filesystem_node ) + type_size;
filesystem_node *fsn = malloc( fsn_size );
49bc8: 4eb9 0004 2a9c jsr 42a9c <malloc> <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
49bce: 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 );
49bd0: 2440 moveal %d0,%a2 <== NOT EXECUTED
char *type_storage = (char *) fsn + sizeof( *fsn );
if ( fsn == NULL )
49bd2: 4a80 tstl %d0 <== NOT EXECUTED
49bd4: 660e bnes 49be4 <rtems_filesystem_register+0x3c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOMEM );
49bd6: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49bdc: 720c moveq #12,%d1 <== NOT EXECUTED
49bde: 2040 moveal %d0,%a0 <== NOT EXECUTED
49be0: 2081 movel %d1,%a0@ <== NOT EXECUTED
49be2: 6060 bras 49c44 <rtems_filesystem_register+0x9c> <== NOT EXECUTED
memcpy(type_storage, type, type_size);
49be4: 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 );
49be6: 47ea 0010 lea %a2@(16),%a3 <== NOT EXECUTED
if ( fsn == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
49bea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49bec: 2f0b movel %a3,%sp@- <== NOT EXECUTED
49bee: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
fsn->entry.type = type_storage;
fsn->entry.mount_h = mount_h;
49bf4: 256e 000c 000c movel %fp@(12),%a2@(12) <== NOT EXECUTED
if ( fsn == NULL )
rtems_set_errno_and_return_minus_one( ENOMEM );
memcpy(type_storage, type, type_size);
fsn->entry.type = type_storage;
49bfa: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
49bfe: 47fa ff00 lea %pc@(49b00 <rtems_libio_unlock>),%a3 <== NOT EXECUTED
fsn->entry.mount_h = mount_h;
rtems_libio_lock();
49c02: 4eba fee0 jsr %pc@(49ae4 <rtems_libio_lock>) <== NOT EXECUTED
if ( rtems_filesystem_get_mount_handler( type ) == NULL ) {
49c06: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49c08: 4eb9 0004 9b7e jsr 49b7e <rtems_filesystem_get_mount_handler><== NOT EXECUTED
49c0e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
49c12: 4a80 tstl %d0 <== NOT EXECUTED
49c14: 6616 bnes 49c2c <rtems_filesystem_register+0x84> <== NOT EXECUTED
49c16: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49c18: 4879 0005 c3c8 pea 5c3c8 <filesystem_chain> <== NOT EXECUTED
49c1e: 4eb9 0004 5fb4 jsr 45fb4 <_Chain_Append> <== NOT EXECUTED
rtems_libio_unlock();
free( fsn );
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_unlock();
49c24: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
49c26: 508f addql #8,%sp <== NOT EXECUTED
49c28: 4280 clrl %d0 <== NOT EXECUTED
49c2a: 601a bras 49c46 <rtems_filesystem_register+0x9e> <== NOT EXECUTED
rtems_libio_lock();
if ( rtems_filesystem_get_mount_handler( type ) == NULL ) {
rtems_chain_append( &filesystem_chain, &fsn->node );
} else {
rtems_libio_unlock();
49c2c: 4e93 jsr %a3@ <== NOT EXECUTED
free( fsn );
49c2e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49c30: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49c36: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49c3c: 588f addql #4,%sp <== NOT EXECUTED
49c3e: 2040 moveal %d0,%a0 <== NOT EXECUTED
49c40: 7016 moveq #22,%d0 <== NOT EXECUTED
49c42: 2080 movel %d0,%a0@ <== NOT EXECUTED
49c44: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
rtems_libio_unlock();
return 0;
}
49c46: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
49c4c: 4e5e unlk %fp <== NOT EXECUTED
00049c50 <rtems_filesystem_unregister>:
int
rtems_filesystem_unregister(
const char *type
)
{
49c50: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
49c54: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
49c58: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_chain_node *node = NULL;
if ( type == NULL ) {
49c5c: 660e bnes 49c6c <rtems_filesystem_unregister+0x1c><== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
49c5e: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49c64: 2040 moveal %d0,%a0 <== NOT EXECUTED
49c66: 7016 moveq #22,%d0 <== NOT EXECUTED
49c68: 2080 movel %d0,%a0@ <== NOT EXECUTED
49c6a: 6054 bras 49cc0 <rtems_filesystem_unregister+0x70><== NOT EXECUTED
}
rtems_libio_lock();
49c6c: 4eba fe76 jsr %pc@(49ae4 <rtems_libio_lock>) <== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
49c70: 2479 0005 c3c8 moveal 5c3c8 <filesystem_chain>,%a2 <== 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 ) {
49c76: 47f9 0004 d84c lea 4d84c <strcmp>,%a3 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
49c7c: 602a bras 49ca8 <rtems_filesystem_unregister+0x58><== 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 ) {
49c7e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49c80: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
49c84: 4e93 jsr %a3@ <== NOT EXECUTED
49c86: 508f addql #8,%sp <== NOT EXECUTED
49c88: 4a80 tstl %d0 <== NOT EXECUTED
49c8a: 661a bnes 49ca6 <rtems_filesystem_unregister+0x56><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
49c8c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49c8e: 4eb9 0004 5fec jsr 45fec <_Chain_Extract> <== NOT EXECUTED
rtems_chain_extract( node );
free( fsn );
49c94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49c96: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
rtems_libio_unlock();
49c9c: 4eba fe62 jsr %pc@(49b00 <rtems_libio_unlock>) <== NOT EXECUTED
return 0;
49ca0: 508f addql #8,%sp <== NOT EXECUTED
49ca2: 4280 clrl %d0 <== NOT EXECUTED
49ca4: 601c bras 49cc2 <rtems_filesystem_unregister+0x72><== NOT EXECUTED
}
}
rtems_libio_unlock();
rtems_set_errno_and_return_minus_one( ENOENT );
}
49ca6: 2452 moveal %a2@,%a2 <== NOT EXECUTED
if ( type == NULL ) {
rtems_set_errno_and_return_minus_one( EINVAL );
}
rtems_libio_lock();
for (
49ca8: b5fc 0005 c3cc cmpal #377804,%a2 <== NOT EXECUTED
49cae: 66ce bnes 49c7e <rtems_filesystem_unregister+0x2e><== NOT EXECUTED
rtems_libio_unlock();
return 0;
}
}
rtems_libio_unlock();
49cb0: 4eba fe4e jsr %pc@(49b00 <rtems_libio_unlock>) <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOENT );
49cb4: 7402 moveq #2,%d2 <== NOT EXECUTED
49cb6: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
49cbc: 2040 moveal %d0,%a0 <== NOT EXECUTED
49cbe: 2082 movel %d2,%a0@ <== NOT EXECUTED
49cc0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
49cc2: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
49cc8: 4e5e unlk %fp <== NOT EXECUTED
0004773c <rtems_get_version_string>:
#endif
#include <rtems/system.h>
const char *rtems_get_version_string(void)
{
4773c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _RTEMS_version;
}
47740: 203c 0005 ec78 movel #388216,%d0 <== NOT EXECUTED
47746: 4e5e unlk %fp <== NOT EXECUTED
...
00043104 <rtems_gxx_getspecific>:
void *rtems_gxx_getspecific(__gthread_key_t key)
{
43104: 4e56 fffc linkw %fp,#-4
rtems_status_code status;
void *p= 0;
43108: 204e moveal %fp,%a0
key = NULL;
return 0;
}
void *rtems_gxx_getspecific(__gthread_key_t key)
{
4310a: 2f0a movel %a2,%sp@-
4310c: 246e 0008 moveal %fp@(8),%a2
rtems_status_code status;
void *p= 0;
43110: 42a0 clrl %a0@-
/* register with RTEMS the buffer that will hold the key values */
status = rtems_task_variable_get( RTEMS_SELF, (void **)key, &p );
43112: 2f08 movel %a0,%sp@-
43114: 2f0a movel %a2,%sp@-
43116: 42a7 clrl %sp@-
43118: 4eb9 0004 6670 jsr 46670 <rtems_task_variable_get>
if ( status == RTEMS_SUCCESSFUL ) {
4311e: 4fef 000c lea %sp@(12),%sp
43122: 4a80 tstl %d0
43124: 6606 bnes 4312c <rtems_gxx_getspecific+0x28> <== ALWAYS TAKEN
/* We do not have to do this, but what the heck ! */
p= key->val;
43126: 2d52 fffc movel %a2@,%fp@(-4) <== NOT EXECUTED
4312a: 6028 bras 43154 <rtems_gxx_getspecific+0x50> <== NOT EXECUTED
} 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 );
4312c: 2f2a 0004 movel %a2@(4),%sp@-
43130: 2f0a movel %a2,%sp@-
43132: 42a7 clrl %sp@-
43134: 4eb9 0004 6568 jsr 46568 <rtems_task_variable_add>
if ( status != RTEMS_SUCCESSFUL ) {
4313a: 4fef 000c lea %sp@(12),%sp
4313e: 4a80 tstl %d0
43140: 6710 beqs 43152 <rtems_gxx_getspecific+0x4e> <== NEVER TAKEN
_Internal_error_Occurred(
43142: 4878 0015 pea 15 <OPER2+0x1>
43146: 4878 0001 pea 1 <ADD>
4314a: 42a7 clrl %sp@-
4314c: 4eb9 0004 7400 jsr 47400 <_Internal_error_Occurred>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_GXX_KEY_ADD_FAILED
);
}
key->val = (void *)0;
43152: 4292 clrl %a2@ <== NOT EXECUTED
p,
rtems_task_self()
);
#endif
return p;
}
43154: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
43158: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4315c: 4e5e unlk %fp <== NOT EXECUTED
0004306e <rtems_gxx_key_create>:
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
4306e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43072: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43074: 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 ) );
43076: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
}
return 0;
}
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
4307a: 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 ) );
4307e: 4eb9 0004 3454 jsr 43454 <malloc> <== NOT EXECUTED
*key = new_key;
43084: 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 ) );
43088: 2440 moveal %d0,%a2 <== NOT EXECUTED
*key = new_key;
4308a: 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 );
4308c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4308e: 2f00 movel %d0,%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;
43090: 4292 clrl %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 );
43092: 42a7 clrl %sp@- <== NOT EXECUTED
*/
/* 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;
new_key->dtor = dtor;
43094: 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 );
43098: 4eb9 0004 6568 jsr 46568 <rtems_task_variable_add> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
4309e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
430a2: 4a80 tstl %d0 <== NOT EXECUTED
430a4: 670e beqs 430b4 <rtems_gxx_key_create+0x46> <== NOT EXECUTED
return 0;
free( new_key );
430a6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
430a8: 4eb9 0004 2f04 jsr 42f04 <free> <== NOT EXECUTED
return -1;
430ae: 588f addql #4,%sp <== NOT EXECUTED
430b0: 70ff moveq #-1,%d0 <== NOT EXECUTED
430b2: 6002 bras 430b6 <rtems_gxx_key_create+0x48> <== 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;
430b4: 4280 clrl %d0 <== NOT EXECUTED
free( new_key );
return -1;
}
430b6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
430ba: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
430be: 4e5e unlk %fp <== NOT EXECUTED
000430d2 <rtems_gxx_key_delete>:
int rtems_gxx_key_delete (__gthread_key_t key)
{
430d2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
430d6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
430d8: 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 );
430dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
430de: 42a7 clrl %sp@- <== NOT EXECUTED
430e0: 4eb9 0004 65fc jsr 465fc <rtems_task_variable_delete> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
430e6: 508f addql #8,%sp <== NOT EXECUTED
430e8: 4a80 tstl %d0 <== NOT EXECUTED
430ea: 660e bnes 430fa <rtems_gxx_key_delete+0x28> <== NOT EXECUTED
/* Hmm - hopefully all tasks using this key have gone away... */
if ( key ) free( *(void **)key );
430ec: 4a8a tstl %a2 <== NOT EXECUTED
430ee: 670a beqs 430fa <rtems_gxx_key_delete+0x28> <== NOT EXECUTED
430f0: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
430f2: 4eb9 0004 2f04 jsr 42f04 <free> <== NOT EXECUTED
430f8: 588f addql #4,%sp <== NOT EXECUTED
return 0;
}
key = NULL;
return 0;
}
430fa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
430fe: 4280 clrl %d0 <== NOT EXECUTED
43100: 4e5e unlk %fp <== NOT EXECUTED
000430c2 <rtems_gxx_key_dtor>:
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
return 0;
}
430c2: 4280 clrl %d0 <== NOT EXECUTED
free( new_key );
return -1;
}
int rtems_gxx_key_dtor (__gthread_key_t key, void *ptr)
{
430c4: 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;
430c8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
return 0;
}
430cc: 4e5e unlk %fp <== NOT EXECUTED
{
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
#endif
key->val = 0;
430ce: 4290 clrl %a0@ <== NOT EXECUTED
return 0;
}
000431ec <rtems_gxx_mutex_destroy>:
int rtems_gxx_mutex_destroy (__gthread_mutex_t *mutex)
{
431ec: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: destroy mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_delete(*(rtems_id *)mutex);
431f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
431f4: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
431f6: 4eb9 0004 5f10 jsr 45f10 <rtems_semaphore_delete> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
431fc: 588f addql #4,%sp <== NOT EXECUTED
return 0;
return -1;
}
431fe: 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;
43200: 4a80 tstl %d0 <== NOT EXECUTED
43202: 56c0 sne %d0 <== NOT EXECUTED
43204: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043190 <rtems_gxx_mutex_init>:
/*
* MUTEX support
*/
void rtems_gxx_mutex_init (__gthread_mutex_t *mutex)
{
43190: 4e56 0000 linkw %fp,#0
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init =%X\n", *mutex );
#endif
status = rtems_semaphore_create(
43194: 2f2e 0008 movel %fp@(8),%sp@-
43198: 42a7 clrl %sp@-
4319a: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
4319e: 4878 0001 pea 1 <ADD>
431a2: 2f3c 4743 4332 movel #1195590450,%sp@-
431a8: 4eb9 0004 5d74 jsr 45d74 <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 ) {
431ae: 4fef 0014 lea %sp@(20),%sp
431b2: 4a80 tstl %d0
431b4: 6710 beqs 431c6 <rtems_gxx_mutex_init+0x36> <== NEVER TAKEN
"gxx_wrappers: mutex init failed %s (%d)\n",
rtems_status_text(status),
status
);
#endif
_Internal_error_Occurred(
431b6: 4878 0016 pea 16 <OPER2+0x2>
431ba: 4878 0001 pea 1 <ADD>
431be: 42a7 clrl %sp@-
431c0: 4eb9 0004 7400 jsr 47400 <_Internal_error_Occurred>
);
}
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
#endif
}
431c6: 4e5e unlk %fp <== NOT EXECUTED
000431ca <rtems_gxx_mutex_lock>:
int rtems_gxx_mutex_lock (__gthread_mutex_t *mutex)
{
431ca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: lock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_obtain(
431ce: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
431d2: 42a7 clrl %sp@- <== NOT EXECUTED
431d4: 42a7 clrl %sp@- <== NOT EXECUTED
431d6: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
431d8: 4eb9 0004 5fac jsr 45fac <rtems_semaphore_obtain> <== NOT EXECUTED
*(rtems_id *)mutex,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( status == RTEMS_SUCCESSFUL )
431de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
return -1;
}
431e2: 4e5e unlk %fp <== NOT EXECUTED
*(rtems_id *)mutex,
RTEMS_WAIT,
RTEMS_NO_TIMEOUT
);
if ( status == RTEMS_SUCCESSFUL )
return 0;
431e4: 4a80 tstl %d0 <== NOT EXECUTED
431e6: 56c0 sne %d0 <== NOT EXECUTED
431e8: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043208 <rtems_gxx_mutex_trylock>:
int rtems_gxx_mutex_trylock (__gthread_mutex_t *mutex)
{
43208: 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);
4320c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
43210: 42a7 clrl %sp@- <== NOT EXECUTED
43212: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43216: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
43218: 4eb9 0004 5fac jsr 45fac <rtems_semaphore_obtain> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
4321e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
return -1;
}
43222: 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;
43224: 4a80 tstl %d0 <== NOT EXECUTED
43226: 56c0 sne %d0 <== NOT EXECUTED
43228: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
0004322c <rtems_gxx_mutex_unlock>:
int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex)
{
4322c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: unlock mutex=%X\n", *mutex );
#endif
status = rtems_semaphore_release( *(rtems_id *)mutex );
43230: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
43234: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
43236: 4eb9 0004 60b4 jsr 460b4 <rtems_semaphore_release> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL )
4323c: 588f addql #4,%sp <== NOT EXECUTED
return 0;
return -1;
}
4323e: 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;
43240: 4a80 tstl %d0 <== NOT EXECUTED
43242: 56c0 sne %d0 <== NOT EXECUTED
43244: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
}
00043010 <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))
{
43010: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
43014: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43016: 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 ) {
4301a: 2012 movel %a2@,%d0 <== NOT EXECUTED
/* 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))
{
4301c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#ifdef DEBUG_GXX_WRAPPERS
printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );
#endif
if ( *(volatile __gthread_once_t *)once == 0 ) {
4301e: 4a80 tstl %d0 <== NOT EXECUTED
43020: 663e bnes 43060 <rtems_gxx_once+0x50> <== NOT EXECUTED
rtems_mode saveMode;
__gthread_once_t o;
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
43022: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43026: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
4302a: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
4302e: 4eb9 0004 6394 jsr 46394 <rtems_task_mode> <== NOT EXECUTED
if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {
43034: 2412 movel %a2@,%d2 <== NOT EXECUTED
43036: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4303a: 6604 bnes 43040 <rtems_gxx_once+0x30> <== NOT EXECUTED
*(volatile __gthread_once_t *)once = 1;
4303c: 7001 moveq #1,%d0 <== NOT EXECUTED
4303e: 2480 movel %d0,%a2@ <== NOT EXECUTED
}
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
43040: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43044: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
43048: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4304c: 4eb9 0004 6394 jsr 46394 <rtems_task_mode> <== NOT EXECUTED
if ( o == 0 )
43052: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43056: 4a82 tstl %d2 <== NOT EXECUTED
43058: 6606 bnes 43060 <rtems_gxx_once+0x50> <== NOT EXECUTED
(*func)();
4305a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4305e: 4e90 jsr %a0@ <== NOT EXECUTED
}
return 0;
}
43060: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
43064: 4280 clrl %d0 <== NOT EXECUTED
43066: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4306a: 4e5e unlk %fp <== NOT EXECUTED
00043248 <rtems_gxx_recursive_mutex_init>:
void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex)
{
43248: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_gxx_mutex_init(mutex);
}
4324c: 4e5e unlk %fp <== NOT EXECUTED
return -1;
}
void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex)
{
rtems_gxx_mutex_init(mutex);
4324e: 4ef9 0004 3190 jmp 43190 <rtems_gxx_mutex_init> <== NOT EXECUTED
00043254 <rtems_gxx_recursive_mutex_lock>:
}
int rtems_gxx_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex)
{
43254: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_lock(mutex);
}
43258: 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);
4325a: 4ef9 0004 31ca jmp 431ca <rtems_gxx_mutex_lock> <== NOT EXECUTED
00043260 <rtems_gxx_recursive_mutex_trylock>:
}
int rtems_gxx_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex)
{
43260: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_trylock(mutex);
}
43264: 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);
43266: 4ef9 0004 3208 jmp 43208 <rtems_gxx_mutex_trylock> <== NOT EXECUTED
0004326c <rtems_gxx_recursive_mutex_unlock>:
}
int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex)
{
4326c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_gxx_mutex_unlock(mutex);
}
43270: 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);
43272: 4ef9 0004 322c jmp 4322c <rtems_gxx_mutex_unlock> <== NOT EXECUTED
00043160 <rtems_gxx_setspecific>:
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)
{
43160: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
43164: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43166: 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 );
4316a: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED
4316e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43170: 42a7 clrl %sp@- <== NOT EXECUTED
43172: 4eb9 0004 6568 jsr 46568 <rtems_task_variable_add> <== NOT EXECUTED
if ( status == RTEMS_SUCCESSFUL ) {
43178: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4317c: 4a80 tstl %d0 <== NOT EXECUTED
4317e: 6606 bnes 43186 <rtems_gxx_setspecific+0x26> <== NOT EXECUTED
/* now let's set the proper value */
key->val = (void *)ptr;
43180: 24ae 000c movel %fp@(12),%a2@ <== NOT EXECUTED
return 0;
43184: 6002 bras 43188 <rtems_gxx_setspecific+0x28> <== NOT EXECUTED
}
return -1;
43186: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
43188: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4318c: 4e5e unlk %fp <== NOT EXECUTED
00046c64 <rtems_heap_allocate_aligned_with_boundary>:
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
if (
46c64: 7003 moveq #3,%d0 <== NOT EXECUTED
void *rtems_heap_allocate_aligned_with_boundary(
size_t size,
uintptr_t alignment,
uintptr_t boundary
)
{
46c66: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if (
46c6a: b0b9 0006 3500 cmpl 63500 <_System_state_Current>,%d0 <== NOT EXECUTED
46c70: 660a bnes 46c7c <rtems_heap_allocate_aligned_with_boundary+0x18><== NOT EXECUTED
_System_state_Is_up( _System_state_Get() )
&& !malloc_is_system_state_OK()
46c72: 4eb9 0004 5dbc jsr 45dbc <malloc_is_system_state_OK> <== NOT EXECUTED
46c78: 4a00 tstb %d0 <== NOT EXECUTED
46c7a: 6724 beqs 46ca0 <rtems_heap_allocate_aligned_with_boundary+0x3c><== NOT EXECUTED
) {
return NULL;
}
malloc_deferred_frees_process();
46c7c: 4eb9 0004 5dfa jsr 45dfa <malloc_deferred_frees_process> <== NOT EXECUTED
/* FIXME: Statistics, boundary checks */
return _Protected_heap_Allocate_aligned_with_boundary(
46c82: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
46c86: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
46c8a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46c8e: 2f39 0006 1160 movel 61160 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46c94: 4eb9 0004 b23c jsr 4b23c <_Protected_heap_Allocate_aligned_with_boundary><== NOT EXECUTED
46c9a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46c9e: 6002 bras 46ca2 <rtems_heap_allocate_aligned_with_boundary+0x3e><== NOT EXECUTED
{
if (
_System_state_Is_up( _System_state_Get() )
&& !malloc_is_system_state_OK()
) {
return NULL;
46ca0: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment,
boundary
);
}
46ca2: 4e5e unlk %fp <== NOT EXECUTED
...
0004537c <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
)
{
4537c: 4e56 0000 linkw %fp,#0
45380: 222e 0008 movel %fp@(8),%d1
45384: 202e 000c movel %fp@(12),%d0
45388: 206e 0010 moveal %fp@(16),%a0
if ( !_ISR_Is_vector_number_valid( vector ) )
4538c: 0c80 0000 00ff cmpil #255,%d0
45392: 621c bhis 453b0 <rtems_interrupt_catch+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
45394: 4a81 tstl %d1
45396: 671c beqs 453b4 <rtems_interrupt_catch+0x38> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
45398: 4a88 tstl %a0
4539a: 6718 beqs 453b4 <rtems_interrupt_catch+0x38> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_ISR_Install_vector(
4539c: 2f08 movel %a0,%sp@-
4539e: 2f01 movel %d1,%sp@-
453a0: 2f00 movel %d0,%sp@-
453a2: 4eb9 0004 88ea jsr 488ea <_CPU_ISR_install_vector>
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
453a8: 4fef 000c lea %sp@(12),%sp
453ac: 4280 clrl %d0
453ae: 6006 bras 453b6 <rtems_interrupt_catch+0x3a>
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
if ( !_ISR_Is_vector_number_valid( vector ) )
return RTEMS_INVALID_NUMBER;
453b0: 700a moveq #10,%d0 <== NOT EXECUTED
453b2: 6002 bras 453b6 <rtems_interrupt_catch+0x3a> <== 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;
453b4: 7009 moveq #9,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
453b6: 4e5e unlk %fp
...
00045f14 <rtems_interrupt_disable>:
rtems_interrupt_level rtems_interrupt_disable( void )
{
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
45f14: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
*/
#undef rtems_interrupt_disable
rtems_interrupt_level rtems_interrupt_disable( void )
{
45f1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
45f1e: 40c0 movew %sr,%d0 <== NOT EXECUTED
45f20: 8280 orl %d0,%d1 <== NOT EXECUTED
45f22: 46c1 movew %d1,%sr <== NOT EXECUTED
return previous_level;
}
45f24: 4e5e unlk %fp <== NOT EXECUTED
00045f28 <rtems_interrupt_enable>:
#undef rtems_interrupt_enable
void rtems_interrupt_enable(
rtems_interrupt_level previous_level
)
{
45f28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Enable( previous_level );
45f2c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45f30: 46c0 movew %d0,%sr <== NOT EXECUTED
}
45f32: 4e5e unlk %fp <== NOT EXECUTED
00045f36 <rtems_interrupt_flash>:
#undef rtems_interrupt_flash
void rtems_interrupt_flash(
rtems_interrupt_level previous_level
)
{
45f36: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Flash( previous_level );
45f3a: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
45f3e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45f44: 46c1 movew %d1,%sr <== NOT EXECUTED
45f46: 8081 orl %d1,%d0 <== NOT EXECUTED
45f48: 46c0 movew %d0,%sr <== NOT EXECUTED
}
45f4a: 4e5e unlk %fp <== NOT EXECUTED
00045f4e <rtems_interrupt_is_in_progress>:
*/
#undef rtems_interrupt_is_in_progress
bool rtems_interrupt_is_in_progress( void )
{
45f4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _ISR_Is_in_progress();
45f52: 4ab9 0005 f18e tstl 5f18e <_Per_CPU_Information+0x8> <== NOT EXECUTED
45f58: 56c0 sne %d0 <== NOT EXECUTED
}
45f5a: 4e5e unlk %fp <== NOT EXECUTED
45f5c: 4480 negl %d0 <== NOT EXECUTED
000459b0 <rtems_interrupt_level_attribute>:
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
return RTEMS_INTERRUPT_LEVEL(level);
}
459b0: 7007 moveq #7,%d0 <== NOT EXECUTED
uint32_t rtems_interrupt_mask = RTEMS_INTERRUPT_MASK;
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
459b2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return RTEMS_INTERRUPT_LEVEL(level);
}
459b6: c0ae 0008 andl %fp@(8),%d0 <== NOT EXECUTED
459ba: 4e5e unlk %fp <== NOT EXECUTED
...
0004c5f8 <rtems_io_close>:
rtems_status_code rtems_io_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c5f8: 4e56 0000 linkw %fp,#0
4c5fc: 202e 0008 movel %fp@(8),%d0
4c600: 2f03 movel %d3,%sp@-
4c602: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c604: b0b9 0005 e3a2 cmpl 5e3a2 <_IO_Number_of_drivers>,%d0
4c60a: 6420 bccs 4c62c <rtems_io_close+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
4c60c: 2600 movel %d0,%d3
4c60e: 2200 movel %d0,%d1
4c610: e78b lsll #3,%d3
4c612: eb89 lsll #5,%d1
4c614: 2279 0005 e3a6 moveal 5e3a6 <_IO_Driver_address_table>,%a1
4c61a: 9283 subl %d3,%d1
4c61c: 2271 1808 moveal %a1@(00000008,%d1:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c620: 4a89 tstl %a1
4c622: 670c beqs 4c630 <rtems_io_close+0x38> <== NEVER TAKEN
}
4c624: 241f movel %sp@+,%d2
4c626: 261f movel %sp@+,%d3
4c628: 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;
4c62a: 4ed1 jmp %a1@
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c62c: 700a moveq #10,%d0 <== NOT EXECUTED
4c62e: 6002 bras 4c632 <rtems_io_close+0x3a> <== NOT EXECUTED
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c630: 4280 clrl %d0 <== NOT EXECUTED
}
4c632: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c634: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c636: 4e5e unlk %fp <== NOT EXECUTED
...
0004c63c <rtems_io_control>:
rtems_status_code rtems_io_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c63c: 4e56 0000 linkw %fp,#0
4c640: 202e 0008 movel %fp@(8),%d0
4c644: 2f03 movel %d3,%sp@-
4c646: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c648: b0b9 0005 e3a2 cmpl 5e3a2 <_IO_Number_of_drivers>,%d0
4c64e: 6420 bccs 4c670 <rtems_io_control+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
4c650: 2600 movel %d0,%d3
4c652: 2200 movel %d0,%d1
4c654: e78b lsll #3,%d3
4c656: eb89 lsll #5,%d1
4c658: 2279 0005 e3a6 moveal 5e3a6 <_IO_Driver_address_table>,%a1
4c65e: 9283 subl %d3,%d1
4c660: 2271 1814 moveal %a1@(00000014,%d1:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c664: 4a89 tstl %a1
4c666: 670c beqs 4c674 <rtems_io_control+0x38> <== NEVER TAKEN
}
4c668: 241f movel %sp@+,%d2
4c66a: 261f movel %sp@+,%d3
4c66c: 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;
4c66e: 4ed1 jmp %a1@
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c670: 700a moveq #10,%d0 <== NOT EXECUTED
4c672: 6002 bras 4c676 <rtems_io_control+0x3a> <== NOT EXECUTED
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c674: 4280 clrl %d0 <== NOT EXECUTED
}
4c676: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c678: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c67a: 4e5e unlk %fp <== NOT EXECUTED
...
0004a980 <rtems_io_initialize>:
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4a980: 4e56 0000 linkw %fp,#0
4a984: 202e 0008 movel %fp@(8),%d0
4a988: 2f03 movel %d3,%sp@-
4a98a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4a98c: b0b9 0005 e3a2 cmpl 5e3a2 <_IO_Number_of_drivers>,%d0
4a992: 6420 bccs 4a9b4 <rtems_io_initialize+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
4a994: 2600 movel %d0,%d3
4a996: 2400 movel %d0,%d2
4a998: e78b lsll #3,%d3
4a99a: 2279 0005 e3a6 moveal 5e3a6 <_IO_Driver_address_table>,%a1
4a9a0: 93c3 subal %d3,%a1
4a9a2: eb8a lsll #5,%d2
4a9a4: 2271 2800 moveal %a1@(00000000,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4a9a8: 4a89 tstl %a1
4a9aa: 670c beqs 4a9b8 <rtems_io_initialize+0x38>
}
4a9ac: 241f movel %sp@+,%d2
4a9ae: 261f movel %sp@+,%d3
4a9b0: 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;
4a9b2: 4ed1 jmp %a1@
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4a9b4: 700a moveq #10,%d0 <== NOT EXECUTED
4a9b6: 6002 bras 4a9ba <rtems_io_initialize+0x3a> <== NOT EXECUTED
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4a9b8: 4280 clrl %d0
}
4a9ba: 241f movel %sp@+,%d2
4a9bc: 261f movel %sp@+,%d3
4a9be: 4e5e unlk %fp
...
00042298 <rtems_io_lookup_name>:
rtems_status_code rtems_io_lookup_name(
const char *name,
rtems_driver_name_t *device_info
)
{
42298: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4229c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
422a0: 242e 0008 movel %fp@(8),%d2 <== 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(
422a4: 49f9 0004 dda4 lea 4dda4 <strlen>,%a4 <== NOT EXECUTED
422aa: 260e movel %fp,%d3 <== NOT EXECUTED
422ac: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
422b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_status_code rtems_io_lookup_name(
const char *name,
rtems_driver_name_t *device_info
)
{
422b4: 246e 000c moveal %fp@(12),%a2 <== 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(
422b8: 4e94 jsr %a4@ <== NOT EXECUTED
422ba: 7201 moveq #1,%d1 <== NOT EXECUTED
422bc: 2e81 movel %d1,%sp@ <== NOT EXECUTED
422be: 2f03 movel %d3,%sp@- <== NOT EXECUTED
422c0: 42a7 clrl %sp@- <== NOT EXECUTED
422c2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
422c4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
422c6: 4eb9 0004 26d4 jsr 426d4 <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 );
422cc: 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(
422d0: 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 );
422d2: 2f03 movel %d3,%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;
422d4: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
node_type = (*loc.ops->node_type_h)( &loc );
422d8: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
422dc: 4e90 jsr %a0@ <== NOT EXECUTED
if ( (result != 0) || node_type != RTEMS_FILESYSTEM_DEVICE ) {
422de: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
422e2: 4a84 tstl %d4 <== NOT EXECUTED
422e4: 6606 bnes 422ec <rtems_io_lookup_name+0x54> <== NOT EXECUTED
422e6: 7202 moveq #2,%d1 <== NOT EXECUTED
422e8: b280 cmpl %d0,%d1 <== NOT EXECUTED
422ea: 6710 beqs 422fc <rtems_io_lookup_name+0x64> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
422ec: 486e ffec pea %fp@(-20) <== NOT EXECUTED
422f0: 4eb9 0004 27a0 jsr 427a0 <rtems_filesystem_freenode> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
422f6: 588f addql #4,%sp <== NOT EXECUTED
422f8: 700d moveq #13,%d0 <== NOT EXECUTED
422fa: 6022 bras 4231e <rtems_io_lookup_name+0x86> <== NOT EXECUTED
}
device_info->device_name = (char *) name;
422fc: 2482 movel %d2,%a2@ <== NOT EXECUTED
device_info->device_name_length = strlen( name );
422fe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42300: 4e94 jsr %a4@ <== NOT EXECUTED
42302: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
device_info->major = the_jnode->info.device.major;
42306: 256b 004c 0008 movel %a3@(76),%a2@(8) <== NOT EXECUTED
device_info->minor = the_jnode->info.device.minor;
4230c: 256b 0050 000c movel %a3@(80),%a2@(12) <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
42312: 2e83 movel %d3,%sp@ <== NOT EXECUTED
42314: 4eb9 0004 27a0 jsr 427a0 <rtems_filesystem_freenode> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4231a: 588f addql #4,%sp <== NOT EXECUTED
4231c: 4280 clrl %d0 <== NOT EXECUTED
}
4231e: 4cee 1c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a4 <== NOT EXECUTED
42324: 4e5e unlk %fp <== NOT EXECUTED
0004c680 <rtems_io_open>:
rtems_status_code rtems_io_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c680: 4e56 0000 linkw %fp,#0
4c684: 202e 0008 movel %fp@(8),%d0
4c688: 2f03 movel %d3,%sp@-
4c68a: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c68c: b0b9 0005 e3a2 cmpl 5e3a2 <_IO_Number_of_drivers>,%d0
4c692: 6420 bccs 4c6b4 <rtems_io_open+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
4c694: 2600 movel %d0,%d3
4c696: 2200 movel %d0,%d1
4c698: e78b lsll #3,%d3
4c69a: eb89 lsll #5,%d1
4c69c: 2279 0005 e3a6 moveal 5e3a6 <_IO_Driver_address_table>,%a1
4c6a2: 9283 subl %d3,%d1
4c6a4: 2271 1804 moveal %a1@(00000004,%d1:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c6a8: 4a89 tstl %a1
4c6aa: 670c beqs 4c6b8 <rtems_io_open+0x38> <== NEVER TAKEN
}
4c6ac: 241f movel %sp@+,%d2
4c6ae: 261f movel %sp@+,%d3
4c6b0: 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;
4c6b2: 4ed1 jmp %a1@
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c6b4: 700a moveq #10,%d0 <== NOT EXECUTED
4c6b6: 6002 bras 4c6ba <rtems_io_open+0x3a> <== NOT EXECUTED
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c6b8: 4280 clrl %d0 <== NOT EXECUTED
}
4c6ba: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c6bc: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c6be: 4e5e unlk %fp <== NOT EXECUTED
...
0004c6c4 <rtems_io_read>:
rtems_status_code rtems_io_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c6c4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c6c8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4c6cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4c6ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c6d0: b0b9 0005 e3a2 cmpl 5e3a2 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
4c6d6: 6420 bccs 4c6f8 <rtems_io_read+0x34> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
4c6d8: 2600 movel %d0,%d3 <== NOT EXECUTED
4c6da: 2200 movel %d0,%d1 <== NOT EXECUTED
4c6dc: e78b lsll #3,%d3 <== NOT EXECUTED
4c6de: eb89 lsll #5,%d1 <== NOT EXECUTED
4c6e0: 2279 0005 e3a6 moveal 5e3a6 <_IO_Driver_address_table>,%a1 <== NOT EXECUTED
4c6e6: 9283 subl %d3,%d1 <== NOT EXECUTED
4c6e8: 2271 180c moveal %a1@(0000000c,%d1:l),%a1 <== NOT EXECUTED
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c6ec: 4a89 tstl %a1 <== NOT EXECUTED
4c6ee: 670c beqs 4c6fc <rtems_io_read+0x38> <== NOT EXECUTED
}
4c6f0: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c6f2: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c6f4: 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;
4c6f6: 4ed1 jmp %a1@ <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c6f8: 700a moveq #10,%d0 <== NOT EXECUTED
4c6fa: 6002 bras 4c6fe <rtems_io_read+0x3a> <== NOT EXECUTED
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c6fc: 4280 clrl %d0 <== NOT EXECUTED
}
4c6fe: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c700: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c702: 4e5e unlk %fp <== NOT EXECUTED
...
00046bf8 <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
)
{
46bf8: 4e56 0000 linkw %fp,#0
46bfc: 206e 000c moveal %fp@(12),%a0
46c00: 2f0a movel %a2,%sp@-
46c02: 226e 0010 moveal %fp@(16),%a1
46c06: 2f02 movel %d2,%sp@-
46c08: 242e 0008 movel %fp@(8),%d2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
46c0c: 2039 0006 1a3a movel 61a3a <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
46c12: 4ab9 0006 1626 tstl 61626 <_Per_CPU_Information+0x8>
46c18: 6600 00d8 bnew 46cf2 <rtems_io_register_driver+0xfa>
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
46c1c: 4a89 tstl %a1
46c1e: 6700 00d6 beqw 46cf6 <rtems_io_register_driver+0xfe>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
46c22: 2280 movel %d0,%a1@
if ( driver_table == NULL )
46c24: 4a88 tstl %a0
46c26: 6700 00ce beqw 46cf6 <rtems_io_register_driver+0xfe>
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
46c2a: 4a90 tstl %a0@
46c2c: 6600 00da bnew 46d08 <rtems_io_register_driver+0x110>
46c30: 4aa8 0004 tstl %a0@(4)
46c34: 6600 00d2 bnew 46d08 <rtems_io_register_driver+0x110>
46c38: 6000 00bc braw 46cf6 <rtems_io_register_driver+0xfe> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46c3c: 2039 0006 11a0 movel 611a0 <_Thread_Dispatch_disable_level>,%d0
46c42: 5280 addql #1,%d0
46c44: 23c0 0006 11a0 movel %d0,611a0 <_Thread_Dispatch_disable_level>
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
46c4a: 4a82 tstl %d2
46c4c: 662c bnes 46c7a <rtems_io_register_driver+0x82> <== 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;
46c4e: 2039 0006 1a3a movel 61a3a <_IO_Number_of_drivers>,%d0
46c54: 2479 0006 1a3e moveal 61a3e <_IO_Driver_address_table>,%a2
46c5a: 6010 bras 46c6c <rtems_io_register_driver+0x74>
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
46c5c: 4a92 tstl %a2@
46c5e: 6600 00b0 bnew 46d10 <rtems_io_register_driver+0x118>
46c62: 4aaa 0004 tstl %a2@(4)
46c66: 6600 00a8 bnew 46d10 <rtems_io_register_driver+0x118>
46c6a: 6004 bras 46c70 <rtems_io_register_driver+0x78>
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 ) {
46c6c: b082 cmpl %d2,%d0
46c6e: 62ec bhis 46c5c <rtems_io_register_driver+0x64> <== ALWAYS TAKEN
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
46c70: 2282 movel %d2,%a1@
if ( m != n )
46c72: b082 cmpl %d2,%d0
46c74: 6638 bnes 46cae <rtems_io_register_driver+0xb6> <== ALWAYS TAKEN
46c76: 6000 00a2 braw 46d1a <rtems_io_register_driver+0x122> <== NOT EXECUTED
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
46c7a: 2202 movel %d2,%d1 <== NOT EXECUTED
46c7c: 2002 movel %d2,%d0 <== NOT EXECUTED
46c7e: e789 lsll #3,%d1 <== NOT EXECUTED
46c80: eb88 lsll #5,%d0 <== NOT EXECUTED
46c82: 2479 0006 1a3e moveal 61a3e <_IO_Driver_address_table>,%a2 <== NOT EXECUTED
46c88: 9081 subl %d1,%d0 <== NOT EXECUTED
46c8a: d5c0 addal %d0,%a2 <== 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;
46c8c: 4a92 tstl %a2@ <== NOT EXECUTED
46c8e: 660c bnes 46c9c <rtems_io_register_driver+0xa4> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
}
rtems_status_code rtems_io_register_driver(
46c90: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
46c94: 57c0 seq %d0 <== NOT EXECUTED
46c96: 49c0 extbl %d0 <== NOT EXECUTED
46c98: 4480 negl %d0 <== NOT EXECUTED
46c9a: 6002 bras 46c9e <rtems_io_register_driver+0xa6> <== 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;
46c9c: 4280 clrl %d0 <== NOT EXECUTED
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
if ( !rtems_io_is_empty_table( table ) ) {
46c9e: 4a00 tstb %d0 <== NOT EXECUTED
46ca0: 660a bnes 46cac <rtems_io_register_driver+0xb4> <== NOT EXECUTED
_Thread_Enable_dispatch();
46ca2: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
46ca8: 700c moveq #12,%d0 <== NOT EXECUTED
46caa: 6050 bras 46cfc <rtems_io_register_driver+0x104> <== NOT EXECUTED
}
*registered_major = major;
46cac: 2282 movel %d2,%a1@ <== NOT EXECUTED
}
_IO_Driver_address_table [major] = *driver_table;
46cae: 2202 movel %d2,%d1
46cb0: 2002 movel %d2,%d0
46cb2: 4878 0018 pea 18 <OPER2+0x4>
46cb6: e789 lsll #3,%d1
46cb8: eb88 lsll #5,%d0
46cba: 2f08 movel %a0,%sp@-
46cbc: 9081 subl %d1,%d0
46cbe: d0b9 0006 1a3e addl 61a3e <_IO_Driver_address_table>,%d0
46cc4: 2f00 movel %d0,%sp@-
46cc6: 4eb9 0005 09b8 jsr 509b8 <memcpy>
_Thread_Enable_dispatch();
46ccc: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
}
46cd2: 246e fffc moveal %fp@(-4),%a2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
46cd6: 4fef 000c lea %sp@(12),%sp
46cda: 2d42 0008 movel %d2,%fp@(8)
}
46cde: 242e fff8 movel %fp@(-8),%d2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
46ce2: 42ae 0010 clrl %fp@(16)
46ce6: 42ae 000c clrl %fp@(12)
}
46cea: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
46cec: 4ef9 0004 e0ec jmp 4e0ec <rtems_io_initialize>
)
{
rtems_device_major_number major_limit = _IO_Number_of_drivers;
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
46cf2: 7012 moveq #18,%d0 <== NOT EXECUTED
46cf4: 6006 bras 46cfc <rtems_io_register_driver+0x104> <== NOT EXECUTED
if ( driver_table == NULL )
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
46cf6: 7009 moveq #9,%d0 <== NOT EXECUTED
46cf8: 6002 bras 46cfc <rtems_io_register_driver+0x104> <== NOT EXECUTED
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
46cfa: 700a moveq #10,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
46cfc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46d00: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46d04: 4e5e unlk %fp <== NOT EXECUTED
46d06: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
46d08: b082 cmpl %d2,%d0
46d0a: 6200 ff30 bhiw 46c3c <rtems_io_register_driver+0x44>
46d0e: 60ea bras 46cfa <rtems_io_register_driver+0x102> <== NOT EXECUTED
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 ) {
46d10: 5282 addql #1,%d2
46d12: 45ea 0018 lea %a2@(24),%a2
46d16: 6000 ff54 braw 46c6c <rtems_io_register_driver+0x74>
if ( major == 0 ) {
rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
if ( sc != RTEMS_SUCCESSFUL ) {
_Thread_Enable_dispatch();
46d1a: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
46d20: 7005 moveq #5,%d0 <== NOT EXECUTED
if ( major == 0 ) {
rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
if ( sc != RTEMS_SUCCESSFUL ) {
_Thread_Enable_dispatch();
return sc;
46d22: 60d8 bras 46cfc <rtems_io_register_driver+0x104> <== NOT EXECUTED
00046d24 <rtems_io_unregister_driver>:
*/
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
46d24: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46d28: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
46d2c: 4ab9 0006 1626 tstl 61626 <_Per_CPU_Information+0x8> <== NOT EXECUTED
46d32: 6640 bnes 46d74 <rtems_io_unregister_driver+0x50><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
46d34: b0b9 0006 1a3a cmpl 61a3a <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
46d3a: 643c bccs 46d78 <rtems_io_unregister_driver+0x54><== NOT EXECUTED
46d3c: 2239 0006 11a0 movel 611a0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
46d42: 5281 addql #1,%d1 <== NOT EXECUTED
46d44: 23c1 0006 11a0 movel %d1,611a0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
memset(
&_IO_Driver_address_table[major],
46d4a: 2200 movel %d0,%d1 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
46d4c: 4878 0018 pea 18 <OPER2+0x4> <== NOT EXECUTED
&_IO_Driver_address_table[major],
46d50: e789 lsll #3,%d1 <== NOT EXECUTED
46d52: eb88 lsll #5,%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
46d54: 42a7 clrl %sp@- <== NOT EXECUTED
&_IO_Driver_address_table[major],
46d56: 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(
46d58: d0b9 0006 1a3e addl 61a3e <_IO_Driver_address_table>,%d0 <== NOT EXECUTED
46d5e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46d60: 4eb9 0005 0a28 jsr 50a28 <memset> <== NOT EXECUTED
&_IO_Driver_address_table[major],
0,
sizeof( rtems_driver_address_table )
);
_Thread_Enable_dispatch();
46d66: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46d6c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46d70: 4280 clrl %d0 <== NOT EXECUTED
46d72: 6006 bras 46d7a <rtems_io_unregister_driver+0x56><== 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;
46d74: 7012 moveq #18,%d0 <== NOT EXECUTED
46d76: 6002 bras 46d7a <rtems_io_unregister_driver+0x56><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
46d78: 700d moveq #13,%d0 <== NOT EXECUTED
}
46d7a: 4e5e unlk %fp <== NOT EXECUTED
...
0004c708 <rtems_io_write>:
rtems_status_code rtems_io_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4c708: 4e56 0000 linkw %fp,#0
4c70c: 202e 0008 movel %fp@(8),%d0
4c710: 2f03 movel %d3,%sp@-
4c712: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4c714: b0b9 0005 e3a2 cmpl 5e3a2 <_IO_Number_of_drivers>,%d0
4c71a: 6420 bccs 4c73c <rtems_io_write+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
4c71c: 2600 movel %d0,%d3
4c71e: 2200 movel %d0,%d1
4c720: e78b lsll #3,%d3
4c722: eb89 lsll #5,%d1
4c724: 2279 0005 e3a6 moveal 5e3a6 <_IO_Driver_address_table>,%a1
4c72a: 9283 subl %d3,%d1
4c72c: 2271 1810 moveal %a1@(00000010,%d1:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c730: 4a89 tstl %a1
4c732: 670c beqs 4c740 <rtems_io_write+0x38> <== NEVER TAKEN
}
4c734: 241f movel %sp@+,%d2
4c736: 261f movel %sp@+,%d3
4c738: 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;
4c73a: 4ed1 jmp %a1@
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4c73c: 700a moveq #10,%d0 <== NOT EXECUTED
4c73e: 6002 bras 4c742 <rtems_io_write+0x3a> <== NOT EXECUTED
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4c740: 4280 clrl %d0 <== NOT EXECUTED
}
4c742: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c744: 261f movel %sp@+,%d3 <== NOT EXECUTED
4c746: 4e5e unlk %fp <== NOT EXECUTED
...
00047b4c <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)
{
47b4c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47b50: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
47b54: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
47b58: 4a8c tstl %a4 <== NOT EXECUTED
47b5a: 6738 beqs 47b94 <rtems_iterate_over_all_threads+0x48><== NOT EXECUTED
47b5c: 45f9 0006 79b8 lea 679b8 <_Objects_Information_table+0x4>,%a2<== NOT EXECUTED
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
47b62: 205a moveal %a2@+,%a0 <== NOT EXECUTED
47b64: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
if ( !information )
47b68: 4a8b tstl %a3 <== NOT EXECUTED
47b6a: 6720 beqs 47b8c <rtems_iterate_over_all_threads+0x40><== NOT EXECUTED
47b6c: 7401 moveq #1,%d2 <== NOT EXECUTED
47b6e: 6012 bras 47b82 <rtems_iterate_over_all_threads+0x36><== NOT EXECUTED
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
the_thread = (Thread_Control *)information->local_table[ i ];
47b70: 206b 0018 moveal %a3@(24),%a0 <== NOT EXECUTED
47b74: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED
if ( !the_thread )
47b78: 6706 beqs 47b80 <rtems_iterate_over_all_threads+0x34><== NOT EXECUTED
continue;
(*routine)(the_thread);
47b7a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47b7c: 4e94 jsr %a4@ <== NOT EXECUTED
47b7e: 588f addql #4,%sp <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
47b80: 5282 addql #1,%d2 <== NOT EXECUTED
47b82: 4280 clrl %d0 <== NOT EXECUTED
47b84: 302b 000e movew %a3@(14),%d0 <== NOT EXECUTED
47b88: b082 cmpl %d2,%d0 <== NOT EXECUTED
47b8a: 64e4 bccs 47b70 <rtems_iterate_over_all_threads+0x24><== NOT EXECUTED
Objects_Information *information;
if ( !routine )
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
47b8c: b5fc 0006 79c4 cmpal #424388,%a2 <== NOT EXECUTED
47b92: 66ce bnes 47b62 <rtems_iterate_over_all_threads+0x16><== NOT EXECUTED
(*routine)(the_thread);
}
}
}
47b94: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47b9a: 4e5e unlk %fp <== NOT EXECUTED
...
0004992c <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 )
{
4992c: 4e56 fffc linkw %fp,#-4
49930: 2f0a movel %a2,%sp@-
49932: 2f02 movel %d2,%sp@-
rtems_libio_t *iop, *next;
rtems_status_code rc;
rtems_id sema;
rtems_libio_lock();
49934: 4eba ff36 jsr %pc@(4986c <rtems_libio_lock>)
if (rtems_libio_iop_freelist) {
49938: 2039 0005 d9b8 movel 5d9b8 <rtems_libio_iop_freelist>,%d0
4993e: 676a beqs 499aa <rtems_libio_allocate+0x7e> <== NEVER TAKEN
rc = rtems_semaphore_create(
49940: 486e fffc pea %fp@(-4)
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
49944: 90b9 0005 d9b4 subl 5d9b4 <rtems_libio_iops>,%d0
4994a: 223c b6db 6db7 movel #-1227133513,%d1
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
49950: 42a7 clrl %sp@-
49952: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
RTEMS_LIBIO_IOP_SEM(rtems_libio_iop_freelist - rtems_libio_iops),
49956: e680 asrl #3,%d0
49958: 4c01 0800 mulsl %d1,%d0
rtems_id sema;
rtems_libio_lock();
if (rtems_libio_iop_freelist) {
rc = rtems_semaphore_create(
4995c: 4878 0001 pea 1 <ADD>
49960: 0080 4c42 4900 oril #1279412480,%d0
49966: 2f00 movel %d0,%sp@-
49968: 4eb9 0004 53bc jsr 453bc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
0,
&sema
);
if (rc != RTEMS_SUCCESSFUL)
4996e: 4fef 0014 lea %sp@(20),%sp
49972: 4a80 tstl %d0
49974: 6634 bnes 499aa <rtems_libio_allocate+0x7e>
goto failed;
iop = rtems_libio_iop_freelist;
49976: 2479 0005 d9b8 moveal 5d9b8 <rtems_libio_iop_freelist>,%a2
next = iop->data1;
4997c: 242a 0034 movel %a2@(52),%d2
(void) memset( iop, 0, sizeof(rtems_libio_t) );
49980: 4878 0038 pea 38 <DBL_MANT_DIG+0x3>
49984: 42a7 clrl %sp@-
49986: 2f0a movel %a2,%sp@-
49988: 4eb9 0004 d268 jsr 4d268 <memset>
iop->flags = LIBIO_FLAGS_OPEN;
iop->sem = sema;
4998e: 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;
49994: 203c 0000 0100 movel #256,%d0
iop->sem = sema;
rtems_libio_iop_freelist = next;
goto done;
4999a: 4fef 000c lea %sp@(12),%sp
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;
4999e: 2540 0014 movel %d0,%a2@(20)
iop->sem = sema;
rtems_libio_iop_freelist = next;
499a2: 23c2 0005 d9b8 movel %d2,5d9b8 <rtems_libio_iop_freelist>
goto done;
499a8: 6002 bras 499ac <rtems_libio_allocate+0x80>
}
failed:
iop = 0;
499aa: 95ca subal %a2,%a2
done:
rtems_libio_unlock();
499ac: 4eba feda jsr %pc@(49888 <rtems_libio_unlock>)
return iop;
}
499b0: 242e fff4 movel %fp@(-12),%d2
499b4: 200a movel %a2,%d0
499b6: 246e fff8 moveal %fp@(-8),%a2
499ba: 4e5e unlk %fp <== NOT EXECUTED
000499be <rtems_libio_free>:
*/
void rtems_libio_free(
rtems_libio_t *iop
)
{
499be: 4e56 0000 linkw %fp,#0
499c2: 2f0a movel %a2,%sp@-
499c4: 246e 0008 moveal %fp@(8),%a2
rtems_libio_lock();
499c8: 4eba fea2 jsr %pc@(4986c <rtems_libio_lock>)
if (iop->sem)
499cc: 202a 002c movel %a2@(44),%d0
499d0: 670a beqs 499dc <rtems_libio_free+0x1e> <== NEVER TAKEN
rtems_semaphore_delete(iop->sem);
499d2: 2f00 movel %d0,%sp@-
499d4: 4eb9 0004 5558 jsr 45558 <rtems_semaphore_delete>
499da: 588f addql #4,%sp
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
499dc: 41f9 0005 d9b8 lea 5d9b8 <rtems_libio_iop_freelist>,%a0
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
499e2: 203c ffff feff movel #-257,%d0
iop->data1 = rtems_libio_iop_freelist;
499e8: 2550 0034 movel %a0@,%a2@(52)
rtems_libio_lock();
if (iop->sem)
rtems_semaphore_delete(iop->sem);
iop->flags &= ~LIBIO_FLAGS_OPEN;
499ec: c1aa 0014 andl %d0,%a2@(20)
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
499f0: 23ca 0005 d9b8 movel %a2,5d9b8 <rtems_libio_iop_freelist>
rtems_libio_unlock();
}
499f6: 246e fffc moveal %fp@(-4),%a2
499fa: 4e5e unlk %fp
iop->flags &= ~LIBIO_FLAGS_OPEN;
iop->data1 = rtems_libio_iop_freelist;
rtems_libio_iop_freelist = iop;
rtems_libio_unlock();
499fc: 6000 fe8a braw 49888 <rtems_libio_unlock>
000428c0 <rtems_libio_init>:
*
* Called by BSP startup code to initialize the libio subsystem.
*/
void rtems_libio_init( void )
{
428c0: 4e56 0000 linkw %fp,#0
428c4: 2f02 movel %d2,%sp@-
rtems_status_code rc;
uint32_t i;
rtems_libio_t *iop;
if (rtems_libio_number_iops > 0)
428c6: 2439 0005 c1a4 movel 5c1a4 <rtems_libio_number_iops>,%d2
428cc: 6744 beqs 42912 <rtems_libio_init+0x52> <== NEVER TAKEN
{
rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
428ce: 4878 0038 pea 38 <DBL_MANT_DIG+0x3>
428d2: 2f02 movel %d2,%sp@-
428d4: 4eb9 0004 241c jsr 4241c <calloc>
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
428da: 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,
428dc: 23c0 0005 d9b4 movel %d0,5d9b4 <rtems_libio_iops>
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
428e2: 6606 bnes 428ea <rtems_libio_init+0x2a> <== ALWAYS TAKEN
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
428e4: 4878 001a pea 1a <OPER2+0x6> <== NOT EXECUTED
428e8: 604e bras 42938 <rtems_libio_init+0x78> <== NOT EXECUTED
iop = rtems_libio_iop_freelist = rtems_libio_iops;
428ea: 23c0 0005 d9b8 movel %d0,5d9b8 <rtems_libio_iop_freelist>
428f0: 2040 moveal %d0,%a0
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
428f2: 4281 clrl %d1
428f4: 6004 bras 428fa <rtems_libio_init+0x3a>
iop->data1 = iop + 1;
428f6: 2148 fffc movel %a0,%a0@(-4)
sizeof(rtems_libio_t));
if (rtems_libio_iops == NULL)
rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
iop = rtems_libio_iop_freelist = rtems_libio_iops;
for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
428fa: 5281 addql #1,%d1
428fc: 41e8 0038 lea %a0@(56),%a0
42900: b481 cmpl %d1,%d2
42902: 62f2 bhis 428f6 <rtems_libio_init+0x36>
iop->data1 = iop + 1;
iop->data1 = NULL;
42904: 2202 movel %d2,%d1
42906: 2040 moveal %d0,%a0
42908: e789 lsll #3,%d1
4290a: ed8a lsll #6,%d2
4290c: 9481 subl %d1,%d2
4290e: 42b0 28fc clrl %a0@(fffffffc,%d2:l)
/*
* Create the binary semaphore used to provide mutual exclusion
* on the IOP Table.
*/
rc = rtems_semaphore_create(
42912: 4879 0005 d9bc pea 5d9bc <rtems_libio_semaphore>
42918: 42a7 clrl %sp@-
4291a: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
4291e: 4878 0001 pea 1 <ADD>
42922: 2f3c 4c42 494f movel #1279412559,%sp@-
42928: 4eb9 0004 53bc jsr 453bc <rtems_semaphore_create>
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&rtems_libio_semaphore
);
if ( rc != RTEMS_SUCCESSFUL )
4292e: 4fef 0014 lea %sp@(20),%sp
42932: 4a80 tstl %d0
42934: 6708 beqs 4293e <rtems_libio_init+0x7e> <== ALWAYS TAKEN
rtems_fatal_error_occurred( rc );
42936: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42938: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred> <== NOT EXECUTED
/*
* Initialize the base file system infrastructure.
*/
if (rtems_fs_init_helper)
4293e: 2279 0005 c1a0 moveal 5c1a0 <rtems_fs_init_helper>,%a1
42944: 4a89 tstl %a1
42946: 6708 beqs 42950 <rtems_libio_init+0x90> <== NEVER TAKEN
(* rtems_fs_init_helper)();
}
42948: 242e fffc movel %fp@(-4),%d2
4294c: 4e5e unlk %fp
/*
* Initialize the base file system infrastructure.
*/
if (rtems_fs_init_helper)
(* rtems_fs_init_helper)();
4294e: 4ed1 jmp %a1@
}
42950: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42954: 4e5e unlk %fp <== NOT EXECUTED
00049a56 <rtems_libio_is_file_open>:
*/
int rtems_libio_is_file_open(
void *node_access
)
{
49a56: 4e56 0000 linkw %fp,#0
49a5a: 2f03 movel %d3,%sp@-
49a5c: 2f02 movel %d2,%sp@-
49a5e: 242e 0008 movel %fp@(8),%d2
rtems_libio_t *iop;
int result=0;
uint32_t i;
rtems_libio_lock();
49a62: 4eba fe08 jsr %pc@(4986c <rtems_libio_lock>)
* 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(
49a66: 2079 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a0
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
49a6c: 4280 clrl %d0
* 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(
49a6e: 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++){
49a72: 2239 0005 c1a4 movel 5c1a4 <rtems_libio_number_iops>,%d1
49a78: 6016 bras 49a90 <rtems_libio_is_file_open+0x3a>
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
49a7a: 2610 movel %a0@,%d3
49a7c: 0283 0000 0100 andil #256,%d3
49a82: 6706 beqs 49a8a <rtems_libio_is_file_open+0x34>
/*
* Check if this node is under the file system that we
* are trying to dismount.
*/
if ( iop->pathinfo.node_access == node_access ) {
49a84: b4a8 0004 cmpl %a0@(4),%d2
49a88: 670e beqs 49a98 <rtems_libio_is_file_open+0x42>
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
49a8a: 5280 addql #1,%d0
49a8c: 41e8 0038 lea %a0@(56),%a0
49a90: b280 cmpl %d0,%d1
49a92: 62e6 bhis 49a7a <rtems_libio_is_file_open+0x24> <== ALWAYS TAKEN
int rtems_libio_is_file_open(
void *node_access
)
{
rtems_libio_t *iop;
int result=0;
49a94: 4282 clrl %d2 <== NOT EXECUTED
49a96: 6002 bras 49a9a <rtems_libio_is_file_open+0x44> <== NOT EXECUTED
* Check if this node is under the file system that we
* are trying to dismount.
*/
if ( iop->pathinfo.node_access == node_access ) {
result = 1;
49a98: 7401 moveq #1,%d2
break;
}
}
}
rtems_libio_unlock();
49a9a: 4eba fdec jsr %pc@(49888 <rtems_libio_unlock>)
return result;
}
49a9e: 262e fffc movel %fp@(-4),%d3
49aa2: 2002 movel %d2,%d0
49aa4: 242e fff8 movel %fp@(-8),%d2
49aa8: 4e5e unlk %fp <== NOT EXECUTED
00049a00 <rtems_libio_is_open_files_in_fs>:
*/
int rtems_libio_is_open_files_in_fs(
rtems_filesystem_mount_table_entry_t * fs_mt_entry
)
{
49a00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49a04: 2f03 movel %d3,%sp@- <== NOT EXECUTED
49a06: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49a08: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
rtems_libio_t *iop;
int result = 0;
uint32_t i;
rtems_libio_lock();
49a0c: 4eba fe5e jsr %pc@(4986c <rtems_libio_lock>) <== 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(
49a10: 2079 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a0 <== NOT EXECUTED
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
49a16: 4280 clrl %d0 <== 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(
49a18: 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++){
49a1c: 2239 0005 c1a4 movel 5c1a4 <rtems_libio_number_iops>,%d1 <== NOT EXECUTED
49a22: 6016 bras 49a3a <rtems_libio_is_open_files_in_fs+0x3a><== NOT EXECUTED
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
49a24: 2610 movel %a0@,%d3 <== NOT EXECUTED
49a26: 0283 0000 0100 andil #256,%d3 <== NOT EXECUTED
49a2c: 6706 beqs 49a34 <rtems_libio_is_open_files_in_fs+0x34><== 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 ) {
49a2e: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED
49a32: 670e beqs 49a42 <rtems_libio_is_open_files_in_fs+0x42><== NOT EXECUTED
/*
* Look for any active file descriptor entry.
*/
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
49a34: 5280 addql #1,%d0 <== NOT EXECUTED
49a36: 41e8 0038 lea %a0@(56),%a0 <== NOT EXECUTED
49a3a: b280 cmpl %d0,%d1 <== NOT EXECUTED
49a3c: 62e6 bhis 49a24 <rtems_libio_is_open_files_in_fs+0x24><== 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;
49a3e: 4282 clrl %d2 <== NOT EXECUTED
49a40: 6002 bras 49a44 <rtems_libio_is_open_files_in_fs+0x44><== 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;
49a42: 7401 moveq #1,%d2 <== NOT EXECUTED
break;
}
}
}
rtems_libio_unlock();
49a44: 4eba fe42 jsr %pc@(49888 <rtems_libio_unlock>) <== NOT EXECUTED
return result;
}
49a48: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
49a4c: 2002 movel %d2,%d0 <== NOT EXECUTED
49a4e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
49a52: 4e5e unlk %fp <== NOT EXECUTED
00043b4c <rtems_libio_set_private_env>:
rtems_status_code rtems_libio_set_private_env(void)
{
43b4c: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
43b50: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id task_id = rtems_task_self();
43b54: 4eb9 0004 62d4 jsr 462d4 <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);
43b5a: 45f9 0004 2b18 lea 42b18 <rtems_filesystem_evaluate_path>,%a2<== NOT EXECUTED
}
rtems_status_code rtems_libio_set_private_env(void)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id task_id = rtems_task_self();
43b60: 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);
43b62: 42a7 clrl %sp@- <== NOT EXECUTED
43b64: 486e ffec pea %fp@(-20) <== NOT EXECUTED
43b68: 42a7 clrl %sp@- <== NOT EXECUTED
43b6a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43b6e: 4879 0005 b57e pea 5b57e <IMFS_ops+0x48> <== NOT EXECUTED
43b74: 4e92 jsr %a2@ <== NOT EXECUTED
if (rv != 0)
43b76: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43b7a: 4a80 tstl %d0 <== NOT EXECUTED
43b7c: 6600 00c6 bnew 43c44 <rtems_libio_set_private_env+0xf8><== NOT EXECUTED
goto error_0;
rv = rtems_filesystem_evaluate_path("/", 1, 0, ¤t_loc, 0);
43b80: 42a7 clrl %sp@- <== NOT EXECUTED
43b82: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
43b86: 42a7 clrl %sp@- <== NOT EXECUTED
43b88: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43b8c: 4879 0005 b57e pea 5b57e <IMFS_ops+0x48> <== NOT EXECUTED
43b92: 4e92 jsr %a2@ <== NOT EXECUTED
if (rv != 0)
43b94: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43b98: 4a80 tstl %d0 <== NOT EXECUTED
43b9a: 6600 009c bnew 43c38 <rtems_libio_set_private_env+0xec><== 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
43b9e: 2079 0005 cbc8 moveal 5cbc8 <rtems_current_user_env>,%a0 <== NOT EXECUTED
/*
* Bharath: I'm not sure if the check can be reduced to
* if( rtems_current_user_env->task_id != task_id ) {
*/
if (
43ba4: b1fc 0005 e204 cmpal #385540,%a0 <== NOT EXECUTED
43baa: 6704 beqs 43bb0 <rtems_libio_set_private_env+0x64><== NOT EXECUTED
rtems_current_user_env == &rtems_global_user_env
|| rtems_current_user_env->task_id != task_id
43bac: b490 cmpl %a0@,%d2 <== NOT EXECUTED
43bae: 6732 beqs 43be2 <rtems_libio_set_private_env+0x96><== NOT EXECUTED
) {
new_env = malloc(sizeof(rtems_user_env_t));
43bb0: 4878 0048 pea 48 <DBL_MANT_DIG+0x13> <== NOT EXECUTED
43bb4: 4eb9 0004 313c jsr 4313c <malloc> <== NOT EXECUTED
if (new_env == NULL)
43bba: 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));
43bbc: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (new_env == NULL)
43bbe: 4a80 tstl %d0 <== NOT EXECUTED
43bc0: 676a beqs 43c2c <rtems_libio_set_private_env+0xe0><== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
new_env->refcnt = 1;
#endif
sc = rtems_task_variable_add(
43bc2: 487a ff40 pea %pc@(43b04 <free_user_env>) <== NOT EXECUTED
43bc6: 4879 0005 cbc8 pea 5cbc8 <rtems_current_user_env> <== NOT EXECUTED
43bcc: 42a7 clrl %sp@- <== NOT EXECUTED
43bce: 4eb9 0004 6390 jsr 46390 <rtems_task_variable_add> <== NOT EXECUTED
RTEMS_SELF,
(void*)&rtems_current_user_env,
(void(*)(void *))free_user_env
);
if (sc != RTEMS_SUCCESSFUL)
43bd4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43bd8: 4a80 tstl %d0 <== NOT EXECUTED
43bda: 6646 bnes 43c22 <rtems_libio_set_private_env+0xd6><== NOT EXECUTED
goto error_3;
rtems_current_user_env = new_env;
43bdc: 23ca 0005 cbc8 movel %a2,5cbc8 <rtems_current_user_env> <== NOT EXECUTED
}
/* Inherit the global values */
*rtems_current_user_env = rtems_global_user_env;
43be2: 4878 0048 pea 48 <DBL_MANT_DIG+0x13> <== NOT EXECUTED
43be6: 47f9 0004 d9a4 lea 4d9a4 <memcpy>,%a3 <== NOT EXECUTED
43bec: 4879 0005 e204 pea 5e204 <rtems_global_user_env> <== NOT EXECUTED
43bf2: 2479 0005 cbc8 moveal 5cbc8 <rtems_current_user_env>,%a2 <== NOT EXECUTED
43bf8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43bfa: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_current_user_env->task_id = task_id;
43bfc: 2482 movel %d2,%a2@ <== 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;
43bfe: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
43c02: 486e ffec pea %fp@(-20) <== NOT EXECUTED
43c06: 486a 0018 pea %a2@(24) <== NOT EXECUTED
43c0a: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_filesystem_current = current_loc;
43c0c: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
43c10: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
43c14: 486a 0004 pea %a2@(4) <== NOT EXECUTED
43c18: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
43c1a: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
43c1e: 4280 clrl %d0 <== NOT EXECUTED
43c20: 6024 bras 43c46 <rtems_libio_set_private_env+0xfa><== NOT EXECUTED
error_3:
free(new_env);
43c22: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43c24: 4eb9 0004 2bf8 jsr 42bf8 <free> <== NOT EXECUTED
43c2a: 588f addql #4,%sp <== NOT EXECUTED
error_2:
rtems_filesystem_freenode(¤t_loc);
43c2c: 486e ffd8 pea %fp@(-40) <== NOT EXECUTED
43c30: 4eb9 0004 2be4 jsr 42be4 <rtems_filesystem_freenode> <== NOT EXECUTED
43c36: 588f addql #4,%sp <== NOT EXECUTED
error_1:
rtems_filesystem_freenode(&root_loc);
43c38: 486e ffec pea %fp@(-20) <== NOT EXECUTED
43c3c: 4eb9 0004 2be4 jsr 42be4 <rtems_filesystem_freenode> <== NOT EXECUTED
43c42: 588f addql #4,%sp <== NOT EXECUTED
error_0:
return RTEMS_NO_MEMORY;
43c44: 701a moveq #26,%d0 <== NOT EXECUTED
}
43c46: 4cee 0c04 ffcc moveml %fp@(-52),%d2/%a2-%a3 <== NOT EXECUTED
43c4c: 4e5e unlk %fp <== NOT EXECUTED
00043c50 <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)
{
43c50: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
43c54: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43c56: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
43c5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_id current_task_id;
/*
* get current task id
*/
current_task_id = rtems_task_self();
43c5c: 4eb9 0004 62d4 jsr 462d4 <rtems_task_self> <== NOT EXECUTED
43c62: 2400 movel %d0,%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 )
43c64: b083 cmpl %d3,%d0 <== NOT EXECUTED
43c66: 6740 beqs 43ca8 <rtems_libio_share_private_env+0x58><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
/*
* Try to get the requested user environment
*/
sc = rtems_task_variable_get(
43c68: 486e fffc pea %fp@(-4) <== NOT EXECUTED
43c6c: 4879 0005 cbc8 pea 5cbc8 <rtems_current_user_env> <== NOT EXECUTED
43c72: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43c74: 4eb9 0004 6424 jsr 46424 <rtems_task_variable_get> <== NOT EXECUTED
(void*)&shared_user_env );
/*
* If it was not successful, return the error code
*/
if (sc != RTEMS_SUCCESSFUL)
43c7a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43c7e: 4a80 tstl %d0 <== NOT EXECUTED
43c80: 6628 bnes 43caa <rtems_libio_share_private_env+0x5a><== 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) {
43c82: 2079 0005 cbc8 moveal 5cbc8 <rtems_current_user_env>,%a0 <== NOT EXECUTED
43c88: b490 cmpl %a0@,%d2 <== NOT EXECUTED
43c8a: 6610 bnes 43c9c <rtems_libio_share_private_env+0x4c><== NOT EXECUTED
rtems_user_env_t *tmp = rtems_current_user_env;
free_user_env( tmp );
43c8c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
43c8e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
43c92: 4eba fe70 jsr %pc@(43b04 <free_user_env>) <== NOT EXECUTED
43c96: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
43c9a: 588f addql #4,%sp <== NOT EXECUTED
}
/* the current_user_env is the same pointer that remote env */
rtems_current_user_env = shared_user_env;
43c9c: 41ee fffc lea %fp@(-4),%a0 <== NOT EXECUTED
43ca0: 23d0 0005 cbc8 movel %a0@,5cbc8 <rtems_current_user_env> <== NOT EXECUTED
/* increase the reference count */
#ifdef HAVE_USERENV_REFCNT
rtems_current_user_env->refcnt++;
#endif
return RTEMS_SUCCESSFUL;
43ca6: 6002 bras 43caa <rtems_libio_share_private_env+0x5a><== 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;
43ca8: 4280 clrl %d0 <== NOT EXECUTED
#ifdef HAVE_USERENV_REFCNT
rtems_current_user_env->refcnt++;
#endif
return RTEMS_SUCCESSFUL;
}
43caa: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
43cae: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
43cb2: 4e5e unlk %fp <== NOT EXECUTED
...
000498de <rtems_libio_to_fcntl_flags>:
uint32_t flags
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
498de: 7006 moveq #6,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
498e0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
498e4: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
498e8: c081 andl %d1,%d0 <== NOT EXECUTED
*/
uint32_t rtems_libio_to_fcntl_flags(
uint32_t flags
)
{
498ea: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
498ec: 7406 moveq #6,%d2 <== NOT EXECUTED
498ee: b480 cmpl %d0,%d2 <== NOT EXECUTED
498f0: 6710 beqs 49902 <rtems_libio_to_fcntl_flags+0x24><== NOT EXECUTED
fcntl_flags |= O_RDWR;
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
498f2: 0801 0001 btst #1,%d1 <== NOT EXECUTED
498f6: 660e bnes 49906 <rtems_libio_to_fcntl_flags+0x28><== NOT EXECUTED
)
{
uint32_t fcntl_flags = 0;
if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
fcntl_flags |= O_RDWR;
498f8: 44c1 movew %d1,%ccr <== NOT EXECUTED
498fa: 57c0 seq %d0 <== NOT EXECUTED
498fc: 49c0 extbl %d0 <== NOT EXECUTED
498fe: 4480 negl %d0 <== NOT EXECUTED
49900: 6006 bras 49908 <rtems_libio_to_fcntl_flags+0x2a><== NOT EXECUTED
49902: 7002 moveq #2,%d0 <== NOT EXECUTED
49904: 6002 bras 49908 <rtems_libio_to_fcntl_flags+0x2a><== NOT EXECUTED
} else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {
fcntl_flags |= O_RDONLY;
49906: 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 ) {
49908: 0801 0000 btst #0,%d1 <== NOT EXECUTED
4990c: 6704 beqs 49912 <rtems_libio_to_fcntl_flags+0x34><== NOT EXECUTED
fcntl_flags |= O_NONBLOCK;
4990e: 08c0 000e bset #14,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {
49912: 0801 0009 btst #9,%d1 <== NOT EXECUTED
49916: 6704 beqs 4991c <rtems_libio_to_fcntl_flags+0x3e><== NOT EXECUTED
fcntl_flags |= O_APPEND;
49918: 7408 moveq #8,%d2 <== NOT EXECUTED
4991a: 8082 orl %d2,%d0 <== NOT EXECUTED
}
if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {
4991c: 0801 000a btst #10,%d1 <== NOT EXECUTED
49920: 6704 beqs 49926 <rtems_libio_to_fcntl_flags+0x48><== NOT EXECUTED
fcntl_flags |= O_CREAT;
49922: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
}
return fcntl_flags;
}
49926: 241f movel %sp@+,%d2 <== NOT EXECUTED
49928: 4e5e unlk %fp <== NOT EXECUTED
0004610c <rtems_malloc_statistics_at_free>:
* size and thus we skip updating the statistics.
*/
static void rtems_malloc_statistics_at_free(
void *pointer
)
{
4610c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46110: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46112: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uintptr_t size;
if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
46114: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46118: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4611c: 2f39 0006 1160 movel 61160 <RTEMS_Malloc_Heap>,%sp@- <== NOT EXECUTED
46122: 4eb9 0004 b2f4 jsr 4b2f4 <_Protected_heap_Get_block_size> <== NOT EXECUTED
46128: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4612c: 4a00 tstb %d0 <== NOT EXECUTED
4612e: 671a beqs 4614a <rtems_malloc_statistics_at_free+0x3e><== NOT EXECUTED
MSBUMP(lifetime_freed, size);
46130: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
46134: 4282 clrl %d2 <== NOT EXECUTED
46136: d7b9 0006 3280 addl %d3,63280 <rtems_malloc_statistics+0x28><== NOT EXECUTED
4613c: 2039 0006 327c movel 6327c <rtems_malloc_statistics+0x24>,%d0<== NOT EXECUTED
46142: d182 addxl %d2,%d0 <== NOT EXECUTED
46144: 23c0 0006 327c movel %d0,6327c <rtems_malloc_statistics+0x24><== NOT EXECUTED
}
}
4614a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4614e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
46152: 4e5e unlk %fp <== NOT EXECUTED
00046156 <rtems_malloc_statistics_at_malloc>:
}
static void rtems_malloc_statistics_at_malloc(
void *pointer
)
{
46156: 4e56 fffc linkw %fp,#-4
4615a: 202e 0008 movel %fp@(8),%d0
4615e: 2f03 movel %d3,%sp@-
uintptr_t actual_size = 0;
46160: 42ae fffc clrl %fp@(-4)
}
static void rtems_malloc_statistics_at_malloc(
void *pointer
)
{
46164: 2f02 movel %d2,%sp@-
uintptr_t actual_size = 0;
uint32_t current_depth;
rtems_malloc_statistics_t *s = &rtems_malloc_statistics;
if ( !pointer )
46166: 4a80 tstl %d0
46168: 674c beqs 461b6 <rtems_malloc_statistics_at_malloc+0x60><== NEVER TAKEN
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
4616a: 486e fffc pea %fp@(-4)
MSBUMP(lifetime_allocated, actual_size);
4616e: 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);
46170: 2f00 movel %d0,%sp@-
46172: 2f39 0006 1160 movel 61160 <RTEMS_Malloc_Heap>,%sp@-
46178: 4eb9 0004 b2f4 jsr 4b2f4 <_Protected_heap_Get_block_size>
MSBUMP(lifetime_allocated, actual_size);
4617e: 262e fffc movel %fp@(-4),%d3
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
46182: 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);
46186: 2039 0006 3274 movel 63274 <rtems_malloc_statistics+0x1c>,%d0
4618c: d6b9 0006 3278 addl 63278 <rtems_malloc_statistics+0x20>,%d3
46192: d580 addxl %d0,%d2
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
46194: 2003 movel %d3,%d0
46196: 90b9 0006 3280 subl 63280 <rtems_malloc_statistics+0x28>,%d0
if ( !pointer )
return;
_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
MSBUMP(lifetime_allocated, actual_size);
4619c: 23c2 0006 3274 movel %d2,63274 <rtems_malloc_statistics+0x1c>
461a2: 23c3 0006 3278 movel %d3,63278 <rtems_malloc_statistics+0x20>
current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
if (current_depth > s->max_depth)
461a8: b0b9 0006 3270 cmpl 63270 <rtems_malloc_statistics+0x18>,%d0
461ae: 6306 blss 461b6 <rtems_malloc_statistics_at_malloc+0x60><== NEVER TAKEN
s->max_depth = current_depth;
461b0: 23c0 0006 3270 movel %d0,63270 <rtems_malloc_statistics+0x18>
}
461b6: 242e fff4 movel %fp@(-12),%d2
461ba: 262e fff8 movel %fp@(-8),%d3
461be: 4e5e unlk %fp <== NOT EXECUTED
0004d21c <rtems_memalign>:
int rtems_memalign(
void **pointer,
size_t alignment,
size_t size
)
{
4d21c: 4e56 0000 linkw %fp,#0
4d220: 2f0a movel %a2,%sp@-
4d222: 246e 0008 moveal %fp@(8),%a2
4d226: 2f02 movel %d2,%sp@-
void *return_this;
/*
* Parameter error checks
*/
if ( !pointer )
4d228: 4a8a tstl %a2
4d22a: 6754 beqs 4d280 <rtems_memalign+0x64> <== NEVER TAKEN
return EINVAL;
*pointer = NULL;
4d22c: 4292 clrl %a2@
/*
* Do not attempt to allocate memory if not in correct system state.
*/
if ( _System_state_Is_up(_System_state_Get()) &&
4d22e: 7003 moveq #3,%d0
4d230: b0b9 0006 130c cmpl 6130c <_System_state_Current>,%d0
4d236: 660a bnes 4d242 <rtems_memalign+0x26> <== NEVER TAKEN
!malloc_is_system_state_OK() )
4d238: 4eb9 0004 3608 jsr 43608 <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()) &&
4d23e: 4a00 tstb %d0
4d240: 673e beqs 4d280 <rtems_memalign+0x64> <== NEVER TAKEN
return EINVAL;
/*
* If some free's have been deferred, then do them now.
*/
malloc_deferred_frees_process();
4d242: 4eb9 0004 3646 jsr 43646 <malloc_deferred_frees_process>
Heap_Control *heap,
uintptr_t size,
uintptr_t alignment
)
{
return
4d248: 42a7 clrl %sp@-
4d24a: 2f2e 000c movel %fp@(12),%sp@-
4d24e: 2f2e 0010 movel %fp@(16),%sp@-
4d252: 2f39 0005 f790 movel 5f790 <RTEMS_Malloc_Heap>,%sp@-
4d258: 4eb9 0004 7ef8 jsr 47ef8 <_Protected_heap_Allocate_aligned_with_boundary>
return_this = _Protected_heap_Allocate_aligned(
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
4d25e: 4fef 0010 lea %sp@(16),%sp
4d262: 2400 movel %d0,%d2
4d264: 671e beqs 4d284 <rtems_memalign+0x68> <== NEVER TAKEN
return ENOMEM;
/*
* If configured, update the more involved statistics
*/
if ( rtems_malloc_statistics_helpers )
4d266: 2079 0005 ff46 moveal 5ff46 <rtems_malloc_statistics_helpers>,%a0
4d26c: 4a88 tstl %a0
4d26e: 670a beqs 4d27a <rtems_memalign+0x5e> <== ALWAYS TAKEN
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
4d270: 2f0a movel %a2,%sp@-
4d272: 2068 0004 moveal %a0@(4),%a0
4d276: 4e90 jsr %a0@
4d278: 588f addql #4,%sp
*pointer = return_this;
4d27a: 2482 movel %d2,%a2@
return 0;
4d27c: 4280 clrl %d0
4d27e: 6006 bras 4d286 <rtems_memalign+0x6a>
/*
* 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;
4d280: 7016 moveq #22,%d0
4d282: 6002 bras 4d286 <rtems_memalign+0x6a> <== NOT EXECUTED
RTEMS_Malloc_Heap,
size,
alignment
);
if ( !return_this )
return ENOMEM;
4d284: 700c moveq #12,%d0 <== NOT EXECUTED
if ( rtems_malloc_statistics_helpers )
(*rtems_malloc_statistics_helpers->at_malloc)(pointer);
*pointer = return_this;
return 0;
}
4d286: 242e fff8 movel %fp@(-8),%d2
4d28a: 246e fffc moveal %fp@(-4),%a2
4d28e: 4e5e unlk %fp
...
0004f89c <rtems_message_queue_broadcast>:
rtems_id id,
const void *buffer,
size_t size,
uint32_t *count
)
{
4f89c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4f8a0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4f8a4: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4f8a8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4f8ac: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status core_status;
if ( !buffer )
4f8b0: 4a82 tstl %d2 <== NOT EXECUTED
4f8b2: 674e beqs 4f902 <rtems_message_queue_broadcast+0x66><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !count )
4f8b4: 4a84 tstl %d4 <== NOT EXECUTED
4f8b6: 674a beqs 4f902 <rtems_message_queue_broadcast+0x66><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4f8b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4f8bc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4f8be: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4f8c4: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4f8ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4f8ce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4f8d2: 6632 bnes 4f906 <rtems_message_queue_broadcast+0x6a><== NOT EXECUTED
case OBJECTS_LOCAL:
core_status = _CORE_message_queue_Broadcast(
4f8d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4f8d6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4f8d8: 42a7 clrl %sp@- <== NOT EXECUTED
4f8da: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4f8dc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4f8e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4f8e2: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4f8e6: 4eb9 0005 2b1c jsr 52b1c <_CORE_message_queue_Broadcast> <== NOT EXECUTED
4f8ec: 2400 movel %d0,%d2 <== NOT EXECUTED
NULL,
#endif
count
);
_Thread_Enable_dispatch();
4f8ee: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return
4f8f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4f8f6: 4eb9 0004 fc20 jsr 4fc20 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4f8fc: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4f900: 6006 bras 4f908 <rtems_message_queue_broadcast+0x6c><== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !count )
return RTEMS_INVALID_ADDRESS;
4f902: 7009 moveq #9,%d0 <== NOT EXECUTED
4f904: 6002 bras 4f908 <rtems_message_queue_broadcast+0x6c><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f906: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f908: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4f90e: 4e5e unlk %fp <== NOT EXECUTED
...
0004cc54 <rtems_message_queue_create>:
uint32_t count,
size_t max_message_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
4cc54: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4cc58: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
4cc5c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4cc60: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
4cc64: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4cc68: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
4cc6c: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED
CORE_message_queue_Attributes the_msgq_attributes;
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
4cc70: 4a82 tstl %d2 <== NOT EXECUTED
4cc72: 6700 009a beqw 4cd0e <rtems_message_queue_create+0xba><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4cc76: 4a8c tstl %a4 <== NOT EXECUTED
4cc78: 6700 0098 beqw 4cd12 <rtems_message_queue_create+0xbe><== NOT EXECUTED
if ( (is_global = _Attributes_Is_global( attribute_set ) ) &&
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
4cc7c: 4a8b tstl %a3 <== NOT EXECUTED
4cc7e: 6700 0096 beqw 4cd16 <rtems_message_queue_create+0xc2><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( max_message_size == 0 )
4cc82: 4a83 tstl %d3 <== NOT EXECUTED
4cc84: 6700 0094 beqw 4cd1a <rtems_message_queue_create+0xc6><== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4cc88: 2039 0006 6770 movel 66770 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4cc8e: 5280 addql #1,%d0 <== NOT EXECUTED
4cc90: 23c0 0006 6770 movel %d0,66770 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#endif
#endif
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
4cc96: 4eb9 0005 2778 jsr 52778 <_Message_queue_Allocate> <== NOT EXECUTED
4cc9c: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( !the_message_queue ) {
4cc9e: 4a80 tstl %d0 <== NOT EXECUTED
4cca0: 660a bnes 4ccac <rtems_message_queue_create+0x58><== NOT EXECUTED
_Thread_Enable_dispatch();
4cca2: 4eb9 0004 f906 jsr 4f906 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4cca8: 7005 moveq #5,%d0 <== NOT EXECUTED
4ccaa: 6070 bras 4cd1c <rtems_message_queue_create+0xc8><== 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;
4ccac: 204e moveal %fp,%a0 <== NOT EXECUTED
4ccae: 44c4 movew %d4,%ccr <== NOT EXECUTED
4ccb0: 56c0 sne %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4ccb2: 2544 0010 movel %d4,%a2@(16) <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4ccb6: 49c0 extbl %d0 <== NOT EXECUTED
4ccb8: 5280 addql #1,%d0 <== NOT EXECUTED
4ccba: 2100 movel %d0,%a0@- <== NOT EXECUTED
else
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
if ( ! _CORE_message_queue_Initialize(
4ccbc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ccbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ccc0: 47f9 0004 f906 lea 4f906 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
4ccc6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4ccc8: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4cccc: 4eb9 0004 de30 jsr 4de30 <_CORE_message_queue_Initialize> <== NOT EXECUTED
4ccd2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4ccd6: 4a00 tstb %d0 <== NOT EXECUTED
4ccd8: 6616 bnes 4ccf0 <rtems_message_queue_create+0x9c><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
{
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
4ccda: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ccdc: 4879 0006 6fd0 pea 66fd0 <_Message_queue_Information> <== NOT EXECUTED
4cce2: 4eb9 0004 ec40 jsr 4ec40 <_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();
4cce8: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4ccea: 508f addql #8,%sp <== NOT EXECUTED
4ccec: 700d moveq #13,%d0 <== NOT EXECUTED
4ccee: 602c bras 4cd1c <rtems_message_queue_create+0xc8><== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ccf0: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ccf4: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ccf6: 2079 0006 6fe8 moveal 66fe8 <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ccfc: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ccfe: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4cd02: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
&_Message_queue_Information,
&the_message_queue->Object,
(Objects_Name) name
);
*id = the_message_queue->Object.id;
4cd06: 2880 movel %d0,%a4@ <== NOT EXECUTED
name,
0
);
#endif
_Thread_Enable_dispatch();
4cd08: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4cd0a: 4280 clrl %d0 <== NOT EXECUTED
4cd0c: 600e bras 4cd1c <rtems_message_queue_create+0xc8><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4cd0e: 7003 moveq #3,%d0 <== NOT EXECUTED
4cd10: 600a bras 4cd1c <rtems_message_queue_create+0xc8><== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
4cd12: 7009 moveq #9,%d0 <== NOT EXECUTED
4cd14: 6006 bras 4cd1c <rtems_message_queue_create+0xc8><== NOT EXECUTED
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
return RTEMS_INVALID_NUMBER;
4cd16: 700a moveq #10,%d0 <== NOT EXECUTED
4cd18: 6002 bras 4cd1c <rtems_message_queue_create+0xc8><== NOT EXECUTED
if ( max_message_size == 0 )
return RTEMS_INVALID_SIZE;
4cd1a: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4cd1c: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4cd22: 4e5e unlk %fp <== NOT EXECUTED
...
0004f9e8 <rtems_message_queue_delete>:
*/
rtems_status_code rtems_message_queue_delete(
rtems_id id
)
{
4f9e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4f9ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4f9ee: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4f9f2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4f9f6: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4f9fc: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4fa02: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fa06: 2440 moveal %d0,%a2 <== NOT EXECUTED
4fa08: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fa0c: 663a bnes 4fa48 <rtems_message_queue_delete+0x60><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Message_queue_Information,
4fa0e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fa10: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4fa16: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED
&the_message_queue->Object );
_CORE_message_queue_Close(
4fa1c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4fa20: 42a7 clrl %sp@- <== NOT EXECUTED
4fa22: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4fa26: 4eb9 0005 2b8c jsr 52b8c <_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 );
4fa2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fa2e: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4fa34: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
0, /* Not used */
0
);
}
#endif
_Thread_Enable_dispatch();
4fa3a: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fa40: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4fa44: 4280 clrl %d0 <== NOT EXECUTED
4fa46: 6002 bras 4fa4a <rtems_message_queue_delete+0x62><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fa48: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4fa4a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4fa4e: 4e5e unlk %fp <== NOT EXECUTED
...
0004fa54 <rtems_message_queue_flush>:
rtems_status_code rtems_message_queue_flush(
rtems_id id,
uint32_t *count
)
{
4fa54: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fa58: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fa5a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
4fa5e: 4a8a tstl %a2 <== NOT EXECUTED
4fa60: 6738 beqs 4fa9a <rtems_message_queue_flush+0x46> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4fa62: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fa66: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fa6a: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4fa70: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4fa76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fa7a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fa7e: 661e bnes 4fa9e <rtems_message_queue_flush+0x4a> <== NOT EXECUTED
case OBJECTS_LOCAL:
*count = _CORE_message_queue_Flush( &the_message_queue->message_queue );
4fa80: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fa82: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4fa86: 4eb9 0005 2bcc jsr 52bcc <_CORE_message_queue_Flush> <== NOT EXECUTED
4fa8c: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fa8e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fa94: 588f addql #4,%sp <== NOT EXECUTED
4fa96: 4280 clrl %d0 <== NOT EXECUTED
4fa98: 6006 bras 4faa0 <rtems_message_queue_flush+0x4c> <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
4fa9a: 7009 moveq #9,%d0 <== NOT EXECUTED
4fa9c: 6002 bras 4faa0 <rtems_message_queue_flush+0x4c> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fa9e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4faa0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4faa4: 4e5e unlk %fp <== NOT EXECUTED
0004faa8 <rtems_message_queue_get_number_pending>:
rtems_status_code rtems_message_queue_get_number_pending(
rtems_id id,
uint32_t *count
)
{
4faa8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4faac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4faae: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
4fab2: 4a8a tstl %a2 <== NOT EXECUTED
4fab4: 672e beqs 4fae4 <rtems_message_queue_get_number_pending+0x3c><== NOT EXECUTED
4fab6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4faba: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fabe: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4fac4: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4faca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4face: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fad2: 6614 bnes 4fae8 <rtems_message_queue_get_number_pending+0x40><== NOT EXECUTED
case OBJECTS_LOCAL:
*count = the_message_queue->message_queue.number_of_pending_messages;
4fad4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fad6: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4fada: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fae0: 4280 clrl %d0 <== NOT EXECUTED
4fae2: 6006 bras 4faea <rtems_message_queue_get_number_pending+0x42><== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
4fae4: 7009 moveq #9,%d0 <== NOT EXECUTED
4fae6: 6002 bras 4faea <rtems_message_queue_get_number_pending+0x42><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fae8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4faea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4faee: 4e5e unlk %fp <== NOT EXECUTED
...
0004cd28 <rtems_message_queue_ident>:
rtems_status_code rtems_message_queue_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4cd28: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4cd2c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4cd30: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4cd34: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cd38: 4879 0006 6fd0 pea 66fd0 <_Message_queue_Information> <== NOT EXECUTED
4cd3e: 4eb9 0004 ef30 jsr 4ef30 <_Objects_Name_to_id_u32> <== NOT EXECUTED
node,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
4cd44: 41f9 0006 3e4a lea 63e4a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
4cd4a: 4e5e unlk %fp <== NOT EXECUTED
4cd4c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004cd54 <rtems_message_queue_receive>:
void *buffer,
size_t *size,
rtems_option option_set,
rtems_interval timeout
)
{
4cd54: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4cd58: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4cd5c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4cd60: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
bool wait;
if ( !buffer )
4cd64: 4a82 tstl %d2 <== NOT EXECUTED
4cd66: 6762 beqs 4cdca <rtems_message_queue_receive+0x76><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
4cd68: 4a83 tstl %d3 <== NOT EXECUTED
4cd6a: 675e beqs 4cdca <rtems_message_queue_receive+0x76><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4cd6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cd70: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cd74: 4879 0006 6fd0 pea 66fd0 <_Message_queue_Information> <== NOT EXECUTED
4cd7a: 4eb9 0004 eda4 jsr 4eda4 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4cd80: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4cd84: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4cd88: 6644 bnes 4cdce <rtems_message_queue_receive+0x7a><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (
rtems_option option_set
)
{
return (option_set & RTEMS_NO_WAIT) ? true : false;
4cd8a: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( _Options_Is_no_wait( option_set ) )
wait = false;
else
wait = true;
_CORE_message_queue_Seize(
4cd8c: 7801 moveq #1,%d4 <== NOT EXECUTED
4cd8e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4cd90: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED
4cd94: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4cd98: b384 eorl %d1,%d4 <== NOT EXECUTED
4cd9a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4cd9c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4cd9e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4cda0: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4cda4: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4cda8: 4eb9 0004 deec jsr 4deec <_CORE_message_queue_Seize> <== NOT EXECUTED
buffer,
size,
wait,
timeout
);
_Thread_Enable_dispatch();
4cdae: 4eb9 0004 f906 jsr 4f906 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
4cdb4: 2079 0006 6bfa moveal 66bfa <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
size,
wait,
timeout
);
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
4cdba: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4cdbe: 4eb9 0004 ce54 jsr 4ce54 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4cdc4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4cdc8: 6006 bras 4cdd0 <rtems_message_queue_receive+0x7c><== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
4cdca: 7009 moveq #9,%d0 <== NOT EXECUTED
4cdcc: 6002 bras 4cdd0 <rtems_message_queue_receive+0x7c><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4cdce: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4cdd0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4cdd6: 4e5e unlk %fp <== NOT EXECUTED
...
0004cddc <rtems_message_queue_send>:
rtems_status_code rtems_message_queue_send(
rtems_id id,
const void *buffer,
size_t size
)
{
4cddc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4cde0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4cde2: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4cde6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4cde8: 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 )
4cdec: 6754 beqs 4ce42 <rtems_message_queue_send+0x66> <== NOT EXECUTED
4cdee: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4cdf2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4cdf4: 4879 0006 6fd0 pea 66fd0 <_Message_queue_Information> <== NOT EXECUTED
4cdfa: 4eb9 0004 eda4 jsr 4eda4 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4ce00: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ce04: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4ce08: 663c bnes 4ce46 <rtems_message_queue_send+0x6a> <== NOT EXECUTED
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support,
bool wait,
Watchdog_Interval timeout
)
{
return _CORE_message_queue_Submit(
4ce0a: 42a7 clrl %sp@- <== NOT EXECUTED
4ce0c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ce0e: 42a7 clrl %sp@- <== NOT EXECUTED
4ce10: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
4ce16: 42a7 clrl %sp@- <== NOT EXECUTED
4ce18: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ce1a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ce1e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ce20: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4ce24: 4eb9 0004 e028 jsr 4e028 <_CORE_message_queue_Submit> <== NOT EXECUTED
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
4ce2a: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4ce2e: 2400 movel %d0,%d2 <== NOT EXECUTED
4ce30: 4eb9 0004 f906 jsr 4f906 <_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);
4ce36: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ce38: 4eb9 0004 ce54 jsr 4ce54 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4ce3e: 588f addql #4,%sp <== NOT EXECUTED
4ce40: 6006 bras 4ce48 <rtems_message_queue_send+0x6c> <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
4ce42: 7009 moveq #9,%d0 <== NOT EXECUTED
4ce44: 6002 bras 4ce48 <rtems_message_queue_send+0x6c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ce46: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ce48: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4ce4c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4ce50: 4e5e unlk %fp <== NOT EXECUTED
0004fc38 <rtems_message_queue_urgent>:
rtems_status_code rtems_message_queue_urgent(
rtems_id id,
const void *buffer,
size_t size
)
{
4fc38: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fc3c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4fc3e: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4fc42: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fc44: 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 )
4fc48: 6754 beqs 4fc9e <rtems_message_queue_urgent+0x66><== NOT EXECUTED
4fc4a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fc4e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4fc50: 4879 0007 6e14 pea 76e14 <_Message_queue_Information> <== NOT EXECUTED
4fc56: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4fc5c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fc60: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fc64: 663c bnes 4fca2 <rtems_message_queue_urgent+0x6a><== NOT EXECUTED
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support,
bool wait,
Watchdog_Interval timeout
)
{
return _CORE_message_queue_Submit(
4fc66: 42a7 clrl %sp@- <== NOT EXECUTED
4fc68: 2040 moveal %d0,%a0 <== NOT EXECUTED
4fc6a: 42a7 clrl %sp@- <== NOT EXECUTED
4fc6c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
4fc72: 42a7 clrl %sp@- <== NOT EXECUTED
4fc74: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4fc76: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4fc7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fc7c: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4fc80: 4eb9 0005 2e3c jsr 52e3c <_CORE_message_queue_Submit> <== NOT EXECUTED
id,
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
4fc86: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4fc8a: 2400 movel %d0,%d2 <== NOT EXECUTED
4fc8c: 4eb9 0005 4eb6 jsr 54eb6 <_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);
4fc92: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fc94: 4eb9 0004 fc20 jsr 4fc20 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4fc9a: 588f addql #4,%sp <== NOT EXECUTED
4fc9c: 6006 bras 4fca4 <rtems_message_queue_urgent+0x6c><== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
4fc9e: 7009 moveq #9,%d0 <== NOT EXECUTED
4fca0: 6002 bras 4fca4 <rtems_message_queue_urgent+0x6c><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fca2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4fca4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4fca8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4fcac: 4e5e unlk %fp <== NOT EXECUTED
0004bae8 <rtems_mkdir>:
return (retval);
}
int
rtems_mkdir(const char *path, mode_t mode)
{
4bae8: 4e56 ff90 linkw %fp,#-112 <== NOT EXECUTED
4baec: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
4baf0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4baf4: 4eb9 0004 f180 jsr 4f180 <strdup> <== NOT EXECUTED
if (dup_path != NULL) {
4bafa: 588f addql #4,%sp <== NOT EXECUTED
int
rtems_mkdir(const char *path, mode_t mode)
{
int success = 0;
char *dup_path = strdup(path);
4bafc: 2440 moveal %d0,%a2 <== NOT EXECUTED
if (dup_path != NULL) {
4bafe: 4a80 tstl %d0 <== NOT EXECUTED
4bb00: 6700 0122 beqw 4bc24 <rtems_mkdir+0x13c> <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4bb04: 722f moveq #47,%d1 <== NOT EXECUTED
4bb06: 1012 moveb %a2@,%d0 <== NOT EXECUTED
4bb08: 49c0 extbl %d0 <== NOT EXECUTED
4bb0a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4bb0c: 6606 bnes 4bb14 <rtems_mkdir+0x2c> <== NOT EXECUTED
++p;
4bb0e: 47ea 0001 lea %a2@(1),%a3 <== NOT EXECUTED
4bb12: 6002 bras 4bb16 <rtems_mkdir+0x2e> <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4bb14: 264a moveal %a2,%a3 <== NOT EXECUTED
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
if (errno == EEXIST || errno == EISDIR) {
if (stat(path, &sb) < 0) {
4bb16: 2c0e movel %fp,%d6 <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
4bb18: 2a4b moveal %a3,%a5 <== NOT EXECUTED
char *p;
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
4bb1a: 4283 clrl %d3 <== NOT EXECUTED
4bb1c: 7001 moveq #1,%d0 <== NOT EXECUTED
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4bb1e: 2e3c 0004 3d10 movel #277776,%d7 <== NOT EXECUTED
if (errno == EEXIST || errno == EISDIR) {
4bb24: 283c 0004 e1d0 movel #319952,%d4 <== NOT EXECUTED
if (stat(path, &sb) < 0) {
4bb2a: 0686 ffff ffba addil #-70,%d6 <== NOT EXECUTED
4bb30: 2a3c 0004 bc40 movel #310336,%d5 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4bb36: 49f9 0004 bce4 lea 4bce4 <umask>,%a4 <== NOT EXECUTED
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
4bb3c: 121d moveb %a5@+,%d1 <== NOT EXECUTED
4bb3e: 670e beqs 4bb4e <rtems_mkdir+0x66> <== NOT EXECUTED
last = 1;
else if (p[0] != '/')
4bb40: 49c1 extbl %d1 <== NOT EXECUTED
4bb42: 742f moveq #47,%d2 <== NOT EXECUTED
4bb44: b481 cmpl %d1,%d2 <== NOT EXECUTED
4bb46: 6600 00b8 bnew 4bc00 <rtems_mkdir+0x118> <== NOT EXECUTED
4bb4a: 4281 clrl %d1 <== NOT EXECUTED
4bb4c: 6002 bras 4bb50 <rtems_mkdir+0x68> <== NOT EXECUTED
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
if (p[0] == '\0')
last = 1;
4bb4e: 7201 moveq #1,%d1 <== NOT EXECUTED
else if (p[0] != '/')
continue;
*p = '\0';
4bb50: 4213 clrb %a3@ <== NOT EXECUTED
if (!last && p[1] == '\0')
4bb52: 4a81 tstl %d1 <== NOT EXECUTED
4bb54: 660a bnes 4bb60 <rtems_mkdir+0x78> <== NOT EXECUTED
4bb56: 4a15 tstb %a5@ <== NOT EXECUTED
4bb58: 57c2 seq %d2 <== NOT EXECUTED
4bb5a: 49c2 extbl %d2 <== NOT EXECUTED
4bb5c: 4482 negl %d2 <== NOT EXECUTED
4bb5e: 6002 bras 4bb62 <rtems_mkdir+0x7a> <== NOT EXECUTED
4bb60: 7401 moveq #1,%d2 <== NOT EXECUTED
last = 1;
if (first) {
4bb62: 4a80 tstl %d0 <== NOT EXECUTED
4bb64: 6712 beqs 4bb78 <rtems_mkdir+0x90> <== NOT EXECUTED
* mkdir [-m mode] dir
*
* We change the user's umask and then restore it,
* instead of doing chmod's.
*/
oumask = umask(0);
4bb66: 42a7 clrl %sp@- <== NOT EXECUTED
4bb68: 4e94 jsr %a4@ <== NOT EXECUTED
4bb6a: 2600 movel %d0,%d3 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
4bb6c: 0280 ffff ff3f andil #-193,%d0 <== NOT EXECUTED
4bb72: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bb74: 4e94 jsr %a4@ <== NOT EXECUTED
4bb76: 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) {
4bb78: 203c 0000 01ff movel #511,%d0 <== NOT EXECUTED
oumask = umask(0);
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
4bb7e: 4a82 tstl %d2 <== NOT EXECUTED
4bb80: 670a beqs 4bb8c <rtems_mkdir+0xa4> <== NOT EXECUTED
(void)umask(oumask);
4bb82: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4bb84: 4e94 jsr %a4@ <== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4bb86: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
numask = oumask & ~(S_IWUSR | S_IXUSR);
(void)umask(numask);
first = 0;
}
if (last)
(void)umask(oumask);
4bb8a: 588f addql #4,%sp <== NOT EXECUTED
if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
4bb8c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4bb8e: 2047 moveal %d7,%a0 <== NOT EXECUTED
4bb90: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bb92: 4e90 jsr %a0@ <== NOT EXECUTED
4bb94: 508f addql #8,%sp <== NOT EXECUTED
4bb96: 4a80 tstl %d0 <== NOT EXECUTED
4bb98: 6c5c bges 4bbf6 <rtems_mkdir+0x10e> <== NOT EXECUTED
if (errno == EEXIST || errno == EISDIR) {
4bb9a: 2044 moveal %d4,%a0 <== NOT EXECUTED
4bb9c: 4e90 jsr %a0@ <== NOT EXECUTED
4bb9e: 7211 moveq #17,%d1 <== NOT EXECUTED
4bba0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bba2: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4bba4: 670c beqs 4bbb2 <rtems_mkdir+0xca> <== NOT EXECUTED
4bba6: 2044 moveal %d4,%a0 <== NOT EXECUTED
4bba8: 4e90 jsr %a0@ <== NOT EXECUTED
4bbaa: 7215 moveq #21,%d1 <== NOT EXECUTED
4bbac: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bbae: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4bbb0: 667e bnes 4bc30 <rtems_mkdir+0x148> <== NOT EXECUTED
if (stat(path, &sb) < 0) {
4bbb2: 2f06 movel %d6,%sp@- <== NOT EXECUTED
4bbb4: 2045 moveal %d5,%a0 <== NOT EXECUTED
4bbb6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bbb8: 4e90 jsr %a0@ <== NOT EXECUTED
4bbba: 508f addql #8,%sp <== NOT EXECUTED
4bbbc: 4a80 tstl %d0 <== NOT EXECUTED
4bbbe: 6d70 blts 4bc30 <rtems_mkdir+0x148> <== NOT EXECUTED
retval = 0;
break;
} else if (!S_ISDIR(sb.st_mode)) {
4bbc0: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
4bbc4: 0280 0000 f000 andil #61440,%d0 <== NOT EXECUTED
4bbca: 0c80 0000 4000 cmpil #16384,%d0 <== NOT EXECUTED
4bbd0: 671e beqs 4bbf0 <rtems_mkdir+0x108> <== NOT EXECUTED
4bbd2: 41f9 0004 e1d0 lea 4e1d0 <__errno>,%a0 <== NOT EXECUTED
if (last)
4bbd8: 4a82 tstl %d2 <== NOT EXECUTED
4bbda: 670a beqs 4bbe6 <rtems_mkdir+0xfe> <== NOT EXECUTED
errno = EEXIST;
4bbdc: 4e90 jsr %a0@ <== NOT EXECUTED
4bbde: 7211 moveq #17,%d1 <== NOT EXECUTED
4bbe0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bbe2: 2081 movel %d1,%a0@ <== NOT EXECUTED
4bbe4: 602a bras 4bc10 <rtems_mkdir+0x128> <== NOT EXECUTED
else
errno = ENOTDIR;
4bbe6: 4e90 jsr %a0@ <== NOT EXECUTED
4bbe8: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bbea: 7014 moveq #20,%d0 <== NOT EXECUTED
4bbec: 2080 movel %d0,%a0@ <== NOT EXECUTED
4bbee: 6016 bras 4bc06 <rtems_mkdir+0x11e> <== NOT EXECUTED
retval = 0;
break;
}
if (last)
4bbf0: 4a82 tstl %d2 <== NOT EXECUTED
4bbf2: 6642 bnes 4bc36 <rtems_mkdir+0x14e> <== NOT EXECUTED
4bbf4: 6004 bras 4bbfa <rtems_mkdir+0x112> <== NOT EXECUTED
} else {
retval = 0;
break;
}
}
if (!last)
4bbf6: 4a82 tstl %d2 <== NOT EXECUTED
4bbf8: 6640 bnes 4bc3a <rtems_mkdir+0x152> <== NOT EXECUTED
*p = '/';
4bbfa: 4280 clrl %d0 <== NOT EXECUTED
4bbfc: 16bc 002f moveb #47,%a3@ <== NOT EXECUTED
p = path;
oumask = 0;
retval = 1;
if (p[0] == '/') /* Skip leading '/'. */
++p;
for (first = 1, last = 0; !last ; ++p) {
4bc00: 528b addql #1,%a3 <== NOT EXECUTED
4bc02: 6000 ff38 braw 4bb3c <rtems_mkdir+0x54> <== NOT EXECUTED
}
if (!last)
*p = '/';
}
if (!first && !last)
(void)umask(oumask);
4bc06: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4bc08: 4eb9 0004 bce4 jsr 4bce4 <umask> <== NOT EXECUTED
4bc0e: 588f addql #4,%sp <== NOT EXECUTED
4bc10: 4282 clrl %d2 <== NOT EXECUTED
int success = 0;
char *dup_path = strdup(path);
if (dup_path != NULL) {
success = build(dup_path, mode);
free(dup_path);
4bc12: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bc14: 4eb9 0004 36f8 jsr 436f8 <free> <== NOT EXECUTED
}
return success != 0 ? 0 : -1;
4bc1a: 588f addql #4,%sp <== NOT EXECUTED
4bc1c: 4a82 tstl %d2 <== NOT EXECUTED
4bc1e: 57c0 seq %d0 <== NOT EXECUTED
4bc20: 49c0 extbl %d0 <== NOT EXECUTED
4bc22: 6002 bras 4bc26 <rtems_mkdir+0x13e> <== NOT EXECUTED
4bc24: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4bc26: 4cee 3cfc ff90 moveml %fp@(-112),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4bc2c: 4e5e unlk %fp <== NOT EXECUTED
4bc2e: 4e75 rts <== NOT EXECUTED
}
}
if (!last)
*p = '/';
}
if (!first && !last)
4bc30: 4a82 tstl %d2 <== NOT EXECUTED
4bc32: 67d2 beqs 4bc06 <rtems_mkdir+0x11e> <== NOT EXECUTED
4bc34: 60da bras 4bc10 <rtems_mkdir+0x128> <== NOT EXECUTED
errno = ENOTDIR;
retval = 0;
break;
}
if (last)
retval = 2;
4bc36: 7402 moveq #2,%d2 <== NOT EXECUTED
4bc38: 60d8 bras 4bc12 <rtems_mkdir+0x12a> <== NOT EXECUTED
} else {
retval = 0;
break;
}
}
if (!last)
4bc3a: 7401 moveq #1,%d2 <== NOT EXECUTED
4bc3c: 60d4 bras 4bc12 <rtems_mkdir+0x12a> <== NOT EXECUTED
...
00045640 <rtems_object_api_maximum_class>:
#include <rtems/rtems/types.h>
int rtems_object_api_maximum_class(
int api
)
{
45640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_API_maximum_class(api);
}
45644: 4e5e unlk %fp <== NOT EXECUTED
int rtems_object_api_maximum_class(
int api
)
{
return _Objects_API_maximum_class(api);
45646: 4ef9 0004 6bc4 jmp 46bc4 <_Objects_API_maximum_class> <== NOT EXECUTED
0004564c <rtems_object_api_minimum_class>:
uint32_t api
)
{
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
4564c: 7203 moveq #3,%d1 <== NOT EXECUTED
#include <rtems/rtems/types.h>
uint32_t rtems_object_api_minimum_class(
uint32_t api
)
{
4564e: 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 )
45652: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45656: 5380 subql #1,%d0 <== NOT EXECUTED
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
45658: b280 cmpl %d0,%d1 <== NOT EXECUTED
4565a: 53c0 sls %d0 <== NOT EXECUTED
4565c: 49c0 extbl %d0 <== NOT EXECUTED
}
4565e: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
45662: 4e5e unlk %fp <== NOT EXECUTED
45664: 8081 orl %d1,%d0 <== NOT EXECUTED
00045668 <rtems_object_get_api_class_name>:
)
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
45668: 7001 moveq #1,%d0 <== NOT EXECUTED
const char *rtems_object_get_api_class_name(
int the_api,
int the_class
)
{
4566a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4566e: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
45672: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
45674: b081 cmpl %d1,%d0 <== NOT EXECUTED
45676: 671c beqs 45694 <rtems_object_get_api_class_name+0x2c><== NOT EXECUTED
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
45678: 7402 moveq #2,%d2 <== NOT EXECUTED
4567a: b481 cmpl %d1,%d2 <== NOT EXECUTED
4567c: 671e beqs 4569c <rtems_object_get_api_class_name+0x34><== NOT EXECUTED
api_assoc = rtems_object_api_classic_assoc;
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
4567e: 143c 0003 moveb #3,%d2 <== NOT EXECUTED
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
45682: 203c 0005 bb62 movel #375650,%d0 <== NOT EXECUTED
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
api_assoc = rtems_object_api_classic_assoc;
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
45688: b481 cmpl %d1,%d2 <== NOT EXECUTED
4568a: 6632 bnes 456be <rtems_object_get_api_class_name+0x56><== NOT EXECUTED
api_assoc = rtems_object_api_posix_assoc;
4568c: 203c 0005 cdb8 movel #380344,%d0 <== NOT EXECUTED
45692: 600e bras 456a2 <rtems_object_get_api_class_name+0x3a><== 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;
45694: 203c 0005 cd28 movel #380200,%d0 <== NOT EXECUTED
4569a: 6006 bras 456a2 <rtems_object_get_api_class_name+0x3a><== NOT EXECUTED
else if ( the_api == OBJECTS_CLASSIC_API )
api_assoc = rtems_object_api_classic_assoc;
4569c: 203c 0005 cd40 movel #380224,%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 );
456a2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
456a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
456a8: 4eb9 0004 9ab0 jsr 49ab0 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( class_assoc )
456ae: 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 );
456b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
456b2: 203c 0005 bb6a movel #375658,%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 )
456b8: 4a88 tstl %a0 <== NOT EXECUTED
456ba: 6702 beqs 456be <rtems_object_get_api_class_name+0x56><== NOT EXECUTED
return class_assoc->name;
456bc: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
456be: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
456c2: 4e5e unlk %fp <== NOT EXECUTED
...
000456c8 <rtems_object_get_api_name>:
};
const char *rtems_object_get_api_name(
int api
)
{
456c8: 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 );
456cc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
456d0: 4879 0005 ce48 pea 5ce48 <rtems_objects_api_assoc> <== NOT EXECUTED
456d6: 4eb9 0004 9ab0 jsr 49ab0 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( api_assoc )
456dc: 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 );
456de: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( api_assoc )
return api_assoc->name;
return "BAD CLASS";
456e0: 203c 0005 bb6a movel #375658,%d0 <== NOT EXECUTED
)
{
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
if ( api_assoc )
456e6: 4a88 tstl %a0 <== NOT EXECUTED
456e8: 6702 beqs 456ec <rtems_object_get_api_name+0x24> <== NOT EXECUTED
return api_assoc->name;
456ea: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
456ec: 4e5e unlk %fp <== NOT EXECUTED
00046cac <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
)
{
46cac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46cb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46cb2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
46cb6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int i;
/*
* Validate parameters and look up information structure.
*/
if ( !info )
46cb8: 4a8a tstl %a2 <== NOT EXECUTED
46cba: 6752 beqs 46d0e <rtems_object_get_class_information+0x62><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
46cbc: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED
46cc0: 4267 clrw %sp@- <== NOT EXECUTED
46cc2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46cc6: 4eb9 0004 86c8 jsr 486c8 <_Objects_Get_information> <== NOT EXECUTED
if ( !obj_info )
46ccc: 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 );
46cce: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !obj_info )
46cd0: 4a80 tstl %d0 <== NOT EXECUTED
46cd2: 673e beqs 46d12 <rtems_object_get_class_information+0x66><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
46cd4: 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;
46cd8: 4282 clrl %d2 <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
46cda: 7001 moveq #1,%d0 <== NOT EXECUTED
46cdc: 4281 clrl %d1 <== 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;
46cde: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
46ce4: 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;
46ce8: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED
info->maximum = obj_info->maximum;
46cee: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
46cf2: 600e bras 46d02 <rtems_object_get_class_information+0x56><== NOT EXECUTED
if ( !obj_info->local_table[i] )
46cf4: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
46cf8: 4ab1 0c00 tstl %a1@(00000000,%d0:l:4) <== NOT EXECUTED
46cfc: 6602 bnes 46d00 <rtems_object_get_class_information+0x54><== NOT EXECUTED
unallocated++;
46cfe: 5281 addql #1,%d1 <== 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++ )
46d00: 5280 addql #1,%d0 <== NOT EXECUTED
46d02: b480 cmpl %d0,%d2 <== NOT EXECUTED
46d04: 64ee bccs 46cf4 <rtems_object_get_class_information+0x48><== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
46d06: 2541 000e movel %d1,%a2@(14) <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46d0a: 4280 clrl %d0 <== NOT EXECUTED
46d0c: 6006 bras 46d14 <rtems_object_get_class_information+0x68><== NOT EXECUTED
/*
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
46d0e: 7009 moveq #9,%d0 <== NOT EXECUTED
46d10: 6002 bras 46d14 <rtems_object_get_class_information+0x68><== NOT EXECUTED
obj_info = _Objects_Get_information( the_api, the_class );
if ( !obj_info )
return RTEMS_INVALID_NUMBER;
46d12: 700a moveq #10,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
46d14: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46d18: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46d1c: 4e5e unlk %fp <== NOT EXECUTED
000461cc <rtems_object_get_classic_name>:
rtems_status_code rtems_object_get_classic_name(
rtems_id id,
rtems_name *name
)
{
461cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
461d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
461d2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
461d6: 4a8a tstl %a2 <== NOT EXECUTED
461d8: 6720 beqs 461fa <rtems_object_get_classic_name+0x2e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
status = _Objects_Id_to_name( id, &name_u );
461da: 486e fffc pea %fp@(-4) <== NOT EXECUTED
461de: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
461e2: 4eb9 0004 7bec jsr 47bec <_Objects_Id_to_name> <== NOT EXECUTED
*name = name_u.name_u32;
461e8: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
461ec: 41f9 0005 c7f0 lea 5c7f0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
461f2: 508f addql #8,%sp <== NOT EXECUTED
461f4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
461f8: 6002 bras 461fc <rtems_object_get_classic_name+0x30><== NOT EXECUTED
{
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
return RTEMS_INVALID_ADDRESS;
461fa: 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 ];
}
461fc: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
46200: 4e5e unlk %fp <== NOT EXECUTED
00046404 <rtems_object_get_name>:
char *rtems_object_get_name(
Objects_Id id,
size_t length,
char *name
)
{
46404: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_name_as_string( id, length, name );
}
46408: 4e5e unlk %fp <== NOT EXECUTED
Objects_Id id,
size_t length,
char *name
)
{
return _Objects_Get_name_as_string( id, length, name );
4640a: 4ef9 0004 7ff8 jmp 47ff8 <_Objects_Get_name_as_string> <== NOT EXECUTED
00046d2c <rtems_object_id_api_maximum>:
#undef rtems_object_id_api_maximum
int rtems_object_id_api_maximum(void)
{
return OBJECTS_APIS_LAST;
}
46d2c: 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)
{
46d2e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_APIS_LAST;
}
46d32: 4e5e unlk %fp <== NOT EXECUTED
...
00046d38 <rtems_object_id_api_minimum>:
#undef rtems_object_id_api_minimum
int rtems_object_id_api_minimum(void)
{
return OBJECTS_INTERNAL_API;
}
46d38: 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)
{
46d3a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_INTERNAL_API;
}
46d3e: 4e5e unlk %fp <== NOT EXECUTED
...
00046d44 <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);
46d44: 4280 clrl %d0 <== NOT EXECUTED
int rtems_object_id_get_api(
rtems_id id
)
{
return _Objects_Get_API( id );
}
46d46: 7207 moveq #7,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_api
int rtems_object_id_get_api(
rtems_id id
)
{
46d48: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46d4c: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_API( id );
}
46d50: 4e5e unlk %fp <== NOT EXECUTED
46d52: c081 andl %d1,%d0 <== NOT EXECUTED
...
00046d58 <rtems_object_id_get_class>:
int rtems_object_id_get_class(
rtems_id id
)
{
return _Objects_Get_class( id );
}
46d58: 721b moveq #27,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_class
int rtems_object_id_get_class(
rtems_id id
)
{
46d5a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_class( id );
}
46d5e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46d62: 4e5e unlk %fp <== NOT EXECUTED
46d64: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
00046d68 <rtems_object_id_get_index>:
int rtems_object_id_get_index(
rtems_id id
)
{
return _Objects_Get_index( id );
}
46d68: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_index
int rtems_object_id_get_index(
rtems_id id
)
{
46d6a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_index( id );
}
46d6e: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
46d72: 4e5e unlk %fp <== NOT EXECUTED
...
00046d78 <rtems_object_id_get_node>:
int rtems_object_id_get_node(
rtems_id id
)
{
return _Objects_Get_node( id );
}
46d78: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_node
int rtems_object_id_get_node(
rtems_id id
)
{
46d7a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_node( id );
}
46d7e: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED
46d82: 4e5e unlk %fp <== NOT EXECUTED
...
000456fc <rtems_object_set_name>:
*/
rtems_status_code rtems_object_set_name(
rtems_id id,
const char *name
)
{
456fc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
45700: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
45704: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
45708: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
Objects_Information *information;
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
4570c: 674e beqs 4575c <rtems_object_set_name+0x60> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
4570e: 4a83 tstl %d3 <== NOT EXECUTED
45710: 660a bnes 4571c <rtems_object_set_name+0x20> <== NOT EXECUTED
45712: 2079 0005 ea0a moveal 5ea0a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
45718: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
4571c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4571e: 4eb9 0004 6ee4 jsr 46ee4 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
45724: 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 );
45726: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( !information )
45728: 6736 beqs 45760 <rtems_object_set_name+0x64> <== NOT EXECUTED
return RTEMS_INVALID_ID;
the_object = _Objects_Get( information, tmpId, &location );
4572a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4572e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45730: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45732: 4eb9 0004 70ac jsr 470ac <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
45738: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4573c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45740: 661e bnes 45760 <rtems_object_set_name+0x64> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
45742: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45744: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45746: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45748: 4eb9 0004 7238 jsr 47238 <_Objects_Set_name> <== NOT EXECUTED
_Thread_Enable_dispatch();
4574e: 4eb9 0004 7be2 jsr 47be2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45754: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45758: 4280 clrl %d0 <== NOT EXECUTED
4575a: 6006 bras 45762 <rtems_object_set_name+0x66> <== NOT EXECUTED
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
4575c: 7009 moveq #9,%d0 <== NOT EXECUTED
4575e: 6002 bras 45762 <rtems_object_set_name+0x66> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45760: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45762: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
45768: 4e5e unlk %fp <== NOT EXECUTED
0004262e <rtems_panic>:
void rtems_panic(
const char *printf_format,
...
)
{
4262e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
va_list arglist;
va_start(arglist, printf_format);
(void) rtems_verror(RTEMS_ERROR_PANIC, printf_format, arglist);
42632: 486e 000c pea %fp@(12) <== NOT EXECUTED
42636: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4263a: 2f3c 2000 0000 movel #536870912,%sp@- <== NOT EXECUTED
42640: 4eba fe3e jsr %pc@(42480 <rtems_verror>) <== NOT EXECUTED
va_end(arglist);
rtems_error(0, "fatal error, exiting");
42644: 4879 0005 ad9e pea 5ad9e <IMFS_ops+0x7e> <== NOT EXECUTED
4264a: 42a7 clrl %sp@- <== NOT EXECUTED
4264c: 4eb9 0004 25cc jsr 425cc <rtems_error> <== NOT EXECUTED
_exit(errno);
42652: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
42658: 2040 moveal %d0,%a0 <== NOT EXECUTED
4265a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4265c: 4eb9 0004 2f58 jsr 42f58 <_exit> <== NOT EXECUTED
...
0004fcb0 <rtems_partition_create>:
uint32_t length,
uint32_t buffer_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
4fcb0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4fcb4: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
4fcb8: 2a2e 0008 movel %fp@(8),%d5 <== NOT EXECUTED
4fcbc: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4fcc0: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4fcc4: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
4fcc8: 246e 001c moveal %fp@(28),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
4fccc: 4a85 tstl %d5 <== NOT EXECUTED
4fcce: 6700 00ac beqw 4fd7c <rtems_partition_create+0xcc> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
4fcd2: 4a84 tstl %d4 <== NOT EXECUTED
4fcd4: 6700 00ae beqw 4fd84 <rtems_partition_create+0xd4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
4fcd8: 4a8a tstl %a2 <== NOT EXECUTED
4fcda: 6700 00a8 beqw 4fd84 <rtems_partition_create+0xd4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
4fcde: 4a83 tstl %d3 <== NOT EXECUTED
4fce0: 6700 009e beqw 4fd80 <rtems_partition_create+0xd0> <== NOT EXECUTED
4fce4: 4a82 tstl %d2 <== NOT EXECUTED
4fce6: 6700 0098 beqw 4fd80 <rtems_partition_create+0xd0> <== NOT EXECUTED
4fcea: b483 cmpl %d3,%d2 <== NOT EXECUTED
4fcec: 6200 0092 bhiw 4fd80 <rtems_partition_create+0xd0> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (
uint32_t buffer_size
)
{
return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
4fcf0: 7003 moveq #3,%d0 <== NOT EXECUTED
4fcf2: c082 andl %d2,%d0 <== NOT EXECUTED
4fcf4: 6600 008a bnew 4fd80 <rtems_partition_create+0xd0> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
4fcf8: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
4fcfc: c084 andl %d4,%d0 <== NOT EXECUTED
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
if ( !_Addresses_Is_aligned( starting_address ) )
4fcfe: 6600 0084 bnew 4fd84 <rtems_partition_create+0xd4> <== NOT EXECUTED
4fd02: 2039 0007 65ac movel 765ac <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4fd08: 5280 addql #1,%d0 <== NOT EXECUTED
4fd0a: 23c0 0007 65ac movel %d0,765ac <_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 );
4fd10: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4fd16: 49f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a4 <== NOT EXECUTED
4fd1c: 4eb9 0005 3f4c jsr 53f4c <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
4fd22: 588f addql #4,%sp <== NOT EXECUTED
4fd24: 2640 moveal %d0,%a3 <== NOT EXECUTED
4fd26: 4a80 tstl %d0 <== NOT EXECUTED
4fd28: 6606 bnes 4fd30 <rtems_partition_create+0x80> <== NOT EXECUTED
_Thread_Enable_dispatch();
4fd2a: 4e94 jsr %a4@ <== NOT EXECUTED
return RTEMS_TOO_MANY;
4fd2c: 7005 moveq #5,%d0 <== NOT EXECUTED
4fd2e: 6056 bras 4fd86 <rtems_partition_create+0xd6> <== NOT EXECUTED
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
4fd30: 2743 0014 movel %d3,%a3@(20) <== NOT EXECUTED
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
4fd34: 276e 0018 001c movel %fp@(24),%a3@(28) <== NOT EXECUTED
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
4fd3a: 4c42 3003 remul %d2,%d3,%d3 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
4fd3e: 2744 0010 movel %d4,%a3@(16) <== NOT EXECUTED
the_partition->length = length;
the_partition->buffer_size = buffer_size;
4fd42: 2742 0018 movel %d2,%a3@(24) <== NOT EXECUTED
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
4fd46: 42ab 0020 clrl %a3@(32) <== NOT EXECUTED
_Chain_Initialize( &the_partition->Memory, starting_address,
4fd4a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fd4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4fd4e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4fd50: 486b 0024 pea %a3@(36) <== NOT EXECUTED
4fd54: 4eb9 0005 2ad8 jsr 52ad8 <_Chain_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4fd5a: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4fd5e: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fd60: 2079 0007 645a moveal 7645a <_Partition_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4fd66: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4fd68: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4fd6c: 2745 000c movel %d5,%a3@(12) <== NOT EXECUTED
&_Partition_Information,
&the_partition->Object,
(Objects_Name) name
);
*id = the_partition->Object.id;
4fd70: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
4fd72: 4e94 jsr %a4@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fd74: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4fd78: 4280 clrl %d0 <== NOT EXECUTED
4fd7a: 600a bras 4fd86 <rtems_partition_create+0xd6> <== NOT EXECUTED
)
{
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4fd7c: 7003 moveq #3,%d0 <== NOT EXECUTED
4fd7e: 6006 bras 4fd86 <rtems_partition_create+0xd6> <== 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;
4fd80: 7008 moveq #8,%d0 <== NOT EXECUTED
4fd82: 6002 bras 4fd86 <rtems_partition_create+0xd6> <== NOT EXECUTED
if ( !_Addresses_Is_aligned( starting_address ) )
return RTEMS_INVALID_ADDRESS;
4fd84: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4fd86: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
4fd8c: 4e5e unlk %fp <== NOT EXECUTED
0004fd90 <rtems_partition_delete>:
*/
rtems_status_code rtems_partition_delete(
rtems_id id
)
{
4fd90: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fd94: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4fd96: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
4fd98: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fd9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fda0: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4fda6: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
4fdac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fdb0: 2440 moveal %d0,%a2 <== NOT EXECUTED
4fdb2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fdb6: 6638 bnes 4fdf0 <rtems_partition_delete+0x60> <== NOT EXECUTED
4fdb8: 47f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_partition->number_of_used_blocks == 0 ) {
4fdbe: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED
4fdc2: 6626 bnes 4fdea <rtems_partition_delete+0x5a> <== NOT EXECUTED
_Objects_Close( &_Partition_Information, &the_partition->Object );
4fdc4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4fdc6: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4fdcc: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Partition_Free (
Partition_Control *the_partition
)
{
_Objects_Free( &_Partition_Information, &the_partition->Object );
4fdd2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fdd4: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4fdda: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
4fde0: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fde2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4fde6: 4280 clrl %d0 <== NOT EXECUTED
4fde8: 6008 bras 4fdf2 <rtems_partition_delete+0x62> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
4fdea: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
4fdec: 700c moveq #12,%d0 <== NOT EXECUTED
4fdee: 6002 bras 4fdf2 <rtems_partition_delete+0x62> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fdf0: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4fdf2: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4fdf6: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4fdfa: 4e5e unlk %fp <== NOT EXECUTED
...
0004fe00 <rtems_partition_get_buffer>:
rtems_status_code rtems_partition_get_buffer(
rtems_id id,
void **buffer
)
{
4fe00: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4fe04: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4fe08: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
4fe0c: 4a8b tstl %a3 <== NOT EXECUTED
4fe0e: 6748 beqs 4fe58 <rtems_partition_get_buffer+0x58><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
4fe10: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fe14: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fe18: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4fe1e: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
4fe24: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4fe28: 2440 moveal %d0,%a2 <== NOT EXECUTED
4fe2a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4fe2e: 662c bnes 4fe5c <rtems_partition_get_buffer+0x5c><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
Partition_Control *the_partition
)
{
return _Chain_Get( &the_partition->Memory );
4fe30: 486a 0024 pea %a2@(36) <== NOT EXECUTED
4fe34: 4eb9 0005 2aa4 jsr 52aa4 <_Chain_Get> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_buffer = _Partition_Allocate_buffer( the_partition );
if ( the_buffer ) {
4fe3a: 588f addql #4,%sp <== NOT EXECUTED
4fe3c: 41f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED
4fe42: 2400 movel %d0,%d2 <== NOT EXECUTED
4fe44: 670c beqs 4fe52 <rtems_partition_get_buffer+0x52><== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
4fe46: 52aa 0020 addql #1,%a2@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
4fe4a: 4e90 jsr %a0@ <== NOT EXECUTED
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
4fe4c: 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;
4fe4e: 2682 movel %d2,%a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fe50: 600c bras 4fe5e <rtems_partition_get_buffer+0x5e><== NOT EXECUTED
}
_Thread_Enable_dispatch();
4fe52: 4e90 jsr %a0@ <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4fe54: 700d moveq #13,%d0 <== NOT EXECUTED
4fe56: 6006 bras 4fe5e <rtems_partition_get_buffer+0x5e><== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
4fe58: 7009 moveq #9,%d0 <== NOT EXECUTED
4fe5a: 6002 bras 4fe5e <rtems_partition_get_buffer+0x5e><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fe5c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4fe5e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4fe64: 4e5e unlk %fp <== NOT EXECUTED
0004fe68 <rtems_partition_ident>:
rtems_status_code rtems_partition_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4fe68: 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 );
4fe6c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4fe70: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4fe74: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fe78: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4fe7e: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
}
4fe84: 41f9 0006 f980 lea 6f980 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
4fe8a: 4e5e unlk %fp <== NOT EXECUTED
4fe8c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004fe94 <rtems_partition_return_buffer>:
rtems_status_code rtems_partition_return_buffer(
rtems_id id,
void *buffer
)
{
4fe94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4fe98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4fe9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
4fe9c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4fea0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4fea4: 4879 0007 6442 pea 76442 <_Partition_Information> <== NOT EXECUTED
4feaa: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4feae: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
4feb4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4feb8: 2440 moveal %d0,%a2 <== NOT EXECUTED
4feba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4febe: 663e bnes 4fefe <rtems_partition_return_buffer+0x6a><== NOT EXECUTED
)
{
void *starting;
void *ending;
starting = the_partition->starting_address;
4fec0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
ending = _Addresses_Add_offset( starting, the_partition->length );
4fec4: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
4fec8: b082 cmpl %d2,%d0 <== NOT EXECUTED
4feca: 6240 bhis 4ff0c <rtems_partition_return_buffer+0x78><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
4fecc: d280 addl %d0,%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
4fece: b282 cmpl %d2,%d1 <== NOT EXECUTED
4fed0: 653a bcss 4ff0c <rtems_partition_return_buffer+0x78><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
4fed2: 2202 movel %d2,%d1 <== NOT EXECUTED
4fed4: 9280 subl %d0,%d1 <== NOT EXECUTED
4fed6: 2001 movel %d1,%d0 <== NOT EXECUTED
offset = (uint32_t) _Addresses_Subtract(
the_buffer,
the_partition->starting_address
);
return ((offset % the_partition->buffer_size) == 0);
4fed8: 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 ) &&
4fede: 4a81 tstl %d1 <== NOT EXECUTED
4fee0: 662a bnes 4ff0c <rtems_partition_return_buffer+0x78><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
Partition_Control *the_partition,
Chain_Node *the_buffer
)
{
_Chain_Append( &the_partition->Memory, the_buffer );
4fee2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4fee4: 486a 0024 pea %a2@(36) <== NOT EXECUTED
4fee8: 4eb9 0005 2a44 jsr 52a44 <_Chain_Append> <== 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;
4feee: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
4fef2: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4fef8: 508f addql #8,%sp <== NOT EXECUTED
4fefa: 4280 clrl %d0 <== NOT EXECUTED
4fefc: 6002 bras 4ff00 <rtems_partition_return_buffer+0x6c><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4fefe: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ff00: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4ff04: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ff08: 4e5e unlk %fp <== NOT EXECUTED
4ff0a: 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();
4ff0c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
4ff12: 7009 moveq #9,%d0 <== NOT EXECUTED
4ff14: 60ea bras 4ff00 <rtems_partition_return_buffer+0x6c><== NOT EXECUTED
...
0004f334 <rtems_port_create>:
void *internal_start,
void *external_start,
uint32_t length,
rtems_id *id
)
{
4f334: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4f338: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
4f33c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4f340: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4f344: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4f348: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
4f34c: 4a82 tstl %d2 <== NOT EXECUTED
4f34e: 676c beqs 4f3bc <rtems_port_create+0x88> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4f350: 4a8a tstl %a2 <== NOT EXECUTED
4f352: 676c beqs 4f3c0 <rtems_port_create+0x8c> <== NOT EXECUTED
* id - port id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_port_create(
4f354: 2003 movel %d3,%d0 <== NOT EXECUTED
4f356: 7203 moveq #3,%d1 <== NOT EXECUTED
4f358: 8084 orl %d4,%d0 <== NOT EXECUTED
4f35a: c081 andl %d1,%d0 <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !_Addresses_Is_aligned( internal_start ) ||
4f35c: 6662 bnes 4f3c0 <rtems_port_create+0x8c> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4f35e: 2039 0007 65ac movel 765ac <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4f364: 5280 addql #1,%d0 <== NOT EXECUTED
4f366: 23c0 0007 65ac movel %d0,765ac <_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 );
4f36c: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f372: 4eb9 0005 3f4c jsr 53f4c <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
4f378: 588f addql #4,%sp <== NOT EXECUTED
4f37a: 43f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a1 <== NOT EXECUTED
4f380: 2040 moveal %d0,%a0 <== NOT EXECUTED
4f382: 4a80 tstl %d0 <== NOT EXECUTED
4f384: 6606 bnes 4f38c <rtems_port_create+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
4f386: 4e91 jsr %a1@ <== NOT EXECUTED
return RTEMS_TOO_MANY;
4f388: 7005 moveq #5,%d0 <== NOT EXECUTED
4f38a: 6036 bras 4f3c2 <rtems_port_create+0x8e> <== NOT EXECUTED
}
the_port->internal_base = internal_start;
the_port->external_base = external_start;
the_port->length = length - 1;
4f38c: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
4f390: 5380 subql #1,%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4f392: 4281 clrl %d1 <== NOT EXECUTED
4f394: 2140 0018 movel %d0,%a0@(24) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
4f398: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4f39c: 2679 0007 6420 moveal 76420 <_Dual_ported_memory_Information+0x18>,%a3<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4f3a2: 3200 movew %d0,%d1 <== NOT EXECUTED
if ( !the_port ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_port->internal_base = internal_start;
4f3a4: 2144 0010 movel %d4,%a0@(16) <== NOT EXECUTED
the_port->external_base = external_start;
4f3a8: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4f3ac: 2788 1c00 movel %a0,%a3@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4f3b0: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Dual_ported_memory_Information,
&the_port->Object,
(Objects_Name) name
);
*id = the_port->Object.id;
4f3b4: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4f3b6: 4e91 jsr %a1@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4f3b8: 4280 clrl %d0 <== NOT EXECUTED
4f3ba: 6006 bras 4f3c2 <rtems_port_create+0x8e> <== NOT EXECUTED
)
{
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4f3bc: 7003 moveq #3,%d0 <== NOT EXECUTED
4f3be: 6002 bras 4f3c2 <rtems_port_create+0x8e> <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !_Addresses_Is_aligned( internal_start ) ||
!_Addresses_Is_aligned( external_start ) )
return RTEMS_INVALID_ADDRESS;
4f3c0: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4f3c2: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4f3c8: 4e5e unlk %fp <== NOT EXECUTED
0004f3cc <rtems_port_delete>:
*/
rtems_status_code rtems_port_delete(
rtems_id id
)
{
4f3cc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4f3d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
4f3d2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4f3d6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4f3da: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f3e0: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
4f3e6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4f3ea: 2400 movel %d0,%d2 <== NOT EXECUTED
4f3ec: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4f3f0: 662a bnes 4f41c <rtems_port_delete+0x50> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Dual_ported_memory_Information, &the_port->Object );
4f3f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4f3f4: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f3fa: 4eb9 0005 3fc8 jsr 53fc8 <_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 );
4f400: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4f402: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f408: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
_Dual_ported_memory_Free( the_port );
_Thread_Enable_dispatch();
4f40e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4f414: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4f418: 4280 clrl %d0 <== NOT EXECUTED
4f41a: 6002 bras 4f41e <rtems_port_delete+0x52> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f41c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f41e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4f422: 4e5e unlk %fp <== NOT EXECUTED
...
0004f428 <rtems_port_external_to_internal>:
rtems_status_code rtems_port_external_to_internal(
rtems_id id,
void *external,
void **internal
)
{
4f428: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4f42c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4f42e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
4f432: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4f434: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
4f438: 4a8a tstl %a2 <== NOT EXECUTED
4f43a: 6740 beqs 4f47c <rtems_port_external_to_internal+0x54><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
4f43c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4f440: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4f444: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f44a: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
4f450: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4f454: 2040 moveal %d0,%a0 <== NOT EXECUTED
4f456: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4f45a: 6624 bnes 4f480 <rtems_port_external_to_internal+0x58><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
4f45c: 2002 movel %d2,%d0 <== NOT EXECUTED
4f45e: 90a8 0014 subl %a0@(20),%d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( external, the_port->external_base );
if ( ending > the_port->length )
4f462: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED
4f466: 6304 blss 4f46c <rtems_port_external_to_internal+0x44><== NOT EXECUTED
*internal = external;
4f468: 2482 movel %d2,%a2@ <== NOT EXECUTED
4f46a: 6006 bras 4f472 <rtems_port_external_to_internal+0x4a><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
4f46c: d0a8 0010 addl %a0@(16),%d0 <== NOT EXECUTED
4f470: 2480 movel %d0,%a2@ <== NOT EXECUTED
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
4f472: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4f478: 4280 clrl %d0 <== NOT EXECUTED
4f47a: 6006 bras 4f482 <rtems_port_external_to_internal+0x5a><== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
return RTEMS_INVALID_ADDRESS;
4f47c: 7009 moveq #9,%d0 <== NOT EXECUTED
4f47e: 6002 bras 4f482 <rtems_port_external_to_internal+0x5a><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f480: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f482: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4f486: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4f48a: 4e5e unlk %fp <== NOT EXECUTED
...
0004f490 <rtems_port_ident>:
rtems_status_code rtems_port_ident(
rtems_name name,
rtems_id *id
)
{
4f490: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4f494: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4f498: 42a7 clrl %sp@- <== NOT EXECUTED
4f49a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4f49e: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f4a4: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED
OBJECTS_SEARCH_ALL_NODES,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
4f4aa: 41f9 0006 f980 lea 6f980 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
4f4b0: 4e5e unlk %fp <== NOT EXECUTED
4f4b2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
0004f4b8 <rtems_port_internal_to_external>:
rtems_status_code rtems_port_internal_to_external(
rtems_id id,
void *internal,
void **external
)
{
4f4b8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4f4bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4f4be: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
4f4c2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4f4c4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
4f4c8: 4a8a tstl %a2 <== NOT EXECUTED
4f4ca: 6740 beqs 4f50c <rtems_port_internal_to_external+0x54><== NOT EXECUTED
4f4cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4f4d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4f4d4: 4879 0007 6408 pea 76408 <_Dual_ported_memory_Information> <== NOT EXECUTED
4f4da: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
4f4e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4f4e4: 2040 moveal %d0,%a0 <== NOT EXECUTED
4f4e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4f4ea: 6624 bnes 4f510 <rtems_port_internal_to_external+0x58><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
4f4ec: 2002 movel %d2,%d0 <== NOT EXECUTED
4f4ee: 90a8 0010 subl %a0@(16),%d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( internal, the_port->internal_base );
if ( ending > the_port->length )
4f4f2: b0a8 0018 cmpl %a0@(24),%d0 <== NOT EXECUTED
4f4f6: 6304 blss 4f4fc <rtems_port_internal_to_external+0x44><== NOT EXECUTED
*external = internal;
4f4f8: 2482 movel %d2,%a2@ <== NOT EXECUTED
4f4fa: 6006 bras 4f502 <rtems_port_internal_to_external+0x4a><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
4f4fc: d0a8 0014 addl %a0@(20),%d0 <== NOT EXECUTED
4f500: 2480 movel %d0,%a2@ <== NOT EXECUTED
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
4f502: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4f508: 4280 clrl %d0 <== NOT EXECUTED
4f50a: 6006 bras 4f512 <rtems_port_internal_to_external+0x5a><== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
return RTEMS_INVALID_ADDRESS;
4f50c: 7009 moveq #9,%d0 <== NOT EXECUTED
4f50e: 6002 bras 4f512 <rtems_port_internal_to_external+0x5a><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f510: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f512: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
4f516: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4f51a: 4e5e unlk %fp <== NOT EXECUTED
...
00041e72 <rtems_print_buffer>:
void rtems_print_buffer(
const unsigned char *buffer,
int length
)
{
41e72: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
41e76: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
41e7a: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
41e7e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int i, mod, max;
if ( !length ) return;
41e82: 4a80 tstl %d0 <== NOT EXECUTED
41e84: 674e beqs 41ed4 <rtems_print_buffer+0x62> <== NOT EXECUTED
mod = length % 16;
41e86: 2400 movel %d0,%d2 <== NOT EXECUTED
41e88: 0282 8000 000f andil #-2147483633,%d2 <== NOT EXECUTED
41e8e: 6c08 bges 41e98 <rtems_print_buffer+0x26> <== NOT EXECUTED
41e90: 5382 subql #1,%d2 <== NOT EXECUTED
41e92: 72f0 moveq #-16,%d1 <== NOT EXECUTED
41e94: 8481 orl %d1,%d2 <== NOT EXECUTED
41e96: 5282 addql #1,%d2 <== NOT EXECUTED
max = length - mod;
41e98: 2800 movel %d0,%d4 <== NOT EXECUTED
41e9a: 9882 subl %d2,%d4 <== NOT EXECUTED
for ( i=0 ; i<max ; i+=16 )
41e9c: 4283 clrl %d3 <== NOT EXECUTED
Dump_Line( &buffer[ i ], 16 );
41e9e: 47fa fec0 lea %pc@(41d60 <Dump_Line>),%a3 <== NOT EXECUTED
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
41ea2: 6012 bras 41eb6 <rtems_print_buffer+0x44> <== NOT EXECUTED
Dump_Line( &buffer[ i ], 16 );
41ea4: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
41ea8: 4872 3800 pea %a2@(00000000,%d3:l) <== NOT EXECUTED
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
41eac: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
Dump_Line( &buffer[ i ], 16 );
41eb2: 4e93 jsr %a3@ <== NOT EXECUTED
mod = length % 16;
max = length - mod;
for ( i=0 ; i<max ; i+=16 )
41eb4: 508f addql #8,%sp <== NOT EXECUTED
41eb6: b883 cmpl %d3,%d4 <== NOT EXECUTED
41eb8: 6eea bgts 41ea4 <rtems_print_buffer+0x32> <== NOT EXECUTED
Dump_Line( &buffer[ i ], 16 );
if ( mod )
41eba: 4a82 tstl %d2 <== NOT EXECUTED
41ebc: 6716 beqs 41ed4 <rtems_print_buffer+0x62> <== NOT EXECUTED
Dump_Line( &buffer[ max ], mod );
41ebe: d5c4 addal %d4,%a2 <== NOT EXECUTED
41ec0: 2d42 000c movel %d2,%fp@(12) <== NOT EXECUTED
41ec4: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
41ec8: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
41ece: 4e5e unlk %fp <== NOT EXECUTED
for ( i=0 ; i<max ; i+=16 )
Dump_Line( &buffer[ i ], 16 );
if ( mod )
Dump_Line( &buffer[ max ], mod );
41ed0: 6000 fe8e braw 41d60 <Dump_Line> <== NOT EXECUTED
}
41ed4: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
41eda: 4e5e unlk %fp <== NOT EXECUTED
...
0004ff18 <rtems_rate_monotonic_cancel>:
*/
rtems_status_code rtems_rate_monotonic_cancel(
rtems_id id
)
{
4ff18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4ff1c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ff1e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
4ff20: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ff24: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4ff28: 4879 0007 647c pea 7647c <_Rate_monotonic_Information> <== NOT EXECUTED
4ff2e: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4ff34: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ff38: 2440 moveal %d0,%a2 <== NOT EXECUTED
4ff3a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4ff3e: 662e bnes 4ff6e <rtems_rate_monotonic_cancel+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
4ff40: 2039 0007 6a3e movel 76a3e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
4ff46: 47f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
4ff4c: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
4ff50: 6706 beqs 4ff58 <rtems_rate_monotonic_cancel+0x40><== NOT EXECUTED
_Thread_Enable_dispatch();
4ff52: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
4ff54: 7017 moveq #23,%d0 <== NOT EXECUTED
4ff56: 6018 bras 4ff70 <rtems_rate_monotonic_cancel+0x58><== NOT EXECUTED
}
(void) _Watchdog_Remove( &the_period->Timer );
4ff58: 486a 0010 pea %a2@(16) <== NOT EXECUTED
4ff5c: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
4ff62: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
_Thread_Enable_dispatch();
4ff66: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4ff68: 588f addql #4,%sp <== NOT EXECUTED
4ff6a: 4280 clrl %d0 <== NOT EXECUTED
4ff6c: 6002 bras 4ff70 <rtems_rate_monotonic_cancel+0x58><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ff6e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ff70: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4ff74: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4ff78: 4e5e unlk %fp <== NOT EXECUTED
00046030 <rtems_rate_monotonic_create>:
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
rtems_id *id
)
{
46030: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
46034: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
46038: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4603c: 286e 000c moveal %fp@(12),%a4 <== NOT EXECUTED
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
46040: 6700 009c beqw 460de <rtems_rate_monotonic_create+0xae><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
46044: 4a8c tstl %a4 <== NOT EXECUTED
46046: 6700 009a beqw 460e2 <rtems_rate_monotonic_create+0xb2><== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4604a: 2039 0005 f782 movel 5f782 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46050: 5280 addql #1,%d0 <== NOT EXECUTED
46052: 23c0 0005 f782 movel %d0,5f782 <_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 );
46058: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
4605e: 47f9 0004 8dc2 lea 48dc2 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
46064: 4eb9 0004 7da8 jsr 47da8 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
4606a: 588f addql #4,%sp <== NOT EXECUTED
4606c: 2440 moveal %d0,%a2 <== NOT EXECUTED
4606e: 4a80 tstl %d0 <== NOT EXECUTED
46070: 6606 bnes 46078 <rtems_rate_monotonic_create+0x48><== NOT EXECUTED
_Thread_Enable_dispatch();
46072: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_TOO_MANY;
46074: 7005 moveq #5,%d0 <== NOT EXECUTED
46076: 606c bras 460e4 <rtems_rate_monotonic_create+0xb4><== NOT EXECUTED
}
the_period->owner = _Thread_Executing;
46078: 41f9 0005 fc0c lea 5fc0c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4607e: 2550 0040 movel %a0@,%a2@(64) <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
46082: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46086: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
4608a: 42aa 002c clrl %a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
4608e: 42aa 0030 clrl %a2@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
46092: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
46096: 4878 0038 pea 38 <DBL_MANT_DIG+0x3> <== NOT EXECUTED
4609a: 42a7 clrl %sp@- <== NOT EXECUTED
4609c: 486a 0054 pea %a2@(84) <== NOT EXECUTED
460a0: 4eb9 0004 e96c jsr 4e96c <memset> <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
460a6: 2079 0005 f6a4 moveal 5f6a4 <_Rate_monotonic_Information+0x18>,%a0<== NOT EXECUTED
460ac: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
460b2: 4281 clrl %d1 <== NOT EXECUTED
460b4: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
460b8: 2540 0060 movel %d0,%a2@(96) <== NOT EXECUTED
460bc: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
460c0: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
460c4: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
460c8: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
460ca: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
460ce: 2542 000c movel %d2,%a2@(12) <== NOT EXECUTED
&_Rate_monotonic_Information,
&the_period->Object,
(Objects_Name) name
);
*id = the_period->Object.id;
460d2: 2880 movel %d0,%a4@ <== NOT EXECUTED
_Thread_Enable_dispatch();
460d4: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
460d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
460da: 4280 clrl %d0 <== NOT EXECUTED
460dc: 6006 bras 460e4 <rtems_rate_monotonic_create+0xb4><== NOT EXECUTED
)
{
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
460de: 7003 moveq #3,%d0 <== NOT EXECUTED
460e0: 6002 bras 460e4 <rtems_rate_monotonic_create+0xb4><== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
460e2: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
460e4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
460ea: 4e5e unlk %fp <== NOT EXECUTED
...
0005003c <rtems_rate_monotonic_delete>:
*/
rtems_status_code rtems_rate_monotonic_delete(
rtems_id id
)
{
5003c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
50040: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
50042: 486e fffc pea %fp@(-4) <== NOT EXECUTED
50046: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5004a: 4879 0007 647c pea 7647c <_Rate_monotonic_Information> <== NOT EXECUTED
50050: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
50056: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5005a: 2440 moveal %d0,%a2 <== NOT EXECUTED
5005c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
50060: 6638 bnes 5009a <rtems_rate_monotonic_delete+0x5e><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
50062: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50064: 4879 0007 647c pea 7647c <_Rate_monotonic_Information> <== NOT EXECUTED
5006a: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_period->Timer );
50070: 486a 0010 pea %a2@(16) <== NOT EXECUTED
50074: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
5007a: 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 );
5007e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50080: 4879 0007 647c pea 7647c <_Rate_monotonic_Information> <== NOT EXECUTED
50086: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
5008c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
50092: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
50096: 4280 clrl %d0 <== NOT EXECUTED
50098: 6002 bras 5009c <rtems_rate_monotonic_delete+0x60><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5009a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5009c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
500a0: 4e5e unlk %fp <== NOT EXECUTED
0004bd6c <rtems_rate_monotonic_get_statistics>:
rtems_status_code rtems_rate_monotonic_get_statistics(
rtems_id id,
rtems_rate_monotonic_period_statistics *statistics
)
{
4bd6c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4bd70: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4bd72: 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 )
4bd76: 4a8a tstl %a2 <== NOT EXECUTED
4bd78: 6700 0096 beqw 4be10 <rtems_rate_monotonic_get_statistics+0xa4><== NOT EXECUTED
4bd7c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4bd80: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4bd84: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
4bd8a: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4bd90: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4bd94: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bd96: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4bd9a: 6678 bnes 4be14 <rtems_rate_monotonic_get_statistics+0xa8><== NOT EXECUTED
case OBJECTS_LOCAL:
dst = statistics;
src = &the_period->Statistics;
dst->count = src->count;
4bd9c: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED
dst->missed_count = src->missed_count;
4bda0: 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 );
4bda6: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
4bdaa: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED
4bdae: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4bdb2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
4bdb6: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED
4bdba: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED
4bdbe: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4bdc2: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
4bdc6: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED
4bdca: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED
4bdce: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
4bdd2: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED
_Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
4bdd6: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED
4bdda: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED
4bdde: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
4bde2: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
4bde6: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED
4bdea: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED
4bdee: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
4bdf2: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
4bdf6: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
4bdfa: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED
4bdfe: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4be02: 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();
4be06: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4be0c: 4280 clrl %d0 <== NOT EXECUTED
4be0e: 6006 bras 4be16 <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
Rate_monotonic_Control *the_period;
rtems_rate_monotonic_period_statistics *dst;
Rate_monotonic_Statistics *src;
if ( !statistics )
return RTEMS_INVALID_ADDRESS;
4be10: 7009 moveq #9,%d0 <== NOT EXECUTED
4be12: 6002 bras 4be16 <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4be14: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4be16: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4be1a: 4e5e unlk %fp <== NOT EXECUTED
...
0004be20 <rtems_rate_monotonic_get_status>:
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
)
{
4be20: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4be24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4be26: 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 )
4be2a: 4a8a tstl %a2 <== NOT EXECUTED
4be2c: 6700 0092 beqw 4bec0 <rtems_rate_monotonic_get_status+0xa0><== NOT EXECUTED
4be30: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4be34: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4be38: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
4be3e: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4be44: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4be48: 2040 moveal %d0,%a0 <== NOT EXECUTED
4be4a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4be4e: 6674 bnes 4bec4 <rtems_rate_monotonic_get_status+0xa4><== NOT EXECUTED
case OBJECTS_LOCAL:
status->owner = the_period->owner->Object.id;
4be50: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED
4be54: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED
status->state = the_period->state;
4be58: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
4be5c: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
/*
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
4be60: 6612 bnes 4be74 <rtems_rate_monotonic_get_status+0x54><== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timespec_Set_to_zero( &status->since_last_period );
4be62: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
4be66: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Timespec_Set_to_zero( &status->executed_since_last_period );
4be6a: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
4be6e: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
4be72: 6042 bras 4beb6 <rtems_rate_monotonic_get_status+0x96><== NOT EXECUTED
} else {
/*
* Grab the current status.
*/
valid_status =
4be74: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
4be78: 486e ffec pea %fp@(-20) <== NOT EXECUTED
4be7c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4be7e: 4eb9 0004 611c jsr 4611c <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
4be84: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4be88: 4a00 tstb %d0 <== NOT EXECUTED
4be8a: 660a bnes 4be96 <rtems_rate_monotonic_get_status+0x76><== NOT EXECUTED
_Thread_Enable_dispatch();
4be8c: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
4be92: 700b moveq #11,%d0 <== NOT EXECUTED
4be94: 6030 bras 4bec6 <rtems_rate_monotonic_get_status+0xa6><== NOT EXECUTED
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec(
4be96: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
4be9a: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
4be9e: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4bea2: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
&since_last_period, &status->since_last_period
);
_Timestamp_To_timespec(
4bea6: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4beaa: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
4beae: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4beb2: 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();
4beb6: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4bebc: 4280 clrl %d0 <== NOT EXECUTED
4bebe: 6006 bras 4bec6 <rtems_rate_monotonic_get_status+0xa6><== NOT EXECUTED
Rate_monotonic_Period_time_t since_last_period;
Rate_monotonic_Control *the_period;
bool valid_status;
if ( !status )
return RTEMS_INVALID_ADDRESS;
4bec0: 7009 moveq #9,%d0 <== NOT EXECUTED
4bec2: 6002 bras 4bec6 <rtems_rate_monotonic_get_status+0xa6><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4bec4: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4bec6: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4beca: 4e5e unlk %fp <== NOT EXECUTED
...
000460f0 <rtems_rate_monotonic_ident>:
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
rtems_id *id
)
{
460f0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
460f4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
460f8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
460fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46102: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
46108: 4eb9 0004 8474 jsr 48474 <_Objects_Name_to_id_u32> <== NOT EXECUTED
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
4610e: 41f9 0005 cef6 lea 5cef6 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
46114: 4e5e unlk %fp <== NOT EXECUTED
46116: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00046326 <rtems_rate_monotonic_period>:
rtems_status_code rtems_rate_monotonic_period(
rtems_id id,
rtems_interval length
)
{
46326: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4632a: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
4632e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46332: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
46336: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46338: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
4633e: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
46342: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED
rtems_rate_monotonic_period_states local_state;
ISR_Level level;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
46348: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4634c: 2440 moveal %d0,%a2 <== NOT EXECUTED
4634e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46352: 6600 0148 bnew 4649c <rtems_rate_monotonic_period+0x176><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
46356: 2039 0005 fc0c movel 5fc0c <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
4635c: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
46360: 670c beqs 4636e <rtems_rate_monotonic_period+0x48><== NOT EXECUTED
_Thread_Enable_dispatch();
46362: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
46368: 7417 moveq #23,%d2 <== NOT EXECUTED
4636a: 6000 0132 braw 4649e <rtems_rate_monotonic_period+0x178><== NOT EXECUTED
}
if ( length == RTEMS_PERIOD_STATUS ) {
4636e: 4a82 tstl %d2 <== NOT EXECUTED
46370: 6622 bnes 46394 <rtems_rate_monotonic_period+0x6e><== NOT EXECUTED
switch ( the_period->state ) {
46372: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED
46376: 7204 moveq #4,%d1 <== NOT EXECUTED
46378: b280 cmpl %d0,%d1 <== NOT EXECUTED
4637a: 650c bcss 46388 <rtems_rate_monotonic_period+0x62><== NOT EXECUTED
4637c: 41f9 0005 cd16 lea 5cd16 <CSWTCH.2>,%a0 <== NOT EXECUTED
46382: 2430 0c00 movel %a0@(00000000,%d0:l:4),%d2 <== NOT EXECUTED
46386: 6002 bras 4638a <rtems_rate_monotonic_period+0x64><== NOT EXECUTED
46388: 4282 clrl %d2 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
4638a: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return( return_value );
46390: 6000 010c braw 4649e <rtems_rate_monotonic_period+0x178><== NOT EXECUTED
}
_ISR_Disable( level );
46394: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4639a: 40c4 movew %sr,%d4 <== NOT EXECUTED
4639c: 8084 orl %d4,%d0 <== NOT EXECUTED
4639e: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
463a0: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED
463a4: 664a bnes 463f0 <rtems_rate_monotonic_period+0xca><== NOT EXECUTED
_ISR_Enable( level );
463a6: 46c4 movew %d4,%sr <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
463a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
463aa: 4eb9 0004 61ba jsr 461ba <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
463b0: 7002 moveq #2,%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
463b2: 223c 0004 66e8 movel #288488,%d1 <== NOT EXECUTED
463b8: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
463bc: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
463c0: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
463c4: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
463c8: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
463cc: 2542 003c movel %d2,%a2@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
463d0: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
463d4: 486a 0010 pea %a2@(16) <== NOT EXECUTED
463d8: 4879 0005 f862 pea 5f862 <_Watchdog_Ticks_chain> <== NOT EXECUTED
463de: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
463e4: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
463ea: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
463ee: 606c bras 4645c <rtems_rate_monotonic_period+0x136><== NOT EXECUTED
}
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
463f0: 7202 moveq #2,%d1 <== NOT EXECUTED
463f2: b280 cmpl %d0,%d1 <== NOT EXECUTED
463f4: 666a bnes 46460 <rtems_rate_monotonic_period+0x13a><== NOT EXECUTED
/*
* Update statistics from the concluding period.
*/
_Rate_monotonic_Update_statistics( the_period );
463f6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
463f8: 4eb9 0004 6232 jsr 46232 <_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;
463fe: 7001 moveq #1,%d0 <== NOT EXECUTED
the_period->next_length = length;
46400: 2542 003c movel %d2,%a2@(60) <== 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;
46404: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
the_period->next_length = length;
_ISR_Enable( level );
46408: 46c4 movew %d4,%sr <== NOT EXECUTED
_Thread_Executing->Wait.id = the_period->Object.id;
4640a: 2079 0005 fc0c moveal 5fc0c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
46410: 216a 0008 0020 movel %a2@(8),%a0@(32) <== NOT EXECUTED
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
46416: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
4641a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4641c: 4eb9 0004 9598 jsr 49598 <_Thread_Set_state> <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
46422: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
46428: 40c1 movew %sr,%d1 <== NOT EXECUTED
4642a: 8081 orl %d1,%d0 <== NOT EXECUTED
4642c: 46c0 movew %d0,%sr <== NOT EXECUTED
local_state = the_period->state;
the_period->state = RATE_MONOTONIC_ACTIVE;
4642e: 7402 moveq #2,%d2 <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
local_state = the_period->state;
46430: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
46434: 2542 0038 movel %d2,%a2@(56) <== NOT EXECUTED
_ISR_Enable( level );
46438: 46c1 movew %d1,%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 )
4643a: 7203 moveq #3,%d1 <== NOT EXECUTED
4643c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46440: b280 cmpl %d0,%d1 <== NOT EXECUTED
46442: 6612 bnes 46456 <rtems_rate_monotonic_period+0x130><== NOT EXECUTED
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
46444: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
46448: 2f39 0005 fc0c movel 5fc0c <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4644e: 4eb9 0004 8a64 jsr 48a64 <_Thread_Clear_state> <== NOT EXECUTED
46454: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
46456: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4645c: 4282 clrl %d2 <== NOT EXECUTED
4645e: 603e bras 4649e <rtems_rate_monotonic_period+0x178><== NOT EXECUTED
}
if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {
46460: 7204 moveq #4,%d1 <== NOT EXECUTED
46462: b280 cmpl %d0,%d1 <== NOT EXECUTED
46464: 6636 bnes 4649c <rtems_rate_monotonic_period+0x176><== NOT EXECUTED
/*
* Update statistics from the concluding period
*/
_Rate_monotonic_Update_statistics( the_period );
46466: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46468: 4eb9 0004 6232 jsr 46232 <_Rate_monotonic_Update_statistics><== NOT EXECUTED
_ISR_Enable( level );
4646e: 46c4 movew %d4,%sr <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
46470: 7002 moveq #2,%d0 <== NOT EXECUTED
the_period->next_length = length;
46472: 2542 003c movel %d2,%a2@(60) <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
46476: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4647a: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4647e: 486a 0010 pea %a2@(16) <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
46482: 7406 moveq #6,%d2 <== NOT EXECUTED
46484: 4879 0005 f862 pea 5f862 <_Watchdog_Ticks_chain> <== NOT EXECUTED
4648a: 4eb9 0004 9c2c jsr 49c2c <_Watchdog_Insert> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
46490: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TIMEOUT;
46496: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4649a: 6002 bras 4649e <rtems_rate_monotonic_period+0x178><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4649c: 7404 moveq #4,%d2 <== NOT EXECUTED
}
4649e: 2002 movel %d2,%d0 <== NOT EXECUTED
464a0: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
464a6: 4e5e unlk %fp <== NOT EXECUTED
...
00046628 <rtems_rate_monotonic_report_statistics>:
void rtems_rate_monotonic_report_statistics( void )
{
46628: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin );
4662c: 4879 0004 b3e4 pea 4b3e4 <printk_plugin> <== NOT EXECUTED
46632: 42a7 clrl %sp@- <== NOT EXECUTED
46634: 4eb9 0004 64ac jsr 464ac <rtems_rate_monotonic_report_statistics_with_plugin><== NOT EXECUTED
4663a: 508f addql #8,%sp <== NOT EXECUTED
}
4663c: 4e5e unlk %fp <== NOT EXECUTED
000464ac <rtems_rate_monotonic_report_statistics_with_plugin>:
*/
void rtems_rate_monotonic_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
464ac: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED
464b0: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
464b4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
464b8: 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 )
464bc: 4a8a tstl %a2 <== NOT EXECUTED
464be: 6700 015e beqw 4661e <rtems_rate_monotonic_report_statistics_with_plugin+0x172><== NOT EXECUTED
return;
(*print)( context, "Period information by period\n" );
464c2: 4879 0005 cd2a pea 5cd2a <CSWTCH.2+0x14> <== 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 );
464c8: 2e0e movel %fp,%d7 <== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
464ca: 2a0e movel %fp,%d5 <== 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 );
464cc: 280e movel %fp,%d4 <== 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 );
464ce: 0687 ffff ffda addil #-38,%d7 <== NOT EXECUTED
464d4: 4bf9 0004 be20 lea 4be20 <rtems_rate_monotonic_get_status>,%a5<== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
464da: 5b85 subql #5,%d5 <== NOT EXECUTED
464dc: 49f9 0004 67ac lea 467ac <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 );
464e2: 0684 ffff fff2 addil #-14,%d4 <== NOT EXECUTED
464e8: 47f9 0004 9888 lea 49888 <_Timespec_Divide_by_integer>,%a3 <== NOT EXECUTED
char name[5];
if ( !print )
return;
(*print)( context, "Period information by period\n" );
464ee: 2f02 movel %d2,%sp@- <== NOT EXECUTED
464f0: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)( context, "--- CPU times are in seconds ---\n" );
464f2: 4879 0005 cd48 pea 5cd48 <CSWTCH.2+0x32> <== NOT EXECUTED
464f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
464fa: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context, "--- Wall times are in seconds ---\n" );
464fc: 4879 0005 cd6a pea 5cd6a <CSWTCH.2+0x54> <== NOT EXECUTED
46502: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46504: 4e92 jsr %a2@ <== NOT EXECUTED
Be sure to test the various cases.
(*print)( context,"\
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");
*/
(*print)( context, " ID OWNER COUNT MISSED "
46506: 4879 0005 cd8d pea 5cd8d <CSWTCH.2+0x77> <== NOT EXECUTED
4650c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4650e: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
" "
#endif
" WALL TIME\n"
);
(*print)( context, " "
46510: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
46514: 2ebc 0005 cdd8 movel #380376,%sp@ <== NOT EXECUTED
4651a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4651c: 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 ;
4651e: 2639 0005 f692 movel 5f692 <_Rate_monotonic_Information+0x6>,%d3<== NOT EXECUTED
46524: 508f addql #8,%sp <== NOT EXECUTED
46526: 6000 00ec braw 46614 <rtems_rate_monotonic_report_statistics_with_plugin+0x168><== NOT EXECUTED
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
status = rtems_rate_monotonic_get_statistics( id, &the_stats );
4652a: 486e ffa2 pea %fp@(-94) <== NOT EXECUTED
4652e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46530: 4eb9 0004 bd6c jsr 4bd6c <rtems_rate_monotonic_get_statistics><== NOT EXECUTED
if ( status != RTEMS_SUCCESSFUL )
46536: 508f addql #8,%sp <== NOT EXECUTED
46538: 4a80 tstl %d0 <== NOT EXECUTED
4653a: 6600 00d6 bnew 46612 <rtems_rate_monotonic_report_statistics_with_plugin+0x166><== 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 );
4653e: 2f07 movel %d7,%sp@- <== NOT EXECUTED
46540: 2f03 movel %d3,%sp@- <== NOT EXECUTED
46542: 4e95 jsr %a5@ <== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
46544: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46546: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4654a: 2f2e ffda movel %fp@(-38),%sp@- <== NOT EXECUTED
4654e: 4e94 jsr %a4@ <== NOT EXECUTED
/*
* Print part of report line that is not dependent on granularity
*/
(*print)( context,
46550: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED
46554: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED
46558: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4655a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4655c: 4879 0005 ce24 pea 5ce24 <CSWTCH.2+0x10e> <== NOT EXECUTED
46562: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46564: 4e92 jsr %a2@ <== NOT EXECUTED
);
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
46566: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED
4656a: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
4656e: 6610 bnes 46580 <rtems_rate_monotonic_report_statistics_with_plugin+0xd4><== NOT EXECUTED
(*print)( context, "\n" );
46570: 4879 0005 cc4e pea 5cc4e <rtems_status_assoc+0x19e> <== NOT EXECUTED
46576: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46578: 4e92 jsr %a2@ <== NOT EXECUTED
continue;
4657a: 508f addql #8,%sp <== NOT EXECUTED
4657c: 6000 0094 braw 46612 <rtems_rate_monotonic_report_statistics_with_plugin+0x166><== 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 );
46580: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46582: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46584: 486e ffba pea %fp@(-70) <== NOT EXECUTED
46588: 4e93 jsr %a3@ <== NOT EXECUTED
(*print)( context,
4658a: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED
4658e: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
46594: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
46598: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4659a: 202e ffb6 movel %fp@(-74),%d0 <== NOT EXECUTED
4659e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED
465a2: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
465a6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465a8: 202e ffae movel %fp@(-82),%d0 <== NOT EXECUTED
465ac: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED
465b0: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
465b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465b6: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED
465ba: 4879 0005 ce3b pea 5ce3b <CSWTCH.2+0x125> <== NOT EXECUTED
465c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465c2: 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);
465c4: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
465c8: 2e84 movel %d4,%sp@ <== NOT EXECUTED
465ca: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED
465ce: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED
465d2: 4e93 jsr %a3@ <== NOT EXECUTED
(*print)( context,
465d4: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED
465d8: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
465de: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
465e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465e4: 202e ffce movel %fp@(-50),%d0 <== NOT EXECUTED
465e8: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED
465ec: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
465f0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
465f2: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
465f6: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED
465fa: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
465fe: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46600: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED
46604: 4879 0005 ce5a pea 5ce5a <CSWTCH.2+0x144> <== NOT EXECUTED
4660a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4660c: 4e92 jsr %a2@ <== NOT EXECUTED
4660e: 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 ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
46612: 5283 addql #1,%d3 <== 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 ;
46614: b6b9 0005 f696 cmpl 5f696 <_Rate_monotonic_Information+0xa>,%d3<== NOT EXECUTED
4661a: 6300 ff0e blsw 4652a <rtems_rate_monotonic_report_statistics_with_plugin+0x7e><== NOT EXECUTED
the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
);
#endif
}
}
}
4661e: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED
46624: 4e5e unlk %fp <== NOT EXECUTED
00046640 <rtems_rate_monotonic_reset_all_statistics>:
/*
* rtems_rate_monotonic_reset_all_statistics
*/
void rtems_rate_monotonic_reset_all_statistics( void )
{
46640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46644: 2039 0005 f782 movel 5f782 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4664a: 5280 addql #1,%d0 <== NOT EXECUTED
4664c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4664e: 23c0 0005 f782 movel %d0,5f782 <_Thread_Dispatch_disable_level><== NOT EXECUTED
46654: 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 ;
46656: 2439 0005 f692 movel 5f692 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
(void) rtems_rate_monotonic_reset_statistics( id );
4665c: 45f9 0004 6684 lea 46684 <rtems_rate_monotonic_reset_statistics>,%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 ;
46662: 6008 bras 4666c <rtems_rate_monotonic_reset_all_statistics+0x2c><== NOT EXECUTED
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
(void) rtems_rate_monotonic_reset_statistics( id );
46664: 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++ ) {
46666: 5282 addql #1,%d2 <== NOT EXECUTED
(void) rtems_rate_monotonic_reset_statistics( id );
46668: 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 ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
4666a: 588f addql #4,%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 ;
4666c: b4b9 0005 f696 cmpl 5f696 <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
46672: 63f0 blss 46664 <rtems_rate_monotonic_reset_all_statistics+0x24><== NOT EXECUTED
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
}
46674: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
46678: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4667c: 4e5e unlk %fp <== NOT EXECUTED
}
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
4667e: 4ef9 0004 8dc2 jmp 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
00046684 <rtems_rate_monotonic_reset_statistics>:
*/
rtems_status_code rtems_rate_monotonic_reset_statistics(
rtems_id id
)
{
46684: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46688: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4668a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4668e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46692: 4879 0005 f68c pea 5f68c <_Rate_monotonic_Information> <== NOT EXECUTED
46698: 4eb9 0004 82e8 jsr 482e8 <_Objects_Get> <== NOT EXECUTED
Objects_Locations location;
Rate_monotonic_Control *the_period;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4669e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
466a2: 2440 moveal %d0,%a2 <== NOT EXECUTED
466a4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
466a8: 6634 bnes 466de <rtems_rate_monotonic_reset_statistics+0x5a><== NOT EXECUTED
case OBJECTS_LOCAL:
_Rate_monotonic_Reset_statistics( the_period );
466aa: 4878 0038 pea 38 <DBL_MANT_DIG+0x3> <== NOT EXECUTED
466ae: 42a7 clrl %sp@- <== NOT EXECUTED
466b0: 486a 0054 pea %a2@(84) <== NOT EXECUTED
466b4: 4eb9 0004 e96c jsr 4e96c <memset> <== NOT EXECUTED
466ba: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
466c0: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
466c4: 2540 0060 movel %d0,%a2@(96) <== NOT EXECUTED
466c8: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
466cc: 2540 0078 movel %d0,%a2@(120) <== NOT EXECUTED
_Thread_Enable_dispatch();
466d0: 4eb9 0004 8dc2 jsr 48dc2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
466d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
466da: 4280 clrl %d0 <== NOT EXECUTED
466dc: 6002 bras 466e0 <rtems_rate_monotonic_reset_statistics+0x5c><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
466de: 7004 moveq #4,%d0 <== NOT EXECUTED
}
466e0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
466e4: 4e5e unlk %fp <== NOT EXECUTED
00050688 <rtems_region_create>:
uintptr_t length,
uintptr_t page_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
50688: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5068c: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
50690: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
50694: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
50698: 2c2e 0010 movel %fp@(16),%d6 <== NOT EXECUTED
5069c: 2a2e 0014 movel %fp@(20),%d5 <== NOT EXECUTED
506a0: 282e 0018 movel %fp@(24),%d4 <== NOT EXECUTED
506a4: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
506a8: 4a83 tstl %d3 <== NOT EXECUTED
506aa: 6700 00be beqw 5076a <rtems_region_create+0xe2> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
506ae: 4a82 tstl %d2 <== NOT EXECUTED
506b0: 6700 00bc beqw 5076e <rtems_region_create+0xe6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
506b4: 4a8b tstl %a3 <== NOT EXECUTED
506b6: 6700 00b6 beqw 5076e <rtems_region_create+0xe6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
506ba: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
506c0: 4eb9 0005 29b0 jsr 529b0 <_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 );
506c6: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
506cc: 4eb9 0005 3f4c jsr 53f4c <_Objects_Allocate> <== NOT EXECUTED
the_region = _Region_Allocate();
if ( !the_region )
506d2: 508f addql #8,%sp <== NOT EXECUTED
506d4: 2440 moveal %d0,%a2 <== NOT EXECUTED
506d6: 4a80 tstl %d0 <== NOT EXECUTED
506d8: 677e beqs 50758 <rtems_region_create+0xd0> <== NOT EXECUTED
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
506da: 2f05 movel %d5,%sp@- <== NOT EXECUTED
506dc: 2f06 movel %d6,%sp@- <== NOT EXECUTED
506de: 2f02 movel %d2,%sp@- <== NOT EXECUTED
506e0: 486a 0068 pea %a2@(104) <== NOT EXECUTED
506e4: 4eb9 0005 3b58 jsr 53b58 <_Heap_Initialize> <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
506ea: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if ( !the_region )
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
506ee: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
506f2: 6614 bnes 50708 <rtems_region_create+0x80> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
506f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
506f6: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
506fc: 7408 moveq #8,%d2 <== NOT EXECUTED
506fe: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
50704: 508f addql #8,%sp <== NOT EXECUTED
50706: 6052 bras 5075a <rtems_region_create+0xd2> <== NOT EXECUTED
}
else {
the_region->starting_address = starting_address;
50708: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
5070c: 4282 clrl %d2 <== NOT EXECUTED
}
else {
the_region->starting_address = starting_address;
the_region->length = length;
5070e: 2546 0054 movel %d6,%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(
50712: 44c4 movew %d4,%ccr <== NOT EXECUTED
50714: 57c0 seq %d0 <== NOT EXECUTED
else {
the_region->starting_address = starting_address;
the_region->length = length;
the_region->page_size = page_size;
50716: 2545 0058 movel %d5,%a2@(88) <== NOT EXECUTED
the_region->attribute_set = attribute_set;
the_region->number_of_used_blocks = 0;
_Thread_queue_Initialize(
5071a: 49c0 extbl %d0 <== NOT EXECUTED
5071c: 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;
5071e: 2544 0060 movel %d4,%a2@(96) <== NOT EXECUTED
the_region->number_of_used_blocks = 0;
50722: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
_Thread_queue_Initialize(
50726: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
5072a: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> <== NOT EXECUTED
5072e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50730: 486a 0010 pea %a2@(16) <== NOT EXECUTED
50734: 4eb9 0005 555c jsr 5555c <_Thread_queue_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
5073a: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
5073e: 4281 clrl %d1 <== NOT EXECUTED
&_Region_Information,
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
50740: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
50744: 2079 0007 64ce moveal 764ce <_Region_Information+0x18>,%a0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
5074a: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5074c: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
50750: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
50754: 2680 movel %d0,%a3@ <== NOT EXECUTED
50756: 6002 bras 5075a <rtems_region_create+0xd2> <== NOT EXECUTED
_RTEMS_Lock_allocator(); /* to prevent deletion */
the_region = _Region_Allocate();
if ( !the_region )
return_status = RTEMS_TOO_MANY;
50758: 7405 moveq #5,%d2 <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
5075a: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50760: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
50766: 588f addql #4,%sp <== NOT EXECUTED
50768: 6006 bras 50770 <rtems_region_create+0xe8> <== NOT EXECUTED
{
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
5076a: 7403 moveq #3,%d2 <== NOT EXECUTED
5076c: 6002 bras 50770 <rtems_region_create+0xe8> <== NOT EXECUTED
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
if ( !id )
return RTEMS_INVALID_ADDRESS;
5076e: 7409 moveq #9,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
50770: 2002 movel %d2,%d0 <== NOT EXECUTED
50772: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
50778: 4e5e unlk %fp <== NOT EXECUTED
0005077c <rtems_region_delete>:
*/
rtems_status_code rtems_region_delete(
rtems_id id
)
{
5077c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
50780: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50782: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
_RTEMS_Lock_allocator();
50784: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5078a: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
50790: 486e fffc pea %fp@(-4) <== NOT EXECUTED
50794: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50798: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
5079e: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
507a4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
507a8: 2440 moveal %d0,%a2 <== NOT EXECUTED
507aa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
507ae: 662a bnes 507da <rtems_region_delete+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
507b0: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED
507b4: 6628 bnes 507de <rtems_region_delete+0x62> <== NOT EXECUTED
return_status = RTEMS_RESOURCE_IN_USE;
else {
_Objects_Close( &_Region_Information, &the_region->Object );
507b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
507b8: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_SUCCESSFUL;
507be: 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 );
507c0: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
507c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
507c8: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
507ce: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
507d4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
507d8: 6006 bras 507e0 <rtems_region_delete+0x64> <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
507da: 7404 moveq #4,%d2 <== NOT EXECUTED
507dc: 6002 bras 507e0 <rtems_region_delete+0x64> <== 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;
507de: 740c moveq #12,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
507e0: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
507e6: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
507ec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
507f0: 2002 movel %d2,%d0 <== NOT EXECUTED
507f2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
507f6: 4e5e unlk %fp <== NOT EXECUTED
...
000507fc <rtems_region_extend>:
rtems_status_code rtems_region_extend(
rtems_id id,
void *starting_address,
uintptr_t length
)
{
507fc: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
50800: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50802: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50804: 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 )
50808: 676e beqs 50878 <rtems_region_extend+0x7c> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
5080a: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50810: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
50816: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
5081a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5081e: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
50824: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
5082a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5082e: 2440 moveal %d0,%a2 <== NOT EXECUTED
50830: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
50834: 662c bnes 50862 <rtems_region_extend+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
extend_ok = _Heap_Extend(
50836: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5083a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5083e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50840: 486a 0068 pea %a2@(104) <== NOT EXECUTED
50844: 4eb9 0005 3618 jsr 53618 <_Heap_Extend> <== NOT EXECUTED
starting_address,
length,
&amount_extended
);
if ( extend_ok ) {
5084a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5084e: 4a00 tstb %d0 <== NOT EXECUTED
50850: 6714 beqs 50866 <rtems_region_extend+0x6a> <== NOT EXECUTED
the_region->length += amount_extended;
50852: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
50856: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
5085a: 4282 clrl %d2 <== NOT EXECUTED
&amount_extended
);
if ( extend_ok ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
5085c: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED
50860: 6006 bras 50868 <rtems_region_extend+0x6c> <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
50862: 7404 moveq #4,%d2 <== NOT EXECUTED
50864: 6002 bras 50868 <rtems_region_extend+0x6c> <== 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;
50866: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
50868: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5086e: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
50874: 588f addql #4,%sp <== NOT EXECUTED
50876: 6002 bras 5087a <rtems_region_extend+0x7e> <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
50878: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
5087a: 2002 movel %d2,%d0 <== NOT EXECUTED
5087c: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
50880: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
50884: 4e5e unlk %fp <== NOT EXECUTED
00050888 <rtems_region_get_free_information>:
rtems_status_code rtems_region_get_free_information(
rtems_id id,
Heap_Information_block *the_info
)
{
50888: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5088c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5088e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
50892: 4a8a tstl %a2 <== NOT EXECUTED
50894: 675e beqs 508f4 <rtems_region_get_free_information+0x6c><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
50896: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5089c: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
508a2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
508a6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
508aa: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
508b0: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
508b6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
508ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
508be: 6620 bnes 508e0 <rtems_region_get_free_information+0x58><== NOT EXECUTED
case OBJECTS_LOCAL:
the_info->Used.number = 0;
508c0: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
the_info->Used.total = 0;
the_info->Used.largest = 0;
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
508c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
the_info->Used.number = 0;
the_info->Used.total = 0;
508c6: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
the_info->Used.largest = 0;
508ca: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
508ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED
508d0: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
508d4: 95ca subal %a2,%a2 <== 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 );
508d6: 4eb9 0005 3978 jsr 53978 <_Heap_Get_free_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
508dc: 508f addql #8,%sp <== NOT EXECUTED
508de: 6004 bras 508e4 <rtems_region_get_free_information+0x5c><== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
508e0: 347c 0004 moveaw #4,%a2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
508e4: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
508ea: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
508f0: 588f addql #4,%sp <== NOT EXECUTED
508f2: 6004 bras 508f8 <rtems_region_get_free_information+0x70><== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
508f4: 347c 0009 moveaw #9,%a2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
508f8: 200a movel %a2,%d0 <== NOT EXECUTED
508fa: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
508fe: 4e5e unlk %fp <== NOT EXECUTED
...
00050904 <rtems_region_get_information>:
rtems_status_code rtems_region_get_information(
rtems_id id,
Heap_Information_block *the_info
)
{
50904: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
50908: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5090a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
5090e: 6750 beqs 50960 <rtems_region_get_information+0x5c><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
50910: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50916: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
5091c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
50920: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50924: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
5092a: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
50930: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50934: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
50938: 6614 bnes 5094e <rtems_region_get_information+0x4a><== NOT EXECUTED
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
5093a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5093c: 2040 moveal %d0,%a0 <== NOT EXECUTED
5093e: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
50942: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
50944: 4eb9 0005 39bc jsr 539bc <_Heap_Get_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
5094a: 508f addql #8,%sp <== NOT EXECUTED
5094c: 6002 bras 50950 <rtems_region_get_information+0x4c><== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
5094e: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
50950: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50956: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5095c: 588f addql #4,%sp <== NOT EXECUTED
5095e: 6002 bras 50962 <rtems_region_get_information+0x5e><== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
50960: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
50962: 2002 movel %d2,%d0 <== NOT EXECUTED
50964: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
50968: 4e5e unlk %fp <== NOT EXECUTED
0005096c <rtems_region_get_segment>:
uintptr_t size,
rtems_option option_set,
rtems_interval timeout,
void **segment
)
{
5096c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
50970: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
50974: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
50978: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
5097c: 286e 0018 moveal %fp@(24),%a4 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
void *the_segment;
if ( !segment )
50980: 4a8c tstl %a4 <== NOT EXECUTED
50982: 6700 00e4 beqw 50a68 <rtems_region_get_segment+0xfc> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
*segment = NULL;
50986: 4294 clrl %a4@ <== NOT EXECUTED
if ( size == 0 )
50988: 4a82 tstl %d2 <== NOT EXECUTED
5098a: 6700 00e0 beqw 50a6c <rtems_region_get_segment+0x100> <== NOT EXECUTED
return RTEMS_INVALID_SIZE;
_RTEMS_Lock_allocator();
5098e: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50994: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
5099a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5099e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
509a0: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
executing = _Thread_Executing;
509a6: 2679 0007 6a3e moveal 76a3e <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
509ac: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
509b2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
509b6: 2440 moveal %d0,%a2 <== NOT EXECUTED
509b8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
509bc: 6600 0090 bnew 50a4e <rtems_region_get_segment+0xe2> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( size > the_region->maximum_segment_size )
509c0: b4aa 005c cmpl %a2@(92),%d2 <== NOT EXECUTED
509c4: 6200 008c bhiw 50a52 <rtems_region_get_segment+0xe6> <== 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 );
509c8: 42a7 clrl %sp@- <== NOT EXECUTED
509ca: 42a7 clrl %sp@- <== NOT EXECUTED
509cc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
509ce: 486a 0068 pea %a2@(104) <== NOT EXECUTED
509d2: 4eb9 0005 347c jsr 5347c <_Heap_Allocate_aligned_with_boundary><== NOT EXECUTED
the_segment = _Region_Allocate_segment( the_region, size );
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
509d8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
509dc: 4a80 tstl %d0 <== NOT EXECUTED
509de: 670a beqs 509ea <rtems_region_get_segment+0x7e> <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
509e0: 52aa 0064 addql #1,%a2@(100) <== NOT EXECUTED
*segment = the_segment;
return_status = RTEMS_SUCCESSFUL;
509e4: 4282 clrl %d2 <== NOT EXECUTED
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
the_region->number_of_used_blocks += 1;
*segment = the_segment;
509e6: 2880 movel %d0,%a4@ <== NOT EXECUTED
509e8: 606e bras 50a58 <rtems_region_get_segment+0xec> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
} else if ( _Options_Is_no_wait( option_set ) ) {
509ea: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
509ee: 0800 0000 btst #0,%d0 <== NOT EXECUTED
509f2: 6662 bnes 50a56 <rtems_region_get_segment+0xea> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
509f4: 2039 0007 65ac movel 765ac <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
509fa: 5280 addql #1,%d0 <== NOT EXECUTED
509fc: 23c0 0007 65ac movel %d0,765ac <_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();
50a02: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50a08: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
executing->Wait.queue = &the_region->Wait_queue;
50a0e: 200a movel %a2,%d0 <== NOT EXECUTED
50a10: 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;
50a16: 7201 moveq #1,%d1 <== NOT EXECUTED
50a18: 2740 0044 movel %d0,%a3@(68) <== NOT EXECUTED
executing->Wait.id = id;
executing->Wait.count = size;
50a1c: 2742 0024 movel %d2,%a3@(36) <== NOT EXECUTED
*/
_Thread_Disable_dispatch();
_RTEMS_Unlock_allocator();
executing->Wait.queue = &the_region->Wait_queue;
executing->Wait.id = id;
50a20: 2743 0020 movel %d3,%a3@(32) <== NOT EXECUTED
executing->Wait.count = size;
executing->Wait.return_argument = segment;
50a24: 274c 0028 movel %a4,%a3@(40) <== NOT EXECUTED
50a28: 2541 0040 movel %d1,%a2@(64) <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_region->Wait_queue );
_Thread_queue_Enqueue( &the_region->Wait_queue, timeout );
50a2c: 4879 0005 562c pea 5562c <_Thread_queue_Timeout> <== NOT EXECUTED
50a32: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
50a36: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50a38: 4eb9 0005 5318 jsr 55318 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
50a3e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return (rtems_status_code) executing->Wait.return_code;
50a44: 242b 0034 movel %a3@(52),%d2 <== NOT EXECUTED
50a48: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50a4c: 6020 bras 50a6e <rtems_region_get_segment+0x102> <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
50a4e: 7404 moveq #4,%d2 <== NOT EXECUTED
50a50: 6006 bras 50a58 <rtems_region_get_segment+0xec> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( size > the_region->maximum_segment_size )
return_status = RTEMS_INVALID_SIZE;
50a52: 7408 moveq #8,%d2 <== NOT EXECUTED
50a54: 6002 bras 50a58 <rtems_region_get_segment+0xec> <== 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 ) ) {
return_status = RTEMS_UNSATISFIED;
50a56: 740d moveq #13,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
50a58: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50a5e: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
50a64: 588f addql #4,%sp <== NOT EXECUTED
50a66: 6006 bras 50a6e <rtems_region_get_segment+0x102> <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
void *the_segment;
if ( !segment )
return RTEMS_INVALID_ADDRESS;
50a68: 7409 moveq #9,%d2 <== NOT EXECUTED
50a6a: 6002 bras 50a6e <rtems_region_get_segment+0x102> <== NOT EXECUTED
*segment = NULL;
if ( size == 0 )
return RTEMS_INVALID_SIZE;
50a6c: 7408 moveq #8,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
50a6e: 2002 movel %d2,%d0 <== NOT EXECUTED
50a70: 4cee 1c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a4 <== NOT EXECUTED
50a76: 4e5e unlk %fp <== NOT EXECUTED
...
00050a7c <rtems_region_get_segment_size>:
rtems_status_code rtems_region_get_segment_size(
rtems_id id,
void *segment,
uintptr_t *size
)
{
50a7c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
50a80: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50a82: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
50a86: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50a88: 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 )
50a8c: 6768 beqs 50af6 <rtems_region_get_segment_size+0x7a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
50a8e: 4a83 tstl %d3 <== NOT EXECUTED
50a90: 6764 beqs 50af6 <rtems_region_get_segment_size+0x7a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
50a92: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50a98: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
50a9e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
50aa2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50aa6: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
50aac: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
50ab2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
50ab6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50aba: 6708 beqs 50ac4 <rtems_region_get_segment_size+0x48><== NOT EXECUTED
50abc: 7001 moveq #1,%d0 <== NOT EXECUTED
50abe: b081 cmpl %d1,%d0 <== NOT EXECUTED
50ac0: 661a bnes 50adc <rtems_region_get_segment_size+0x60><== NOT EXECUTED
50ac2: 601c bras 50ae0 <rtems_region_get_segment_size+0x64><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
50ac4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50ac6: 2040 moveal %d0,%a0 <== NOT EXECUTED
50ac8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50aca: 4868 0068 pea %a0@(104) <== NOT EXECUTED
50ace: 4eb9 0005 3e20 jsr 53e20 <_Heap_Size_of_alloc_area> <== NOT EXECUTED
50ad4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
50ad8: 4a00 tstb %d0 <== NOT EXECUTED
50ada: 6708 beqs 50ae4 <rtems_region_get_segment_size+0x68><== NOT EXECUTED
void *segment,
uintptr_t *size
)
{
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
50adc: 4282 clrl %d2 <== NOT EXECUTED
50ade: 6006 bras 50ae6 <rtems_region_get_segment_size+0x6a><== NOT EXECUTED
case OBJECTS_REMOTE: /* this error cannot be returned */
break;
#endif
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
50ae0: 7404 moveq #4,%d2 <== NOT EXECUTED
50ae2: 6002 bras 50ae6 <rtems_region_get_segment_size+0x6a><== 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;
50ae4: 7409 moveq #9,%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
50ae6: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50aec: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
50af2: 588f addql #4,%sp <== NOT EXECUTED
50af4: 6002 bras 50af8 <rtems_region_get_segment_size+0x7c><== NOT EXECUTED
if ( !segment )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
50af6: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
50af8: 2002 movel %d2,%d0 <== NOT EXECUTED
50afa: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
50afe: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
50b02: 4e5e unlk %fp <== NOT EXECUTED
...
00050b08 <rtems_region_ident>:
rtems_status_code rtems_region_ident(
rtems_name name,
rtems_id *id
)
{
50b08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
50b0c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50b10: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
50b16: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50b1a: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
50b20: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
50b26: 41f9 0006 f980 lea 6f980 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
50b2c: 4e5e unlk %fp <== NOT EXECUTED
50b2e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00050b34 <rtems_region_resize_segment>:
rtems_id id,
void *segment,
uintptr_t size,
uintptr_t *old_size
)
{
50b34: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
50b38: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
50b3c: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED
uintptr_t osize;
rtems_status_code return_status;
Heap_Resize_status status;
register Region_Control *the_region;
if ( !old_size )
50b40: 4a8b tstl %a3 <== NOT EXECUTED
50b42: 6700 008e beqw 50bd2 <rtems_region_resize_segment+0x9e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
50b46: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50b4c: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
50b52: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
50b56: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50b5a: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
50b60: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
50b66: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50b6a: 2440 moveal %d0,%a2 <== NOT EXECUTED
50b6c: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
50b70: 664e bnes 50bc0 <rtems_region_resize_segment+0x8c><== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 7 );
status = _Heap_Resize_block(
50b72: 486e fffc pea %fp@(-4) <== NOT EXECUTED
50b76: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
50b7a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
50b7e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50b82: 486a 0068 pea %a2@(104) <== NOT EXECUTED
50b86: 4eb9 0005 3d48 jsr 53d48 <_Heap_Resize_block> <== NOT EXECUTED
segment,
(uint32_t) size,
&osize,
&avail_size
);
*old_size = (uint32_t) osize;
50b8c: 26ae fff4 movel %fp@(-12),%a3@ <== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 7 );
status = _Heap_Resize_block(
50b90: 2400 movel %d0,%d2 <== NOT EXECUTED
);
*old_size = (uint32_t) osize;
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
50b92: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
50b96: 660e bnes 50ba6 <rtems_region_resize_segment+0x72><== NOT EXECUTED
_Region_Process_queue( the_region ); /* unlocks allocator */
50b98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50b9a: 4eb9 0005 8048 jsr 58048 <_Region_Process_queue> <== NOT EXECUTED
50ba0: 588f addql #4,%sp <== NOT EXECUTED
else
_RTEMS_Unlock_allocator();
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
50ba2: 4280 clrl %d0 <== NOT EXECUTED
50ba4: 602e bras 50bd4 <rtems_region_resize_segment+0xa0><== NOT EXECUTED
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
_Region_Process_queue( the_region ); /* unlocks allocator */
else
_RTEMS_Unlock_allocator();
50ba6: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50bac: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
50bb2: 588f addql #4,%sp <== NOT EXECUTED
50bb4: 7001 moveq #1,%d0 <== NOT EXECUTED
50bb6: b082 cmpl %d2,%d0 <== NOT EXECUTED
50bb8: 6618 bnes 50bd2 <rtems_region_resize_segment+0x9e><== NOT EXECUTED
return RTEMS_UNSATISFIED;
50bba: 103c 000d moveb #13,%d0 <== NOT EXECUTED
50bbe: 6014 bras 50bd4 <rtems_region_resize_segment+0xa0><== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
50bc0: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50bc6: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
50bcc: 588f addql #4,%sp <== NOT EXECUTED
50bce: 7004 moveq #4,%d0 <== NOT EXECUTED
50bd0: 6002 bras 50bd4 <rtems_region_resize_segment+0xa0><== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
return RTEMS_UNSATISFIED;
return RTEMS_INVALID_ADDRESS;
50bd2: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
50bd4: 4cee 0c04 ffe8 moveml %fp@(-24),%d2/%a2-%a3 <== NOT EXECUTED
50bda: 4e5e unlk %fp <== NOT EXECUTED
...
00050be0 <rtems_region_return_segment>:
rtems_status_code rtems_region_return_segment(
rtems_id id,
void *segment
)
{
50be0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
50be4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
uint32_t size;
#endif
int status;
register Region_Control *the_region;
_RTEMS_Lock_allocator();
50be6: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50bec: 4eb9 0005 29b0 jsr 529b0 <_API_Mutex_Lock> <== NOT EXECUTED
50bf2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
50bf6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50bfa: 4879 0007 64b6 pea 764b6 <_Region_Information> <== NOT EXECUTED
50c00: 4eb9 0005 43a4 jsr 543a4 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
50c06: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
50c0a: 2440 moveal %d0,%a2 <== NOT EXECUTED
50c0c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
50c10: 6626 bnes 50c38 <rtems_region_return_segment+0x58><== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Region_Free_segment (
Region_Control *the_region,
void *the_segment
)
{
return _Heap_Free( &the_region->Memory, the_segment );
50c12: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50c16: 486a 0068 pea %a2@(104) <== NOT EXECUTED
50c1a: 4eb9 0005 380c jsr 5380c <_Heap_Free> <== NOT EXECUTED
#endif
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
50c20: 508f addql #8,%sp <== NOT EXECUTED
50c22: 4a00 tstb %d0 <== NOT EXECUTED
50c24: 6718 beqs 50c3e <rtems_region_return_segment+0x5e><== NOT EXECUTED
return_status = RTEMS_INVALID_ADDRESS;
else {
the_region->number_of_used_blocks -= 1;
50c26: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED
_Region_Process_queue(the_region); /* unlocks allocator */
50c2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
50c2c: 95ca subal %a2,%a2 <== NOT EXECUTED
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
else {
the_region->number_of_used_blocks -= 1;
_Region_Process_queue(the_region); /* unlocks allocator */
50c2e: 4eb9 0005 8048 jsr 58048 <_Region_Process_queue> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
50c34: 588f addql #4,%sp <== NOT EXECUTED
50c36: 6018 bras 50c50 <rtems_region_return_segment+0x70><== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
50c38: 347c 0004 moveaw #4,%a2 <== NOT EXECUTED
50c3c: 6004 bras 50c42 <rtems_region_return_segment+0x62><== NOT EXECUTED
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
50c3e: 347c 0009 moveaw #9,%a2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
50c42: 2f39 0007 666c movel 7666c <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
50c48: 4eb9 0005 2a10 jsr 52a10 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
50c4e: 588f addql #4,%sp <== NOT EXECUTED
}
50c50: 200a movel %a2,%d0 <== NOT EXECUTED
50c52: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
50c56: 4e5e unlk %fp <== NOT EXECUTED
...
000453bc <rtems_semaphore_create>:
uint32_t count,
rtems_attribute attribute_set,
rtems_task_priority priority_ceiling,
rtems_id *id
)
{
453bc: 4e56 ffd0 linkw %fp,#-48
453c0: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
453c4: 2a2e 0008 movel %fp@(8),%d5
453c8: 262e 000c movel %fp@(12),%d3
453cc: 242e 0010 movel %fp@(16),%d2
453d0: 266e 0018 moveal %fp@(24),%a3
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 ) )
453d4: 4a85 tstl %d5
453d6: 6700 0166 beqw 4553e <rtems_semaphore_create+0x182>
return RTEMS_INVALID_NAME;
if ( !id )
453da: 4a8b tstl %a3
453dc: 6700 0164 beqw 45542 <rtems_semaphore_create+0x186>
* id - semaphore id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_semaphore_create(
453e0: 2002 movel %d2,%d0
453e2: 0280 0000 00c0 andil #192,%d0
return RTEMS_NOT_DEFINED;
} else
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
453e8: 671c beqs 45406 <rtems_semaphore_create+0x4a>
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
453ea: 7230 moveq #48,%d1
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
453ec: 7810 moveq #16,%d4
453ee: c282 andl %d2,%d1
453f0: b881 cmpl %d1,%d4
453f2: 6600 0152 bnew 45546 <rtems_semaphore_create+0x18a>
453f6: 44c2 movew %d2,%ccr
453f8: 6600 014c bnew 45546 <rtems_semaphore_create+0x18a>
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
453fc: 0c80 0000 00c0 cmpil #192,%d0
45402: 6700 0142 beqw 45546 <rtems_semaphore_create+0x18a>
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
45406: 7830 moveq #48,%d4
45408: c882 andl %d2,%d4
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
4540a: 6708 beqs 45414 <rtems_semaphore_create+0x58>
4540c: 7001 moveq #1,%d0
4540e: b083 cmpl %d3,%d0
45410: 6500 0138 bcsw 4554a <rtems_semaphore_create+0x18e>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45414: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
4541a: 5280 addql #1,%d0
4541c: 23c0 0005 db08 movel %d0,5db08 <_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 );
45422: 4879 0005 da4c pea 5da4c <_Semaphore_Information>
45428: 4eb9 0004 6868 jsr 46868 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
4542e: 588f addql #4,%sp
45430: 2440 moveal %d0,%a2
45432: 4a80 tstl %d0
45434: 660c bnes 45442 <rtems_semaphore_create+0x86>
_Thread_Enable_dispatch();
45436: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return RTEMS_TOO_MANY;
4543c: 7005 moveq #5,%d0
4543e: 6000 010c braw 4554c <rtems_semaphore_create+0x190>
45442: 7004 moveq #4,%d0
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_semaphore->attribute_set = attribute_set;
45444: 2542 0010 movel %d2,%a2@(16)
45448: c082 andl %d2,%d0
/*
* Initialize it as a counting semaphore.
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
4544a: 4a84 tstl %d4
4544c: 6632 bnes 45480 <rtems_semaphore_create+0xc4>
* 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;
4544e: 4a80 tstl %d0
45450: 57c0 seq %d0
* 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(
45452: 2f03 movel %d3,%sp@-
45454: 486e fff8 pea %fp@(-8)
* 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;
45458: 49c0 extbl %d0
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
4545a: 72ff moveq #-1,%d1
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
4545c: 5280 addql #1,%d0
* 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(
4545e: 486a 0014 pea %a2@(20)
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
45462: 2d41 fff8 movel %d1,%fp@(-8)
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
45466: 2d40 fffc movel %d0,%fp@(-4)
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;
4546a: 42ae ffea clrl %fp@(-22)
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
4546e: 42ae fff4 clrl %fp@(-12)
_CORE_semaphore_Initialize(
45472: 4eb9 0004 62f4 jsr 462f4 <_CORE_semaphore_Initialize>
45478: 4fef 000c lea %sp@(12),%sp
4547c: 6000 009e braw 4551c <rtems_semaphore_create+0x160>
/*
* 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;
45480: 4a80 tstl %d0
45482: 57c0 seq %d0
45484: 49c0 extbl %d0
45486: 5280 addql #1,%d0
45488: 2d40 fff0 movel %d0,%fp@(-16)
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
4548c: 7010 moveq #16,%d0
4548e: b084 cmpl %d4,%d0
45490: 6640 bnes 454d2 <rtems_semaphore_create+0x116>
the_mutex_attr.priority_ceiling = priority_ceiling;
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
45492: 42ae ffea clrl %fp@(-22)
the_mutex_attr.only_owner_release = false;
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
45496: 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;
45498: 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;
4549a: 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;
454a0: 1d41 ffee moveb %d1,%fp@(-18)
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
454a4: b8ae fff0 cmpl %fp@(-16),%d4
454a8: 6634 bnes 454de <rtems_semaphore_create+0x122>
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
454aa: 0802 0006 btst #6,%d2
454ae: 6710 beqs 454c0 <rtems_semaphore_create+0x104> <== NEVER TAKEN
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
454b0: 103c 0002 moveb #2,%d0
the_mutex_attr.only_owner_release = true;
454b4: 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;
454b6: 2d40 fff0 movel %d0,%fp@(-16)
the_mutex_attr.only_owner_release = true;
454ba: 1d41 ffee moveb %d1,%fp@(-18)
454be: 601e bras 454de <rtems_semaphore_create+0x122>
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
454c0: 4a02 tstb %d2 <== NOT EXECUTED
454c2: 6c1a bges 454de <rtems_semaphore_create+0x122> <== NOT EXECUTED
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
454c4: 7803 moveq #3,%d4 <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
454c6: 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;
454c8: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
454cc: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED
454d0: 600c bras 454de <rtems_semaphore_create+0x122> <== NOT EXECUTED
}
}
} else /* must be simple binary semaphore */ {
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS;
454d2: 7202 moveq #2,%d1
the_mutex_attr.only_owner_release = false;
454d4: 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;
454d6: 2d41 ffea movel %d1,%fp@(-22)
the_mutex_attr.only_owner_release = false;
454da: 1d44 ffee moveb %d4,%fp@(-18)
}
mutex_status = _CORE_mutex_Initialize(
454de: 7001 moveq #1,%d0
454e0: b083 cmpl %d3,%d0
454e2: 57c0 seq %d0
454e4: 49c0 extbl %d0
454e6: 4480 negl %d0
454e8: 2f00 movel %d0,%sp@-
454ea: 486e ffea pea %fp@(-22)
454ee: 486a 0014 pea %a2@(20)
454f2: 4eb9 0004 6054 jsr 46054 <_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 ) {
454f8: 4fef 000c lea %sp@(12),%sp
454fc: 7206 moveq #6,%d1
454fe: b280 cmpl %d0,%d1
45500: 661a bnes 4551c <rtems_semaphore_create+0x160> <== ALWAYS TAKEN
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
45502: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45504: 4879 0005 da4c pea 5da4c <_Semaphore_Information> <== NOT EXECUTED
4550a: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free> <== NOT EXECUTED
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
45510: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
45516: 508f addql #8,%sp <== NOT EXECUTED
45518: 7013 moveq #19,%d0 <== NOT EXECUTED
4551a: 6030 bras 4554c <rtems_semaphore_create+0x190> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4551c: 202a 0008 movel %a2@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
45520: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45522: 2079 0005 da64 moveal 5da64 <_Semaphore_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
45528: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4552a: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4552e: 2545 000c movel %d5,%a2@(12)
&_Semaphore_Information,
&the_semaphore->Object,
(Objects_Name) name
);
*id = the_semaphore->Object.id;
45532: 2680 movel %d0,%a3@
the_semaphore->Object.id,
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
45534: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4553a: 4280 clrl %d0
4553c: 600e bras 4554c <rtems_semaphore_create+0x190>
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;
4553e: 7003 moveq #3,%d0 <== NOT EXECUTED
45540: 600a bras 4554c <rtems_semaphore_create+0x190> <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
45542: 7009 moveq #9,%d0 <== NOT EXECUTED
45544: 6006 bras 4554c <rtems_semaphore_create+0x190> <== NOT EXECUTED
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
45546: 700b moveq #11,%d0 <== NOT EXECUTED
45548: 6002 bras 4554c <rtems_semaphore_create+0x190> <== NOT EXECUTED
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
return RTEMS_INVALID_NUMBER;
4554a: 700a moveq #10,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4554c: 4cee 0c3c ffd0 moveml %fp@(-48),%d2-%d5/%a2-%a3
45552: 4e5e unlk %fp
...
00045558 <rtems_semaphore_delete>:
#endif
rtems_status_code rtems_semaphore_delete(
rtems_id id
)
{
45558: 4e56 fffc linkw %fp,#-4
4555c: 2f0a movel %a2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
4555e: 486e fffc pea %fp@(-4)
45562: 2f2e 0008 movel %fp@(8),%sp@-
45566: 4879 0005 da4c pea 5da4c <_Semaphore_Information>
4556c: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
45572: 4fef 000c lea %sp@(12),%sp
45576: 2440 moveal %d0,%a2
45578: 4aae fffc tstl %fp@(-4)
4557c: 666c bnes 455ea <rtems_semaphore_delete+0x92> <== NEVER TAKEN
4557e: 7030 moveq #48,%d0
45580: c0aa 0010 andl %a2@(16),%d0
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
45584: 6728 beqs 455ae <rtems_semaphore_delete+0x56>
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
45586: 4aaa 0062 tstl %a2@(98)
4558a: 6610 bnes 4559c <rtems_semaphore_delete+0x44>
4558c: 7220 moveq #32,%d1
4558e: b280 cmpl %d0,%d1
45590: 670a beqs 4559c <rtems_semaphore_delete+0x44> <== ALWAYS TAKEN
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
45592: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
45598: 700c moveq #12,%d0 <== NOT EXECUTED
4559a: 6050 bras 455ec <rtems_semaphore_delete+0x94> <== NOT EXECUTED
}
_CORE_mutex_Flush(
4559c: 4878 0004 pea 4 <CONTEXT_ARG>
455a0: 42a7 clrl %sp@-
455a2: 486a 0014 pea %a2@(20)
455a6: 4eb9 0004 6048 jsr 46048 <_CORE_mutex_Flush>
455ac: 6010 bras 455be <rtems_semaphore_delete+0x66>
&the_semaphore->Core_control.mutex,
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_MUTEX_WAS_DELETED
);
} else {
_CORE_semaphore_Flush(
455ae: 4878 0002 pea 2 <DOUBLE_FLOAT>
455b2: 42a7 clrl %sp@-
455b4: 486a 0014 pea %a2@(20)
455b8: 4eb9 0004 62e8 jsr 462e8 <_CORE_semaphore_Flush>
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
455be: 508f addql #8,%sp
455c0: 2e8a movel %a2,%sp@
455c2: 4879 0005 da4c pea 5da4c <_Semaphore_Information>
455c8: 4eb9 0004 68e4 jsr 468e4 <_Objects_Close>
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
455ce: 2f0a movel %a2,%sp@-
455d0: 4879 0005 da4c pea 5da4c <_Semaphore_Information>
455d6: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
455dc: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
455e2: 4fef 0010 lea %sp@(16),%sp
455e6: 4280 clrl %d0
455e8: 6002 bras 455ec <rtems_semaphore_delete+0x94>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
455ea: 7004 moveq #4,%d0 <== NOT EXECUTED
}
455ec: 246e fff8 moveal %fp@(-8),%a2
455f0: 4e5e unlk %fp <== NOT EXECUTED
0004dc9c <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
4dc9c: 4e56 fffc linkw %fp,#-4
4dca0: 486e fffc pea %fp@(-4)
4dca4: 2f2e 0008 movel %fp@(8),%sp@-
4dca8: 4879 0006 10e4 pea 610e4 <_Semaphore_Information>
4dcae: 4eb9 0004 7cc4 jsr 47cc4 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
4dcb4: 4fef 000c lea %sp@(12),%sp
4dcb8: 4aae fffc tstl %fp@(-4)
4dcbc: 663c bnes 4dcfa <rtems_semaphore_flush+0x5e> <== NEVER TAKEN
4dcbe: 2040 moveal %d0,%a0
4dcc0: 7230 moveq #48,%d1
4dcc2: 0680 0000 0014 addil #20,%d0
4dcc8: c2a8 0010 andl %a0@(16),%d1
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
4dccc: 6710 beqs 4dcde <rtems_semaphore_flush+0x42> <== NEVER TAKEN
_CORE_mutex_Flush(
4dcce: 4878 0001 pea 1 <ADD>
4dcd2: 42a7 clrl %sp@-
4dcd4: 2f00 movel %d0,%sp@-
4dcd6: 4eb9 0004 704c jsr 4704c <_CORE_mutex_Flush>
4dcdc: 600e bras 4dcec <rtems_semaphore_flush+0x50>
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
4dcde: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4dce2: 42a7 clrl %sp@- <== NOT EXECUTED
4dce4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4dce6: 4eb9 0004 72ec jsr 472ec <_CORE_semaphore_Flush> <== NOT EXECUTED
4dcec: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
4dcf0: 4eb9 0004 87b2 jsr 487b2 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4dcf6: 4280 clrl %d0
4dcf8: 6002 bras 4dcfc <rtems_semaphore_flush+0x60>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4dcfa: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4dcfc: 4e5e unlk %fp <== NOT EXECUTED
00050ef8 <rtems_semaphore_ident>:
rtems_status_code rtems_semaphore_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
50ef8: 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 );
50efc: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
50f00: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50f04: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
50f08: 4879 0007 64f0 pea 764f0 <_Semaphore_Information> <== NOT EXECUTED
50f0e: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
}
50f14: 41f9 0006 f980 lea 6f980 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
50f1a: 4e5e unlk %fp <== NOT EXECUTED
50f1c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
000455f4 <rtems_semaphore_obtain>:
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
rtems_option option_set,
rtems_interval timeout
)
{
455f4: 4e56 ffec linkw %fp,#-20
455f8: 48d7 001c moveml %d2-%d4,%sp@
Objects_Locations *location,
ISR_Level *level
)
{
return (Semaphore_Control *)
_Objects_Get_isr_disable( &_Semaphore_Information, id, location, level );
455fc: 486e fff8 pea %fp@(-8)
45600: 486e fffc pea %fp@(-4)
45604: 242e 0008 movel %fp@(8),%d2
45608: 2f02 movel %d2,%sp@-
4560a: 4879 0005 da4c pea 5da4c <_Semaphore_Information>
45610: 282e 000c movel %fp@(12),%d4
45614: 262e 0010 movel %fp@(16),%d3
45618: 4eb9 0004 6c68 jsr 46c68 <_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 ) {
4561e: 4fef 0010 lea %sp@(16),%sp
45622: 2040 moveal %d0,%a0
45624: 4aae fffc tstl %fp@(-4)
45628: 6600 00c4 bnew 456ee <rtems_semaphore_obtain+0xfa>
4562c: 7030 moveq #48,%d0
4562e: c0a8 0010 andl %a0@(16),%d0
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
45632: 6732 beqs 45666 <rtems_semaphore_obtain+0x72> <== NEVER TAKEN
_CORE_mutex_Seize(
45634: 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;
45638: 7001 moveq #1,%d0
4563a: c880 andl %d0,%d4
4563c: 2f03 movel %d3,%sp@-
4563e: b980 eorl %d4,%d0
45640: 2f00 movel %d0,%sp@-
45642: 2f02 movel %d2,%sp@-
45644: 4868 0014 pea %a0@(20)
45648: 4eb9 0004 6160 jsr 46160 <_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 );
4564e: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
45654: 2f28 0034 movel %a0@(52),%sp@-
45658: 4eb9 0004 5780 jsr 45780 <_Semaphore_Translate_core_mutex_return_code>
4565e: 4fef 0018 lea %sp@(24),%sp
45662: 6000 008c braw 456f0 <rtems_semaphore_obtain+0xfc>
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
45666: 2279 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
4566c: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
45670: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
45674: 4a80 tstl %d0 <== NOT EXECUTED
45676: 670e beqs 45686 <rtems_semaphore_obtain+0x92> <== NOT EXECUTED
the_semaphore->count -= 1;
45678: 5380 subql #1,%d0 <== NOT EXECUTED
4567a: 2140 005c movel %d0,%a0@(92) <== NOT EXECUTED
_ISR_Enable( *level_p );
4567e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
45682: 46c0 movew %d0,%sr <== NOT EXECUTED
45684: 6054 bras 456da <rtems_semaphore_obtain+0xe6> <== NOT EXECUTED
return;
}
if ( !wait ) {
45686: 0804 0000 btst #0,%d4 <== NOT EXECUTED
4568a: 670e beqs 4569a <rtems_semaphore_obtain+0xa6> <== NOT EXECUTED
_ISR_Enable( *level_p );
4568c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
45690: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
45692: 7001 moveq #1,%d0 <== NOT EXECUTED
45694: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
45698: 6040 bras 456da <rtems_semaphore_obtain+0xe6> <== NOT EXECUTED
4569a: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
456a0: 5280 addql #1,%d0 <== NOT EXECUTED
456a2: 23c0 0005 db08 movel %d0,5db08 <_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;
456a8: 7001 moveq #1,%d0 <== NOT EXECUTED
456aa: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
456ae: 41e8 0014 lea %a0@(20),%a0 <== NOT EXECUTED
executing->Wait.id = id;
456b2: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
456b6: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
_ISR_Enable( *level_p );
456ba: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
456be: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
456c0: 4879 0004 7f10 pea 47f10 <_Thread_queue_Timeout> <== NOT EXECUTED
456c6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
456c8: 2f08 movel %a0,%sp@- <== NOT EXECUTED
456ca: 4eb9 0004 7bfc jsr 47bfc <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
456d0: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch> <== NOT EXECUTED
456d6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
456da: 2079 0005 df92 moveal 5df92 <_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(
456e0: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
456e4: 4eb9 0004 5796 jsr 45796 <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
456ea: 588f addql #4,%sp <== NOT EXECUTED
456ec: 6002 bras 456f0 <rtems_semaphore_obtain+0xfc> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
456ee: 7004 moveq #4,%d0 <== NOT EXECUTED
}
456f0: 4cee 001c ffec moveml %fp@(-20),%d2-%d4
456f6: 4e5e unlk %fp
...
000456fc <rtems_semaphore_release>:
#endif
rtems_status_code rtems_semaphore_release(
rtems_id id
)
{
456fc: 4e56 fffc linkw %fp,#-4
45700: 2f0a movel %a2,%sp@-
45702: 2f02 movel %d2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
45704: 486e fffc pea %fp@(-4)
45708: 242e 0008 movel %fp@(8),%d2
4570c: 2f02 movel %d2,%sp@-
4570e: 4879 0005 da4c pea 5da4c <_Semaphore_Information>
45714: 4eb9 0004 6cc0 jsr 46cc0 <_Objects_Get>
Objects_Locations location;
CORE_mutex_Status mutex_status;
CORE_semaphore_Status semaphore_status;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
4571a: 4fef 000c lea %sp@(12),%sp
4571e: 4aae fffc tstl %fp@(-4)
45722: 664e bnes 45772 <rtems_semaphore_release+0x76> <== NEVER TAKEN
45724: 2040 moveal %d0,%a0
45726: 7230 moveq #48,%d1
45728: 0680 0000 0014 addil #20,%d0
4572e: 45f9 0004 779a lea 4779a <_Thread_Enable_dispatch>,%a2
45734: c2a8 0010 andl %a0@(16),%d1
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
45738: 671a beqs 45754 <rtems_semaphore_release+0x58> <== NEVER TAKEN
mutex_status = _CORE_mutex_Surrender(
4573a: 42a7 clrl %sp@-
4573c: 2f02 movel %d2,%sp@-
4573e: 2f00 movel %d0,%sp@-
45740: 4eb9 0004 6204 jsr 46204 <_CORE_mutex_Surrender>
45746: 2400 movel %d0,%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
45748: 4e92 jsr %a2@
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
4574a: 2f02 movel %d2,%sp@-
4574c: 4eb9 0004 5780 jsr 45780 <_Semaphore_Translate_core_mutex_return_code>
45752: 6018 bras 4576c <rtems_semaphore_release+0x70>
} else {
semaphore_status = _CORE_semaphore_Surrender(
45754: 42a7 clrl %sp@- <== NOT EXECUTED
45756: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45758: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4575a: 4eb9 0004 633c jsr 4633c <_CORE_semaphore_Surrender> <== NOT EXECUTED
45760: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
45762: 4e92 jsr %a2@ <== NOT EXECUTED
return
45764: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45766: 4eb9 0004 5796 jsr 45796 <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
4576c: 4fef 0010 lea %sp@(16),%sp
45770: 6002 bras 45774 <rtems_semaphore_release+0x78>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45772: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45774: 242e fff4 movel %fp@(-12),%d2
45778: 246e fff8 moveal %fp@(-8),%a2
4577c: 4e5e unlk %fp <== NOT EXECUTED
00045c38 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
45c38: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
45c3a: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
45c3e: b0b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d0
45c44: 6618 bnes 45c5e <rtems_shutdown_executive+0x26>
45c46: 103c 0004 moveb #4,%d0
* 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 );
45c4a: 4879 0005 dad4 pea 5dad4 <_Thread_BSP_context>
45c50: 23c0 0005 dc74 movel %d0,5dc74 <_System_state_Current>
45c56: 4eb9 0004 8812 jsr 48812 <_CPU_Context_Restart_self>
45c5c: 588f addql #4,%sp <== NOT EXECUTED
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
_Thread_Stop_multitasking();
}
_Internal_error_Occurred(
45c5e: 4878 0014 pea 14 <OPER2>
45c62: 4878 0001 pea 1 <ADD>
45c66: 42a7 clrl %sp@-
45c68: 4eb9 0004 67b4 jsr 467b4 <_Internal_error_Occurred>
...
00046564 <rtems_signal_catch>:
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
46564: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46568: 2239 0005 ef30 movel 5ef30 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
4656e: 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 ];
46570: 2079 0005 f3ba moveal 5f3ba <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
46576: 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 ];
4657a: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED
4657e: 23c1 0005 ef30 movel %d1,5ef30 <_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 ) ) {
46584: 4a80 tstl %d0 <== NOT EXECUTED
46586: 670c beqs 46594 <rtems_signal_catch+0x30> <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
46588: 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;
4658c: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED
46592: 601a bras 465ae <rtems_signal_catch+0x4a> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
information->handler = NULL;
46594: 42a8 000a clrl %a0@(10) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
46598: 4200 clrb %d0 <== NOT EXECUTED
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
4659a: 42a8 000e clrl %a0@(14) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4659e: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
information->signals_posted = 0;
465a2: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED
information->signals_pending = 0;
465a6: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED
information->nest_level = 0;
465aa: 42a8 001a clrl %a0@(26) <== NOT EXECUTED
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
465ae: 4eb9 0004 87ee jsr 487ee <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
465b4: 4280 clrl %d0 <== NOT EXECUTED
465b6: 4e5e unlk %fp <== NOT EXECUTED
...
000510dc <rtems_signal_send>:
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
)
{
510dc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
510e0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
510e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
510e4: 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 )
510e8: 677a beqs 51164 <rtems_signal_send+0x88> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
the_thread = _Thread_Get( id, &location );
510ea: 486e fffc pea %fp@(-4) <== NOT EXECUTED
510ee: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
510f2: 4eb9 0005 4edc jsr 54edc <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
510f8: 508f addql #8,%sp <== NOT EXECUTED
510fa: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
510fe: 6668 bnes 51168 <rtems_signal_send+0x8c> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
51100: 2240 moveal %d0,%a1 <== NOT EXECUTED
51102: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED
asr = &api->Signal;
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
51106: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED
5110a: 674e beqs 5115a <rtems_signal_send+0x7e> <== NOT EXECUTED
if ( asr->is_enabled ) {
5110c: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED
51110: 672c beqs 5113e <rtems_signal_send+0x62> <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
51112: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
51118: 40c3 movew %sr,%d3 <== NOT EXECUTED
5111a: 8283 orl %d3,%d1 <== NOT EXECUTED
5111c: 46c1 movew %d1,%sr <== NOT EXECUTED
*signal_set |= signals;
5111e: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED
_ISR_Enable( _level );
51122: 46c3 movew %d3,%sr <== NOT EXECUTED
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
51124: 4ab9 0007 6a3a tstl 76a3a <_Per_CPU_Information+0x8> <== NOT EXECUTED
5112a: 6724 beqs 51150 <rtems_signal_send+0x74> <== NOT EXECUTED
5112c: b0b9 0007 6a3e cmpl 76a3e <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
51132: 661c bnes 51150 <rtems_signal_send+0x74> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
51134: 7001 moveq #1,%d0 <== NOT EXECUTED
51136: 13c0 0007 6a4a moveb %d0,76a4a <_Per_CPU_Information+0x18> <== NOT EXECUTED
5113c: 6012 bras 51150 <rtems_signal_send+0x74> <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
5113e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
51144: 40c1 movew %sr,%d1 <== NOT EXECUTED
51146: 8081 orl %d1,%d0 <== NOT EXECUTED
51148: 46c0 movew %d0,%sr <== NOT EXECUTED
*signal_set |= signals;
5114a: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED
_ISR_Enable( _level );
5114e: 46c1 movew %d1,%sr <== NOT EXECUTED
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
51150: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
51156: 4280 clrl %d0 <== NOT EXECUTED
51158: 6010 bras 5116a <rtems_signal_send+0x8e> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
5115a: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
51160: 700b moveq #11,%d0 <== NOT EXECUTED
51162: 6006 bras 5116a <rtems_signal_send+0x8e> <== NOT EXECUTED
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
51164: 700a moveq #10,%d0 <== NOT EXECUTED
51166: 6002 bras 5116a <rtems_signal_send+0x8e> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51168: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5116a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5116e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
51172: 4e5e unlk %fp <== NOT EXECUTED
...
000424ea <rtems_stack_checker_begin_extension>:
* rtems_stack_checker_Begin_extension
*/
void rtems_stack_checker_begin_extension(
Thread_Control *the_thread
)
{
424ea: 4e56 0000 linkw %fp,#0
424ee: 206e 0008 moveal %fp@(8),%a0
Stack_check_Control *the_pattern;
if ( the_thread->Object.id == 0 ) /* skip system tasks */
424f2: 4aa8 0008 tstl %a0@(8)
424f6: 671c beqs 42514 <rtems_stack_checker_begin_extension+0x2a><== NEVER TAKEN
return;
the_pattern = Stack_check_Get_pattern_area(&the_thread->Start.Initial_stack);
*the_pattern = Stack_check_Pattern;
424f8: 4878 0010 pea 10 <INVALID_OPERATION>
424fc: 4879 0006 03d4 pea 603d4 <Stack_check_Pattern>
42502: 2068 00b6 moveal %a0@(182),%a0
42506: 5088 addql #8,%a0
42508: 2f08 movel %a0,%sp@-
4250a: 4eb9 0004 f8cc jsr 4f8cc <memcpy>
42510: 4fef 000c lea %sp@(12),%sp
}
42514: 4e5e unlk %fp <== NOT EXECUTED
000424b6 <rtems_stack_checker_create_extension>:
*/
bool rtems_stack_checker_create_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *the_thread
)
{
424b6: 4e56 0000 linkw %fp,#0
424ba: 2f0a movel %a2,%sp@-
424bc: 246e 000c moveal %fp@(12),%a2
Stack_check_Initialize();
424c0: 4eb9 0004 243e jsr 4243e <Stack_check_Initialize>
if (the_thread)
424c6: 4a8a tstl %a2
424c8: 6716 beqs 424e0 <rtems_stack_checker_create_extension+0x2a><== NEVER TAKEN
Stack_check_Dope_stack(&the_thread->Start.Initial_stack);
424ca: 2f2a 00b2 movel %a2@(178),%sp@-
424ce: 4878 00a5 pea a5 <DBL_MANT_DIG+0x70>
424d2: 2f2a 00b6 movel %a2@(182),%sp@-
424d6: 4eb9 0004 f93c jsr 4f93c <memset>
424dc: 4fef 000c lea %sp@(12),%sp
return true;
}
424e0: 246e fffc moveal %fp@(-4),%a2
424e4: 4e5e unlk %fp
424e6: 7001 moveq #1,%d0 <== NOT EXECUTED
00042626 <rtems_stack_checker_is_blown>:
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
42626: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack;
4262a: 2279 0006 0a3a moveal 60a3a <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42630: 2069 00b6 moveal %a1@(182),%a0 <== NOT EXECUTED
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
{
42634: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
42636: b1ce cmpal %fp,%a0 <== NOT EXECUTED
42638: 620e bhis 42648 <rtems_stack_checker_is_blown+0x22><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
4263a: 2008 movel %a0,%d0 <== NOT EXECUTED
4263c: d0a9 00b2 addl %a1@(178),%d0 <== NOT EXECUTED
}
/*
* Check if blown
*/
bool rtems_stack_checker_is_blown( void )
42640: b08e cmpl %fp,%d0 <== NOT EXECUTED
42642: 54c2 scc %d2 <== NOT EXECUTED
42644: 4482 negl %d2 <== NOT EXECUTED
42646: 6002 bras 4264a <rtems_stack_checker_is_blown+0x24><== NOT EXECUTED
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
return false;
42648: 4202 clrb %d2 <== NOT EXECUTED
/*
* The stack checker must be initialized before the pattern is there
* to check.
*/
if ( Stack_check_Initialized ) {
4264a: 4ab9 0005 fbd0 tstl 5fbd0 <Stack_check_Initialized> <== NOT EXECUTED
42650: 6720 beqs 42672 <rtems_stack_checker_is_blown+0x4c><== NOT EXECUTED
pattern_ok = (!memcmp(
42652: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
42656: 4879 0006 03d4 pea 603d4 <Stack_check_Pattern> <== NOT EXECUTED
4265c: 4868 0008 pea %a0@(8) <== NOT EXECUTED
42660: 4eb9 0004 f84c jsr 4f84c <memcmp> <== NOT EXECUTED
42666: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4266a: 4a80 tstl %d0 <== NOT EXECUTED
4266c: 57c0 seq %d0 <== NOT EXECUTED
4266e: 4480 negl %d0 <== NOT EXECUTED
42670: 6002 bras 42674 <rtems_stack_checker_is_blown+0x4e><== 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;
42672: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Let's report as much as we can.
*/
if ( !sp_ok || !pattern_ok ) {
42674: 4a02 tstb %d2 <== NOT EXECUTED
42676: 6704 beqs 4267c <rtems_stack_checker_is_blown+0x56><== NOT EXECUTED
42678: 4a00 tstb %d0 <== NOT EXECUTED
4267a: 6614 bnes 42690 <rtems_stack_checker_is_blown+0x6a><== NOT EXECUTED
Stack_check_report_blown_task( _Thread_Executing, pattern_ok );
4267c: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
42682: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42684: 2f39 0006 0a3a movel 60a3a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4268a: 4eb9 0004 2518 jsr 42518 <Stack_check_report_blown_task> <== NOT EXECUTED
/*
* The Stack Pointer and the Pattern Area are OK so return false.
*/
return false;
}
42690: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
42694: 4e5e unlk %fp <== NOT EXECUTED
42696: 4200 clrb %d0 <== NOT EXECUTED
00042700 <rtems_stack_checker_report_usage>:
void rtems_stack_checker_report_usage( void )
{
42700: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_stack_checker_report_usage_with_plugin( NULL, printk_plugin );
42704: 4879 0004 41c0 pea 441c0 <printk_plugin> <== NOT EXECUTED
4270a: 42a7 clrl %sp@- <== NOT EXECUTED
4270c: 4eb9 0004 269a jsr 4269a <rtems_stack_checker_report_usage_with_plugin><== NOT EXECUTED
42712: 508f addql #8,%sp <== NOT EXECUTED
}
42714: 4e5e unlk %fp <== NOT EXECUTED
0004269a <rtems_stack_checker_report_usage_with_plugin>:
void rtems_stack_checker_report_usage_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
4269a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4269e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
426a0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
426a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
426a6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
if ( !print )
426aa: 4a8a tstl %a2 <== NOT EXECUTED
426ac: 6746 beqs 426f4 <rtems_stack_checker_report_usage_with_plugin+0x5a><== NOT EXECUTED
return;
print_context = context;
print_handler = print;
(*print)( context, "Stack usage by thread\n");
426ae: 4879 0005 d696 pea 5d696 <IntUartPollCallbacks.6370+0x13c> <== NOT EXECUTED
)
{
if ( !print )
return;
print_context = context;
426b4: 23c2 0005 fbc8 movel %d2,5fbc8 <print_context> <== NOT EXECUTED
print_handler = print;
(*print)( context, "Stack usage by thread\n");
426ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
{
if ( !print )
return;
print_context = context;
print_handler = print;
426bc: 23ca 0005 fbcc movel %a2,5fbcc <print_handler> <== NOT EXECUTED
(*print)( context, "Stack usage by thread\n");
426c2: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context,
426c4: 4879 0005 d6ad pea 5d6ad <IntUartPollCallbacks.6370+0x153> <== NOT EXECUTED
426ca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
426cc: 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 );
426ce: 4879 0004 231c pea 4231c <Stack_check_Dump_threads_usage> <== NOT EXECUTED
426d4: 4eb9 0004 8f0c jsr 48f0c <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);
426da: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
426de: 4eb9 0004 231c jsr 4231c <Stack_check_Dump_threads_usage> <== NOT EXECUTED
#endif
print_context = NULL;
print_handler = NULL;
426e4: 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;
426e8: 42b9 0005 fbc8 clrl 5fbc8 <print_context> <== NOT EXECUTED
print_handler = NULL;
426ee: 42b9 0005 fbcc clrl 5fbcc <print_handler> <== NOT EXECUTED
}
426f4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
426f8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
426fc: 4e5e unlk %fp <== NOT EXECUTED
000425be <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *heir __attribute__((unused))
)
{
425be: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
425c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
425c4: 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);
425c8: 222a 00b6 movel %a2@(182),%d1 <== NOT EXECUTED
425cc: 5081 addql #8,%d1 <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
425ce: 202a 00b6 movel %a2@(182),%d0 <== NOT EXECUTED
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running __attribute__((unused)),
Thread_Control *heir __attribute__((unused))
)
{
425d2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
)
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
425d4: b08e cmpl %fp,%d0 <== NOT EXECUTED
425d6: 620c bhis 425e4 <rtems_stack_checker_switch_extension+0x26><== NOT EXECUTED
return false;
}
if ( sp > (the_stack->area + the_stack->size) ) {
425d8: d0aa 00b2 addl %a2@(178),%d0 <== NOT EXECUTED
}
/*
* rtems_stack_checker_switch_extension
*/
void rtems_stack_checker_switch_extension(
425dc: b08e cmpl %fp,%d0 <== NOT EXECUTED
425de: 54c2 scc %d2 <== NOT EXECUTED
425e0: 4482 negl %d2 <== NOT EXECUTED
425e2: 6002 bras 425e6 <rtems_stack_checker_switch_extension+0x28><== NOT EXECUTED
{
#if defined(__GNUC__)
void *sp = __builtin_frame_address(0);
if ( sp < the_stack->area ) {
return false;
425e4: 4202 clrb %d2 <== 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,
425e6: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
425ea: 4879 0006 03d4 pea 603d4 <Stack_check_Pattern> <== NOT EXECUTED
425f0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
425f2: 4eb9 0004 f84c jsr 4f84c <memcmp> <== NOT EXECUTED
425f8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
425fc: 4a80 tstl %d0 <== NOT EXECUTED
425fe: 57c0 seq %d0 <== NOT EXECUTED
42600: 4480 negl %d0 <== NOT EXECUTED
(void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
if ( !sp_ok || !pattern_ok ) {
42602: 4a02 tstb %d2 <== NOT EXECUTED
42604: 6704 beqs 4260a <rtems_stack_checker_switch_extension+0x4c><== NOT EXECUTED
42606: 4a00 tstb %d0 <== NOT EXECUTED
42608: 6610 bnes 4261a <rtems_stack_checker_switch_extension+0x5c><== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
4260a: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
42610: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42612: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42614: 4eb9 0004 2518 jsr 42518 <Stack_check_report_blown_task> <== NOT EXECUTED
}
}
4261a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4261e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
42622: 4e5e unlk %fp <== NOT EXECUTED
00042468 <rtems_status_text>:
const char *rtems_status_text(
rtems_status_code status
)
{
42468: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return rtems_assoc_name_by_local(rtems_status_assoc, status);
4246c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
42470: 4879 0005 b07c pea 5b07c <rtems_status_assoc> <== NOT EXECUTED
42476: 4eb9 0004 9630 jsr 49630 <rtems_assoc_name_by_local> <== NOT EXECUTED
}
4247c: 4e5e unlk %fp <== NOT EXECUTED
0004b6e0 <rtems_string_to_double>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4b6e0: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4b6e4: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
4b6e8: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
4b6ec: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b6f0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4b6f4: 4a8a tstl %a2 <== NOT EXECUTED
4b6f6: 6768 beqs 4b760 <rtems_string_to_double+0x80> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b6f8: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
*n = 0;
4b6fe: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b700: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4b702: 4280 clrl %d0 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b704: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4b706: 2480 movel %d0,%a2@ <== NOT EXECUTED
4b708: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4b70c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b710: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b712: 4eb9 0005 0db6 jsr 50db6 <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 )
4b718: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4b71a: 2400 movel %d0,%d2 <== NOT EXECUTED
4b71c: 2601 movel %d1,%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 )
4b71e: 4a8b tstl %a3 <== NOT EXECUTED
4b720: 6704 beqs 4b726 <rtems_string_to_double+0x46> <== NOT EXECUTED
*endptr = end;
4b722: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4b726: b8ae fffc cmpl %fp@(-4),%d4 <== NOT EXECUTED
4b72a: 6738 beqs 4b764 <rtems_string_to_double+0x84> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4b72c: 4878 ffff pea ffffffff <LESS> <== NOT EXECUTED
4b730: 2f3c 7fef ffff movel #2146435071,%sp@- <== NOT EXECUTED
4b736: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b738: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b73a: 4eb9 0005 bee8 jsr 5bee8 <__gtdf2> <== NOT EXECUTED
4b740: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b744: 4a80 tstl %d0 <== NOT EXECUTED
4b746: 6f0e bles 4b756 <rtems_string_to_double+0x76> <== NOT EXECUTED
4b748: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b74e: 7222 moveq #34,%d1 <== NOT EXECUTED
4b750: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b752: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4b754: 6712 beqs 4b768 <rtems_string_to_double+0x88> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4b756: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4b758: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4b75a: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4b75e: 600a bras 4b76a <rtems_string_to_double+0x8a> <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b760: 7009 moveq #9,%d0 <== NOT EXECUTED
4b762: 6006 bras 4b76a <rtems_string_to_double+0x8a> <== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4b764: 700b moveq #11,%d0 <== NOT EXECUTED
4b766: 6002 bras 4b76a <rtems_string_to_double+0x8a> <== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4b768: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4b76a: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4b770: 4e5e unlk %fp <== NOT EXECUTED
0004b774 <rtems_string_to_float>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4b774: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b778: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4b77c: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4b780: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b784: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4b788: 4a8a tstl %a2 <== NOT EXECUTED
4b78a: 6756 beqs 4b7e2 <rtems_string_to_float+0x6e> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b78c: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b792: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b794: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4b796: 24bc 0000 0000 movel #0,%a2@ <== NOT EXECUTED
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4b79c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b7a0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b7a2: 4eb9 0005 0dd6 jsr 50dd6 <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 )
4b7a8: 508f addql #8,%sp <== NOT EXECUTED
errno = 0;
*n = 0;
#ifdef STRING_TO_FLOAT
result = STRING_TO_METHOD( s, &end );
4b7aa: 2400 movel %d0,%d2 <== 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 )
4b7ac: 4a8b tstl %a3 <== NOT EXECUTED
4b7ae: 6704 beqs 4b7b4 <rtems_string_to_float+0x40> <== NOT EXECUTED
*endptr = end;
4b7b0: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4b7b4: b6ae fffc cmpl %fp@(-4),%d3 <== NOT EXECUTED
4b7b8: 672c beqs 4b7e6 <rtems_string_to_float+0x72> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4b7ba: 2f3c 7f7f ffff movel #2139095039,%sp@- <== NOT EXECUTED
4b7c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b7c2: 4eb9 0005 bf78 jsr 5bf78 <__gtsf2> <== NOT EXECUTED
4b7c8: 508f addql #8,%sp <== NOT EXECUTED
4b7ca: 4a80 tstl %d0 <== NOT EXECUTED
4b7cc: 6f0e bles 4b7dc <rtems_string_to_float+0x68> <== NOT EXECUTED
4b7ce: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b7d4: 7222 moveq #34,%d1 <== NOT EXECUTED
4b7d6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b7d8: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4b7da: 670e beqs 4b7ea <rtems_string_to_float+0x76> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4b7dc: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4b7de: 4280 clrl %d0 <== NOT EXECUTED
4b7e0: 600a bras 4b7ec <rtems_string_to_float+0x78> <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b7e2: 7009 moveq #9,%d0 <== NOT EXECUTED
4b7e4: 6006 bras 4b7ec <rtems_string_to_float+0x78> <== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4b7e6: 700b moveq #11,%d0 <== NOT EXECUTED
4b7e8: 6002 bras 4b7ec <rtems_string_to_float+0x78> <== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4b7ea: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4b7ec: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b7f2: 4e5e unlk %fp <== NOT EXECUTED
...
0004b7f8 <rtems_string_to_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4b7f8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b7fc: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4b800: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4b804: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b808: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4b80c: 4a8a tstl %a2 <== NOT EXECUTED
4b80e: 674c beqs 4b85c <rtems_string_to_int+0x64> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b810: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b816: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b818: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4b81a: 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 );
4b81c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4b820: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b824: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b826: 4eb9 0005 0f92 jsr 50f92 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4b82c: 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 );
4b830: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4b832: 4a8b tstl %a3 <== NOT EXECUTED
4b834: 6704 beqs 4b83a <rtems_string_to_int+0x42> <== NOT EXECUTED
*endptr = end;
4b836: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4b83a: b6ae fffc cmpl %fp@(-4),%d3 <== NOT EXECUTED
4b83e: 6720 beqs 4b860 <rtems_string_to_int+0x68> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4b840: 0c82 7fff ffff cmpil #2147483647,%d2 <== NOT EXECUTED
4b846: 660e bnes 4b856 <rtems_string_to_int+0x5e> <== NOT EXECUTED
4b848: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b84e: 7222 moveq #34,%d1 <== NOT EXECUTED
4b850: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b852: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4b854: 670e beqs 4b864 <rtems_string_to_int+0x6c> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4b856: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4b858: 4280 clrl %d0 <== NOT EXECUTED
4b85a: 600a bras 4b866 <rtems_string_to_int+0x6e> <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b85c: 7009 moveq #9,%d0 <== NOT EXECUTED
4b85e: 6006 bras 4b866 <rtems_string_to_int+0x6e> <== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4b860: 700b moveq #11,%d0 <== NOT EXECUTED
4b862: 6002 bras 4b866 <rtems_string_to_int+0x6e> <== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4b864: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4b866: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b86c: 4e5e unlk %fp <== NOT EXECUTED
0004b90c <rtems_string_to_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4b90c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b910: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4b914: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4b918: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b91c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4b920: 4a8a tstl %a2 <== NOT EXECUTED
4b922: 6754 beqs 4b978 <rtems_string_to_long+0x6c> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b924: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b92a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b92c: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4b92e: 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 );
4b930: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4b934: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b938: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b93a: 4eb9 0005 0f92 jsr 50f92 <strtol> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4b940: 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 );
4b944: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4b946: 4a8b tstl %a3 <== NOT EXECUTED
4b948: 6704 beqs 4b94e <rtems_string_to_long+0x42> <== NOT EXECUTED
*endptr = end;
4b94a: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4b94e: b6ae fffc cmpl %fp@(-4),%d3 <== NOT EXECUTED
4b952: 6728 beqs 4b97c <rtems_string_to_long+0x70> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4b954: 0c82 7fff ffff cmpil #2147483647,%d2 <== NOT EXECUTED
4b95a: 6708 beqs 4b964 <rtems_string_to_long+0x58> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4b95c: 0c82 8000 0000 cmpil #-2147483648,%d2 <== NOT EXECUTED
4b962: 660e bnes 4b972 <rtems_string_to_long+0x66> <== NOT EXECUTED
4b964: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b96a: 7222 moveq #34,%d1 <== NOT EXECUTED
4b96c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b96e: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4b970: 670e beqs 4b980 <rtems_string_to_long+0x74> <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4b972: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4b974: 4280 clrl %d0 <== NOT EXECUTED
4b976: 600a bras 4b982 <rtems_string_to_long+0x76> <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b978: 7009 moveq #9,%d0 <== NOT EXECUTED
4b97a: 6006 bras 4b982 <rtems_string_to_long+0x76> <== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4b97c: 700b moveq #11,%d0 <== NOT EXECUTED
4b97e: 6002 bras 4b982 <rtems_string_to_long+0x76> <== NOT EXECUTED
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4b980: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4b982: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b988: 4e5e unlk %fp <== NOT EXECUTED
0004b870 <rtems_string_to_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4b870: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4b874: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
4b878: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
4b87c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b880: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4b884: 4a8a tstl %a2 <== NOT EXECUTED
4b886: 676e beqs 4b8f6 <rtems_string_to_long_long+0x86> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b888: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b88e: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4b890: 4280 clrl %d0 <== NOT EXECUTED
4b892: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b894: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4b896: 2480 movel %d0,%a2@ <== NOT EXECUTED
4b898: 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 );
4b89c: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4b8a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b8a4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4b8a6: 4eb9 0005 0fb4 jsr 50fb4 <strtoll> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4b8ac: 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 );
4b8b0: 2400 movel %d0,%d2 <== NOT EXECUTED
4b8b2: 2601 movel %d1,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4b8b4: 4a8b tstl %a3 <== NOT EXECUTED
4b8b6: 6704 beqs 4b8bc <rtems_string_to_long_long+0x4c> <== NOT EXECUTED
*endptr = end;
4b8b8: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4b8bc: b8ae fffc cmpl %fp@(-4),%d4 <== NOT EXECUTED
4b8c0: 6738 beqs 4b8fa <rtems_string_to_long_long+0x8a> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4b8c2: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
4b8c8: 72ff moveq #-1,%d1 <== NOT EXECUTED
4b8ca: 9283 subl %d3,%d1 <== NOT EXECUTED
4b8cc: 9182 subxl %d2,%d0 <== NOT EXECUTED
4b8ce: 670e beqs 4b8de <rtems_string_to_long_long+0x6e> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
4b8d0: 203c 8000 0000 movel #-2147483648,%d0 <== NOT EXECUTED
4b8d6: 4281 clrl %d1 <== NOT EXECUTED
4b8d8: 9283 subl %d3,%d1 <== NOT EXECUTED
4b8da: 9182 subxl %d2,%d0 <== NOT EXECUTED
4b8dc: 660e bnes 4b8ec <rtems_string_to_long_long+0x7c> <== NOT EXECUTED
4b8de: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b8e4: 7222 moveq #34,%d1 <== NOT EXECUTED
4b8e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b8e8: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4b8ea: 6712 beqs 4b8fe <rtems_string_to_long_long+0x8e> <== NOT EXECUTED
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4b8ec: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4b8ee: 2482 movel %d2,%a2@ <== NOT EXECUTED
4b8f0: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4b8f4: 600a bras 4b900 <rtems_string_to_long_long+0x90> <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b8f6: 7009 moveq #9,%d0 <== NOT EXECUTED
4b8f8: 6006 bras 4b900 <rtems_string_to_long_long+0x90> <== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4b8fa: 700b moveq #11,%d0 <== NOT EXECUTED
4b8fc: 6002 bras 4b900 <rtems_string_to_long_long+0x90> <== NOT EXECUTED
#endif
#ifdef STRING_TO_MIN
/* there was an underflow */
if ( (result == STRING_TO_MIN) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4b8fe: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4b900: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4b906: 4e5e unlk %fp <== NOT EXECUTED
...
0004b98c <rtems_string_to_pointer>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4b98c: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b990: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4b994: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4b998: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4b99c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4b9a0: 4a8a tstl %a2 <== NOT EXECUTED
4b9a2: 674a beqs 4b9ee <rtems_string_to_pointer+0x62> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4b9a4: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b9aa: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b9ac: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4b9ae: 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 );
4b9b0: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
4b9b4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4b9b8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b9ba: 4eb9 0005 13d6 jsr 513d6 <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 )
4b9c0: 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 );
4b9c4: 2400 movel %d0,%d2 <== 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 )
4b9c6: 4a8b tstl %a3 <== NOT EXECUTED
4b9c8: 6704 beqs 4b9ce <rtems_string_to_pointer+0x42> <== NOT EXECUTED
*endptr = end;
4b9ca: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4b9ce: b6ae fffc cmpl %fp@(-4),%d3 <== NOT EXECUTED
4b9d2: 671e beqs 4b9f2 <rtems_string_to_pointer+0x66> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4b9d4: 70ff moveq #-1,%d0 <== NOT EXECUTED
4b9d6: b082 cmpl %d2,%d0 <== NOT EXECUTED
4b9d8: 660e bnes 4b9e8 <rtems_string_to_pointer+0x5c> <== NOT EXECUTED
4b9da: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4b9e0: 7222 moveq #34,%d1 <== NOT EXECUTED
4b9e2: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b9e4: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4b9e6: 670e beqs 4b9f6 <rtems_string_to_pointer+0x6a> <== 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;
4b9e8: 2482 movel %d2,%a2@ <== NOT EXECUTED
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4b9ea: 4280 clrl %d0 <== NOT EXECUTED
4b9ec: 600a bras 4b9f8 <rtems_string_to_pointer+0x6c> <== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4b9ee: 7009 moveq #9,%d0 <== NOT EXECUTED
4b9f0: 6006 bras 4b9f8 <rtems_string_to_pointer+0x6c> <== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4b9f2: 700b moveq #11,%d0 <== NOT EXECUTED
4b9f4: 6002 bras 4b9f8 <rtems_string_to_pointer+0x6c> <== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4b9f6: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4b9f8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b9fe: 4e5e unlk %fp <== NOT EXECUTED
...
0004ba04 <rtems_string_to_unsigned_char>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4ba04: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4ba08: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4ba0c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4ba10: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4ba14: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4ba18: 4a8a tstl %a2 <== NOT EXECUTED
4ba1a: 6734 beqs 4ba50 <rtems_string_to_unsigned_char+0x4c><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4ba1c: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4ba22: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ba24: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4ba26: 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 );
4ba28: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4ba2c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ba30: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ba32: 4eb9 0005 13d6 jsr 513d6 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4ba38: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ba3c: 4a8b tstl %a3 <== NOT EXECUTED
4ba3e: 6704 beqs 4ba44 <rtems_string_to_unsigned_char+0x40><== NOT EXECUTED
*endptr = end;
4ba40: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4ba44: b4ae fffc cmpl %fp@(-4),%d2 <== NOT EXECUTED
4ba48: 670a beqs 4ba54 <rtems_string_to_unsigned_char+0x50><== 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 );
4ba4a: 1480 moveb %d0,%a2@ <== NOT EXECUTED
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4ba4c: 4280 clrl %d0 <== NOT EXECUTED
4ba4e: 6006 bras 4ba56 <rtems_string_to_unsigned_char+0x52><== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4ba50: 7009 moveq #9,%d0 <== NOT EXECUTED
4ba52: 6002 bras 4ba56 <rtems_string_to_unsigned_char+0x52><== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4ba54: 700b moveq #11,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4ba56: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4ba5c: 4e5e unlk %fp <== NOT EXECUTED
0004ba60 <rtems_string_to_unsigned_int>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4ba60: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4ba64: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4ba68: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4ba6c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4ba70: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4ba74: 4a8a tstl %a2 <== NOT EXECUTED
4ba76: 674a beqs 4bac2 <rtems_string_to_unsigned_int+0x62><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4ba78: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4ba7e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ba80: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4ba82: 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 );
4ba84: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4ba88: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ba8c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ba8e: 4eb9 0005 13d6 jsr 513d6 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4ba94: 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 );
4ba98: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4ba9a: 4a8b tstl %a3 <== NOT EXECUTED
4ba9c: 6704 beqs 4baa2 <rtems_string_to_unsigned_int+0x42><== NOT EXECUTED
*endptr = end;
4ba9e: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4baa2: b6ae fffc cmpl %fp@(-4),%d3 <== NOT EXECUTED
4baa6: 671e beqs 4bac6 <rtems_string_to_unsigned_int+0x66><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4baa8: 70ff moveq #-1,%d0 <== NOT EXECUTED
4baaa: b082 cmpl %d2,%d0 <== NOT EXECUTED
4baac: 660e bnes 4babc <rtems_string_to_unsigned_int+0x5c><== NOT EXECUTED
4baae: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4bab4: 7222 moveq #34,%d1 <== NOT EXECUTED
4bab6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bab8: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4baba: 670e beqs 4baca <rtems_string_to_unsigned_int+0x6a><== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4babc: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4babe: 4280 clrl %d0 <== NOT EXECUTED
4bac0: 600a bras 4bacc <rtems_string_to_unsigned_int+0x6c><== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4bac2: 7009 moveq #9,%d0 <== NOT EXECUTED
4bac4: 6006 bras 4bacc <rtems_string_to_unsigned_int+0x6c><== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4bac6: 700b moveq #11,%d0 <== NOT EXECUTED
4bac8: 6002 bras 4bacc <rtems_string_to_unsigned_int+0x6c><== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4baca: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4bacc: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4bad2: 4e5e unlk %fp <== NOT EXECUTED
...
0004bb60 <rtems_string_to_unsigned_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4bb60: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4bb64: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
4bb68: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4bb6c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4bb70: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4bb74: 4a8a tstl %a2 <== NOT EXECUTED
4bb76: 674a beqs 4bbc2 <rtems_string_to_unsigned_long+0x62><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4bb78: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4bb7e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bb80: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4bb82: 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 );
4bb84: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4bb88: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4bb8c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4bb8e: 4eb9 0005 13d6 jsr 513d6 <strtoul> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4bb94: 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 );
4bb98: 2400 movel %d0,%d2 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4bb9a: 4a8b tstl %a3 <== NOT EXECUTED
4bb9c: 6704 beqs 4bba2 <rtems_string_to_unsigned_long+0x42><== NOT EXECUTED
*endptr = end;
4bb9e: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4bba2: b6ae fffc cmpl %fp@(-4),%d3 <== NOT EXECUTED
4bba6: 671e beqs 4bbc6 <rtems_string_to_unsigned_long+0x66><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4bba8: 70ff moveq #-1,%d0 <== NOT EXECUTED
4bbaa: b082 cmpl %d2,%d0 <== NOT EXECUTED
4bbac: 660e bnes 4bbbc <rtems_string_to_unsigned_long+0x5c><== NOT EXECUTED
4bbae: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4bbb4: 7222 moveq #34,%d1 <== NOT EXECUTED
4bbb6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bbb8: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4bbba: 670e beqs 4bbca <rtems_string_to_unsigned_long+0x6a><== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4bbbc: 2482 movel %d2,%a2@ <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4bbbe: 4280 clrl %d0 <== NOT EXECUTED
4bbc0: 600a bras 4bbcc <rtems_string_to_unsigned_long+0x6c><== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4bbc2: 7009 moveq #9,%d0 <== NOT EXECUTED
4bbc4: 6006 bras 4bbcc <rtems_string_to_unsigned_long+0x6c><== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4bbc6: 700b moveq #11,%d0 <== NOT EXECUTED
4bbc8: 6002 bras 4bbcc <rtems_string_to_unsigned_long+0x6c><== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4bbca: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4bbcc: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4bbd2: 4e5e unlk %fp <== NOT EXECUTED
...
0004bad8 <rtems_string_to_unsigned_long_long>:
#if defined(STRING_TO_INTEGER) && !defined(STRING_TO_POINTER)
,
int base
#endif
)
{
4bad8: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4badc: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
4bae0: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
4bae4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4bae8: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
4baec: 4a8a tstl %a2 <== NOT EXECUTED
4baee: 675c beqs 4bb4c <rtems_string_to_unsigned_long_long+0x74><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
errno = 0;
4baf0: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4baf6: 2040 moveal %d0,%a0 <== NOT EXECUTED
*n = 0;
4baf8: 4280 clrl %d0 <== NOT EXECUTED
4bafa: 4281 clrl %d1 <== NOT EXECUTED
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
errno = 0;
4bafc: 4290 clrl %a0@ <== NOT EXECUTED
*n = 0;
4bafe: 2480 movel %d0,%a2@ <== NOT EXECUTED
4bb00: 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 );
4bb04: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4bb08: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4bb0c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4bb0e: 4eb9 0005 13f8 jsr 513f8 <strtoull> <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4bb14: 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 );
4bb18: 2400 movel %d0,%d2 <== NOT EXECUTED
4bb1a: 2601 movel %d1,%d3 <== NOT EXECUTED
#endif
/* If the user wants the end pointer back, then return it. */
if ( endptr )
4bb1c: 4a8b tstl %a3 <== NOT EXECUTED
4bb1e: 6704 beqs 4bb24 <rtems_string_to_unsigned_long_long+0x4c><== NOT EXECUTED
*endptr = end;
4bb20: 26ae fffc movel %fp@(-4),%a3@ <== NOT EXECUTED
/* nothing was converted */
if ( end == s )
4bb24: b8ae fffc cmpl %fp@(-4),%d4 <== NOT EXECUTED
4bb28: 6726 beqs 4bb50 <rtems_string_to_unsigned_long_long+0x78><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
4bb2a: 70ff moveq #-1,%d0 <== NOT EXECUTED
4bb2c: 72ff moveq #-1,%d1 <== NOT EXECUTED
4bb2e: 9283 subl %d3,%d1 <== NOT EXECUTED
4bb30: 9182 subxl %d2,%d0 <== NOT EXECUTED
4bb32: 660e bnes 4bb42 <rtems_string_to_unsigned_long_long+0x6a><== NOT EXECUTED
4bb34: 4eb9 0004 e490 jsr 4e490 <__errno> <== NOT EXECUTED
4bb3a: 7222 moveq #34,%d1 <== NOT EXECUTED
4bb3c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4bb3e: b290 cmpl %a0@,%d1 <== NOT EXECUTED
4bb40: 6712 beqs 4bb54 <rtems_string_to_unsigned_long_long+0x7c><== NOT EXECUTED
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
4bb42: 4280 clrl %d0 <== NOT EXECUTED
#endif
#if defined(STRING_TO_POINTER)
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
4bb44: 2482 movel %d2,%a2@ <== NOT EXECUTED
4bb46: 2543 0004 movel %d3,%a2@(4) <== NOT EXECUTED
#endif
return RTEMS_SUCCESSFUL;
4bb4a: 600a bras 4bb56 <rtems_string_to_unsigned_long_long+0x7e><== NOT EXECUTED
{
STRING_TO_INPUT_TYPE result;
char *end;
if ( !n )
return RTEMS_INVALID_ADDRESS;
4bb4c: 7009 moveq #9,%d0 <== NOT EXECUTED
4bb4e: 6006 bras 4bb56 <rtems_string_to_unsigned_long_long+0x7e><== NOT EXECUTED
if ( endptr )
*endptr = end;
/* nothing was converted */
if ( end == s )
return RTEMS_NOT_DEFINED;
4bb50: 700b moveq #11,%d0 <== NOT EXECUTED
4bb52: 6002 bras 4bb56 <rtems_string_to_unsigned_long_long+0x7e><== NOT EXECUTED
#endif
#ifdef STRING_TO_MAX
/* there was an overflow */
if ( (result == STRING_TO_MAX) && (errno == ERANGE))
return RTEMS_INVALID_NUMBER;
4bb54: 700a moveq #10,%d0 <== NOT EXECUTED
*n = (STRING_TO_TYPE) (uintptr_t)result;
#else
*n = (STRING_TO_TYPE) result;
#endif
return RTEMS_SUCCESSFUL;
}
4bb56: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4bb5c: 4e5e unlk %fp <== NOT EXECUTED
00042354 <rtems_tarfs_load>:
int rtems_tarfs_load(
char *mountpoint,
uint8_t *tar_image,
size_t tar_size
)
{
42354: 4e56 fe3c linkw %fp,#-452 <== NOT EXECUTED
42358: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4235c: 2e2e 0008 movel %fp@(8),%d7 <== NOT EXECUTED
int offset;
unsigned long nblocks;
IMFS_jnode_t *node;
int status;
status = rtems_filesystem_evaluate_path(
42360: 2f07 movel %d7,%sp@- <== NOT EXECUTED
42362: 4eb9 0005 0f1c jsr 50f1c <strlen> <== NOT EXECUTED
42368: 4297 clrl %sp@ <== NOT EXECUTED
4236a: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED
4236e: 42a7 clrl %sp@- <== NOT EXECUTED
42370: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42372: 2f07 movel %d7,%sp@- <== NOT EXECUTED
42374: 4eb9 0004 2d94 jsr 42d94 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
strlen(mountpoint),
0,
&root_loc,
0
);
if (status != 0)
4237a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
int offset;
unsigned long nblocks;
IMFS_jnode_t *node;
int status;
status = rtems_filesystem_evaluate_path(
4237e: 2800 movel %d0,%d4 <== NOT EXECUTED
strlen(mountpoint),
0,
&root_loc,
0
);
if (status != 0)
42380: 6600 01a8 bnew 4252a <rtems_tarfs_load+0x1d6> <== NOT EXECUTED
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
42384: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
42388: 0c80 0005 fc3a cmpil #392250,%d0 <== NOT EXECUTED
4238e: 6710 beqs 423a0 <rtems_tarfs_load+0x4c> <== NOT EXECUTED
42390: 0c80 0006 049c cmpil #394396,%d0 <== NOT EXECUTED
42396: 6600 0192 bnew 4252a <rtems_tarfs_load+0x1d6> <== NOT EXECUTED
4239a: 6004 bras 423a0 <rtems_tarfs_load+0x4c> <== NOT EXECUTED
4239c: 2443 moveal %d3,%a2 <== NOT EXECUTED
4239e: 602e bras 423ce <rtems_tarfs_load+0x7a> <== 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);
423a0: 2c0e movel %fp,%d6 <== NOT EXECUTED
* should not have this path.
*/
else if (linkflag == REGTYPE) {
const char *name;
loc = root_loc;
423a2: 2a0e movel %fp,%d5 <== 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);
423a4: 240e movel %fp,%d2 <== NOT EXECUTED
0
);
if (status != 0)
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
423a6: 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);
423a8: 0686 ffff ff70 addil #-144,%d6 <== NOT EXECUTED
423ae: 4bf9 0005 1024 lea 51024 <strncpy>,%a5 <== NOT EXECUTED
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
423b4: 47f9 0004 938c lea 4938c <_rtems_octal2ulong>,%a3 <== NOT EXECUTED
* should not have this path.
*/
else if (linkflag == REGTYPE) {
const char *name;
loc = root_loc;
423ba: 0685 ffff ffd4 addil #-44,%d5 <== 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);
423c0: 0682 ffff fe70 addil #-400,%d2 <== NOT EXECUTED
423c6: 2d44 fe6c movel %d4,%fp@(-404) <== NOT EXECUTED
423ca: 2d47 fe66 movel %d7,%fp@(-410) <== NOT EXECUTED
/*
* Create an IMFS node structure pointing to tar image memory.
*/
offset = 0;
while (1) {
if (offset + 512 > tar_size)
423ce: 260a movel %a2,%d3 <== NOT EXECUTED
423d0: 0683 0000 0200 addil #512,%d3 <== NOT EXECUTED
423d6: b6ae 0010 cmpl %fp@(16),%d3 <== NOT EXECUTED
423da: 6200 0152 bhiw 4252e <rtems_tarfs_load+0x1da> <== NOT EXECUTED
/*
* Read a header.
*/
hdr_ptr = (char *) &tar_image[offset];
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
423de: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
break;
/*
* Read a header.
*/
hdr_ptr = (char *) &tar_image[offset];
423e2: d5ee 000c addal %fp@(12),%a2 <== NOT EXECUTED
offset += 512;
if (strncmp(&hdr_ptr[257], "ustar", 5))
423e6: 4879 0005 fc82 pea 5fc82 <IMFS_ops+0x48> <== NOT EXECUTED
423ec: 486a 0101 pea %a2@(257) <== NOT EXECUTED
423f0: 4eb9 0005 0f34 jsr 50f34 <strncmp> <== NOT EXECUTED
423f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
423fa: 4a80 tstl %d0 <== NOT EXECUTED
423fc: 6600 0130 bnew 4252e <rtems_tarfs_load+0x1da> <== NOT EXECUTED
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
42400: 4878 0063 pea 63 <DBL_MANT_DIG+0x2e> <== NOT EXECUTED
42404: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42406: 2f06 movel %d6,%sp@- <== NOT EXECUTED
42408: 4e95 jsr %a5@ <== NOT EXECUTED
filename[MAX_NAME_FIELD_SIZE] = '\0';
4240a: 4200 clrb %d0 <== NOT EXECUTED
4240c: 1d40 ffd3 moveb %d0,%fp@(-45) <== NOT EXECUTED
linkflag = hdr_ptr[156];
42410: 122a 009c moveb %a2@(156),%d1 <== NOT EXECUTED
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
42414: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
42418: 486a 0064 pea %a2@(100) <== NOT EXECUTED
break;
strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);
filename[MAX_NAME_FIELD_SIZE] = '\0';
linkflag = hdr_ptr[156];
4241c: 1d41 fe6b moveb %d1,%fp@(-405) <== NOT EXECUTED
file_mode = _rtems_octal2ulong(&hdr_ptr[100], 8);
42420: 4e93 jsr %a3@ <== NOT EXECUTED
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42422: 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);
42426: 2800 movel %d0,%d4 <== NOT EXECUTED
file_size = _rtems_octal2ulong(&hdr_ptr[124], 12);
42428: 486a 007c pea %a2@(124) <== NOT EXECUTED
4242c: 4e93 jsr %a3@ <== NOT EXECUTED
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
4242e: 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);
42432: 2840 moveal %d0,%a4 <== NOT EXECUTED
hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);
42434: 486a 0094 pea %a2@(148) <== NOT EXECUTED
42438: 4e93 jsr %a3@ <== NOT EXECUTED
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
4243a: 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);
4243e: 2e00 movel %d0,%d7 <== NOT EXECUTED
if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)
42440: 2e8a movel %a2,%sp@ <== NOT EXECUTED
42442: 4eb9 0004 93d2 jsr 493d2 <_rtems_tar_header_checksum> <== NOT EXECUTED
42448: 588f addql #4,%sp <== NOT EXECUTED
4244a: be80 cmpl %d0,%d7 <== NOT EXECUTED
4244c: 6600 00e0 bnew 4252e <rtems_tarfs_load+0x1da> <== 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) {
42450: 4280 clrl %d0 <== NOT EXECUTED
42452: 102e fe6b moveb %fp@(-405),%d0 <== NOT EXECUTED
42456: 7235 moveq #53,%d1 <== NOT EXECUTED
42458: b280 cmpl %d0,%d1 <== NOT EXECUTED
4245a: 6656 bnes 424b2 <rtems_tarfs_load+0x15e> <== NOT EXECUTED
strcpy(full_filename, mountpoint);
4245c: 2f2e fe66 movel %fp@(-410),%sp@- <== NOT EXECUTED
42460: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42462: 4eb9 0005 0a70 jsr 50a70 <strcpy> <== NOT EXECUTED
if (full_filename[strlen(full_filename)-1] != '/')
42468: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4246a: 4eb9 0005 0f1c jsr 50f1c <strlen> <== NOT EXECUTED
42470: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
42474: 722f moveq #47,%d1 <== NOT EXECUTED
42476: 41f6 0800 lea %fp@(00000000,%d0:l),%a0 <== NOT EXECUTED
4247a: 1028 fe6f moveb %a0@(-401),%d0 <== NOT EXECUTED
4247e: 49c0 extbl %d0 <== NOT EXECUTED
42480: b280 cmpl %d0,%d1 <== NOT EXECUTED
42482: 6710 beqs 42494 <rtems_tarfs_load+0x140> <== NOT EXECUTED
strcat(full_filename, "/");
42484: 4879 0005 cea9 pea 5cea9 <_rodata_start+0x19> <== NOT EXECUTED
4248a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4248c: 4eb9 0005 0958 jsr 50958 <strcat> <== NOT EXECUTED
42492: 508f addql #8,%sp <== NOT EXECUTED
strcat(full_filename, filename);
42494: 2f06 movel %d6,%sp@- <== NOT EXECUTED
42496: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42498: 4eb9 0005 0958 jsr 50958 <strcat> <== NOT EXECUTED
mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);
4249e: 4878 01ff pea 1ff <DBL_MANT_DIG+0x1ca> <== NOT EXECUTED
424a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
424a4: 4eb9 0004 354c jsr 4354c <mkdir> <== NOT EXECUTED
424aa: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
424ae: 6000 feec braw 4239c <rtems_tarfs_load+0x48> <== 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) {
424b2: 7230 moveq #48,%d1 <== NOT EXECUTED
424b4: b280 cmpl %d0,%d1 <== NOT EXECUTED
424b6: 6600 fee4 bnew 4239c <rtems_tarfs_load+0x48> <== NOT EXECUTED
const char *name;
loc = root_loc;
424ba: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
424be: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED
424c2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
424c4: 4eb9 0004 fee4 jsr 4fee4 <memcpy> <== NOT EXECUTED
if (IMFS_evaluate_for_make(filename, &loc, &name) == 0) {
424ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
424ce: 2f05 movel %d5,%sp@- <== NOT EXECUTED
424d0: 2f06 movel %d6,%sp@- <== NOT EXECUTED
424d2: 4eb9 0004 9ec6 jsr 49ec6 <IMFS_evaluate_for_make> <== NOT EXECUTED
424d8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
424dc: 4a80 tstl %d0 <== NOT EXECUTED
424de: 6636 bnes 42516 <rtems_tarfs_load+0x1c2> <== NOT EXECUTED
node = IMFS_create_node(
424e0: 42a7 clrl %sp@- <== NOT EXECUTED
&loc,
IMFS_LINEAR_FILE, (char *)name,
(file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,
424e2: 0284 0000 01ff andil #511,%d4 <== 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(
424e8: 08c4 000f bset #15,%d4 <== NOT EXECUTED
424ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED
424ee: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
424f2: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
424f6: 2f05 movel %d5,%sp@- <== NOT EXECUTED
424f8: 4eb9 0004 9946 jsr 49946 <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];
424fe: 4fef 0014 lea %sp@(20),%sp <== 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(
42502: 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];
42504: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
42508: d083 addl %d3,%d0 <== 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;
4250a: 214c 0050 movel %a4,%a0@(80) <== NOT EXECUTED
4250e: 42a8 004c clrl %a0@(76) <== NOT EXECUTED
node->info.linearfile.direct = &tar_image[offset];
42512: 2140 0054 movel %d0,%a0@(84) <== NOT EXECUTED
}
nblocks = (((file_size) + 511) & ~511) / 512;
42516: 200c movel %a4,%d0 <== NOT EXECUTED
42518: 0680 0000 01ff addil #511,%d0 <== NOT EXECUTED
offset += 512 * nblocks;
4251e: 0280 ffff fe00 andil #-512,%d0 <== NOT EXECUTED
42524: d680 addl %d0,%d3 <== NOT EXECUTED
42526: 6000 fe74 braw 4239c <rtems_tarfs_load+0x48> <== NOT EXECUTED
);
if (status != 0)
return -1;
if (root_loc.ops != &IMFS_ops && root_loc.ops != &fifoIMFS_ops)
return -1;
4252a: 78ff moveq #-1,%d4 <== NOT EXECUTED
4252c: 6004 bras 42532 <rtems_tarfs_load+0x1de> <== NOT EXECUTED
4252e: 282e fe6c movel %fp@(-404),%d4 <== NOT EXECUTED
nblocks = (((file_size) + 511) & ~511) / 512;
offset += 512 * nblocks;
}
}
return status;
}
42532: 2004 movel %d4,%d0 <== NOT EXECUTED
42534: 4cee 3cfc fe3c moveml %fp@(-452),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4253a: 4e5e unlk %fp <== NOT EXECUTED
...
000457ac <rtems_task_create>:
size_t stack_size,
rtems_mode initial_modes,
rtems_attribute attribute_set,
rtems_id *id
)
{
457ac: 4e56 ffe8 linkw %fp,#-24
457b0: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
457b4: 266e 0008 moveal %fp@(8),%a3
457b8: 262e 000c movel %fp@(12),%d3
457bc: 242e 0014 movel %fp@(20),%d2
457c0: 282e 0018 movel %fp@(24),%d4
457c4: 286e 001c moveal %fp@(28),%a4
Priority_Control core_priority;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
457c8: 4a8c tstl %a4
457ca: 6700 00f0 beqw 458bc <rtems_task_create+0x110>
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
457ce: 4a8b tstl %a3
457d0: 6700 00ee beqw 458c0 <rtems_task_create+0x114>
/*
* Validate the RTEMS API priority and convert it to the core priority range.
*/
if ( !_Attributes_Is_system_task( the_attribute_set ) ) {
457d4: 4a44 tstw %d4
457d6: 6d1e blts 457f6 <rtems_task_create+0x4a> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
457d8: 4a83 tstl %d3
457da: 6712 beqs 457ee <rtems_task_create+0x42> <== NEVER TAKEN
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
457dc: 4280 clrl %d0
457de: 1039 0005 c252 moveb 5c252 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
457e4: b083 cmpl %d3,%d0
457e6: 54c0 scc %d0
457e8: 49c0 extbl %d0
457ea: 4480 negl %d0
457ec: 6002 bras 457f0 <rtems_task_create+0x44>
457ee: 4280 clrl %d0 <== NOT EXECUTED
if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) )
457f0: 4a00 tstb %d0
457f2: 6700 00d0 beqw 458c4 <rtems_task_create+0x118>
*/
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
457f6: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@-
457fc: 4eb9 0004 5f20 jsr 45f20 <_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 );
45802: 4879 0005 da86 pea 5da86 <_RTEMS_tasks_Information>
45808: 4eb9 0004 6868 jsr 46868 <_Objects_Allocate>
* the event of an error.
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
4580e: 508f addql #8,%sp
45810: 2440 moveal %d0,%a2
45812: 4a80 tstl %d0
45814: 6614 bnes 4582a <rtems_task_create+0x7e> <== ALWAYS TAKEN
_RTEMS_Unlock_allocator();
45816: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4581c: 4eb9 0004 5f80 jsr 45f80 <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_TOO_MANY;
45822: 588f addql #4,%sp <== NOT EXECUTED
45824: 7005 moveq #5,%d0 <== NOT EXECUTED
45826: 6000 009e braw 458c6 <rtems_task_create+0x11a> <== NOT EXECUTED
/*
* Initialize the core thread for this task.
*/
status = _Thread_Initialize(
4582a: 7007 moveq #7,%d0
4582c: 2f0b movel %a3,%sp@-
4582e: 47f9 0004 5f80 lea 45f80 <_API_Mutex_Unlock>,%a3
45834: c082 andl %d2,%d0
45836: 2f00 movel %d0,%sp@-
45838: 0802 0009 btst #9,%d2
4583c: 56c0 sne %d0
4583e: 42a7 clrl %sp@-
45840: 49c0 extbl %d0
45842: 4480 negl %d0
45844: 2f00 movel %d0,%sp@-
45846: 0802 0008 btst #8,%d2
4584a: 57c0 seq %d0
4584c: 49c0 extbl %d0
4584e: 4480 negl %d0
45850: 2f00 movel %d0,%sp@-
45852: 7001 moveq #1,%d0
45854: 2f03 movel %d3,%sp@-
45856: c084 andl %d4,%d0
45858: 2f00 movel %d0,%sp@-
4585a: 2f2e 0010 movel %fp@(16),%sp@-
4585e: 42a7 clrl %sp@-
45860: 2f0a movel %a2,%sp@-
45862: 4879 0005 da86 pea 5da86 <_RTEMS_tasks_Information>
45868: 4eb9 0004 7848 jsr 47848 <_Thread_Initialize>
NULL, /* no budget algorithm callout */
_Modes_Get_interrupt_level(initial_modes),
(Objects_Name) name
);
if ( !status ) {
4586e: 4fef 002c lea %sp@(44),%sp
45872: 4a00 tstb %d0
45874: 6624 bnes 4589a <rtems_task_create+0xee>
*/
RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free (
Thread_Control *the_task
)
{
_Objects_Free(
45876: 2f2a 0008 movel %a2@(8),%sp@-
4587a: 4eb9 0004 6be0 jsr 46be0 <_Objects_Get_information_id>
45880: 2f0a movel %a2,%sp@-
45882: 2f00 movel %d0,%sp@-
45884: 4eb9 0004 6b5c jsr 46b5c <_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();
4588a: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@-
45890: 4e93 jsr %a3@
return RTEMS_UNSATISFIED;
45892: 4fef 0010 lea %sp@(16),%sp
45896: 700d moveq #13,%d0
45898: 602c bras 458c6 <rtems_task_create+0x11a>
}
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
4589a: 206a 00fe moveal %a2@(254),%a0
* id - thread id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_task_create(
4589e: 0802 000a btst #10,%d2
458a2: 57c0 seq %d0
458a4: 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;
458a6: 1140 0008 moveb %d0,%a0@(8)
*id = the_thread->Object.id;
458aa: 28aa 0008 movel %a2@(8),%a4@
);
}
#endif
_RTEMS_Unlock_allocator();
458ae: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@-
458b4: 4e93 jsr %a3@
return RTEMS_SUCCESSFUL;
458b6: 588f addql #4,%sp
458b8: 4280 clrl %d0
458ba: 600a bras 458c6 <rtems_task_create+0x11a>
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
return RTEMS_INVALID_ADDRESS;
458bc: 7009 moveq #9,%d0 <== NOT EXECUTED
458be: 6006 bras 458c6 <rtems_task_create+0x11a> <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
458c0: 7003 moveq #3,%d0 <== NOT EXECUTED
458c2: 6002 bras 458c6 <rtems_task_create+0x11a> <== NOT EXECUTED
* 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;
458c4: 7013 moveq #19,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
458c6: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4
458cc: 4e5e unlk %fp <== NOT EXECUTED
000458d0 <rtems_task_delete>:
*/
rtems_status_code rtems_task_delete(
rtems_id id
)
{
458d0: 4e56 fff0 linkw %fp,#-16
458d4: 48d7 1c00 moveml %a2-%a4,%sp@
register Thread_Control *the_thread;
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
458d8: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@-
458de: 47f9 0004 5f80 lea 45f80 <_API_Mutex_Unlock>,%a3
458e4: 4eb9 0004 5f20 jsr 45f20 <_API_Mutex_Lock>
the_thread = _Thread_Get( id, &location );
458ea: 486e fffc pea %fp@(-4)
458ee: 2f2e 0008 movel %fp@(8),%sp@-
458f2: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get>
switch ( location ) {
458f8: 4fef 000c lea %sp@(12),%sp
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
the_thread = _Thread_Get( id, &location );
458fc: 2440 moveal %d0,%a2
switch ( location ) {
458fe: 4aae fffc tstl %fp@(-4)
45902: 663c bnes 45940 <rtems_task_delete+0x70> <== NEVER TAKEN
case OBJECTS_LOCAL:
the_information = _Objects_Get_information_id( the_thread->Object.id );
45904: 2f2a 0008 movel %a2@(8),%sp@-
45908: 49f9 0004 6be0 lea 46be0 <_Objects_Get_information_id>,%a4
4590e: 4e94 jsr %a4@
0 /* Not used */
);
}
#endif
_Thread_Close( the_information, the_thread );
45910: 2f0a movel %a2,%sp@-
45912: 2f00 movel %d0,%sp@-
45914: 4eb9 0004 748c jsr 4748c <_Thread_Close>
4591a: 2f2a 0008 movel %a2@(8),%sp@-
4591e: 4e94 jsr %a4@
45920: 2f0a movel %a2,%sp@-
45922: 2f00 movel %d0,%sp@-
45924: 4eb9 0004 6b5c jsr 46b5c <_Objects_Free>
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
4592a: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@-
45930: 4e93 jsr %a3@
_Thread_Enable_dispatch();
45932: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
45938: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4593c: 4280 clrl %d0 <== NOT EXECUTED
4593e: 600c bras 4594c <rtems_task_delete+0x7c> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
45940: 2f39 0005 dbc8 movel 5dbc8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
45946: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_INVALID_ID;
45948: 588f addql #4,%sp <== NOT EXECUTED
4594a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4594c: 4cee 1c00 fff0 moveml %fp@(-16),%a2-%a4 <== NOT EXECUTED
45952: 4e5e unlk %fp <== NOT EXECUTED
...
000470c8 <rtems_task_get_note>:
rtems_status_code rtems_task_get_note(
rtems_id id,
uint32_t notepad,
uint32_t *note
)
{
470c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
470cc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
470d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470d2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
470d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
470d8: 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() )
470dc: 4a39 0005 e9c4 tstb 5e9c4 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED
470e2: 6752 beqs 47136 <rtems_task_get_note+0x6e> <== NOT EXECUTED
return RTEMS_NOT_CONFIGURED;
if ( !note )
470e4: 4a8a tstl %a2 <== NOT EXECUTED
470e6: 6752 beqs 4713a <rtems_task_get_note+0x72> <== 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 )
470e8: 720f moveq #15,%d1 <== NOT EXECUTED
470ea: b282 cmpl %d2,%d1 <== NOT EXECUTED
470ec: 6550 bcss 4713e <rtems_task_get_note+0x76> <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
470ee: 4a80 tstl %d0 <== NOT EXECUTED
470f0: 670c beqs 470fe <rtems_task_get_note+0x36> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
470f2: 2079 0006 09dc moveal 609dc <_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 ) ||
470f8: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
470fc: 6610 bnes 4710e <rtems_task_get_note+0x46> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
470fe: 2079 0006 09dc moveal 609dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*note = api->Notepads[ notepad ];
47104: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED
47108: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
4710c: 6024 bras 47132 <rtems_task_get_note+0x6a> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
the_thread = _Thread_Get( id, &location );
4710e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47112: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47114: 4eb9 0004 91f0 jsr 491f0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4711a: 508f addql #8,%sp <== NOT EXECUTED
4711c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47120: 6620 bnes 47142 <rtems_task_get_note+0x7a> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
47122: 2240 moveal %d0,%a1 <== NOT EXECUTED
47124: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED
47128: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4712c: 4eb9 0004 91ca jsr 491ca <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47132: 4280 clrl %d0 <== NOT EXECUTED
47134: 600e bras 47144 <rtems_task_get_note+0x7c> <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
47136: 7016 moveq #22,%d0 <== NOT EXECUTED
47138: 600a bras 47144 <rtems_task_get_note+0x7c> <== NOT EXECUTED
if ( !note )
return RTEMS_INVALID_ADDRESS;
4713a: 7009 moveq #9,%d0 <== NOT EXECUTED
4713c: 6006 bras 47144 <rtems_task_get_note+0x7c> <== 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;
4713e: 700a moveq #10,%d0 <== NOT EXECUTED
47140: 6002 bras 47144 <rtems_task_get_note+0x7c> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47142: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47144: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
47148: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4714c: 4e5e unlk %fp <== NOT EXECUTED
00045958 <rtems_task_ident>:
rtems_status_code rtems_task_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
45958: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4595c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45960: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
if ( !id )
45964: 4a88 tstl %a0 <== NOT EXECUTED
45966: 6734 beqs 4599c <rtems_task_ident+0x44> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
45968: 4a80 tstl %d0 <== NOT EXECUTED
4596a: 660c bnes 45978 <rtems_task_ident+0x20> <== NOT EXECUTED
*id = _Thread_Executing->Object.id;
4596c: 2279 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
45972: 20a9 0008 movel %a1@(8),%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45976: 6026 bras 4599e <rtems_task_ident+0x46> <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
45978: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4597a: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4597e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45980: 4879 0005 da86 pea 5da86 <_RTEMS_tasks_Information> <== NOT EXECUTED
45986: 4eb9 0004 6e4c jsr 46e4c <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
4598c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45990: 41f9 0005 b35e lea 5b35e <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
45996: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
4599a: 6002 bras 4599e <rtems_task_ident+0x46> <== NOT EXECUTED
)
{
Objects_Name_or_id_lookup_errors status;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4599c: 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 ];
}
4599e: 4e5e unlk %fp <== NOT EXECUTED
...
0005147c <rtems_task_is_suspended>:
*/
rtems_status_code rtems_task_is_suspended(
rtems_id id
)
{
5147c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
51480: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51484: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51488: 4eb9 0005 4edc jsr 54edc <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
5148e: 508f addql #8,%sp <== NOT EXECUTED
51490: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51494: 661c bnes 514b2 <rtems_task_is_suspended+0x36> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
51496: 2040 moveal %d0,%a0 <== NOT EXECUTED
51498: 7202 moveq #2,%d1 <== NOT EXECUTED
5149a: c2a8 0010 andl %a0@(16),%d1 <== NOT EXECUTED
5149e: 41f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
514a4: 6606 bnes 514ac <rtems_task_is_suspended+0x30> <== NOT EXECUTED
_Thread_Enable_dispatch();
514a6: 4e90 jsr %a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
514a8: 4280 clrl %d0 <== NOT EXECUTED
514aa: 6008 bras 514b4 <rtems_task_is_suspended+0x38> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
514ac: 4e90 jsr %a0@ <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
514ae: 700f moveq #15,%d0 <== NOT EXECUTED
514b0: 6002 bras 514b4 <rtems_task_is_suspended+0x38> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
514b2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
514b4: 4e5e unlk %fp <== NOT EXECUTED
0004c4cc <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
4c4cc: 4e56 ffe4 linkw %fp,#-28
4c4d0: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
4c4d4: 262e 0008 movel %fp@(8),%d3
4c4d8: 282e 000c movel %fp@(12),%d4
4c4dc: 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 )
4c4e0: 4a8c tstl %a4
4c4e2: 6700 0104 beqw 4c5e8 <rtems_task_mode+0x11c>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
4c4e6: 2679 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a3
api = executing->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4c4ec: 4a2b 0074 tstb %a3@(116)
4c4f0: 57c2 seq %d2
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4c4f2: 246b 00fe moveal %a3@(254),%a2
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4c4f6: 49c2 extbl %d2
4c4f8: 0282 0000 0100 andil #256,%d2
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
4c4fe: 4aab 007a tstl %a3@(122)
4c502: 6704 beqs 4c508 <rtems_task_mode+0x3c> <== ALWAYS TAKEN
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
4c504: 08c2 0009 bset #9,%d2 <== NOT EXECUTED
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4c508: 4a2a 0008 tstb %a2@(8)
4c50c: 57c5 seq %d5
old_mode |= _ISR_Get_level();
4c50e: 4eb9 0004 88b8 jsr 488b8 <_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;
4c514: 49c5 extbl %d5
4c516: 0285 0000 0400 andil #1024,%d5
4c51c: 8085 orl %d5,%d0
old_mode |= _ISR_Get_level();
4c51e: 8082 orl %d2,%d0
4c520: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4c522: 0804 0008 btst #8,%d4
4c526: 670c beqs 4c534 <rtems_task_mode+0x68> <== NEVER TAKEN
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
4c528: 0803 0008 btst #8,%d3
4c52c: 57c0 seq %d0
4c52e: 4480 negl %d0
4c530: 1740 0074 moveb %d0,%a3@(116)
if ( mask & RTEMS_TIMESLICE_MASK ) {
4c534: 0804 0009 btst #9,%d4
4c538: 671c beqs 4c556 <rtems_task_mode+0x8a>
if ( _Modes_Is_timeslice(mode_set) ) {
4c53a: 0803 0009 btst #9,%d3
4c53e: 6712 beqs 4c552 <rtems_task_mode+0x86> <== ALWAYS TAKEN
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4c540: 41f9 0005 dac0 lea 5dac0 <_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;
4c546: 7001 moveq #1,%d0 <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4c548: 2750 0076 movel %a0@,%a3@(118) <== 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;
4c54c: 2740 007a movel %d0,%a3@(122) <== NOT EXECUTED
4c550: 6004 bras 4c556 <rtems_task_mode+0x8a> <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
} else
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
4c552: 42ab 007a clrl %a3@(122)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4c556: 7007 moveq #7,%d0
4c558: c084 andl %d4,%d0
4c55a: 6712 beqs 4c56e <rtems_task_mode+0xa2>
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
4c55c: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
4c55e: 7207 moveq #7,%d1
4c560: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
4c562: 0280 0000 f8ff andil #63743,%d0
4c568: e189 lsll #8,%d1
4c56a: 8081 orl %d1,%d0
4c56c: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
4c56e: 0804 000a btst #10,%d4
4c572: 6740 beqs 4c5b4 <rtems_task_mode+0xe8>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4c574: 4281 clrl %d1
4c576: 122a 0008 moveb %a2@(8),%d1
4c57a: 4282 clrl %d2
* Output:
* *previous_mode_set - previous mode set
* always return RTEMS_SUCCESSFUL;
*/
rtems_status_code rtems_task_mode(
4c57c: 0803 000a btst #10,%d3
4c580: 57c0 seq %d0
4c582: 4480 negl %d0
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4c584: 1400 moveb %d0,%d2
4c586: b282 cmpl %d2,%d1
4c588: 672a beqs 4c5b4 <rtems_task_mode+0xe8> <== ALWAYS TAKEN
asr->is_enabled = is_asr_enabled;
4c58a: 1540 0008 moveb %d0,%a2@(8) <== NOT EXECUTED
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
4c58e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4c594: 40c1 movew %sr,%d1 <== NOT EXECUTED
4c596: 8081 orl %d1,%d0 <== NOT EXECUTED
4c598: 46c0 movew %d0,%sr <== NOT EXECUTED
_signals = information->signals_pending;
4c59a: 202a 0016 movel %a2@(22),%d0 <== NOT EXECUTED
information->signals_pending = information->signals_posted;
4c59e: 256a 0012 0016 movel %a2@(18),%a2@(22) <== NOT EXECUTED
information->signals_posted = _signals;
4c5a4: 2540 0012 movel %d0,%a2@(18) <== NOT EXECUTED
_ISR_Enable( _level );
4c5a8: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4c5aa: 4aaa 0012 tstl %a2@(18) <== NOT EXECUTED
4c5ae: 56c0 sne %d0 <== NOT EXECUTED
4c5b0: 4480 negl %d0 <== NOT EXECUTED
4c5b2: 6002 bras 4c5b6 <rtems_task_mode+0xea> <== NOT EXECUTED
4c5b4: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4c5b6: 7203 moveq #3,%d1
4c5b8: b2b9 0005 dc74 cmpl 5dc74 <_System_state_Current>,%d1
4c5be: 662c bnes 4c5ec <rtems_task_mode+0x120> <== NEVER TAKEN
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
4c5c0: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
if ( are_signals_pending ||
4c5c6: 4a00 tstb %d0
4c5c8: 660e bnes 4c5d8 <rtems_task_mode+0x10c> <== NEVER TAKEN
4c5ca: b1f9 0005 df96 cmpal 5df96 <_Per_CPU_Information+0x10>,%a0
4c5d0: 671a beqs 4c5ec <rtems_task_mode+0x120> <== ALWAYS TAKEN
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
4c5d2: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED
4c5d6: 6714 beqs 4c5ec <rtems_task_mode+0x120> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4c5d8: 7001 moveq #1,%d0 <== NOT EXECUTED
4c5da: 13c0 0005 df9e moveb %d0,5df9e <_Per_CPU_Information+0x18> <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
4c5e0: 4eb9 0004 765c jsr 4765c <_Thread_Dispatch> <== NOT EXECUTED
4c5e6: 6004 bras 4c5ec <rtems_task_mode+0x120> <== NOT EXECUTED
bool is_asr_enabled = false;
bool needs_asr_dispatching = false;
rtems_mode old_mode;
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
4c5e8: 7009 moveq #9,%d0 <== NOT EXECUTED
4c5ea: 6002 bras 4c5ee <rtems_task_mode+0x122> <== NOT EXECUTED
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4c5ec: 4280 clrl %d0
}
4c5ee: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
4c5f4: 4e5e unlk %fp <== NOT EXECUTED
00046188 <rtems_task_restart>:
rtems_status_code rtems_task_restart(
rtems_id id,
uint32_t argument
)
{
46188: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
4618c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46190: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46194: 4eb9 0004 7f78 jsr 47f78 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4619a: 508f addql #8,%sp <== NOT EXECUTED
4619c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
461a0: 6628 bnes 461ca <rtems_task_restart+0x42> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_Restart( the_thread, NULL, argument ) ) {
461a2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
461a6: 42a7 clrl %sp@- <== NOT EXECUTED
461a8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461aa: 4eb9 0004 8700 jsr 48700 <_Thread_Restart> <== NOT EXECUTED
461b0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
461b4: 41f9 0004 7f52 lea 47f52 <_Thread_Enable_dispatch>,%a0 <== NOT EXECUTED
461ba: 4a00 tstb %d0 <== NOT EXECUTED
461bc: 6706 beqs 461c4 <rtems_task_restart+0x3c> <== NOT EXECUTED
_Thread_Enable_dispatch();
461be: 4e90 jsr %a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
461c0: 4280 clrl %d0 <== NOT EXECUTED
461c2: 6008 bras 461cc <rtems_task_restart+0x44> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
461c4: 4e90 jsr %a0@ <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
461c6: 700e moveq #14,%d0 <== NOT EXECUTED
461c8: 6002 bras 461cc <rtems_task_restart+0x44> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
461ca: 7004 moveq #4,%d0 <== NOT EXECUTED
}
461cc: 4e5e unlk %fp <== NOT EXECUTED
00048790 <rtems_task_resume>:
*/
rtems_status_code rtems_task_resume(
rtems_id id
)
{
48790: 4e56 fffc linkw %fp,#-4
48794: 2f0a movel %a2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
48796: 486e fffc pea %fp@(-4)
4879a: 2f2e 0008 movel %fp@(8),%sp@-
4879e: 4eb9 0004 a5d0 jsr 4a5d0 <_Thread_Get>
switch ( location ) {
487a4: 508f addql #8,%sp
487a6: 4aae fffc tstl %fp@(-4)
487aa: 662a bnes 487d6 <rtems_task_resume+0x46> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
487ac: 7202 moveq #2,%d1
487ae: 2040 moveal %d0,%a0
487b0: 45f9 0004 a5aa lea 4a5aa <_Thread_Enable_dispatch>,%a2
487b6: c2a8 0010 andl %a0@(16),%d1
case OBJECTS_LOCAL:
if ( _States_Is_suspended( the_thread->current_state ) ) {
487ba: 6714 beqs 487d0 <rtems_task_resume+0x40> <== NEVER TAKEN
_Thread_Resume( the_thread, true );
487bc: 4878 0001 pea 1 <ADD>
487c0: 2f00 movel %d0,%sp@-
487c2: 4eb9 0004 ad58 jsr 4ad58 <_Thread_Resume>
_Thread_Enable_dispatch();
487c8: 4e92 jsr %a2@
return RTEMS_SUCCESSFUL;
487ca: 508f addql #8,%sp
487cc: 4280 clrl %d0
487ce: 6008 bras 487d8 <rtems_task_resume+0x48>
}
_Thread_Enable_dispatch();
487d0: 4e92 jsr %a2@
return RTEMS_INCORRECT_STATE;
487d2: 700e moveq #14,%d0 <== NOT EXECUTED
487d4: 6002 bras 487d8 <rtems_task_resume+0x48> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
487d6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
487d8: 246e fff8 moveal %fp@(-8),%a2
487dc: 4e5e unlk %fp <== NOT EXECUTED
00047230 <rtems_task_set_note>:
rtems_status_code rtems_task_set_note(
rtems_id id,
uint32_t notepad,
uint32_t note
)
{
47230: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47234: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
47238: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4723a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
4723e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47240: 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() )
47244: 4a39 0005 e9c4 tstb 5e9c4 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED
4724a: 674e beqs 4729a <rtems_task_set_note+0x6a> <== 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 )
4724c: 720f moveq #15,%d1 <== NOT EXECUTED
4724e: b282 cmpl %d2,%d1 <== NOT EXECUTED
47250: 654c bcss 4729e <rtems_task_set_note+0x6e> <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
47252: 4a80 tstl %d0 <== NOT EXECUTED
47254: 670c beqs 47262 <rtems_task_set_note+0x32> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
47256: 2079 0006 09dc moveal 609dc <_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 ) ||
4725c: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
47260: 6610 bnes 47272 <rtems_task_set_note+0x42> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
47262: 2079 0006 09dc moveal 609dc <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
api->Notepads[ notepad ] = note;
47268: 2068 00fe moveal %a0@(254),%a0 <== NOT EXECUTED
4726c: 2183 2c1e movel %d3,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
47270: 6024 bras 47296 <rtems_task_set_note+0x66> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
the_thread = _Thread_Get( id, &location );
47272: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47276: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47278: 4eb9 0004 91f0 jsr 491f0 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
4727e: 508f addql #8,%sp <== NOT EXECUTED
47280: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47284: 661c bnes 472a2 <rtems_task_set_note+0x72> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
47286: 2240 moveal %d0,%a1 <== NOT EXECUTED
47288: 2069 00fe moveal %a1@(254),%a0 <== NOT EXECUTED
4728c: 2183 2c1e movel %d3,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
47290: 4eb9 0004 91ca jsr 491ca <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47296: 4280 clrl %d0 <== NOT EXECUTED
47298: 600a bras 472a4 <rtems_task_set_note+0x74> <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
4729a: 7016 moveq #22,%d0 <== NOT EXECUTED
4729c: 6006 bras 472a4 <rtems_task_set_note+0x74> <== 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;
4729e: 700a moveq #10,%d0 <== NOT EXECUTED
472a0: 6002 bras 472a4 <rtems_task_set_note+0x74> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
472a2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
472a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
472a8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
472ac: 4e5e unlk %fp <== NOT EXECUTED
000492cc <rtems_task_set_priority>:
rtems_status_code rtems_task_set_priority(
rtems_id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
)
{
492cc: 4e56 fffc linkw %fp,#-4
492d0: 2f0a movel %a2,%sp@-
492d2: 246e 0010 moveal %fp@(16),%a2
492d6: 2f02 movel %d2,%sp@-
492d8: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
492dc: 670c beqs 492ea <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 ) );
492de: 4280 clrl %d0
492e0: 1039 0005 fb82 moveb 5fb82 <rtems_maximum_priority>,%d0
492e6: b082 cmpl %d2,%d0
492e8: 654e bcss 49338 <rtems_task_set_priority+0x6c> <== NEVER TAKEN
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
492ea: 4a8a tstl %a2
492ec: 674e beqs 4933c <rtems_task_set_priority+0x70> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
492ee: 486e fffc pea %fp@(-4)
492f2: 2f2e 0008 movel %fp@(8),%sp@-
492f6: 4eb9 0004 b258 jsr 4b258 <_Thread_Get>
switch ( location ) {
492fc: 508f addql #8,%sp
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
492fe: 2040 moveal %d0,%a0
switch ( location ) {
49300: 4aae fffc tstl %fp@(-4)
49304: 663a bnes 49340 <rtems_task_set_priority+0x74> <== NEVER TAKEN
case OBJECTS_LOCAL:
/* XXX need helper to "convert" from core priority */
*old_priority = the_thread->current_priority;
49306: 24a8 0014 movel %a0@(20),%a2@
if ( new_priority != RTEMS_CURRENT_PRIORITY ) {
4930a: 4a82 tstl %d2
4930c: 6720 beqs 4932e <rtems_task_set_priority+0x62> <== NEVER TAKEN
the_thread->real_priority = new_priority;
4930e: 2142 0018 movel %d2,%a0@(24)
if ( the_thread->resource_count == 0 ||
49312: 4aa8 001c tstl %a0@(28)
49316: 6706 beqs 4931e <rtems_task_set_priority+0x52> <== ALWAYS TAKEN
49318: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED
4931c: 6410 bccs 4932e <rtems_task_set_priority+0x62> <== NOT EXECUTED
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
4931e: 42a7 clrl %sp@-
49320: 2f02 movel %d2,%sp@-
49322: 2f08 movel %a0,%sp@-
49324: 4eb9 0004 ad98 jsr 4ad98 <_Thread_Change_priority>
4932a: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4932e: 4eb9 0004 b232 jsr 4b232 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
49334: 4280 clrl %d0
49336: 600a bras 49342 <rtems_task_set_priority+0x76>
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;
49338: 7013 moveq #19,%d0 <== NOT EXECUTED
4933a: 6006 bras 49342 <rtems_task_set_priority+0x76> <== NOT EXECUTED
if ( !old_priority )
return RTEMS_INVALID_ADDRESS;
4933c: 7009 moveq #9,%d0 <== NOT EXECUTED
4933e: 6002 bras 49342 <rtems_task_set_priority+0x76> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
49340: 7004 moveq #4,%d0 <== NOT EXECUTED
}
49342: 242e fff4 movel %fp@(-12),%d2
49346: 246e fff8 moveal %fp@(-8),%a2
4934a: 4e5e unlk %fp
...
00045a28 <rtems_task_start>:
rtems_status_code rtems_task_start(
rtems_id id,
rtems_task_entry entry_point,
rtems_task_argument argument
)
{
45a28: 4e56 fffc linkw %fp,#-4
45a2c: 2f02 movel %d2,%sp@-
45a2e: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
45a32: 6742 beqs 45a76 <rtems_task_start+0x4e>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
45a34: 486e fffc pea %fp@(-4)
45a38: 2f2e 0008 movel %fp@(8),%sp@-
45a3c: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get>
switch ( location ) {
45a42: 508f addql #8,%sp
45a44: 4aae fffc tstl %fp@(-4)
45a48: 6630 bnes 45a7a <rtems_task_start+0x52> <== NEVER TAKEN
case OBJECTS_LOCAL:
if ( _Thread_Start(
45a4a: 2f2e 0010 movel %fp@(16),%sp@-
45a4e: 42a7 clrl %sp@-
45a50: 2f02 movel %d2,%sp@-
45a52: 42a7 clrl %sp@-
45a54: 2f00 movel %d0,%sp@-
45a56: 4eb9 0004 8110 jsr 48110 <_Thread_Start>
45a5c: 4fef 0014 lea %sp@(20),%sp
45a60: 41f9 0004 779a lea 4779a <_Thread_Enable_dispatch>,%a0
45a66: 4a00 tstb %d0
45a68: 6706 beqs 45a70 <rtems_task_start+0x48> <== NEVER TAKEN
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
45a6a: 4e90 jsr %a0@
return RTEMS_SUCCESSFUL;
45a6c: 4280 clrl %d0
45a6e: 600c bras 45a7c <rtems_task_start+0x54>
}
_Thread_Enable_dispatch();
45a70: 4e90 jsr %a0@ <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
45a72: 700e moveq #14,%d0 <== NOT EXECUTED
45a74: 6006 bras 45a7c <rtems_task_start+0x54> <== NOT EXECUTED
{
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
return RTEMS_INVALID_ADDRESS;
45a76: 7009 moveq #9,%d0
45a78: 6002 bras 45a7c <rtems_task_start+0x54>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45a7a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45a7c: 242e fff8 movel %fp@(-8),%d2
45a80: 4e5e unlk %fp <== NOT EXECUTED
00045a84 <rtems_task_suspend>:
*/
rtems_status_code rtems_task_suspend(
rtems_id id
)
{
45a84: 4e56 fffc linkw %fp,#-4
45a88: 2f0a movel %a2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
45a8a: 486e fffc pea %fp@(-4)
45a8e: 2f2e 0008 movel %fp@(8),%sp@-
45a92: 4eb9 0004 77c0 jsr 477c0 <_Thread_Get>
switch ( location ) {
45a98: 508f addql #8,%sp
45a9a: 4aae fffc tstl %fp@(-4)
45a9e: 6626 bnes 45ac6 <rtems_task_suspend+0x42> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
45aa0: 7202 moveq #2,%d1
45aa2: 2040 moveal %d0,%a0
45aa4: 45f9 0004 779a lea 4779a <_Thread_Enable_dispatch>,%a2
45aaa: c2a8 0010 andl %a0@(16),%d1
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
45aae: 6610 bnes 45ac0 <rtems_task_suspend+0x3c> <== NEVER TAKEN
_Thread_Suspend( the_thread );
45ab0: 2f00 movel %d0,%sp@-
45ab2: 4eb9 0004 8164 jsr 48164 <_Thread_Suspend>
_Thread_Enable_dispatch();
45ab8: 4e92 jsr %a2@
return RTEMS_SUCCESSFUL;
45aba: 588f addql #4,%sp
45abc: 4280 clrl %d0
45abe: 6008 bras 45ac8 <rtems_task_suspend+0x44>
}
_Thread_Enable_dispatch();
45ac0: 4e92 jsr %a2@ <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
45ac2: 700f moveq #15,%d0 <== NOT EXECUTED
45ac4: 6002 bras 45ac8 <rtems_task_suspend+0x44> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45ac6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45ac8: 246e fff8 moveal %fp@(-8),%a2
45acc: 4e5e unlk %fp <== NOT EXECUTED
00046568 <rtems_task_variable_add>:
rtems_status_code rtems_task_variable_add(
rtems_id tid,
void **ptr,
void (*dtor)(void *)
)
{
46568: 4e56 fff0 linkw %fp,#-16
4656c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
46570: 246e 000c moveal %fp@(12),%a2
46574: 242e 0010 movel %fp@(16),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
46578: 4a8a tstl %a2
4657a: 676e beqs 465ea <rtems_task_variable_add+0x82>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
4657c: 486e fffc pea %fp@(-4)
46580: 2f2e 0008 movel %fp@(8),%sp@-
46584: 4eb9 0004 8398 jsr 48398 <_Thread_Get> <== NOT EXECUTED
switch (location) {
4658a: 508f addql #8,%sp <== NOT EXECUTED
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
4658c: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch (location) {
4658e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46592: 665a bnes 465ee <rtems_task_variable_add+0x86> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
46594: 206b 010a moveal %a3@(266),%a0 <== NOT EXECUTED
while (tvp) {
46598: 6014 bras 465ae <rtems_task_variable_add+0x46> <== NOT EXECUTED
if (tvp->ptr == ptr) {
4659a: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED
4659e: 660c bnes 465ac <rtems_task_variable_add+0x44> <== NOT EXECUTED
tvp->dtor = dtor;
465a0: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
_Thread_Enable_dispatch();
465a4: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED
465aa: 603a bras 465e6 <rtems_task_variable_add+0x7e> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
465ac: 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) {
465ae: 4a88 tstl %a0 <== NOT EXECUTED
465b0: 66e8 bnes 4659a <rtems_task_variable_add+0x32> <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
465b2: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
465b6: 4eb9 0004 936c jsr 4936c <_Workspace_Allocate> <== NOT EXECUTED
if (new == NULL) {
465bc: 588f addql #4,%sp <== NOT EXECUTED
465be: 43f9 0004 8372 lea 48372 <_Thread_Enable_dispatch>,%a1 <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
465c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (new == NULL) {
465c6: 4a80 tstl %d0 <== NOT EXECUTED
465c8: 6606 bnes 465d0 <rtems_task_variable_add+0x68> <== NOT EXECUTED
_Thread_Enable_dispatch();
465ca: 4e91 jsr %a1@ <== NOT EXECUTED
return RTEMS_NO_MEMORY;
465cc: 701a moveq #26,%d0 <== NOT EXECUTED
465ce: 6020 bras 465f0 <rtems_task_variable_add+0x88> <== NOT EXECUTED
}
new->gval = *ptr;
465d0: 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;
465d4: 20ab 010a movel %a3@(266),%a0@ <== NOT EXECUTED
if (new == NULL) {
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
new->ptr = ptr;
465d8: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
new->dtor = dtor;
465dc: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
465e0: 2740 010a movel %d0,%a3@(266) <== NOT EXECUTED
_Thread_Enable_dispatch();
465e4: 4e91 jsr %a1@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
465e6: 4280 clrl %d0 <== NOT EXECUTED
465e8: 6006 bras 465f0 <rtems_task_variable_add+0x88> <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
465ea: 7009 moveq #9,%d0
465ec: 6002 bras 465f0 <rtems_task_variable_add+0x88>
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
465ee: 7004 moveq #4,%d0
}
465f0: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
465f6: 4e5e unlk %fp
...
000465fc <rtems_task_variable_delete>:
rtems_status_code rtems_task_variable_delete(
rtems_id tid,
void **ptr
)
{
465fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46600: 2f02 movel %d2,%sp@- <== NOT EXECUTED
46602: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
46606: 6758 beqs 46660 <rtems_task_variable_delete+0x64><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
prev = NULL;
the_thread = _Thread_Get (tid, &location);
46608: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4660c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46610: 4eb9 0004 8398 jsr 48398 <_Thread_Get> <== NOT EXECUTED
switch (location) {
46616: 508f addql #8,%sp <== NOT EXECUTED
46618: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4661c: 6646 bnes 46664 <rtems_task_variable_delete+0x68><== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
4661e: 2240 moveal %d0,%a1 <== NOT EXECUTED
46620: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
prev = NULL;
46624: 93c9 subal %a1,%a1 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
46626: 602e bras 46656 <rtems_task_variable_delete+0x5a><== NOT EXECUTED
if (tvp->ptr == ptr) {
46628: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED
4662c: 6624 bnes 46652 <rtems_task_variable_delete+0x56><== NOT EXECUTED
if (prev)
4662e: 4a89 tstl %a1 <== NOT EXECUTED
46630: 6704 beqs 46636 <rtems_task_variable_delete+0x3a><== NOT EXECUTED
prev->next = tvp->next;
46632: 2290 movel %a0@,%a1@ <== NOT EXECUTED
46634: 6006 bras 4663c <rtems_task_variable_delete+0x40><== NOT EXECUTED
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
46636: 2240 moveal %d0,%a1 <== NOT EXECUTED
46638: 2350 010a movel %a0@,%a1@(266) <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
4663c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4663e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46640: 4eb9 0004 66d8 jsr 466d8 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
46646: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4664c: 508f addql #8,%sp <== NOT EXECUTED
4664e: 4280 clrl %d0 <== NOT EXECUTED
46650: 6014 bras 46666 <rtems_task_variable_delete+0x6a><== NOT EXECUTED
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
46652: 2248 moveal %a0,%a1 <== NOT EXECUTED
46654: 2050 moveal %a0@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
46656: 4a88 tstl %a0 <== NOT EXECUTED
46658: 66ce bnes 46628 <rtems_task_variable_delete+0x2c><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
4665a: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
46660: 7009 moveq #9,%d0 <== NOT EXECUTED
46662: 6002 bras 46666 <rtems_task_variable_delete+0x6a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46664: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46666: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4666a: 4e5e unlk %fp <== NOT EXECUTED
...
00046670 <rtems_task_variable_get>:
rtems_status_code rtems_task_variable_get(
rtems_id tid,
void **ptr,
void **result
)
{
46670: 4e56 fffc linkw %fp,#-4
46674: 2f0a movel %a2,%sp@-
46676: 246e 0010 moveal %fp@(16),%a2
4667a: 2f02 movel %d2,%sp@-
4667c: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
46680: 6742 beqs 466c4 <rtems_task_variable_get+0x54> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !result )
46682: 4a8a tstl %a2 <== NOT EXECUTED
46684: 673e beqs 466c4 <rtems_task_variable_get+0x54> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
46686: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4668a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4668e: 4eb9 0004 8398 jsr 48398 <_Thread_Get> <== NOT EXECUTED
switch (location) {
46694: 508f addql #8,%sp <== NOT EXECUTED
46696: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4669a: 662c bnes 466c8 <rtems_task_variable_get+0x58> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
4669c: 2240 moveal %d0,%a1 <== NOT EXECUTED
4669e: 2069 010a moveal %a1@(266),%a0 <== NOT EXECUTED
while (tvp) {
466a2: 6016 bras 466ba <rtems_task_variable_get+0x4a> <== NOT EXECUTED
if (tvp->ptr == ptr) {
466a4: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED
466a8: 660e bnes 466b8 <rtems_task_variable_get+0x48> <== NOT EXECUTED
/*
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
466aa: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
466ae: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
466b4: 4280 clrl %d0 <== NOT EXECUTED
466b6: 6012 bras 466ca <rtems_task_variable_get+0x5a> <== NOT EXECUTED
}
tvp = (rtems_task_variable_t *)tvp->next;
466b8: 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) {
466ba: 4a88 tstl %a0 <== NOT EXECUTED
466bc: 66e6 bnes 466a4 <rtems_task_variable_get+0x34> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
466be: 4eb9 0004 8372 jsr 48372 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
if ( !result )
return RTEMS_INVALID_ADDRESS;
466c4: 7009 moveq #9,%d0
466c6: 6002 bras 466ca <rtems_task_variable_get+0x5a>
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
466c8: 7004 moveq #4,%d0
}
466ca: 242e fff4 movel %fp@(-12),%d2
466ce: 246e fff8 moveal %fp@(-8),%a2
466d2: 4e5e unlk %fp
...
00045ad0 <rtems_task_wake_after>:
*/
rtems_status_code rtems_task_wake_after(
rtems_interval ticks
)
{
45ad0: 4e56 0000 linkw %fp,#0
45ad4: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0
45ada: 5280 addql #1,%d0
45adc: 2f02 movel %d2,%sp@-
45ade: 242e 0008 movel %fp@(8),%d2
45ae2: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
45ae8: 4a82 tstl %d2
45aea: 6612 bnes 45afe <rtems_task_wake_after+0x2e> <== ALWAYS TAKEN
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
45aec: 4879 0005 db8e pea 5db8e <_Scheduler> <== NOT EXECUTED
45af2: 2079 0005 db96 moveal 5db96 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
45af8: 4e90 jsr %a0@ <== NOT EXECUTED
45afa: 588f addql #4,%sp <== NOT EXECUTED
45afc: 6048 bras 45b46 <rtems_task_wake_after+0x76> <== NOT EXECUTED
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
45afe: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
45b02: 2f39 0005 df92 movel 5df92 <_Per_CPU_Information+0xc>,%sp@-
45b08: 4eb9 0004 7f70 jsr 47f70 <_Thread_Set_state>
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
45b0e: 2079 0005 df92 moveal 5df92 <_Per_CPU_Information+0xc>,%a0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45b14: 223c 0004 7620 movel #292384,%d1
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
_Watchdog_Initialize(
45b1a: 2028 0008 movel %a0@(8),%d0
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
45b1e: 42a8 0050 clrl %a0@(80)
the_watchdog->routine = routine;
45b22: 2141 0064 movel %d1,%a0@(100)
the_watchdog->id = id;
45b26: 2140 0068 movel %d0,%a0@(104)
the_watchdog->user_data = user_data;
45b2a: 42a8 006c clrl %a0@(108)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45b2e: 2142 0054 movel %d2,%a0@(84)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
45b32: 4868 0048 pea %a0@(72)
45b36: 4879 0005 dbe8 pea 5dbe8 <_Watchdog_Ticks_chain>
45b3c: 4eb9 0004 8514 jsr 48514 <_Watchdog_Insert>
45b42: 4fef 0010 lea %sp@(16),%sp
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
45b46: 4eb9 0004 779a jsr 4779a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
45b4c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
45b50: 4280 clrl %d0 <== NOT EXECUTED
45b52: 4e5e unlk %fp <== NOT EXECUTED
...
000466d0 <rtems_task_wake_when>:
*/
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
)
{
466d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
466d4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
466d6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
466da: 4a39 0005 f0c0 tstb 5f0c0 <_TOD_Is_set> <== NOT EXECUTED
466e0: 6700 0096 beqw 46778 <rtems_task_wake_when+0xa8> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
466e4: 4a8a tstl %a2 <== NOT EXECUTED
466e6: 6700 0094 beqw 4677c <rtems_task_wake_when+0xac> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
time_buffer->ticks = 0;
466ea: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
if ( !_TOD_Validate( time_buffer ) )
466ee: 2f0a movel %a2,%sp@- <== NOT EXECUTED
466f0: 4eb9 0004 5b80 jsr 45b80 <_TOD_Validate> <== NOT EXECUTED
466f6: 588f addql #4,%sp <== NOT EXECUTED
466f8: 4a00 tstb %d0 <== NOT EXECUTED
466fa: 6700 0084 beqw 46780 <rtems_task_wake_when+0xb0> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
466fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46700: 4eb9 0004 5ae4 jsr 45ae4 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
46706: 588f addql #4,%sp <== NOT EXECUTED
time_buffer->ticks = 0;
if ( !_TOD_Validate( time_buffer ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
46708: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
4670a: b0b9 0005 f15a cmpl 5f15a <_TOD_Now>,%d0 <== NOT EXECUTED
46710: 636e blss 46780 <rtems_task_wake_when+0xb0> <== NOT EXECUTED
46712: 2039 0005 f0b0 movel 5f0b0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46718: 5280 addql #1,%d0 <== NOT EXECUTED
4671a: 23c0 0005 f0b0 movel %d0,5f0b0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
46720: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
46724: 2f39 0005 f53a movel 5f53a <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4672a: 4eb9 0004 8b98 jsr 48b98 <_Thread_Set_state> <== NOT EXECUTED
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
46730: 2079 0005 f53a moveal 5f53a <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Watchdog_Insert_seconds(
46736: 95f9 0005 f15a subal 5f15a <_TOD_Now>,%a2 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4673c: 223c 0004 8248 movel #295496,%d1 <== 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(
46742: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46746: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
4674a: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4674e: 2141 0064 movel %d1,%a0@(100) <== NOT EXECUTED
the_watchdog->id = id;
the_watchdog->user_data = user_data;
46752: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_seconds(
46756: 214a 0054 movel %a2,%a0@(84) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
4675a: 4868 0048 pea %a0@(72) <== NOT EXECUTED
4675e: 4879 0005 f184 pea 5f184 <_Watchdog_Seconds_chain> <== NOT EXECUTED
46764: 4eb9 0004 91bc jsr 491bc <_Watchdog_Insert> <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
4676a: 4eb9 0004 83c2 jsr 483c2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46770: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46774: 4280 clrl %d0 <== NOT EXECUTED
46776: 600a bras 46782 <rtems_task_wake_when+0xb2> <== NOT EXECUTED
)
{
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
46778: 700b moveq #11,%d0 <== NOT EXECUTED
4677a: 6006 bras 46782 <rtems_task_wake_when+0xb2> <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
4677c: 7009 moveq #9,%d0 <== NOT EXECUTED
4677e: 6002 bras 46782 <rtems_task_wake_when+0xb2> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
46780: 7014 moveq #20,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46782: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46786: 4e5e unlk %fp <== NOT EXECUTED
...
00044ca0 <rtems_termios_baud_to_index>:
rtems_termios_baud_t termios_baud
)
{
int baud_index;
switch (termios_baud) {
44ca0: 7209 moveq #9,%d1 <== NOT EXECUTED
#include <rtems/termiostypes.h>
int rtems_termios_baud_to_index(
rtems_termios_baud_t termios_baud
)
{
44ca2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44ca6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
int baud_index;
switch (termios_baud) {
44caa: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cac: 6700 00c4 beqw 44d72 <rtems_termios_baud_to_index+0xd2><== NOT EXECUTED
44cb0: 6d50 blts 44d02 <rtems_termios_baud_to_index+0x62><== NOT EXECUTED
44cb2: 123c 0004 moveb #4,%d1 <== NOT EXECUTED
44cb6: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cb8: 6700 00a4 beqw 44d5e <rtems_termios_baud_to_index+0xbe><== NOT EXECUTED
44cbc: 6d28 blts 44ce6 <rtems_termios_baud_to_index+0x46><== NOT EXECUTED
44cbe: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
44cc2: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cc4: 6700 00dc beqw 44da2 <rtems_termios_baud_to_index+0x102><== NOT EXECUTED
44cc8: 6d0a blts 44cd4 <rtems_termios_baud_to_index+0x34><== NOT EXECUTED
44cca: 4a80 tstl %d0 <== NOT EXECUTED
44ccc: 6700 0084 beqw 44d52 <rtems_termios_baud_to_index+0xb2><== NOT EXECUTED
44cd0: 6000 00cc braw 44d9e <rtems_termios_baud_to_index+0xfe><== NOT EXECUTED
44cd4: 7202 moveq #2,%d1 <== NOT EXECUTED
44cd6: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cd8: 677c beqs 44d56 <rtems_termios_baud_to_index+0xb6><== NOT EXECUTED
44cda: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
44cde: b280 cmpl %d0,%d1 <== NOT EXECUTED
44ce0: 6600 00bc bnew 44d9e <rtems_termios_baud_to_index+0xfe><== NOT EXECUTED
44ce4: 6074 bras 44d5a <rtems_termios_baud_to_index+0xba><== NOT EXECUTED
44ce6: 7206 moveq #6,%d1 <== NOT EXECUTED
44ce8: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cea: 677a beqs 44d66 <rtems_termios_baud_to_index+0xc6><== NOT EXECUTED
44cec: 6e74 bgts 44d62 <rtems_termios_baud_to_index+0xc2><== NOT EXECUTED
44cee: 123c 0007 moveb #7,%d1 <== NOT EXECUTED
44cf2: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cf4: 6774 beqs 44d6a <rtems_termios_baud_to_index+0xca><== NOT EXECUTED
44cf6: 123c 0008 moveb #8,%d1 <== NOT EXECUTED
44cfa: b280 cmpl %d0,%d1 <== NOT EXECUTED
44cfc: 6600 00a0 bnew 44d9e <rtems_termios_baud_to_index+0xfe><== NOT EXECUTED
44d00: 606c bras 44d6e <rtems_termios_baud_to_index+0xce><== NOT EXECUTED
44d02: 720e moveq #14,%d1 <== NOT EXECUTED
44d04: b280 cmpl %d0,%d1 <== NOT EXECUTED
44d06: 677e beqs 44d86 <rtems_termios_baud_to_index+0xe6><== NOT EXECUTED
44d08: 6d1c blts 44d26 <rtems_termios_baud_to_index+0x86><== NOT EXECUTED
44d0a: 123c 000b moveb #11,%d1 <== NOT EXECUTED
44d0e: b280 cmpl %d0,%d1 <== NOT EXECUTED
44d10: 6768 beqs 44d7a <rtems_termios_baud_to_index+0xda><== NOT EXECUTED
44d12: 6e62 bgts 44d76 <rtems_termios_baud_to_index+0xd6><== NOT EXECUTED
44d14: 123c 000c moveb #12,%d1 <== NOT EXECUTED
44d18: b280 cmpl %d0,%d1 <== NOT EXECUTED
44d1a: 6762 beqs 44d7e <rtems_termios_baud_to_index+0xde><== NOT EXECUTED
44d1c: 123c 000d moveb #13,%d1 <== NOT EXECUTED
44d20: b280 cmpl %d0,%d1 <== NOT EXECUTED
44d22: 667a bnes 44d9e <rtems_termios_baud_to_index+0xfe><== NOT EXECUTED
44d24: 605c bras 44d82 <rtems_termios_baud_to_index+0xe2><== NOT EXECUTED
44d26: 0c80 0000 1002 cmpil #4098,%d0 <== NOT EXECUTED
44d2c: 6764 beqs 44d92 <rtems_termios_baud_to_index+0xf2><== NOT EXECUTED
44d2e: 6e10 bgts 44d40 <rtems_termios_baud_to_index+0xa0><== NOT EXECUTED
44d30: 720f moveq #15,%d1 <== NOT EXECUTED
44d32: b280 cmpl %d0,%d1 <== NOT EXECUTED
44d34: 6754 beqs 44d8a <rtems_termios_baud_to_index+0xea><== NOT EXECUTED
44d36: 0c80 0000 1001 cmpil #4097,%d0 <== NOT EXECUTED
44d3c: 6660 bnes 44d9e <rtems_termios_baud_to_index+0xfe><== NOT EXECUTED
44d3e: 604e bras 44d8e <rtems_termios_baud_to_index+0xee><== NOT EXECUTED
44d40: 0c80 0000 1003 cmpil #4099,%d0 <== NOT EXECUTED
44d46: 674e beqs 44d96 <rtems_termios_baud_to_index+0xf6><== NOT EXECUTED
44d48: 0c80 0000 1004 cmpil #4100,%d0 <== NOT EXECUTED
44d4e: 664e bnes 44d9e <rtems_termios_baud_to_index+0xfe><== NOT EXECUTED
44d50: 6048 bras 44d9a <rtems_termios_baud_to_index+0xfa><== NOT EXECUTED
case B0: baud_index = 0; break;
44d52: 4280 clrl %d0 <== NOT EXECUTED
44d54: 604e bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B50: baud_index = 1; break;
case B75: baud_index = 2; break;
44d56: 7002 moveq #2,%d0 <== NOT EXECUTED
44d58: 604a bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B110: baud_index = 3; break;
44d5a: 7003 moveq #3,%d0 <== NOT EXECUTED
44d5c: 6046 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B134: baud_index = 4; break;
44d5e: 7004 moveq #4,%d0 <== NOT EXECUTED
44d60: 6042 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B150: baud_index = 5; break;
44d62: 7005 moveq #5,%d0 <== NOT EXECUTED
44d64: 603e bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B200: baud_index = 6; break;
44d66: 7006 moveq #6,%d0 <== NOT EXECUTED
44d68: 603a bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B300: baud_index = 7; break;
44d6a: 7007 moveq #7,%d0 <== NOT EXECUTED
44d6c: 6036 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B600: baud_index = 8; break;
44d6e: 7008 moveq #8,%d0 <== NOT EXECUTED
44d70: 6032 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B1200: baud_index = 9; break;
44d72: 7009 moveq #9,%d0 <== NOT EXECUTED
44d74: 602e bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B1800: baud_index = 10; break;
44d76: 700a moveq #10,%d0 <== NOT EXECUTED
44d78: 602a bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B2400: baud_index = 11; break;
44d7a: 700b moveq #11,%d0 <== NOT EXECUTED
44d7c: 6026 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B4800: baud_index = 12; break;
44d7e: 700c moveq #12,%d0 <== NOT EXECUTED
44d80: 6022 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B9600: baud_index = 13; break;
44d82: 700d moveq #13,%d0 <== NOT EXECUTED
44d84: 601e bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B19200: baud_index = 14; break;
44d86: 700e moveq #14,%d0 <== NOT EXECUTED
44d88: 601a bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B38400: baud_index = 15; break;
44d8a: 700f moveq #15,%d0 <== NOT EXECUTED
44d8c: 6016 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B57600: baud_index = 16; break;
44d8e: 7010 moveq #16,%d0 <== NOT EXECUTED
44d90: 6012 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B115200: baud_index = 17; break;
44d92: 7011 moveq #17,%d0 <== NOT EXECUTED
44d94: 600e bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B230400: baud_index = 18; break;
44d96: 7012 moveq #18,%d0 <== NOT EXECUTED
44d98: 600a bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
case B460800: baud_index = 19; break;
44d9a: 7013 moveq #19,%d0 <== NOT EXECUTED
44d9c: 6006 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
default: baud_index = -1; break;
44d9e: 70ff moveq #-1,%d0 <== NOT EXECUTED
44da0: 6002 bras 44da4 <rtems_termios_baud_to_index+0x104><== NOT EXECUTED
{
int baud_index;
switch (termios_baud) {
case B0: baud_index = 0; break;
case B50: baud_index = 1; break;
44da2: 7001 moveq #1,%d0 <== NOT EXECUTED
case B460800: baud_index = 19; break;
default: baud_index = -1; break;
}
return baud_index;
}
44da4: 4e5e unlk %fp <== NOT EXECUTED
000434f8 <rtems_termios_baud_to_number>:
extern rtems_assoc_t termios_assoc_table[];
int32_t rtems_termios_baud_to_number(
int termios_baud
)
{
434f8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
434fc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
434fe: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int baud;
baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud );
43502: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43504: 4879 0005 c2b0 pea 5c2b0 <termios_assoc_table> <== NOT EXECUTED
4350a: 4eb9 0004 9608 jsr 49608 <rtems_assoc_local_by_remote> <== NOT EXECUTED
if ( baud == 0 && termios_baud != 0 )
43510: 508f addql #8,%sp <== NOT EXECUTED
43512: 4a80 tstl %d0 <== NOT EXECUTED
43514: 6606 bnes 4351c <rtems_termios_baud_to_number+0x24><== NOT EXECUTED
43516: 4a82 tstl %d2 <== NOT EXECUTED
43518: 56c0 sne %d0 <== NOT EXECUTED
4351a: 49c0 extbl %d0 <== NOT EXECUTED
return -1;
return baud;
}
4351c: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
43520: 4e5e unlk %fp <== NOT EXECUTED
00043b18 <rtems_termios_bufsize>:
{
rtems_termios_cbufsize = cbufsize;
rtems_termios_raw_input_size = raw_input;
rtems_termios_raw_output_size = raw_output;
return RTEMS_SUCCESSFUL;
}
43b18: 4280 clrl %d0 <== NOT EXECUTED
rtems_status_code rtems_termios_bufsize (
int cbufsize,
int raw_input,
int raw_output
)
{
43b1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_termios_cbufsize = cbufsize;
43b1e: 41ee 0008 lea %fp@(8),%a0 <== NOT EXECUTED
43b22: 23d0 0005 c3b0 movel %a0@,5c3b0 <rtems_termios_cbufsize> <== NOT EXECUTED
rtems_termios_raw_input_size = raw_input;
43b28: 41ee 000c lea %fp@(12),%a0 <== NOT EXECUTED
43b2c: 23d0 0005 c3b4 movel %a0@,5c3b4 <rtems_termios_raw_input_size><== NOT EXECUTED
rtems_termios_raw_output_size = raw_output;
43b32: 41ee 0010 lea %fp@(16),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
43b36: 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;
43b38: 23d0 0005 c3b8 movel %a0@,5c3b8 <rtems_termios_raw_output_size><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
000439ac <rtems_termios_close>:
}
}
rtems_status_code
rtems_termios_close (void *arg)
{
439ac: 4e56 fff4 linkw %fp,#-12
439b0: 48d7 1c00 moveml %a2-%a4,%sp@
439b4: 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(
439b8: 49f9 0004 55f4 lea 455f4 <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;
439be: 2053 moveal %a3@,%a0
439c0: 2468 0034 moveal %a0@(52),%a2
rtems_status_code sc;
sc = rtems_semaphore_obtain(
439c4: 42a7 clrl %sp@-
439c6: 42a7 clrl %sp@-
439c8: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@-
439ce: 4e94 jsr %a4@
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
439d0: 4fef 000c lea %sp@(12),%sp
439d4: 4a80 tstl %d0
439d6: 667c bnes 43a54 <rtems_termios_close+0xa8> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
if (--tty->refcount == 0) {
439d8: 202a 0008 movel %a2@(8),%d0
439dc: 5380 subql #1,%d0
439de: 2540 0008 movel %d0,%a2@(8)
439e2: 6600 011c bnew 43b00 <rtems_termios_close+0x154>
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
439e6: 202a 00cc movel %a2@(204),%d0
439ea: eb88 lsll #5,%d0
439ec: 0680 0005 d1c0 addil #381376,%d0
439f2: 2240 moveal %d0,%a1
439f4: 2051 moveal %a1@,%a0
439f6: 4a88 tstl %a0
439f8: 6708 beqs 43a02 <rtems_termios_close+0x56> <== ALWAYS TAKEN
/*
* call discipline-specific close
*/
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
439fa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
439fc: 4e90 jsr %a0@ <== NOT EXECUTED
439fe: 588f addql #4,%sp <== NOT EXECUTED
43a00: 6024 bras 43a26 <rtems_termios_close+0x7a> <== NOT EXECUTED
} else {
/*
* default: just flush output buffer
*/
sc = rtems_semaphore_obtain(tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
43a02: 42a7 clrl %sp@-
43a04: 42a7 clrl %sp@-
43a06: 2f2a 0018 movel %a2@(24),%sp@-
43a0a: 4e94 jsr %a4@
if (sc != RTEMS_SUCCESSFUL) {
43a0c: 4fef 000c lea %sp@(12),%sp
43a10: 4a80 tstl %d0
43a12: 6640 bnes 43a54 <rtems_termios_close+0xa8> <== NEVER TAKEN
rtems_fatal_error_occurred (sc);
}
drainOutput (tty);
43a14: 2f0a movel %a2,%sp@-
43a16: 4eba fb48 jsr %pc@(43560 <drainOutput>)
rtems_semaphore_release (tty->osem);
43a1a: 2f2a 0018 movel %a2@(24),%sp@-
43a1e: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release>
43a24: 508f addql #8,%sp
}
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43a26: 7002 moveq #2,%d0
43a28: b0aa 00b4 cmpl %a2@(180),%d0
43a2c: 662e bnes 43a5c <rtems_termios_close+0xb0> <== ALWAYS TAKEN
/*
* send "terminate" to I/O tasks
*/
sc = rtems_event_send( tty->rxTaskId, TERMIOS_RX_TERMINATE_EVENT );
43a2e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43a32: 49f9 0004 51a4 lea 451a4 <rtems_event_send>,%a4 <== NOT EXECUTED
43a38: 2f2a 00c4 movel %a2@(196),%sp@- <== NOT EXECUTED
43a3c: 4e94 jsr %a4@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
43a3e: 508f addql #8,%sp <== NOT EXECUTED
43a40: 4a80 tstl %d0 <== NOT EXECUTED
43a42: 6610 bnes 43a54 <rtems_termios_close+0xa8> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
43a44: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43a48: 2f2a 00c8 movel %a2@(200),%sp@- <== NOT EXECUTED
43a4c: 4e94 jsr %a4@ <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
43a4e: 508f addql #8,%sp <== NOT EXECUTED
43a50: 4a80 tstl %d0 <== NOT EXECUTED
43a52: 6708 beqs 43a5c <rtems_termios_close+0xb0> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
43a54: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43a56: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred> <== NOT EXECUTED
}
if (tty->device.lastClose)
43a5c: 206a 009c moveal %a2@(156),%a0
43a60: 4a88 tstl %a0
43a62: 6710 beqs 43a74 <rtems_termios_close+0xc8> <== NEVER TAKEN
(*tty->device.lastClose)(tty->major, tty->minor, arg);
43a64: 2f0b movel %a3,%sp@-
43a66: 2f2a 0010 movel %a2@(16),%sp@-
43a6a: 2f2a 000c movel %a2@(12),%sp@-
43a6e: 4e90 jsr %a0@
43a70: 4fef 000c lea %sp@(12),%sp
if (tty->forw == NULL) {
43a74: 2052 moveal %a2@,%a0
43a76: 4a88 tstl %a0
43a78: 6610 bnes 43a8a <rtems_termios_close+0xde> <== NEVER TAKEN
rtems_termios_ttyTail = tty->back;
43a7a: 206a 0004 moveal %a2@(4),%a0
43a7e: 23c8 0005 d9fc movel %a0,5d9fc <rtems_termios_ttyTail>
if ( rtems_termios_ttyTail != NULL ) {
43a84: 670a beqs 43a90 <rtems_termios_close+0xe4> <== ALWAYS TAKEN
rtems_termios_ttyTail->forw = NULL;
43a86: 4290 clrl %a0@ <== NOT EXECUTED
43a88: 6006 bras 43a90 <rtems_termios_close+0xe4> <== NOT EXECUTED
}
} else {
tty->forw->back = tty->back;
43a8a: 216a 0004 0004 movel %a2@(4),%a0@(4) <== NOT EXECUTED
}
if (tty->back == NULL) {
43a90: 206a 0004 moveal %a2@(4),%a0
43a94: 4a88 tstl %a0
43a96: 6610 bnes 43aa8 <rtems_termios_close+0xfc> <== NEVER TAKEN
rtems_termios_ttyHead = tty->forw;
43a98: 2052 moveal %a2@,%a0
43a9a: 23c8 0005 da00 movel %a0,5da00 <rtems_termios_ttyHead>
if ( rtems_termios_ttyHead != NULL ) {
43aa0: 6708 beqs 43aaa <rtems_termios_close+0xfe> <== ALWAYS TAKEN
rtems_termios_ttyHead->back = NULL;
43aa2: 42a8 0004 clrl %a0@(4) <== NOT EXECUTED
43aa6: 6002 bras 43aaa <rtems_termios_close+0xfe> <== NOT EXECUTED
}
} else {
tty->back->forw = tty->forw;
43aa8: 2092 movel %a2@,%a0@ <== NOT EXECUTED
}
rtems_semaphore_delete (tty->isem);
43aaa: 2f2a 0014 movel %a2@(20),%sp@-
43aae: 47f9 0004 5558 lea 45558 <rtems_semaphore_delete>,%a3
43ab4: 4e93 jsr %a3@
rtems_semaphore_delete (tty->osem);
43ab6: 2f2a 0018 movel %a2@(24),%sp@-
43aba: 4e93 jsr %a3@
rtems_semaphore_delete (tty->rawOutBuf.Semaphore);
43abc: 2f2a 008c movel %a2@(140),%sp@-
43ac0: 4e93 jsr %a3@
if ((tty->device.pollRead == NULL) ||
43ac2: 4fef 000c lea %sp@(12),%sp
43ac6: 4aaa 00a0 tstl %a2@(160)
43aca: 6708 beqs 43ad4 <rtems_termios_close+0x128> <== ALWAYS TAKEN
43acc: 7002 moveq #2,%d0 <== NOT EXECUTED
43ace: b0aa 00b4 cmpl %a2@(180),%d0 <== NOT EXECUTED
43ad2: 660c bnes 43ae0 <rtems_termios_close+0x134> <== NOT EXECUTED
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))
rtems_semaphore_delete (tty->rawInBuf.Semaphore);
43ad4: 2f2a 0068 movel %a2@(104),%sp@-
43ad8: 4eb9 0004 5558 jsr 45558 <rtems_semaphore_delete>
43ade: 588f addql #4,%sp
free (tty->rawInBuf.theBuf);
43ae0: 2f2a 0058 movel %a2@(88),%sp@-
43ae4: 47f9 0004 27b4 lea 427b4 <free>,%a3
43aea: 4e93 jsr %a3@
free (tty->rawOutBuf.theBuf);
43aec: 2f2a 007c movel %a2@(124),%sp@-
43af0: 4e93 jsr %a3@
free (tty->cbuf);
43af2: 2f2a 001c movel %a2@(28),%sp@-
43af6: 4e93 jsr %a3@
free (tty);
43af8: 2f0a movel %a2,%sp@-
43afa: 4e93 jsr %a3@
43afc: 4fef 0010 lea %sp@(16),%sp
}
rtems_semaphore_release (rtems_termios_ttyMutex);
43b00: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@-
43b06: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
}
43b0c: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4
43b12: 4280 clrl %d0
43b14: 4e5e unlk %fp <== NOT EXECUTED
00044d04 <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)
{
44d04: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
44d08: 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)
{
44d0c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
rtems_status_code sc;
/*
* sum up character count already sent
*/
tty->t_dqlen += len;
44d10: d1a8 0090 addl %d0,%a0@(144) <== NOT EXECUTED
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
44d14: 7002 moveq #2,%d0 <== NOT EXECUTED
44d16: b0a8 00b4 cmpl %a0@(180),%d0 <== NOT EXECUTED
44d1a: 661c bnes 44d38 <rtems_termios_dequeue_characters+0x34><== NOT EXECUTED
/*
* send wake up to transmitter task
*/
sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);
44d1c: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
44d20: 2f28 00c8 movel %a0@(200),%sp@- <== NOT EXECUTED
44d24: 4eb9 0004 51a4 jsr 451a4 <rtems_event_send> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
44d2a: 508f addql #8,%sp <== NOT EXECUTED
44d2c: 4a80 tstl %d0 <== NOT EXECUTED
44d2e: 672e beqs 44d5e <rtems_termios_dequeue_characters+0x5a><== NOT EXECUTED
rtems_fatal_error_occurred (sc);
44d30: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44d32: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred> <== NOT EXECUTED
return 0; /* nothing to output in IRQ... */
}
if (tty->t_line == PPPDISC ) {
44d38: 7005 moveq #5,%d0 <== NOT EXECUTED
44d3a: b0a8 00cc cmpl %a0@(204),%d0 <== NOT EXECUTED
44d3e: 6612 bnes 44d52 <rtems_termios_dequeue_characters+0x4e><== NOT EXECUTED
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
44d40: 2279 0005 d270 moveal 5d270 <rtems_termios_linesw+0xb4>,%a1<== NOT EXECUTED
44d46: 4a89 tstl %a1 <== NOT EXECUTED
44d48: 6714 beqs 44d5e <rtems_termios_dequeue_characters+0x5a><== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
44d4a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
44d4c: 4e91 jsr %a1@ <== NOT EXECUTED
44d4e: 588f addql #4,%sp <== NOT EXECUTED
44d50: 600c bras 44d5e <rtems_termios_dequeue_characters+0x5a><== NOT EXECUTED
}
return 0; /* nothing to output in IRQ... */
}
return rtems_termios_refill_transmitter(tty);
44d52: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
44d56: 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);
44d58: 4ef9 0004 4ae8 jmp 44ae8 <rtems_termios_refill_transmitter><== NOT EXECUTED
}
44d5e: 4280 clrl %d0 <== NOT EXECUTED
44d60: 4e5e unlk %fp <== NOT EXECUTED
00044828 <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)
{
44828: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
4482c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
44830: 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) {
44834: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
44838: 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)
{
4483a: 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) {
4483e: 0680 0005 d1cc addil #381388,%d0 <== NOT EXECUTED
44844: 2040 moveal %d0,%a0 <== 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)
{
44846: 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) {
4484a: 4a90 tstl %a0@ <== NOT EXECUTED
4484c: 6630 bnes 4487e <rtems_termios_enqueue_raw_characters+0x56><== NOT EXECUTED
4484e: 2802 movel %d2,%d4 <== NOT EXECUTED
44850: 4282 clrl %d2 <== 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);
44852: 4bea 0030 lea %a2@(48),%a5 <== 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,
44856: 49ea 004a lea %a2@(74),%a4 <== 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) {
4485a: 4206 clrb %d6 <== NOT EXECUTED
4485c: 6000 01f4 braw 44a52 <rtems_termios_enqueue_raw_characters+0x22a><== NOT EXECUTED
while (len--) {
c = *buf++;
rtems_termios_linesw[tty->t_line].l_rint(c,tty);
44860: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
44864: 5382 subql #1,%d2 <== NOT EXECUTED
44866: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44868: 121b moveb %a3@+,%d1 <== NOT EXECUTED
4486a: eb88 lsll #5,%d0 <== NOT EXECUTED
4486c: 49c1 extbl %d1 <== NOT EXECUTED
4486e: 0680 0005 d1cc addil #381388,%d0 <== NOT EXECUTED
44874: 2240 moveal %d0,%a1 <== NOT EXECUTED
44876: 2f01 movel %d1,%sp@- <== NOT EXECUTED
44878: 2051 moveal %a1@,%a0 <== NOT EXECUTED
4487a: 4e90 jsr %a0@ <== NOT EXECUTED
4487c: 508f addql #8,%sp <== 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--) {
4487e: 4a82 tstl %d2 <== NOT EXECUTED
44880: 66de bnes 44860 <rtems_termios_enqueue_raw_characters+0x38><== NOT EXECUTED
}
/*
* check to see if rcv wakeup callback was set
*/
if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
44882: 4aaa 00e4 tstl %a2@(228) <== NOT EXECUTED
44886: 6600 01e2 bnew 44a6a <rtems_termios_enqueue_raw_characters+0x242><== NOT EXECUTED
4488a: 206a 00dc moveal %a2@(220),%a0 <== NOT EXECUTED
4488e: 4a88 tstl %a0 <== NOT EXECUTED
44890: 6700 01d8 beqw 44a6a <rtems_termios_enqueue_raw_characters+0x242><== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
44894: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED
44898: 486a 0030 pea %a2@(48) <== NOT EXECUTED
4489c: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
4489e: 508f addql #8,%sp <== NOT EXECUTED
448a0: 7001 moveq #1,%d0 <== NOT EXECUTED
448a2: 2540 00e4 movel %d0,%a2@(228) <== NOT EXECUTED
448a6: 6000 01c4 braw 44a6c <rtems_termios_enqueue_raw_characters+0x244><== NOT EXECUTED
while (len--) {
c = *buf++;
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
448aa: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
}
return 0;
}
while (len--) {
c = *buf++;
448ae: 1e1b moveb %a3@+,%d7 <== NOT EXECUTED
/* FIXME: implement IXANY: any character restarts output */
/* if incoming XON/XOFF controls outgoing stream: */
if (tty->flow_ctrl & FL_MDXON) {
448b0: 0800 0009 btst #9,%d0 <== NOT EXECUTED
448b4: 6740 beqs 448f6 <rtems_termios_enqueue_raw_characters+0xce><== NOT EXECUTED
/* if received char is V_STOP and V_START (both are equal value) */
if (c == tty->termios.c_cc[VSTOP]) {
448b6: 4283 clrl %d3 <== NOT EXECUTED
448b8: 162a 004a moveb %a2@(74),%d3 <== NOT EXECUTED
448bc: 4281 clrl %d1 <== NOT EXECUTED
448be: 122a 0049 moveb %a2@(73),%d1 <== NOT EXECUTED
448c2: 1007 moveb %d7,%d0 <== NOT EXECUTED
448c4: 49c0 extbl %d0 <== NOT EXECUTED
448c6: b680 cmpl %d0,%d3 <== NOT EXECUTED
448c8: 661e bnes 448e8 <rtems_termios_enqueue_raw_characters+0xc0><== NOT EXECUTED
if (c == tty->termios.c_cc[VSTART]) {
448ca: b280 cmpl %d0,%d1 <== NOT EXECUTED
448cc: 660a bnes 448d8 <rtems_termios_enqueue_raw_characters+0xb0><== NOT EXECUTED
/* received VSTOP and VSTART==VSTOP? */
/* then toggle "stop output" status */
tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;
448ce: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
448d2: 7210 moveq #16,%d1 <== NOT EXECUTED
448d4: b380 eorl %d1,%d0 <== NOT EXECUTED
448d6: 6008 bras 448e0 <rtems_termios_enqueue_raw_characters+0xb8><== NOT EXECUTED
}
else {
/* VSTOP received (other code than VSTART) */
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
448d8: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
448dc: 7a10 moveq #16,%d5 <== NOT EXECUTED
448de: 8085 orl %d5,%d0 <== NOT EXECUTED
448e0: 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)
{
448e4: 7c01 moveq #1,%d6 <== NOT EXECUTED
448e6: 6012 bras 448fa <rtems_termios_enqueue_raw_characters+0xd2><== NOT EXECUTED
/* stop output */
tty->flow_ctrl |= FL_ORCVXOF;
}
flow_rcv = true;
}
else if (c == tty->termios.c_cc[VSTART]) {
448e8: b280 cmpl %d0,%d1 <== NOT EXECUTED
448ea: 660a bnes 448f6 <rtems_termios_enqueue_raw_characters+0xce><== NOT EXECUTED
/* VSTART received */
/* restart output */
tty->flow_ctrl &= ~FL_ORCVXOF;
448ec: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
448f0: 72ef moveq #-17,%d1 <== NOT EXECUTED
448f2: c081 andl %d1,%d0 <== NOT EXECUTED
448f4: 60ea bras 448e0 <rtems_termios_enqueue_raw_characters+0xb8><== NOT EXECUTED
flow_rcv = true;
}
}
if (flow_rcv) {
448f6: 4a06 tstb %d6 <== NOT EXECUTED
448f8: 6750 beqs 4494a <rtems_termios_enqueue_raw_characters+0x122><== NOT EXECUTED
/* restart output according to FL_ORCVXOF flag */
if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {
448fa: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
448fe: 7a30 moveq #48,%d5 <== NOT EXECUTED
44900: 7220 moveq #32,%d1 <== NOT EXECUTED
44902: c085 andl %d5,%d0 <== NOT EXECUTED
44904: b280 cmpl %d0,%d1 <== NOT EXECUTED
44906: 6600 0148 bnew 44a50 <rtems_termios_enqueue_raw_characters+0x228><== NOT EXECUTED
/* disable interrupts */
rtems_interrupt_disable(level);
4490a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44910: 40c3 movew %sr,%d3 <== NOT EXECUTED
44912: 8083 orl %d3,%d0 <== NOT EXECUTED
44914: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
44916: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4491a: 7adf moveq #-33,%d5 <== NOT EXECUTED
4491c: c085 andl %d5,%d0 <== NOT EXECUTED
4491e: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
44922: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
44926: 671c beqs 44944 <rtems_termios_enqueue_raw_characters+0x11c><== NOT EXECUTED
/* if chars available, call write function... */
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
44928: 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)(
4492c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44930: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED
44934: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44936: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4493a: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4493e: 4e90 jsr %a0@ <== NOT EXECUTED
44940: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
44944: 46c3 movew %d3,%sr <== NOT EXECUTED
44946: 6000 0108 braw 44a50 <rtems_termios_enqueue_raw_characters+0x228><== NOT EXECUTED
}
} else {
newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;
4494a: 222a 0060 movel %a2@(96),%d1 <== NOT EXECUTED
4494e: 5281 addql #1,%d1 <== NOT EXECUTED
44950: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
44954: 4c40 1003 remul %d0,%d3,%d1 <== NOT EXECUTED
/* if chars_in_buffer > highwater */
rtems_interrupt_disable(level);
44958: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
4495e: 40c1 movew %sr,%d1 <== NOT EXECUTED
44960: 8081 orl %d1,%d0 <== NOT EXECUTED
44962: 46c0 movew %d0,%sr <== NOT EXECUTED
44964: 2d41 fffc movel %d1,%fp@(-4) <== NOT EXECUTED
if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)
44968: 206a 005c moveal %a2@(92),%a0 <== NOT EXECUTED
4496c: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
44970: 9088 subl %a0,%d0 <== NOT EXECUTED
44972: 2240 moveal %d0,%a1 <== NOT EXECUTED
44974: d3c3 addal %d3,%a1 <== NOT EXECUTED
% tty->rawInBuf.Size) > tty->highwater) &&
44976: 2009 movel %a1,%d0 <== NOT EXECUTED
44978: 2a2a 0064 movel %a2@(100),%d5 <== NOT EXECUTED
4497c: 4c45 0001 remul %d5,%d1,%d0 <== NOT EXECUTED
44980: 2d45 fff8 movel %d5,%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)
44984: b2aa 00c0 cmpl %a2@(192),%d1 <== NOT EXECUTED
44988: 6300 008a blsw 44a14 <rtems_termios_enqueue_raw_characters+0x1ec><== NOT EXECUTED
% tty->rawInBuf.Size) > tty->highwater) &&
!(tty->flow_ctrl & FL_IREQXOF)) {
4498c: 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) &&
44990: 0800 0000 btst #0,%d0 <== NOT EXECUTED
44994: 667e bnes 44a14 <rtems_termios_enqueue_raw_characters+0x1ec><== NOT EXECUTED
!(tty->flow_ctrl & FL_IREQXOF)) {
/* incoming data stream should be stopped */
tty->flow_ctrl |= FL_IREQXOF;
44996: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
4499a: 7a01 moveq #1,%d5 <== NOT EXECUTED
4499c: 8085 orl %d5,%d0 <== NOT EXECUTED
4499e: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))
449a2: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
449a6: 0280 0000 0402 andil #1026,%d0 <== NOT EXECUTED
449ac: 0c80 0000 0400 cmpil #1024,%d0 <== NOT EXECUTED
449b2: 6632 bnes 449e6 <rtems_termios_enqueue_raw_characters+0x1be><== NOT EXECUTED
== (FL_MDXOF ) ) {
if ((tty->flow_ctrl & FL_OSTOP) ||
449b4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
449b8: 0800 0005 btst #5,%d0 <== NOT EXECUTED
449bc: 6606 bnes 449c4 <rtems_termios_enqueue_raw_characters+0x19c><== NOT EXECUTED
449be: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
449c2: 6650 bnes 44a14 <rtems_termios_enqueue_raw_characters+0x1ec><== 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;
449c4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
449c8: 7202 moveq #2,%d1 <== NOT EXECUTED
449ca: 8081 orl %d1,%d0 <== NOT EXECUTED
449cc: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
(*tty->device.write)(tty->minor,
449d0: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
449d4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
449d6: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
449da: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
449de: 4e90 jsr %a0@ <== NOT EXECUTED
449e0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
449e4: 602e bras 44a14 <rtems_termios_enqueue_raw_characters+0x1ec><== NOT EXECUTED
(void *)&(tty->termios.c_cc[VSTOP]), 1);
}
} else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
449e6: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
449ea: 0280 0000 0104 andil #260,%d0 <== NOT EXECUTED
449f0: 0c80 0000 0100 cmpil #256,%d0 <== NOT EXECUTED
449f6: 661c bnes 44a14 <rtems_termios_enqueue_raw_characters+0x1ec><== NOT EXECUTED
tty->flow_ctrl |= FL_IRTSOFF;
449f8: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
449fc: 7a04 moveq #4,%d5 <== NOT EXECUTED
449fe: 8085 orl %d5,%d0 <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
44a00: 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;
44a04: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* deactivate RTS line */
if (tty->device.stopRemoteTx != NULL) {
44a08: 4a88 tstl %a0 <== NOT EXECUTED
44a0a: 6708 beqs 44a14 <rtems_termios_enqueue_raw_characters+0x1ec><== NOT EXECUTED
tty->device.stopRemoteTx(tty->minor);
44a0c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44a10: 4e90 jsr %a0@ <== NOT EXECUTED
44a12: 588f addql #4,%sp <== NOT EXECUTED
}
}
}
/* reenable interrupts */
rtems_interrupt_enable(level);
44a14: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
44a18: 46c0 movew %d0,%sr <== NOT EXECUTED
if (newTail == tty->rawInBuf.Head) {
44a1a: 202a 005c movel %a2@(92),%d0 <== NOT EXECUTED
44a1e: b083 cmpl %d3,%d0 <== NOT EXECUTED
44a20: 6604 bnes 44a26 <rtems_termios_enqueue_raw_characters+0x1fe><== NOT EXECUTED
dropped++;
44a22: 5282 addql #1,%d2 <== NOT EXECUTED
44a24: 602a bras 44a50 <rtems_termios_enqueue_raw_characters+0x228><== NOT EXECUTED
} else {
tty->rawInBuf.theBuf[newTail] = c;
44a26: 206a 0058 moveal %a2@(88),%a0 <== NOT EXECUTED
44a2a: 1187 3800 moveb %d7,%a0@(00000000,%d3:l) <== NOT EXECUTED
tty->rawInBuf.Tail = newTail;
44a2e: 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 )) {
44a32: 4aaa 00e4 tstl %a2@(228) <== NOT EXECUTED
44a36: 6618 bnes 44a50 <rtems_termios_enqueue_raw_characters+0x228><== NOT EXECUTED
44a38: 206a 00dc moveal %a2@(220),%a0 <== NOT EXECUTED
44a3c: 4a88 tstl %a0 <== NOT EXECUTED
44a3e: 6710 beqs 44a50 <rtems_termios_enqueue_raw_characters+0x228><== NOT EXECUTED
(*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);
44a40: 2f2a 00e0 movel %a2@(224),%sp@- <== NOT EXECUTED
44a44: 2f0d movel %a5,%sp@- <== NOT EXECUTED
44a46: 4e90 jsr %a0@ <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
44a48: 508f addql #8,%sp <== NOT EXECUTED
44a4a: 7201 moveq #1,%d1 <== NOT EXECUTED
44a4c: 2541 00e4 movel %d1,%a2@(228) <== NOT EXECUTED
44a50: 5384 subql #1,%d4 <== NOT EXECUTED
tty->tty_rcvwakeup = 1;
}
return 0;
}
while (len--) {
44a52: 4a84 tstl %d4 <== NOT EXECUTED
44a54: 6600 fe54 bnew 448aa <rtems_termios_enqueue_raw_characters+0x82><== NOT EXECUTED
}
}
}
}
tty->rawInBufDropped += dropped;
44a58: d5aa 0078 addl %d2,%a2@(120) <== NOT EXECUTED
rtems_semaphore_release (tty->rawInBuf.Semaphore);
44a5c: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
44a60: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return dropped;
44a66: 588f addql #4,%sp <== NOT EXECUTED
44a68: 6002 bras 44a6c <rtems_termios_enqueue_raw_characters+0x244><== 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;
44a6a: 4282 clrl %d2 <== NOT EXECUTED
}
tty->rawInBufDropped += dropped;
rtems_semaphore_release (tty->rawInBuf.Semaphore);
return dropped;
}
44a6c: 2002 movel %d2,%d0 <== NOT EXECUTED
44a6e: 4cee 3cfc ffd0 moveml %fp@(-48),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44a74: 4e5e unlk %fp <== NOT EXECUTED
00043b40 <rtems_termios_ioctl>:
}
}
rtems_status_code
rtems_termios_ioctl (void *arg)
{
43b40: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
43b44: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
43b48: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_libio_ioctl_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
43b4c: 2053 moveal %a3@,%a0 <== NOT EXECUTED
43b4e: 2468 0034 moveal %a0@(52),%a2 <== NOT EXECUTED
struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer;
43b52: 286b 0008 moveal %a3@(8),%a4 <== NOT EXECUTED
rtems_status_code sc;
args->ioctl_return = 0;
43b56: 42ab 000c clrl %a3@(12) <== NOT EXECUTED
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
43b5a: 42a7 clrl %sp@- <== NOT EXECUTED
43b5c: 42a7 clrl %sp@- <== NOT EXECUTED
43b5e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
43b62: 4eb9 0004 55f4 jsr 455f4 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
43b68: 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);
43b6c: 2400 movel %d0,%d2 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL) {
43b6e: 6708 beqs 43b78 <rtems_termios_ioctl+0x38> <== NOT EXECUTED
args->ioctl_return = sc;
43b70: 2740 000c movel %d0,%a3@(12) <== NOT EXECUTED
return sc;
43b74: 6000 02d0 braw 43e46 <rtems_termios_ioctl+0x306> <== NOT EXECUTED
}
switch (args->command) {
43b78: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
43b7c: 7204 moveq #4,%d1 <== NOT EXECUTED
43b7e: b280 cmpl %d0,%d1 <== NOT EXECUTED
43b80: 6700 0230 beqw 43db2 <rtems_termios_ioctl+0x272> <== NOT EXECUTED
43b84: 6514 bcss 43b9a <rtems_termios_ioctl+0x5a> <== NOT EXECUTED
43b86: 7602 moveq #2,%d3 <== NOT EXECUTED
43b88: b680 cmpl %d0,%d3 <== NOT EXECUTED
43b8a: 6774 beqs 43c00 <rtems_termios_ioctl+0xc0> <== NOT EXECUTED
43b8c: 6500 020a bcsw 43d98 <rtems_termios_ioctl+0x258> <== NOT EXECUTED
43b90: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
43b94: b280 cmpl %d0,%d1 <== NOT EXECUTED
43b96: 662c bnes 43bc4 <rtems_termios_ioctl+0x84> <== NOT EXECUTED
43b98: 604c bras 43be6 <rtems_termios_ioctl+0xa6> <== NOT EXECUTED
43b9a: 0c80 4004 667f cmpil #1074030207,%d0 <== NOT EXECUTED
43ba0: 6700 026e beqw 43e10 <rtems_termios_ioctl+0x2d0> <== NOT EXECUTED
43ba4: 620a bhis 43bb0 <rtems_termios_ioctl+0x70> <== NOT EXECUTED
43ba6: 7605 moveq #5,%d3 <== NOT EXECUTED
43ba8: b680 cmpl %d0,%d3 <== NOT EXECUTED
43baa: 6618 bnes 43bc4 <rtems_termios_ioctl+0x84> <== NOT EXECUTED
43bac: 6000 01f2 braw 43da0 <rtems_termios_ioctl+0x260> <== NOT EXECUTED
43bb0: 0c80 4004 741a cmpil #1074033690,%d0 <== NOT EXECUTED
43bb6: 6700 024e beqw 43e06 <rtems_termios_ioctl+0x2c6> <== NOT EXECUTED
43bba: 0c80 8004 741b cmpil #-2147191781,%d0 <== NOT EXECUTED
43bc0: 6700 0200 beqw 43dc2 <rtems_termios_ioctl+0x282> <== NOT EXECUTED
default:
if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {
43bc4: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
43bc8: eb88 lsll #5,%d0 <== NOT EXECUTED
43bca: 0680 0005 d1d4 addil #381396,%d0 <== NOT EXECUTED
43bd0: 2240 moveal %d0,%a1 <== NOT EXECUTED
43bd2: 2051 moveal %a1@,%a0 <== NOT EXECUTED
43bd4: 4a88 tstl %a0 <== NOT EXECUTED
43bd6: 6700 025c beqw 43e34 <rtems_termios_ioctl+0x2f4> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);
43bda: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43bdc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43bde: 4e90 jsr %a0@ <== NOT EXECUTED
43be0: 2400 movel %d0,%d2 <== NOT EXECUTED
43be2: 6000 01ae braw 43d92 <rtems_termios_ioctl+0x252> <== NOT EXECUTED
sc = RTEMS_INVALID_NUMBER;
}
break;
case RTEMS_IO_GET_ATTRIBUTES:
*(struct termios *)args->buffer = tty->termios;
43be6: 4878 0024 pea 24 <OPER2+0x10> <== NOT EXECUTED
43bea: 486a 0030 pea %a2@(48) <== NOT EXECUTED
43bee: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
43bf2: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== NOT EXECUTED
break;
43bf8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43bfc: 6000 0238 braw 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
case RTEMS_IO_SET_ATTRIBUTES:
tty->termios = *(struct termios *)args->buffer;
43c00: 4878 0024 pea 24 <OPER2+0x10> <== NOT EXECUTED
43c04: 2f2b 0008 movel %a3@(8),%sp@- <== NOT EXECUTED
43c08: 486a 0030 pea %a2@(48) <== NOT EXECUTED
43c0c: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy> <== 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) &&
43c12: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43c16: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43c1a: 0800 0009 btst #9,%d0 <== NOT EXECUTED
43c1e: 6760 beqs 43c80 <rtems_termios_ioctl+0x140> <== NOT EXECUTED
!(tty->termios.c_iflag & IXON)) {
43c20: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
43c24: 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) &&
43c2a: 6654 bnes 43c80 <rtems_termios_ioctl+0x140> <== NOT EXECUTED
!(tty->termios.c_iflag & IXON)) {
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);
43c2c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43c30: 0280 ffff fdef andil #-529,%d0 <== NOT EXECUTED
43c36: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* has output been stopped due to received XOFF? */
if (tty->flow_ctrl & FL_OSTOP) {
43c3a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43c3e: 0800 0005 btst #5,%d0 <== NOT EXECUTED
43c42: 673c beqs 43c80 <rtems_termios_ioctl+0x140> <== NOT EXECUTED
/* disable interrupts */
rtems_interrupt_disable(level);
43c44: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
43c4a: 40c3 movew %sr,%d3 <== NOT EXECUTED
43c4c: 8083 orl %d3,%d0 <== NOT EXECUTED
43c4e: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl &= ~FL_OSTOP;
43c50: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43c54: 72df moveq #-33,%d1 <== NOT EXECUTED
43c56: c081 andl %d1,%d0 <== NOT EXECUTED
43c58: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* check for chars in output buffer (or rob_state?) */
if (tty->rawOutBufState != rob_idle) {
43c5c: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
43c60: 671c beqs 43c7e <rtems_termios_ioctl+0x13e> <== NOT EXECUTED
/* if chars available, call write function... */
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
43c62: 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)(
43c66: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
43c6a: d0aa 007c addl %a2@(124),%d0 <== NOT EXECUTED
43c6e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43c70: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
43c74: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
43c78: 4e90 jsr %a0@ <== NOT EXECUTED
43c7a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
}
/* reenable interrupts */
rtems_interrupt_enable(level);
43c7e: 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)) {
43c80: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43c84: 0800 000a btst #10,%d0 <== NOT EXECUTED
43c88: 6724 beqs 43cae <rtems_termios_ioctl+0x16e> <== NOT EXECUTED
43c8a: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
43c8e: 0280 0000 1000 andil #4096,%d0 <== NOT EXECUTED
43c94: 6618 bnes 43cae <rtems_termios_ioctl+0x16e> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDXOF);
43c96: 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);
43c9a: 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);
43c9c: 0880 000a bclr #10,%d0 <== NOT EXECUTED
43ca0: 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);
43ca4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43ca8: c083 andl %d3,%d0 <== NOT EXECUTED
43caa: 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)) {
43cae: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43cb2: 0800 0008 btst #8,%d0 <== NOT EXECUTED
43cb6: 6736 beqs 43cee <rtems_termios_ioctl+0x1ae> <== NOT EXECUTED
43cb8: 4aaa 0038 tstl %a2@(56) <== NOT EXECUTED
43cbc: 6d30 blts 43cee <rtems_termios_ioctl+0x1ae> <== NOT EXECUTED
/* clear related flags in flow_ctrl */
tty->flow_ctrl &= ~(FL_MDRTS);
43cbe: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43cc2: 0880 0008 bclr #8,%d0 <== NOT EXECUTED
43cc6: 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)) {
43cca: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43cce: 44c0 movew %d0,%ccr <== NOT EXECUTED
43cd0: 6610 bnes 43ce2 <rtems_termios_ioctl+0x1a2> <== NOT EXECUTED
43cd2: 206a 00b0 moveal %a2@(176),%a0 <== NOT EXECUTED
43cd6: 4a88 tstl %a0 <== NOT EXECUTED
43cd8: 6708 beqs 43ce2 <rtems_termios_ioctl+0x1a2> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
43cda: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
43cde: 4e90 jsr %a0@ <== NOT EXECUTED
43ce0: 588f addql #4,%sp <== NOT EXECUTED
}
tty->flow_ctrl &= ~(FL_IRTSOFF);
43ce2: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43ce6: 72fb moveq #-5,%d1 <== NOT EXECUTED
43ce8: c081 andl %d1,%d0 <== NOT EXECUTED
43cea: 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) {
43cee: 4aaa 0038 tstl %a2@(56) <== NOT EXECUTED
43cf2: 6c0c bges 43d00 <rtems_termios_ioctl+0x1c0> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDRTS;
43cf4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43cf8: 08c0 0008 bset #8,%d0 <== NOT EXECUTED
43cfc: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
/* check for incoming XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXOFF) {
43d00: 222a 0030 movel %a2@(48),%d1 <== NOT EXECUTED
43d04: 0801 000c btst #12,%d1 <== NOT EXECUTED
43d08: 670c beqs 43d16 <rtems_termios_ioctl+0x1d6> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDXOF;
43d0a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43d0e: 08c0 000a bset #10,%d0 <== NOT EXECUTED
43d12: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
/* check for outgoing XON/XOF flow control switched on */
if (tty->termios.c_iflag & IXON) {
43d16: 0801 000a btst #10,%d1 <== NOT EXECUTED
43d1a: 670c beqs 43d28 <rtems_termios_ioctl+0x1e8> <== NOT EXECUTED
tty->flow_ctrl |= FL_MDXON;
43d1c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43d20: 08c0 0009 bset #9,%d0 <== NOT EXECUTED
43d24: 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) {
43d28: 7002 moveq #2,%d0 <== NOT EXECUTED
43d2a: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
43d2e: 663a bnes 43d6a <rtems_termios_ioctl+0x22a> <== NOT EXECUTED
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
} else {
tty->vtimeTicks = tty->termios.c_cc[VTIME] *
43d30: 4283 clrl %d3 <== NOT EXECUTED
43d32: 162a 0046 moveb %a2@(70),%d3 <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
43d36: 4eb9 0004 4fc0 jsr 44fc0 <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] *
43d3c: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
43d40: 760a moveq #10,%d3 <== NOT EXECUTED
43d42: 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] *
43d46: 2540 0054 movel %d0,%a2@(84) <== NOT EXECUTED
rtems_clock_get_ticks_per_second() / 10;
if (tty->termios.c_cc[VTIME]) {
43d4a: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
43d4e: 6714 beqs 43d64 <rtems_termios_ioctl+0x224> <== NOT EXECUTED
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
43d50: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;
43d54: 2540 0070 movel %d0,%a2@(112) <== NOT EXECUTED
if (tty->termios.c_cc[VMIN])
43d58: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED
43d5c: 6614 bnes 43d72 <rtems_termios_ioctl+0x232> <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
else
tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;
43d5e: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
43d62: 601a bras 43d7e <rtems_termios_ioctl+0x23e> <== NOT EXECUTED
} else {
if (tty->termios.c_cc[VMIN]) {
43d64: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED
43d68: 670e beqs 43d78 <rtems_termios_ioctl+0x238> <== NOT EXECUTED
tty->rawInBufSemaphoreOptions = RTEMS_WAIT;
43d6a: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;
43d6e: 42aa 0070 clrl %a2@(112) <== NOT EXECUTED
tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;
43d72: 42aa 0074 clrl %a2@(116) <== NOT EXECUTED
43d76: 6006 bras 43d7e <rtems_termios_ioctl+0x23e> <== NOT EXECUTED
} else {
tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;
43d78: 7001 moveq #1,%d0 <== NOT EXECUTED
43d7a: 2540 006c movel %d0,%a2@(108) <== NOT EXECUTED
}
}
}
if (tty->device.setAttributes)
43d7e: 206a 00a8 moveal %a2@(168),%a0 <== NOT EXECUTED
43d82: 4a88 tstl %a0 <== NOT EXECUTED
43d84: 6700 00b0 beqw 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
(*tty->device.setAttributes)(tty->minor, &tty->termios);
43d88: 486a 0030 pea %a2@(48) <== NOT EXECUTED
43d8c: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
43d90: 4e90 jsr %a0@ <== NOT EXECUTED
43d92: 508f addql #8,%sp <== NOT EXECUTED
43d94: 6000 00a0 braw 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
break;
case RTEMS_IO_TCDRAIN:
drainOutput (tty);
43d98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43d9a: 4eba f7c4 jsr %pc@(43560 <drainOutput>) <== NOT EXECUTED
43d9e: 6062 bras 43e02 <rtems_termios_ioctl+0x2c2> <== NOT EXECUTED
break;
case RTEMS_IO_SNDWAKEUP:
tty->tty_snd = *wakeup;
43da0: 2014 movel %a4@,%d0 <== NOT EXECUTED
43da2: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
43da6: 2540 00d4 movel %d0,%a2@(212) <== NOT EXECUTED
43daa: 2541 00d8 movel %d1,%a2@(216) <== NOT EXECUTED
break;
43dae: 6000 0086 braw 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
case RTEMS_IO_RCVWAKEUP:
tty->tty_rcv = *wakeup;
43db2: 2014 movel %a4@,%d0 <== NOT EXECUTED
43db4: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
43db8: 2540 00dc movel %d0,%a2@(220) <== NOT EXECUTED
43dbc: 2541 00e0 movel %d1,%a2@(224) <== NOT EXECUTED
break;
43dc0: 6074 bras 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
#if 1 /* FIXME */
case TIOCSETD:
/*
* close old line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_close != NULL) {
43dc2: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
43dc6: eb88 lsll #5,%d0 <== NOT EXECUTED
43dc8: 0680 0005 d1c0 addil #381376,%d0 <== NOT EXECUTED
43dce: 2240 moveal %d0,%a1 <== NOT EXECUTED
43dd0: 2051 moveal %a1@,%a0 <== NOT EXECUTED
43dd2: 4a88 tstl %a0 <== NOT EXECUTED
43dd4: 6708 beqs 43dde <rtems_termios_ioctl+0x29e> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_close(tty);
43dd6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43dd8: 4e90 jsr %a0@ <== NOT EXECUTED
43dda: 588f addql #4,%sp <== NOT EXECUTED
43ddc: 2400 movel %d0,%d2 <== NOT EXECUTED
}
tty->t_line=*(int*)(args->buffer);
43dde: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
43de2: 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) {
43de4: 41f9 0005 d1bc lea 5d1bc <rtems_termios_linesw>,%a0 <== 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);
43dea: 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) {
43dee: eb88 lsll #5,%d0 <== 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 */
43df0: 42aa 00d0 clrl %a2@(208) <== NOT EXECUTED
/*
* open new line discipline
*/
if (rtems_termios_linesw[tty->t_line].l_open != NULL) {
43df4: 2070 0800 moveal %a0@(00000000,%d0:l),%a0 <== NOT EXECUTED
43df8: 4a88 tstl %a0 <== NOT EXECUTED
43dfa: 673a beqs 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_open(tty);
43dfc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43dfe: 4e90 jsr %a0@ <== NOT EXECUTED
43e00: 2400 movel %d0,%d2 <== NOT EXECUTED
43e02: 588f addql #4,%sp <== NOT EXECUTED
43e04: 6030 bras 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
}
break;
case TIOCGETD:
*(int*)(args->buffer)=tty->t_line;
43e06: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
43e0a: 20aa 00cc movel %a2@(204),%a0@ <== NOT EXECUTED
break;
43e0e: 6026 bras 43e36 <rtems_termios_ioctl+0x2f6> <== NOT EXECUTED
#endif
case FIONREAD: {
int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;
43e10: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
43e14: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
43e18: 9081 subl %d1,%d0 <== NOT EXECUTED
if ( rawnc < 0 )
43e1a: 6a06 bpls 43e22 <rtems_termios_ioctl+0x2e2> <== NOT EXECUTED
rawnc += tty->rawInBuf.Size;
43e1c: 222a 0064 movel %a2@(100),%d1 <== NOT EXECUTED
43e20: d081 addl %d1,%d0 <== NOT EXECUTED
/* Half guess that this is the right operation */
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
43e22: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
43e26: 92aa 0024 subl %a2@(36),%d1 <== NOT EXECUTED
43e2a: d280 addl %d0,%d1 <== NOT EXECUTED
43e2c: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
43e30: 2081 movel %d1,%a0@ <== NOT EXECUTED
}
break;
43e32: 6002 bras 43e36 <rtems_termios_ioctl+0x2f6> <== 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;
43e34: 740a moveq #10,%d2 <== NOT EXECUTED
*(int *)args->buffer = tty->ccount - tty->cindex + rawnc;
}
break;
}
rtems_semaphore_release (tty->osem);
43e36: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
43e3a: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
args->ioctl_return = sc;
return sc;
43e40: 588f addql #4,%sp <== NOT EXECUTED
}
break;
}
rtems_semaphore_release (tty->osem);
args->ioctl_return = sc;
43e42: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
return sc;
}
43e46: 2002 movel %d2,%d0 <== NOT EXECUTED
43e48: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
43e4e: 4e5e unlk %fp <== NOT EXECUTED
00044e10 <rtems_termios_number_to_baud>:
extern rtems_assoc_t termios_assoc_table[];
int rtems_termios_number_to_baud(
int32_t baud
)
{
44e10: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44e14: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44e16: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int termios_baud;
termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud );
44e1a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44e1c: 4879 0005 e3d0 pea 5e3d0 <termios_assoc_table> <== NOT EXECUTED
44e22: 4eb9 0004 b0fc jsr 4b0fc <rtems_assoc_remote_by_local> <== NOT EXECUTED
if ( termios_baud == 0 && baud != 0 )
44e28: 508f addql #8,%sp <== NOT EXECUTED
44e2a: 4a80 tstl %d0 <== NOT EXECUTED
44e2c: 6606 bnes 44e34 <rtems_termios_number_to_baud+0x24><== NOT EXECUTED
44e2e: 4a82 tstl %d2 <== NOT EXECUTED
44e30: 6702 beqs 44e34 <rtems_termios_number_to_baud+0x24><== NOT EXECUTED
return -1;
44e32: 70ff moveq #-1,%d0 <== NOT EXECUTED
return termios_baud;
}
44e34: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
44e38: 4e5e unlk %fp <== NOT EXECUTED
000435ca <rtems_termios_open>:
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
435ca: 4e56 ffd8 linkw %fp,#-40
435ce: 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(
435d2: 42a7 clrl %sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
435d4: 282e 0008 movel %fp@(8),%d4
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
435d8: 42a7 clrl %sp@-
435da: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@-
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg,
const rtems_termios_callbacks *callbacks
)
{
435e0: 2a2e 000c movel %fp@(12),%d5
435e4: 2e2e 0010 movel %fp@(16),%d7
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
435e8: 4eb9 0004 55f4 jsr 455f4 <rtems_semaphore_obtain>
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
435ee: 4fef 000c lea %sp@(12),%sp
struct rtems_termios_tty *tty;
/*
* See if the device has already been opened
*/
sc = rtems_semaphore_obtain(
435f2: 2400 movel %d0,%d2
rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
435f4: 6600 038c bnew 43982 <rtems_termios_open+0x3b8>
return sc;
for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) {
435f8: 2879 0005 da00 moveal 5da00 <rtems_termios_ttyHead>,%a4
435fe: 264c moveal %a4,%a3
43600: 6010 bras 43612 <rtems_termios_open+0x48>
if ((tty->major == major) && (tty->minor == minor))
43602: b8ab 000c cmpl %a3@(12),%d4
43606: 6608 bnes 43610 <rtems_termios_open+0x46> <== NEVER TAKEN
43608: baab 0010 cmpl %a3@(16),%d5
4360c: 6700 02fc beqw 4390a <rtems_termios_open+0x340>
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) {
43610: 2653 moveal %a3@,%a3 <== NOT EXECUTED
43612: 4a8b tstl %a3
43614: 66ec bnes 43602 <rtems_termios_open+0x38>
43616: 6000 0376 braw 4398e <rtems_termios_open+0x3c4>
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
if (tty == NULL) {
rtems_semaphore_release (rtems_termios_ttyMutex);
4361a: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
43620: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
43626: 588f addql #4,%sp <== NOT EXECUTED
43628: 6038 bras 43662 <rtems_termios_open+0x98> <== NOT EXECUTED
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
4362a: 41f9 0005 c3b4 lea 5c3b4 <rtems_termios_raw_input_size>,%a0
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
43630: 4bf9 0004 2a9c lea 42a9c <malloc>,%a5
return RTEMS_NO_MEMORY;
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
43636: 2750 0064 movel %a0@,%a3@(100)
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
4363a: 202b 0064 movel %a3@(100),%d0
4363e: 2f00 movel %d0,%sp@-
43640: 4e95 jsr %a5@
if (tty->rawInBuf.theBuf == NULL) {
43642: 588f addql #4,%sp
}
/*
* allocate raw input buffer
*/
tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;
tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);
43644: 2600 movel %d0,%d3
43646: 2740 0058 movel %d0,%a3@(88)
if (tty->rawInBuf.theBuf == NULL) {
4364a: 661c bnes 43668 <rtems_termios_open+0x9e> <== ALWAYS TAKEN
free(tty);
4364c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4364e: 4eb9 0004 27b4 jsr 427b4 <free> <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
43654: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
4365a: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
43660: 508f addql #8,%sp <== NOT EXECUTED
43662: 741a moveq #26,%d2 <== NOT EXECUTED
43664: 6000 031c braw 43982 <rtems_termios_open+0x3b8> <== NOT EXECUTED
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
43668: 43f9 0005 c3b8 lea 5c3b8 <rtems_termios_raw_output_size>,%a1
4366e: 2751 0088 movel %a1@,%a3@(136)
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
43672: 202b 0088 movel %a3@(136),%d0
43676: 2f00 movel %d0,%sp@-
43678: 4e95 jsr %a5@
if (tty->rawOutBuf.theBuf == NULL) {
4367a: 588f addql #4,%sp
}
/*
* allocate raw output buffer
*/
tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;
tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);
4367c: 2c00 movel %d0,%d6
4367e: 2740 007c movel %d0,%a3@(124)
if (tty->rawOutBuf.theBuf == NULL) {
43682: 6620 bnes 436a4 <rtems_termios_open+0xda> <== ALWAYS TAKEN
free((void *)(tty->rawInBuf.theBuf));
43684: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43686: 45f9 0004 27b4 lea 427b4 <free>,%a2 <== NOT EXECUTED
4368c: 4e92 jsr %a2@ <== NOT EXECUTED
free(tty);
4368e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43690: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
43692: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
43698: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
4369e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
436a2: 60be bras 43662 <rtems_termios_open+0x98> <== NOT EXECUTED
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
436a4: 2f39 0005 c3b0 movel 5c3b0 <rtems_termios_cbufsize>,%sp@-
436aa: 4e95 jsr %a5@
if (tty->cbuf == NULL) {
436ac: 588f addql #4,%sp
return RTEMS_NO_MEMORY;
}
/*
* allocate cooked buffer
*/
tty->cbuf = malloc (CBUFSIZE);
436ae: 2740 001c movel %d0,%a3@(28)
if (tty->cbuf == NULL) {
436b2: 6624 bnes 436d8 <rtems_termios_open+0x10e> <== ALWAYS TAKEN
free((void *)(tty->rawOutBuf.theBuf));
436b4: 2f06 movel %d6,%sp@- <== NOT EXECUTED
436b6: 45f9 0004 27b4 lea 427b4 <free>,%a2 <== NOT EXECUTED
436bc: 4e92 jsr %a2@ <== NOT EXECUTED
free((void *)(tty->rawInBuf.theBuf));
436be: 2f03 movel %d3,%sp@- <== NOT EXECUTED
436c0: 4e92 jsr %a2@ <== NOT EXECUTED
free(tty);
436c2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
436c4: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_semaphore_release (rtems_termios_ttyMutex);
436c6: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@- <== NOT EXECUTED
436cc: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
436d2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
436d6: 608a bras 43662 <rtems_termios_open+0x98> <== NOT EXECUTED
}
/*
* Initialize wakeup callbacks
*/
tty->tty_snd.sw_pfn = NULL;
436d8: 42ab 00d4 clrl %a3@(212)
tty->tty_snd.sw_arg = NULL;
436dc: 42ab 00d8 clrl %a3@(216)
tty->tty_rcv.sw_pfn = NULL;
436e0: 42ab 00dc clrl %a3@(220)
tty->tty_rcv.sw_arg = NULL;
436e4: 42ab 00e0 clrl %a3@(224)
tty->tty_rcvwakeup = 0;
436e8: 42ab 00e4 clrl %a3@(228)
/*
* link tty
*/
tty->forw = rtems_termios_ttyHead;
436ec: 268c movel %a4,%a3@
tty->back = NULL;
436ee: 42ab 0004 clrl %a3@(4)
if (rtems_termios_ttyHead != NULL)
436f2: 4a8c tstl %a4
436f4: 6704 beqs 436fa <rtems_termios_open+0x130> <== ALWAYS TAKEN
rtems_termios_ttyHead->back = tty;
436f6: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED
rtems_termios_ttyHead = tty;
436fa: 23ca 0005 da00 movel %a2,5da00 <rtems_termios_ttyHead>
if (rtems_termios_ttyTail == NULL)
43700: 4ab9 0005 d9fc tstl 5d9fc <rtems_termios_ttyTail>
43706: 6606 bnes 4370e <rtems_termios_open+0x144> <== NEVER TAKEN
rtems_termios_ttyTail = tty;
43708: 23ca 0005 d9fc movel %a2,5d9fc <rtems_termios_ttyTail>
tty->minor = minor;
4370e: 2545 0010 movel %d5,%a2@(16)
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43712: 49f9 0004 53bc lea 453bc <rtems_semaphore_create>,%a4
rtems_termios_ttyHead = tty;
if (rtems_termios_ttyTail == NULL)
rtems_termios_ttyTail = tty;
tty->minor = minor;
tty->major = major;
43718: 2544 000c movel %d4,%a2@(12)
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
4371c: 486a 0014 pea %a2@(20)
rtems_build_name ('T', 'R', 'i', c),
43720: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
43726: 42a7 clrl %sp@-
43728: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'i', c),
4372c: 49c0 extbl %d0
tty->major = major;
/*
* Set up mutex semaphores
*/
sc = rtems_semaphore_create (
4372e: 4878 0001 pea 1 <ADD>
43732: 0080 5452 6900 oril #1414686976,%d0
43738: 2f00 movel %d0,%sp@-
4373a: 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)
4373c: 4fef 0014 lea %sp@(20),%sp
43740: 4a80 tstl %d0
43742: 6600 0228 bnew 4396c <rtems_termios_open+0x3a2>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43746: 486a 0018 pea %a2@(24)
rtems_build_name ('T', 'R', 'o', c),
4374a: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->isem);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43750: 42a7 clrl %sp@-
43752: 4878 0054 pea 54 <DBL_MANT_DIG+0x1f>
rtems_build_name ('T', 'R', 'o', c),
43756: 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 (
43758: 4878 0001 pea 1 <ADD>
4375c: 0080 5452 6f00 oril #1414688512,%d0
43762: 2f00 movel %d0,%sp@-
43764: 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)
43766: 4fef 0014 lea %sp@(20),%sp
4376a: 4a80 tstl %d0
4376c: 6600 01fe bnew 4396c <rtems_termios_open+0x3a2>
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
43770: 486a 008c pea %a2@(140)
rtems_build_name ('T', 'R', 'x', c),
43774: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->osem);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_semaphore_create (
4377a: 42a7 clrl %sp@-
4377c: 4878 0020 pea 20 <OPER2+0xc>
rtems_build_name ('T', 'R', 'x', c),
43780: 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 (
43782: 0080 5452 7800 oril #1414690816,%d0
43788: 42a7 clrl %sp@-
4378a: 2f00 movel %d0,%sp@-
4378c: 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)
4378e: 4fef 0014 lea %sp@(20),%sp
43792: 4a80 tstl %d0
43794: 6600 01d6 bnew 4396c <rtems_termios_open+0x3a2>
rtems_fatal_error_occurred (sc);
tty->rawOutBufState = rob_idle;
43798: 42aa 0094 clrl %a2@(148)
/*
* Set callbacks
*/
tty->device = *callbacks;
4379c: 4878 0020 pea 20 <OPER2+0xc>
437a0: 2f2e 0014 movel %fp@(20),%sp@-
437a4: 486a 0098 pea %a2@(152)
437a8: 4eb9 0004 d1f8 jsr 4d1f8 <memcpy>
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
437ae: 4fef 000c lea %sp@(12),%sp
437b2: 7002 moveq #2,%d0
437b4: b0aa 00b4 cmpl %a2@(180),%d0
437b8: 6662 bnes 4381c <rtems_termios_open+0x252> <== ALWAYS TAKEN
sc = rtems_task_create (
437ba: 486a 00c8 pea %a2@(200) <== NOT EXECUTED
437be: 49f9 0004 57ac lea 457ac <rtems_task_create>,%a4 <== NOT EXECUTED
rtems_build_name ('T', 'x', 'T', c),
437c4: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0 <== NOT EXECUTED
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
437ca: 42a7 clrl %sp@- <== NOT EXECUTED
437cc: 4878 0500 pea 500 <DBL_MAX_EXP+0xff> <== NOT EXECUTED
rtems_build_name ('T', 'x', 'T', c),
437d0: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Create I/O tasks
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
sc = rtems_task_create (
437d2: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
437d6: 4878 000a pea a <LASTO> <== NOT EXECUTED
437da: 0080 5478 5400 oril #1417171968,%d0 <== NOT EXECUTED
437e0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
437e2: 4e94 jsr %a4@ <== 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)
437e4: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
437e8: 4a80 tstl %d0 <== NOT EXECUTED
437ea: 6600 0180 bnew 4396c <rtems_termios_open+0x3a2> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
437ee: 486a 00c4 pea %a2@(196) <== NOT EXECUTED
rtems_build_name ('R', 'x', 'T', c),
437f2: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0 <== NOT EXECUTED
RTEMS_NO_ASR,
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&tty->txTaskId);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
sc = rtems_task_create (
437f8: 42a7 clrl %sp@- <== NOT EXECUTED
437fa: 4878 0500 pea 500 <DBL_MAX_EXP+0xff> <== NOT EXECUTED
rtems_build_name ('R', 'x', 'T', c),
437fe: 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 (
43800: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
43804: 4878 0009 pea 9 <DIVIDE_BY_ZERO+0x1> <== NOT EXECUTED
43808: 0080 5278 5400 oril #1383617536,%d0 <== NOT EXECUTED
4380e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43810: 4e94 jsr %a4@ <== 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)
43812: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
43816: 4a80 tstl %d0 <== NOT EXECUTED
43818: 6600 0152 bnew 4396c <rtems_termios_open+0x3a2> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
4381c: 4aaa 00a0 tstl %a2@(160)
43820: 6708 beqs 4382a <rtems_termios_open+0x260> <== ALWAYS TAKEN
43822: 7202 moveq #2,%d1 <== NOT EXECUTED
43824: b2aa 00b4 cmpl %a2@(180),%d1 <== NOT EXECUTED
43828: 662c bnes 43856 <rtems_termios_open+0x28c> <== NOT EXECUTED
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
4382a: 486a 0068 pea %a2@(104)
rtems_build_name ('T', 'R', 'r', c),
4382e: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
43834: 42a7 clrl %sp@-
43836: 4878 0024 pea 24 <OPER2+0x10>
rtems_build_name ('T', 'R', 'r', c),
4383a: 49c0 extbl %d0
rtems_fatal_error_occurred (sc);
}
if ((tty->device.pollRead == NULL) ||
(tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){
sc = rtems_semaphore_create (
4383c: 0080 5452 7200 oril #1414689280,%d0
43842: 42a7 clrl %sp@-
43844: 2f00 movel %d0,%sp@-
43846: 4eb9 0004 53bc jsr 453bc <rtems_semaphore_create>
rtems_build_name ('T', 'R', 'r', c),
0,
RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
RTEMS_NO_PRIORITY,
&tty->rawInBuf.Semaphore);
if (sc != RTEMS_SUCCESSFUL)
4384c: 4fef 0014 lea %sp@(20),%sp
43850: 4a80 tstl %d0
43852: 6600 0118 bnew 4396c <rtems_termios_open+0x3a2>
/*
* 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;
43856: 203c 0000 08bd movel #2237,%d0
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
4385c: 307c 2502 moveaw #9474,%a0
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
43860: 327c 1805 moveaw #6149,%a1
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
43864: 2540 0038 movel %d0,%a2@(56)
tty->termios.c_lflag =
43868: 223c 0000 823b movel #33339,%d1
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
4386e: 7003 moveq #3,%d0
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
tty->termios.c_lflag =
43870: 2541 003c movel %d1,%a2@(60)
ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003';
43874: 1540 0041 moveb %d0,%a2@(65)
tty->termios.c_cc[VQUIT] = '\034';
tty->termios.c_cc[VERASE] = '\177';
43878: 707f moveq #127,%d0
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;
4387a: 42aa 00b8 clrl %a2@(184)
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';
4387e: 1540 0043 moveb %d0,%a2@(67)
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
43882: 7004 moveq #4,%d0
}
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
43884: 2548 0030 movel %a0,%a2@(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';
43888: 1540 0045 moveb %d0,%a2@(69)
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
4388c: 7011 moveq #17,%d0
/*
* Set default parameters
*/
tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
4388e: 2549 0034 movel %a1,%a2@(52)
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';
43892: 721c moveq #28,%d1
tty->termios.c_cc[VERASE] = '\177';
tty->termios.c_cc[VKILL] = '\025';
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
43894: 1540 0049 moveb %d0,%a2@(73)
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
43898: 701a moveq #26,%d0
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';
4389a: 1541 0042 moveb %d1,%a2@(66)
tty->termios.c_cc[VERASE] = '\177';
tty->termios.c_cc[VKILL] = '\025';
4389e: 7215 moveq #21,%d1
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';
438a0: 1540 004b moveb %d0,%a2@(75)
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
438a4: 700f moveq #15,%d0
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';
438a6: 1541 0044 moveb %d1,%a2@(68)
tty->termios.c_cc[VEOF] = '\004';
tty->termios.c_cc[VEOL] = '\000';
438aa: 4201 clrb %d1
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';
438ac: 1540 004e moveb %d0,%a2@(78)
tty->termios.c_cc[VWERASE] = '\027';
tty->termios.c_cc[VLNEXT] = '\026';
438b0: 7016 moveq #22,%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';
tty->termios.c_cc[VEOL] = '\000';
438b2: 1541 004c moveb %d1,%a2@(76)
tty->termios.c_cc[VEOL2] = '\000';
438b6: 1541 0051 moveb %d1,%a2@(81)
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
438ba: 7213 moveq #19,%d1
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
tty->termios.c_cc[VDISCARD] = '\017';
tty->termios.c_cc[VWERASE] = '\027';
tty->termios.c_cc[VLNEXT] = '\026';
438bc: 1540 0050 moveb %d0,%a2@(80)
/* 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;
438c0: 202a 0064 movel %a2@(100),%d0
438c4: e288 lsrl #1,%d0
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';
438c6: 1541 004a moveb %d1,%a2@(74)
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
438ca: 7212 moveq #18,%d1
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;
438cc: 206a 0064 moveal %a2@(100),%a0
tty->termios.c_cc[VEOL] = '\000';
tty->termios.c_cc[VEOL2] = '\000';
tty->termios.c_cc[VSTART] = '\021';
tty->termios.c_cc[VSTOP] = '\023';
tty->termios.c_cc[VSUSP] = '\032';
tty->termios.c_cc[VREPRINT] = '\022';
438d0: 1541 004d moveb %d1,%a2@(77)
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;
438d4: 41f0 8a00 lea %a0@(00000000,%a0:l:2),%a0
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';
438d8: 7217 moveq #23,%d1
/* 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;
438da: 2540 00bc movel %d0,%a2@(188)
tty->highwater = tty->rawInBuf.Size * 3/4;
438de: 2008 movel %a0,%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';
438e0: 1541 004f moveb %d1,%a2@(79)
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;
438e4: e488 lsrl #2,%d0
438e6: 2540 00c0 movel %d0,%a2@(192)
/*
* Bump name characer
*/
if (c++ == 'z')
438ea: 1039 0005 c3bc moveb 5c3bc <c.6356>,%d0
438f0: 49c0 extbl %d0
438f2: 2200 movel %d0,%d1
438f4: 5281 addql #1,%d1
438f6: 13c1 0005 c3bc moveb %d1,5c3bc <c.6356>
438fc: 727a moveq #122,%d1
438fe: b280 cmpl %d0,%d1
43900: 6608 bnes 4390a <rtems_termios_open+0x340> <== ALWAYS TAKEN
c = 'a';
43902: 7061 moveq #97,%d0 <== NOT EXECUTED
43904: 13c0 0005 c3bc moveb %d0,5c3bc <c.6356> <== NOT EXECUTED
}
args->iop->data1 = tty;
4390a: 2247 moveal %d7,%a1
4390c: 2051 moveal %a1@,%a0
if (!tty->refcount++) {
4390e: 202b 0008 movel %a3@(8),%d0
43912: 2200 movel %d0,%d1
43914: 5281 addql #1,%d1
*/
if (c++ == 'z')
c = 'a';
}
args->iop->data1 = tty;
43916: 214b 0034 movel %a3,%a0@(52)
if (!tty->refcount++) {
4391a: 2741 0008 movel %d1,%a3@(8)
4391e: 4a80 tstl %d0
43920: 6652 bnes 43974 <rtems_termios_open+0x3aa>
if (tty->device.firstOpen)
43922: 206b 0098 moveal %a3@(152),%a0
43926: 4a88 tstl %a0
43928: 670c beqs 43936 <rtems_termios_open+0x36c> <== NEVER TAKEN
(*tty->device.firstOpen)(major, minor, arg);
4392a: 2f07 movel %d7,%sp@-
4392c: 2f05 movel %d5,%sp@-
4392e: 2f04 movel %d4,%sp@-
43930: 4e90 jsr %a0@
43932: 4fef 000c lea %sp@(12),%sp
/*
* start I/O tasks, if needed
*/
if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {
43936: 7002 moveq #2,%d0
43938: b0ab 00b4 cmpl %a3@(180),%d0
4393c: 6636 bnes 43974 <rtems_termios_open+0x3aa> <== ALWAYS TAKEN
sc = rtems_task_start(
4393e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
43940: 487a 1136 pea %pc@(44a78 <rtems_termios_rxdaemon>) <== NOT EXECUTED
43944: 45f9 0004 5a28 lea 45a28 <rtems_task_start>,%a2 <== NOT EXECUTED
4394a: 2f2b 00c4 movel %a3@(196),%sp@- <== NOT EXECUTED
4394e: 4e92 jsr %a2@ <== NOT EXECUTED
tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
43950: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43954: 4a80 tstl %d0 <== NOT EXECUTED
43956: 6614 bnes 4396c <rtems_termios_open+0x3a2> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
sc = rtems_task_start(
43958: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4395a: 487a 1340 pea %pc@(44c9c <rtems_termios_txdaemon>) <== NOT EXECUTED
4395e: 2f2b 00c8 movel %a3@(200),%sp@- <== NOT EXECUTED
43962: 4e92 jsr %a2@ <== NOT EXECUTED
tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
if (sc != RTEMS_SUCCESSFUL)
43964: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43968: 4a80 tstl %d0 <== NOT EXECUTED
4396a: 6708 beqs 43974 <rtems_termios_open+0x3aa> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
4396c: 2f00 movel %d0,%sp@-
4396e: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred>
}
}
rtems_semaphore_release (rtems_termios_ttyMutex);
43974: 2f39 0005 d9f8 movel 5d9f8 <rtems_termios_ttyMutex>,%sp@-
4397a: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release>
return RTEMS_SUCCESSFUL;
43980: 588f addql #4,%sp
}
43982: 2002 movel %d2,%d0
43984: 4cee 3cfc ffd8 moveml %fp@(-40),%d2-%d7/%a2-%a5
4398a: 4e5e unlk %fp
4398c: 4e75 rts
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
4398e: 4878 00e8 pea e8 <DBL_MANT_DIG+0xb3>
43992: 4878 0001 pea 1 <ADD>
43996: 4eb9 0004 241c jsr 4241c <calloc>
if (tty == NULL) {
4399c: 508f addql #8,%sp
static char c = 'a';
/*
* Create a new device
*/
tty = calloc (1, sizeof (struct rtems_termios_tty));
4399e: 2640 moveal %d0,%a3
439a0: 2440 moveal %d0,%a2
if (tty == NULL) {
439a2: 4a80 tstl %d0
439a4: 6600 fc84 bnew 4362a <rtems_termios_open+0x60>
439a8: 6000 fc70 braw 4361a <rtems_termios_open+0x50> <== NOT EXECUTED
00043e52 <rtems_termios_puts>:
* Send characters to device-specific code
*/
void
rtems_termios_puts (
const void *_buf, int len, struct rtems_termios_tty *tty)
{
43e52: 4e56 ffe0 linkw %fp,#-32
43e56: 202e 0008 movel %fp@(8),%d0
43e5a: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
43e5e: 242e 000c movel %fp@(12),%d2
const unsigned char *buf = _buf;
43e62: 2640 moveal %d0,%a3
* Send characters to device-specific code
*/
void
rtems_termios_puts (
const void *_buf, int len, struct rtems_termios_tty *tty)
{
43e64: 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) {
43e68: 4aaa 00b4 tstl %a2@(180)
43e6c: 661c bnes 43e8a <rtems_termios_puts+0x38> <== ALWAYS TAKEN
(*tty->device.write)(tty->minor, (void *)buf, len);
43e6e: 2d42 0010 movel %d2,%fp@(16) <== NOT EXECUTED
43e72: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
43e76: 2d6a 0010 0008 movel %a2@(16),%fp@(8) <== NOT EXECUTED
43e7c: 226a 00a4 moveal %a2@(164),%a1 <== NOT EXECUTED
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
43e80: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
43e86: 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);
43e88: 4ed1 jmp %a1@ <== NOT EXECUTED
return;
}
newHead = tty->rawOutBuf.Head;
43e8a: 2c2a 0080 movel %a2@(128),%d6
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
rtems_interrupt_disable (level);
43e8e: 2a3c 0000 0700 movel #1792,%d5
while (newHead == tty->rawOutBuf.Tail) {
tty->rawOutBufState = rob_wait;
rtems_interrupt_enable (level);
sc = rtems_semaphore_obtain(
43e94: 49f9 0004 55f4 lea 455f4 <rtems_semaphore_obtain>,%a4
if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
(*tty->device.write)(tty->minor, (void *)buf, len);
return;
}
newHead = tty->rawOutBuf.Head;
while (len) {
43e9a: 6000 009e braw 43f3a <rtems_termios_puts+0xe8>
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
43e9e: 202a 0088 movel %a2@(136),%d0
43ea2: 5286 addql #1,%d6
43ea4: 4c40 6004 remul %d0,%d4,%d6
rtems_interrupt_disable (level);
43ea8: 2005 movel %d5,%d0
* len -= ncopy
*
* To minimize latency, the memcpy should be done
* with interrupts enabled.
*/
newHead = (newHead + 1) % tty->rawOutBuf.Size;
43eaa: 2c04 movel %d4,%d6
rtems_interrupt_disable (level);
43eac: 40c3 movew %sr,%d3
43eae: 8083 orl %d3,%d0
43eb0: 46c0 movew %d0,%sr
while (newHead == tty->rawOutBuf.Tail) {
43eb2: 602a bras 43ede <rtems_termios_puts+0x8c>
tty->rawOutBufState = rob_wait;
43eb4: 7002 moveq #2,%d0 <== NOT EXECUTED
43eb6: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable (level);
43eba: 46c3 movew %d3,%sr <== NOT EXECUTED
sc = rtems_semaphore_obtain(
43ebc: 42a7 clrl %sp@- <== NOT EXECUTED
43ebe: 42a7 clrl %sp@- <== NOT EXECUTED
43ec0: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
43ec4: 4e94 jsr %a4@ <== NOT EXECUTED
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
43ec6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
43eca: 4a80 tstl %d0 <== NOT EXECUTED
43ecc: 6708 beqs 43ed6 <rtems_termios_puts+0x84> <== NOT EXECUTED
rtems_fatal_error_occurred (sc);
43ece: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43ed0: 4eb9 0004 5ca0 jsr 45ca0 <rtems_fatal_error_occurred> <== NOT EXECUTED
rtems_interrupt_disable (level);
43ed6: 2005 movel %d5,%d0 <== NOT EXECUTED
43ed8: 40c3 movew %sr,%d3 <== NOT EXECUTED
43eda: 8083 orl %d3,%d0 <== NOT EXECUTED
43edc: 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) {
43ede: 202a 0084 movel %a2@(132),%d0
43ee2: b084 cmpl %d4,%d0
43ee4: 67ce beqs 43eb4 <rtems_termios_puts+0x62> <== NEVER TAKEN
tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (sc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (sc);
rtems_interrupt_disable (level);
}
tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;
43ee6: 202a 0080 movel %a2@(128),%d0
43eea: 206a 007c moveal %a2@(124),%a0
43eee: 119b 0800 moveb %a3@+,%a0@(00000000,%d0:l)
tty->rawOutBuf.Head = newHead;
43ef2: 2544 0080 movel %d4,%a2@(128)
if (tty->rawOutBufState == rob_idle) {
43ef6: 4aaa 0094 tstl %a2@(148)
43efa: 663a bnes 43f36 <rtems_termios_puts+0xe4> <== NEVER TAKEN
/* check, whether XOFF has been received */
if (!(tty->flow_ctrl & FL_ORCVXOF)) {
43efc: 202a 00b8 movel %a2@(184),%d0
43f00: 0800 0004 btst #4,%d0
43f04: 661e bnes 43f24 <rtems_termios_puts+0xd2> <== NEVER TAKEN
(*tty->device.write)(tty->minor,
(char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
43f06: 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,
43f0a: 4878 0001 pea 1 <ADD>
43f0e: d0aa 007c addl %a2@(124),%d0
43f12: 2f00 movel %d0,%sp@-
43f14: 2f2a 0010 movel %a2@(16),%sp@-
43f18: 206a 00a4 moveal %a2@(164),%a0
43f1c: 4e90 jsr %a0@
43f1e: 4fef 000c lea %sp@(12),%sp
43f22: 600c bras 43f30 <rtems_termios_puts+0xde>
(char *)&tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1);
} else {
/* remember that output has been stopped due to flow ctrl*/
tty->flow_ctrl |= FL_OSTOP;
43f24: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
43f28: 7220 moveq #32,%d1 <== NOT EXECUTED
43f2a: 8081 orl %d1,%d0 <== NOT EXECUTED
43f2c: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy;
43f30: 7001 moveq #1,%d0
43f32: 2540 0094 movel %d0,%a2@(148)
}
rtems_interrupt_enable (level);
43f36: 46c3 movew %d3,%sr
len--;
43f38: 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) {
43f3a: 4a82 tstl %d2
43f3c: 6600 ff60 bnew 43e9e <rtems_termios_puts+0x4c>
tty->rawOutBufState = rob_busy;
}
rtems_interrupt_enable (level);
len--;
}
}
43f40: 4cee 1c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a4 <== NOT EXECUTED
43f46: 4e5e unlk %fp <== NOT EXECUTED
00044536 <rtems_termios_read>:
return RTEMS_SUCCESSFUL;
}
rtems_status_code
rtems_termios_read (void *arg)
{
44536: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4453a: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4453e: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
44542: 2053 moveal %a3@,%a0 <== NOT EXECUTED
uint32_t count = args->count;
44544: 262b 0010 movel %a3@(16),%d3 <== 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;
44548: 2468 0034 moveal %a0@(52),%a2 <== NOT EXECUTED
uint32_t count = args->count;
char *buffer = args->buffer;
4454c: 2a6b 000c moveal %a3@(12),%a5 <== NOT EXECUTED
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
44550: 42a7 clrl %sp@- <== NOT EXECUTED
44552: 42a7 clrl %sp@- <== NOT EXECUTED
44554: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
44558: 4eb9 0004 55f4 jsr 455f4 <rtems_semaphore_obtain> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
4455e: 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);
44562: 2800 movel %d0,%d4 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
44564: 6600 029a bnew 44800 <rtems_termios_read+0x2ca> <== NOT EXECUTED
return sc;
if (rtems_termios_linesw[tty->t_line].l_read != NULL) {
44568: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
4456c: eb88 lsll #5,%d0 <== NOT EXECUTED
4456e: 0680 0005 d1c4 addil #381380,%d0 <== NOT EXECUTED
44574: 2240 moveal %d0,%a1 <== NOT EXECUTED
44576: 2051 moveal %a1@,%a0 <== NOT EXECUTED
44578: 4a88 tstl %a0 <== NOT EXECUTED
4457a: 671e beqs 4459a <rtems_termios_read+0x64> <== NOT EXECUTED
sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);
4457c: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4457e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44580: 4e90 jsr %a0@ <== NOT EXECUTED
44582: 2800 movel %d0,%d4 <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
44584: 42aa 00e4 clrl %a2@(228) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
44588: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
4458c: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44592: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44596: 6000 0268 braw 44800 <rtems_termios_read+0x2ca> <== NOT EXECUTED
}
if (tty->cindex == tty->ccount) {
4459a: 202a 0020 movel %a2@(32),%d0 <== NOT EXECUTED
4459e: b0aa 0024 cmpl %a2@(36),%d0 <== NOT EXECUTED
445a2: 6600 0234 bnew 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
tty->cindex = tty->ccount = 0;
445a6: 42aa 0020 clrl %a2@(32) <== NOT EXECUTED
tty->read_start_column = tty->column;
445aa: 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;
445b0: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
tty->read_start_column = tty->column;
if (tty->device.pollRead != NULL &&
445b4: 4aaa 00a0 tstl %a2@(160) <== NOT EXECUTED
445b8: 6700 00da beqw 44694 <rtems_termios_read+0x15e> <== NOT EXECUTED
445bc: 4aaa 00b4 tstl %a2@(180) <== NOT EXECUTED
445c0: 6600 00d2 bnew 44694 <rtems_termios_read+0x15e> <== NOT EXECUTED
static rtems_status_code
fillBufferPoll (struct rtems_termios_tty *tty)
{
int n;
if (tty->termios.c_lflag & ICANON) {
445c4: 7002 moveq #2,%d0 <== NOT EXECUTED
445c6: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
445ca: 673e beqs 4460a <rtems_termios_read+0xd4> <== NOT EXECUTED
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
if (n < 0) {
rtems_task_wake_after (1);
445cc: 49f9 0004 5ad0 lea 45ad0 <rtems_task_wake_after>,%a4 <== NOT EXECUTED
} else {
if (siproc (n, tty))
445d2: 243c 0004 4416 movel #279574,%d2 <== NOT EXECUTED
{
int n;
if (tty->termios.c_lflag & ICANON) {
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
445d8: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
445dc: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
445e0: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
445e2: 588f addql #4,%sp <== NOT EXECUTED
445e4: 4a80 tstl %d0 <== NOT EXECUTED
445e6: 6c0a bges 445f2 <rtems_termios_read+0xbc> <== NOT EXECUTED
rtems_task_wake_after (1);
445e8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
445ec: 4e94 jsr %a4@ <== NOT EXECUTED
445ee: 588f addql #4,%sp <== NOT EXECUTED
445f0: 60e6 bras 445d8 <rtems_termios_read+0xa2> <== NOT EXECUTED
} else {
if (siproc (n, tty))
445f2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
445f4: 2042 moveal %d2,%a0 <== NOT EXECUTED
445f6: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
445fc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
445fe: 4e90 jsr %a0@ <== NOT EXECUTED
44600: 508f addql #8,%sp <== NOT EXECUTED
44602: 4a80 tstl %d0 <== NOT EXECUTED
44604: 67d2 beqs 445d8 <rtems_termios_read+0xa2> <== NOT EXECUTED
44606: 6000 01d0 braw 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
4460a: 49f9 0004 4fd8 lea 44fd8 <rtems_clock_get_ticks_since_boot>,%a4<== NOT EXECUTED
44610: 4e94 jsr %a4@ <== NOT EXECUTED
now = rtems_clock_get_ticks_since_boot();
if ((now - then) > tty->vtimeTicks) {
break;
}
}
rtems_task_wake_after (1);
44612: 2c3c 0004 5ad0 movel #285392,%d6 <== NOT EXECUTED
}
}
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
44618: 2400 movel %d0,%d2 <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
} else {
siproc (n, tty);
4461a: 2a3c 0004 4416 movel #279574,%d5 <== NOT EXECUTED
} else {
rtems_interval then, now;
then = rtems_clock_get_ticks_since_boot();
for (;;) {
n = (*tty->device.pollRead)(tty->minor);
44620: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44624: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
44628: 4e90 jsr %a0@ <== NOT EXECUTED
if (n < 0) {
4462a: 588f addql #4,%sp <== NOT EXECUTED
4462c: 4a80 tstl %d0 <== NOT EXECUTED
4462e: 6c34 bges 44664 <rtems_termios_read+0x12e> <== NOT EXECUTED
if (tty->termios.c_cc[VMIN]) {
44630: 4a2a 0047 tstb %a2@(71) <== NOT EXECUTED
44634: 670e beqs 44644 <rtems_termios_read+0x10e> <== NOT EXECUTED
if (tty->termios.c_cc[VTIME] && tty->ccount) {
44636: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
4463a: 671c beqs 44658 <rtems_termios_read+0x122> <== NOT EXECUTED
4463c: 4aaa 0020 tstl %a2@(32) <== NOT EXECUTED
44640: 6716 beqs 44658 <rtems_termios_read+0x122> <== NOT EXECUTED
44642: 6008 bras 4464c <rtems_termios_read+0x116> <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
break;
}
}
} else {
if (!tty->termios.c_cc[VTIME])
44644: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
44648: 6700 018e beqw 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
break;
now = rtems_clock_get_ticks_since_boot();
4464c: 4e94 jsr %a4@ <== NOT EXECUTED
if ((now - then) > tty->vtimeTicks) {
4464e: 9082 subl %d2,%d0 <== NOT EXECUTED
44650: b0aa 0054 cmpl %a2@(84),%d0 <== NOT EXECUTED
44654: 6200 0182 bhiw 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
break;
}
}
rtems_task_wake_after (1);
44658: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4465c: 2246 moveal %d6,%a1 <== NOT EXECUTED
4465e: 4e91 jsr %a1@ <== NOT EXECUTED
44660: 588f addql #4,%sp <== NOT EXECUTED
44662: 60bc bras 44620 <rtems_termios_read+0xea> <== NOT EXECUTED
} else {
siproc (n, tty);
44664: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44666: 2045 moveal %d5,%a0 <== NOT EXECUTED
44668: 0280 0000 00ff andil #255,%d0 <== NOT EXECUTED
4466e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44670: 4e90 jsr %a0@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
44672: 508f addql #8,%sp <== NOT EXECUTED
44674: 4281 clrl %d1 <== NOT EXECUTED
44676: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED
4467a: 1200 moveb %d0,%d1 <== NOT EXECUTED
4467c: b2aa 0020 cmpl %a2@(32),%d1 <== NOT EXECUTED
44680: 6f00 0156 blew 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
break;
if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])
44684: 4a00 tstb %d0 <== NOT EXECUTED
44686: 6798 beqs 44620 <rtems_termios_read+0xea> <== NOT EXECUTED
44688: 4a2a 0046 tstb %a2@(70) <== NOT EXECUTED
4468c: 6792 beqs 44620 <rtems_termios_read+0xea> <== NOT EXECUTED
then = rtems_clock_get_ticks_since_boot();
4468e: 4e94 jsr %a4@ <== NOT EXECUTED
44690: 2400 movel %d0,%d2 <== NOT EXECUTED
44692: 608c bras 44620 <rtems_termios_read+0xea> <== 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)(
44694: 2e0a movel %a2,%d7 <== 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;
44696: 7401 moveq #1,%d2 <== NOT EXECUTED
44698: 49fa fd7c lea %pc@(44416 <siproc>),%a4 <== 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)(
4469c: 0687 0000 0049 addil #73,%d7 <== NOT EXECUTED
/*
* Wait for characters
*/
if ( wait ) {
sc = rtems_semaphore_obtain(
446a2: 2c3c 0004 55f4 movel #284148,%d6 <== 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;
446a8: 2a2a 0074 movel %a2@(116),%d5 <== NOT EXECUTED
446ac: 6000 00e2 braw 44790 <rtems_termios_read+0x25a> <== 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;
446b0: 2a2a 005c movel %a2@(92),%d5 <== NOT EXECUTED
446b4: 5285 addql #1,%d5 <== NOT EXECUTED
446b6: 202a 0064 movel %a2@(100),%d0 <== NOT EXECUTED
c = tty->rawInBuf.theBuf[newHead];
446ba: 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;
446be: 4c40 5001 remul %d0,%d1,%d5 <== NOT EXECUTED
c = tty->rawInBuf.theBuf[newHead];
446c2: 1030 1800 moveb %a0@(00000000,%d1:l),%d0 <== NOT EXECUTED
tty->rawInBuf.Head = newHead;
446c6: 2541 005c movel %d1,%a2@(92) <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
unsigned char c;
unsigned int newHead;
newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;
c = tty->rawInBuf.theBuf[newHead];
446ca: 1d40 ffff moveb %d0,%fp@(-1) <== NOT EXECUTED
tty->rawInBuf.Head = newHead;
if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)
446ce: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
446d2: 226a 0064 moveal %a2@(100),%a1 <== NOT EXECUTED
446d6: 43f1 0800 lea %a1@(00000000,%d0:l),%a1 <== NOT EXECUTED
446da: 93c1 subal %d1,%a1 <== NOT EXECUTED
% tty->rawInBuf.Size)
446dc: 2a09 movel %a1,%d5 <== NOT EXECUTED
446de: 206a 0064 moveal %a2@(100),%a0 <== NOT EXECUTED
446e2: 2008 movel %a0,%d0 <== NOT EXECUTED
446e4: 4c40 5001 remul %d0,%d1,%d5 <== 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)
446e8: b2aa 00bc cmpl %a2@(188),%d1 <== NOT EXECUTED
446ec: 646a bccs 44758 <rtems_termios_read+0x222> <== NOT EXECUTED
% tty->rawInBuf.Size)
< tty->lowwater) {
tty->flow_ctrl &= ~FL_IREQXOF;
446ee: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
446f2: 72fe moveq #-2,%d1 <== NOT EXECUTED
446f4: c081 andl %d1,%d0 <== NOT EXECUTED
446f6: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* if tx stopped and XON should be sent... */
if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))
446fa: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
446fe: 0280 0000 0202 andil #514,%d0 <== NOT EXECUTED
44704: 0c80 0000 0202 cmpil #514,%d0 <== NOT EXECUTED
4470a: 6626 bnes 44732 <rtems_termios_read+0x1fc> <== NOT EXECUTED
== (FL_MDXON | FL_ISNTXOF))
&& ((tty->rawOutBufState == rob_idle)
4470c: 4aaa 0094 tstl %a2@(148) <== NOT EXECUTED
44710: 670a beqs 4471c <rtems_termios_read+0x1e6> <== NOT EXECUTED
|| (tty->flow_ctrl & FL_OSTOP))) {
44712: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44716: 0800 0005 btst #5,%d0 <== NOT EXECUTED
4471a: 6716 beqs 44732 <rtems_termios_read+0x1fc> <== NOT EXECUTED
/* XON should be sent now... */
(*tty->device.write)(
4471c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44720: 2f07 movel %d7,%sp@- <== NOT EXECUTED
44722: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44726: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
4472a: 4e90 jsr %a0@ <== NOT EXECUTED
4472c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44730: 6026 bras 44758 <rtems_termios_read+0x222> <== NOT EXECUTED
tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
} else if (tty->flow_ctrl & FL_MDRTS) {
44732: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44736: 0800 0008 btst #8,%d0 <== NOT EXECUTED
4473a: 671c beqs 44758 <rtems_termios_read+0x222> <== NOT EXECUTED
tty->flow_ctrl &= ~FL_IRTSOFF;
4473c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44740: 7afb moveq #-5,%d5 <== NOT EXECUTED
44742: c085 andl %d5,%d0 <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
44744: 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;
44748: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
/* activate RTS line */
if (tty->device.startRemoteTx != NULL) {
4474c: 4a88 tstl %a0 <== NOT EXECUTED
4474e: 6708 beqs 44758 <rtems_termios_read+0x222> <== NOT EXECUTED
tty->device.startRemoteTx(tty->minor);
44750: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44754: 4e90 jsr %a0@ <== NOT EXECUTED
44756: 588f addql #4,%sp <== NOT EXECUTED
}
}
}
/* continue processing new character */
if (tty->termios.c_lflag & ICANON) {
44758: 7002 moveq #2,%d0 <== NOT EXECUTED
4475a: 4285 clrl %d5 <== NOT EXECUTED
4475c: 1a2e ffff moveb %fp@(-1),%d5 <== NOT EXECUTED
44760: c0aa 003c andl %a2@(60),%d0 <== NOT EXECUTED
44764: 670e beqs 44774 <rtems_termios_read+0x23e> <== NOT EXECUTED
if (siproc (c, tty))
44766: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44768: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4476a: 4e94 jsr %a4@ <== NOT EXECUTED
4476c: 508f addql #8,%sp <== NOT EXECUTED
wait = 0;
4476e: 4a80 tstl %d0 <== NOT EXECUTED
44770: 57c0 seq %d0 <== NOT EXECUTED
44772: 6014 bras 44788 <rtems_termios_read+0x252> <== NOT EXECUTED
} else {
siproc (c, tty);
44774: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44776: 2f05 movel %d5,%sp@- <== NOT EXECUTED
44778: 4e94 jsr %a4@ <== NOT EXECUTED
if (tty->ccount >= tty->termios.c_cc[VMIN])
4477a: 508f addql #8,%sp <== NOT EXECUTED
4477c: 4280 clrl %d0 <== NOT EXECUTED
4477e: 102a 0047 moveb %a2@(71),%d0 <== NOT EXECUTED
wait = 0;
44782: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
44786: 5ec0 sgt %d0 <== NOT EXECUTED
44788: 49c0 extbl %d0 <== NOT EXECUTED
4478a: c480 andl %d0,%d2 <== NOT EXECUTED
}
timeout = tty->rawInBufSemaphoreTimeout;
4478c: 2a2a 0070 movel %a2@(112),%d5 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
44790: 222a 005c movel %a2@(92),%d1 <== NOT EXECUTED
44794: 202a 0060 movel %a2@(96),%d0 <== NOT EXECUTED
44798: b081 cmpl %d1,%d0 <== NOT EXECUTED
4479a: 6710 beqs 447ac <rtems_termios_read+0x276> <== NOT EXECUTED
(tty->ccount < (CBUFSIZE-1))) {
4479c: 2039 0005 c3b0 movel 5c3b0 <rtems_termios_cbufsize>,%d0 <== NOT EXECUTED
447a2: 5380 subql #1,%d0 <== NOT EXECUTED
while ( wait ) {
/*
* Process characters read from raw queue
*/
while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&
447a4: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
447a8: 6e00 ff06 bgtw 446b0 <rtems_termios_read+0x17a> <== NOT EXECUTED
}
/*
* Wait for characters
*/
if ( wait ) {
447ac: 4a82 tstl %d2 <== NOT EXECUTED
447ae: 6728 beqs 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
sc = rtems_semaphore_obtain(
447b0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
447b2: 2f2a 006c movel %a2@(108),%sp@- <== NOT EXECUTED
447b6: 2046 moveal %d6,%a0 <== NOT EXECUTED
447b8: 2f2a 0068 movel %a2@(104),%sp@- <== NOT EXECUTED
447bc: 4e90 jsr %a0@ <== NOT EXECUTED
tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
if (sc != RTEMS_SUCCESSFUL)
447be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
447c2: 4a80 tstl %d0 <== NOT EXECUTED
447c4: 67ca beqs 44790 <rtems_termios_read+0x25a> <== NOT EXECUTED
447c6: 6010 bras 447d8 <rtems_termios_read+0x2a2> <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
*buffer++ = tty->cbuf[tty->cindex++];
447c8: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
count--;
447cc: 5383 subql #1,%d3 <== NOT EXECUTED
if (sc != RTEMS_SUCCESSFUL)
tty->cindex = tty->ccount = 0;
}
while (count && (tty->cindex < tty->ccount)) {
*buffer++ = tty->cbuf[tty->cindex++];
447ce: 1af0 0800 moveb %a0@(00000000,%d0:l),%a5@+ <== NOT EXECUTED
447d2: 5280 addql #1,%d0 <== NOT EXECUTED
447d4: 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)) {
447d8: 4a83 tstl %d3 <== NOT EXECUTED
447da: 670a beqs 447e6 <rtems_termios_read+0x2b0> <== NOT EXECUTED
447dc: 202a 0024 movel %a2@(36),%d0 <== NOT EXECUTED
447e0: b0aa 0020 cmpl %a2@(32),%d0 <== NOT EXECUTED
447e4: 6de2 blts 447c8 <rtems_termios_read+0x292> <== NOT EXECUTED
*buffer++ = tty->cbuf[tty->cindex++];
count--;
}
args->bytes_moved = args->count - count;
447e6: 202b 0010 movel %a3@(16),%d0 <== NOT EXECUTED
447ea: 9083 subl %d3,%d0 <== NOT EXECUTED
447ec: 2740 0018 movel %d0,%a3@(24) <== NOT EXECUTED
tty->tty_rcvwakeup = 0;
447f0: 42aa 00e4 clrl %a2@(228) <== NOT EXECUTED
rtems_semaphore_release (tty->isem);
447f4: 2f2a 0014 movel %a2@(20),%sp@- <== NOT EXECUTED
447f8: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return sc;
447fe: 588f addql #4,%sp <== NOT EXECUTED
}
44800: 2004 movel %d4,%d0 <== NOT EXECUTED
44802: 4cee 3cfc ffd4 moveml %fp@(-44),%d2-%d7/%a2-%a5 <== NOT EXECUTED
44808: 4e5e unlk %fp <== NOT EXECUTED
00044ae8 <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)
{
44ae8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
44aec: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
44af0: 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))
44af4: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44af8: 0280 0000 0403 andil #1027,%d0 <== NOT EXECUTED
44afe: 0c80 0000 0401 cmpil #1025,%d0 <== NOT EXECUTED
44b04: 663c bnes 44b42 <rtems_termios_refill_transmitter+0x5a><== NOT EXECUTED
== (FL_MDXOF | FL_IREQXOF)) {
/* XOFF should be sent now... */
(*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
44b06: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44b0a: 486a 004a pea %a2@(74) <== NOT EXECUTED
44b0e: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44b12: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
44b16: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
44b18: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44b1e: 40c1 movew %sr,%d1 <== NOT EXECUTED
44b20: 8081 orl %d1,%d0 <== NOT EXECUTED
44b22: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl |= FL_ISNTXOF;
44b24: 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--;
44b26: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl |= FL_ISNTXOF;
44b2a: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44b2e: 8082 orl %d2,%d0 <== NOT EXECUTED
44b30: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
44b34: 46c1 movew %d1,%sr <== NOT EXECUTED
44b36: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
nToSend = 1;
44b3a: 143c 0001 moveb #1,%d2 <== NOT EXECUTED
44b3e: 6000 0150 braw 44c90 <rtems_termios_refill_transmitter+0x1a8><== NOT EXECUTED
} else if ((tty->flow_ctrl & (FL_IREQXOF | FL_ISNTXOF)) == FL_ISNTXOF) {
44b42: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44b46: 7203 moveq #3,%d1 <== NOT EXECUTED
44b48: 7402 moveq #2,%d2 <== NOT EXECUTED
44b4a: c081 andl %d1,%d0 <== NOT EXECUTED
44b4c: b480 cmpl %d0,%d2 <== NOT EXECUTED
44b4e: 663a bnes 44b8a <rtems_termios_refill_transmitter+0xa2><== 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);
44b50: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44b54: 486a 0049 pea %a2@(73) <== NOT EXECUTED
44b58: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44b5c: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
44b60: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_interrupt_disable(level);
44b62: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44b68: 40c1 movew %sr,%d1 <== NOT EXECUTED
44b6a: 8081 orl %d1,%d0 <== NOT EXECUTED
44b6c: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->t_dqlen--;
tty->flow_ctrl &= ~FL_ISNTXOF;
44b6e: 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--;
44b70: 53aa 0090 subql #1,%a2@(144) <== NOT EXECUTED
tty->flow_ctrl &= ~FL_ISNTXOF;
44b74: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44b78: c082 andl %d2,%d0 <== NOT EXECUTED
44b7a: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
rtems_interrupt_enable(level);
44b7e: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 1;
44b80: 7401 moveq #1,%d2 <== 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);
44b82: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44b86: 6000 0108 braw 44c90 <rtems_termios_refill_transmitter+0x1a8><== NOT EXECUTED
nToSend = 1;
} else {
if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {
44b8a: 222a 0080 movel %a2@(128),%d1 <== NOT EXECUTED
44b8e: 202a 0084 movel %a2@(132),%d0 <== NOT EXECUTED
44b92: b081 cmpl %d1,%d0 <== NOT EXECUTED
44b94: 661a bnes 44bb0 <rtems_termios_refill_transmitter+0xc8><== NOT EXECUTED
/*
* buffer was empty
*/
if (tty->rawOutBufState == rob_wait) {
44b96: 7002 moveq #2,%d0 <== NOT EXECUTED
44b98: b0aa 0094 cmpl %a2@(148),%d0 <== NOT EXECUTED
44b9c: 6600 00f0 bnew 44c8e <rtems_termios_refill_transmitter+0x1a6><== NOT EXECUTED
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
44ba0: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
44ba4: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
44baa: 588f addql #4,%sp <== NOT EXECUTED
44bac: 6000 00e0 braw 44c8e <rtems_termios_refill_transmitter+0x1a6><== NOT EXECUTED
}
return 0;
}
rtems_interrupt_disable(level);
44bb0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
44bb6: 40c1 movew %sr,%d1 <== NOT EXECUTED
44bb8: 8081 orl %d1,%d0 <== NOT EXECUTED
44bba: 46c0 movew %d0,%sr <== NOT EXECUTED
len = tty->t_dqlen;
44bbc: 206a 0090 moveal %a2@(144),%a0 <== NOT EXECUTED
tty->t_dqlen = 0;
44bc0: 42aa 0090 clrl %a2@(144) <== NOT EXECUTED
rtems_interrupt_enable(level);
44bc4: 46c1 movew %d1,%sr <== NOT EXECUTED
newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;
44bc6: 222a 0084 movel %a2@(132),%d1 <== NOT EXECUTED
44bca: d288 addl %a0,%d1 <== NOT EXECUTED
44bcc: 202a 0088 movel %a2@(136),%d0 <== NOT EXECUTED
44bd0: 4c40 1003 remul %d0,%d3,%d1 <== NOT EXECUTED
tty->rawOutBuf.Tail = newTail;
if (tty->rawOutBufState == rob_wait) {
44bd4: 7202 moveq #2,%d1 <== 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;
44bd6: 2543 0084 movel %d3,%a2@(132) <== NOT EXECUTED
if (tty->rawOutBufState == rob_wait) {
44bda: b2aa 0094 cmpl %a2@(148),%d1 <== NOT EXECUTED
44bde: 660c bnes 44bec <rtems_termios_refill_transmitter+0x104><== NOT EXECUTED
/*
* wake up any pending writer task
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
44be0: 2f2a 008c movel %a2@(140),%sp@- <== NOT EXECUTED
44be4: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
44bea: 588f addql #4,%sp <== NOT EXECUTED
}
if (newTail == tty->rawOutBuf.Head) {
44bec: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED
44bf0: b083 cmpl %d3,%d0 <== NOT EXECUTED
44bf2: 661c bnes 44c10 <rtems_termios_refill_transmitter+0x128><== NOT EXECUTED
nToSend = 0;
/*
* check to see if snd wakeup callback was set
*/
if ( tty->tty_snd.sw_pfn != NULL) {
44bf4: 206a 00d4 moveal %a2@(212),%a0 <== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
44bf8: 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) {
44bfc: 4a88 tstl %a0 <== NOT EXECUTED
44bfe: 6700 0086 beqw 44c86 <rtems_termios_refill_transmitter+0x19e><== NOT EXECUTED
(*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);
44c02: 2f2a 00d8 movel %a2@(216),%sp@- <== NOT EXECUTED
44c06: 486a 0030 pea %a2@(48) <== NOT EXECUTED
44c0a: 4e90 jsr %a0@ <== NOT EXECUTED
44c0c: 508f addql #8,%sp <== NOT EXECUTED
44c0e: 6076 bras 44c86 <rtems_termios_refill_transmitter+0x19e><== NOT EXECUTED
}
}
/* check, whether output should stop due to received XOFF */
else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))
44c10: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44c14: 0280 0000 0210 andil #528,%d0 <== NOT EXECUTED
44c1a: 0c80 0000 0210 cmpil #528,%d0 <== NOT EXECUTED
44c20: 6622 bnes 44c44 <rtems_termios_refill_transmitter+0x15c><== NOT EXECUTED
== (FL_MDXON | FL_ORCVXOF)) {
/* Buffer not empty, but output stops due to XOFF */
/* set flag, that output has been stopped */
rtems_interrupt_disable(level);
44c22: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
44c26: 40c1 movew %sr,%d1 <== NOT EXECUTED
44c28: 8081 orl %d1,%d0 <== NOT EXECUTED
44c2a: 46c0 movew %d0,%sr <== NOT EXECUTED
tty->flow_ctrl |= FL_OSTOP;
44c2c: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
44c30: 7420 moveq #32,%d2 <== NOT EXECUTED
44c32: 8082 orl %d2,%d0 <== NOT EXECUTED
44c34: 2540 00b8 movel %d0,%a2@(184) <== NOT EXECUTED
tty->rawOutBufState = rob_busy; /*apm*/
44c38: 7001 moveq #1,%d0 <== NOT EXECUTED
44c3a: 2540 0094 movel %d0,%a2@(148) <== NOT EXECUTED
rtems_interrupt_enable(level);
44c3e: 46c1 movew %d1,%sr <== NOT EXECUTED
nToSend = 0;
44c40: 4202 clrb %d2 <== NOT EXECUTED
44c42: 6044 bras 44c88 <rtems_termios_refill_transmitter+0x1a0><== NOT EXECUTED
} else {
/*
* Buffer not empty, start tranmitter
*/
if (newTail > tty->rawOutBuf.Head)
44c44: 202a 0080 movel %a2@(128),%d0 <== NOT EXECUTED
44c48: b083 cmpl %d3,%d0 <== NOT EXECUTED
44c4a: 6406 bccs 44c52 <rtems_termios_refill_transmitter+0x16a><== NOT EXECUTED
nToSend = tty->rawOutBuf.Size - newTail;
44c4c: 242a 0088 movel %a2@(136),%d2 <== NOT EXECUTED
44c50: 6004 bras 44c56 <rtems_termios_refill_transmitter+0x16e><== NOT EXECUTED
else
nToSend = tty->rawOutBuf.Head - newTail;
44c52: 242a 0080 movel %a2@(128),%d2 <== 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)) {
44c56: 202a 00b8 movel %a2@(184),%d0 <== NOT EXECUTED
* Buffer not empty, start tranmitter
*/
if (newTail > tty->rawOutBuf.Head)
nToSend = tty->rawOutBuf.Size - newTail;
else
nToSend = tty->rawOutBuf.Head - newTail;
44c5a: 9483 subl %d3,%d2 <== 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)) {
44c5c: 0280 0000 0600 andil #1536,%d0 <== NOT EXECUTED
44c62: 6702 beqs 44c66 <rtems_termios_refill_transmitter+0x17e><== NOT EXECUTED
nToSend = 1;
44c64: 7401 moveq #1,%d2 <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
44c66: 7201 moveq #1,%d1 <== NOT EXECUTED
44c68: 2541 0094 movel %d1,%a2@(148) <== NOT EXECUTED
(*tty->device.write)(
44c6c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44c6e: 202a 007c movel %a2@(124),%d0 <== NOT EXECUTED
44c72: d083 addl %d3,%d0 <== NOT EXECUTED
44c74: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44c76: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44c7a: 206a 00a4 moveal %a2@(164),%a0 <== NOT EXECUTED
44c7e: 4e90 jsr %a0@ <== NOT EXECUTED
44c80: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44c84: 6002 bras 44c88 <rtems_termios_refill_transmitter+0x1a0><== NOT EXECUTED
if (newTail == tty->rawOutBuf.Head) {
/*
* Buffer has become empty
*/
tty->rawOutBufState = rob_idle;
nToSend = 0;
44c86: 4282 clrl %d2 <== NOT EXECUTED
}
tty->rawOutBufState = rob_busy; /*apm*/
(*tty->device.write)(
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
44c88: 2543 0084 movel %d3,%a2@(132) <== NOT EXECUTED
44c8c: 6002 bras 44c90 <rtems_termios_refill_transmitter+0x1a8><== NOT EXECUTED
/*
* this should never happen...
*/
rtems_semaphore_release (tty->rawOutBuf.Semaphore);
}
return 0;
44c8e: 4282 clrl %d2 <== NOT EXECUTED
tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);
}
tty->rawOutBuf.Tail = newTail; /*apm*/
}
return nToSend;
}
44c90: 2002 movel %d2,%d0 <== NOT EXECUTED
44c92: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
44c98: 4e5e unlk %fp <== NOT EXECUTED
00044a78 <rtems_termios_rxdaemon>:
/*
* this task actually processes any receive events
*/
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{
44a78: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
44a7c: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44a80: 260e movel %fp,%d3 <== NOT EXECUTED
if (c != EOF) {
/*
* pollRead did call enqueue on its own
*/
c_buf = c;
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
44a82: 240e movel %fp,%d2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44a84: 5d83 subql #6,%d3 <== NOT EXECUTED
44a86: 4bf9 0004 5040 lea 45040 <rtems_event_receive>,%a5 <== NOT EXECUTED
RTEMS_NO_TIMEOUT,
&the_event
);
if ((the_event & TERMIOS_RX_TERMINATE_EVENT) != 0) {
tty->rxTaskId = 0;
rtems_task_delete(RTEMS_SELF);
44a8c: 49f9 0004 58d0 lea 458d0 <rtems_task_delete>,%a4 <== NOT EXECUTED
if (c != EOF) {
/*
* pollRead did call enqueue on its own
*/
c_buf = c;
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
44a92: 5382 subql #1,%d2 <== NOT EXECUTED
44a94: 47f9 0004 4828 lea 44828 <rtems_termios_enqueue_raw_characters>,%a3<== NOT EXECUTED
/*
* this task actually processes any receive events
*/
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{
44a9a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44a9e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44aa0: 42a7 clrl %sp@- <== NOT EXECUTED
44aa2: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
44aa6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
44aaa: 4e95 jsr %a5@ <== 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) {
44aac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44ab0: 7001 moveq #1,%d0 <== NOT EXECUTED
44ab2: c0ae fffa andl %fp@(-6),%d0 <== NOT EXECUTED
44ab6: 670a beqs 44ac2 <rtems_termios_rxdaemon+0x4a> <== NOT EXECUTED
tty->rxTaskId = 0;
44ab8: 42aa 00c4 clrl %a2@(196) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
44abc: 42a7 clrl %sp@- <== NOT EXECUTED
44abe: 4e94 jsr %a4@ <== NOT EXECUTED
44ac0: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* do something
*/
c = tty->device.pollRead(tty->minor);
44ac2: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
44ac6: 206a 00a0 moveal %a2@(160),%a0 <== NOT EXECUTED
44aca: 4e90 jsr %a0@ <== NOT EXECUTED
if (c != EOF) {
44acc: 588f addql #4,%sp <== NOT EXECUTED
44ace: 72ff moveq #-1,%d1 <== NOT EXECUTED
44ad0: b280 cmpl %d0,%d1 <== NOT EXECUTED
44ad2: 67ca beqs 44a9e <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);
44ad4: 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;
44ad8: 1d40 ffff moveb %d0,%fp@(-1) <== NOT EXECUTED
rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);
44adc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44ade: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44ae0: 4e93 jsr %a3@ <== NOT EXECUTED
44ae2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44ae6: 60b6 bras 44a9e <rtems_termios_rxdaemon+0x26> <== NOT EXECUTED
0004480c <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)
{
4480c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* send event to rx daemon task
*/
rtems_event_send(tty->rxTaskId,TERMIOS_RX_PROC_EVENT);
44810: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
44814: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
44818: 2f28 00c4 movel %a0@(196),%sp@- <== NOT EXECUTED
4481c: 4eb9 0004 51a4 jsr 451a4 <rtems_event_send> <== NOT EXECUTED
44822: 508f addql #8,%sp <== NOT EXECUTED
}
44824: 4e5e unlk %fp <== NOT EXECUTED
00046640 <rtems_termios_set_initial_baud>:
int rtems_termios_set_initial_baud(
struct rtems_termios_tty *ttyp,
int32_t baud
)
{
46640: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46644: 2f0a movel %a2,%sp@- <== NOT EXECUTED
int cflags_baud;
cflags_baud = rtems_termios_number_to_baud(baud);
46646: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
int rtems_termios_set_initial_baud(
struct rtems_termios_tty *ttyp,
int32_t baud
)
{
4664a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int cflags_baud;
cflags_baud = rtems_termios_number_to_baud(baud);
4664e: 4eb9 0004 4e10 jsr 44e10 <rtems_termios_number_to_baud> <== NOT EXECUTED
if ( cflags_baud == -1 )
46654: 588f addql #4,%sp <== NOT EXECUTED
46656: 72ff moveq #-1,%d1 <== NOT EXECUTED
46658: b280 cmpl %d0,%d1 <== NOT EXECUTED
4665a: 6714 beqs 46670 <rtems_termios_set_initial_baud+0x30><== NOT EXECUTED
return -1;
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
4665c: 222a 0038 movel %a2@(56),%d1 <== NOT EXECUTED
46660: 0281 ffff eff0 andil #-4112,%d1 <== NOT EXECUTED
46666: 8081 orl %d1,%d0 <== NOT EXECUTED
46668: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
return 0;
4666c: 4280 clrl %d0 <== NOT EXECUTED
4666e: 6002 bras 46672 <rtems_termios_set_initial_baud+0x32><== NOT EXECUTED
{
int cflags_baud;
cflags_baud = rtems_termios_number_to_baud(baud);
if ( cflags_baud == -1 )
return -1;
46670: 70ff moveq #-1,%d0 <== NOT EXECUTED
ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
return 0;
}
46672: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
46676: 4e5e unlk %fp <== NOT EXECUTED
...
00044c9c <rtems_termios_txdaemon>:
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
44c9c: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
44ca0: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44ca4: 240e movel %fp,%d2 <== NOT EXECUTED
44ca6: 5982 subql #4,%d2 <== NOT EXECUTED
44ca8: 4bf9 0004 5040 lea 45040 <rtems_event_receive>,%a5 <== NOT EXECUTED
RTEMS_NO_TIMEOUT,
&the_event
);
if ((the_event & TERMIOS_TX_TERMINATE_EVENT) != 0) {
tty->txTaskId = 0;
rtems_task_delete(RTEMS_SELF);
44cae: 49f9 0004 58d0 lea 458d0 <rtems_task_delete>,%a4 <== NOT EXECUTED
}
/*
* try to push further characters to device
*/
rtems_termios_refill_transmitter(tty);
44cb4: 47f9 0004 4ae8 lea 44ae8 <rtems_termios_refill_transmitter>,%a3<== NOT EXECUTED
/*
* this task actually processes any transmit events
*/
static rtems_task rtems_termios_txdaemon(rtems_task_argument argument)
{
44cba: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
while (1) {
/*
* wait for rtems event
*/
rtems_event_receive(
44cbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44cc0: 42a7 clrl %sp@- <== NOT EXECUTED
44cc2: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
44cc6: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
44cca: 4e95 jsr %a5@ <== 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) {
44ccc: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
44cd0: 7001 moveq #1,%d0 <== NOT EXECUTED
44cd2: c0ae fffc andl %fp@(-4),%d0 <== NOT EXECUTED
44cd6: 670a beqs 44ce2 <rtems_termios_txdaemon+0x46> <== NOT EXECUTED
tty->txTaskId = 0;
44cd8: 42aa 00c8 clrl %a2@(200) <== NOT EXECUTED
rtems_task_delete(RTEMS_SELF);
44cdc: 42a7 clrl %sp@- <== NOT EXECUTED
44cde: 4e94 jsr %a4@ <== NOT EXECUTED
44ce0: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* call any line discipline start function
*/
if (rtems_termios_linesw[tty->t_line].l_start != NULL) {
44ce2: 202a 00cc movel %a2@(204),%d0 <== NOT EXECUTED
44ce6: eb88 lsll #5,%d0 <== NOT EXECUTED
44ce8: 0680 0005 d1d0 addil #381392,%d0 <== NOT EXECUTED
44cee: 2240 moveal %d0,%a1 <== NOT EXECUTED
44cf0: 2051 moveal %a1@,%a0 <== NOT EXECUTED
44cf2: 4a88 tstl %a0 <== NOT EXECUTED
44cf4: 6706 beqs 44cfc <rtems_termios_txdaemon+0x60> <== NOT EXECUTED
rtems_termios_linesw[tty->t_line].l_start(tty);
44cf6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44cf8: 4e90 jsr %a0@ <== NOT EXECUTED
44cfa: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* try to push further characters to device
*/
rtems_termios_refill_transmitter(tty);
44cfc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44cfe: 4e93 jsr %a3@ <== NOT EXECUTED
}
44d00: 588f addql #4,%sp <== NOT EXECUTED
44d02: 60ba bras 44cbe <rtems_termios_txdaemon+0x22> <== NOT EXECUTED
0004447e <rtems_termios_write>:
rtems_termios_puts (&c, 1, tty);
}
rtems_status_code
rtems_termios_write (void *arg)
{
4447e: 4e56 ffe8 linkw %fp,#-24
44482: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
44486: 246e 0008 moveal %fp@(8),%a2
rtems_libio_rw_args_t *args = arg;
struct rtems_termios_tty *tty = args->iop->data1;
4448a: 2052 moveal %a2@,%a0
4448c: 2668 0034 moveal %a0@(52),%a3
rtems_status_code sc;
sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
44490: 42a7 clrl %sp@-
44492: 42a7 clrl %sp@-
44494: 2f2b 0018 movel %a3@(24),%sp@-
44498: 4eb9 0004 55f4 jsr 455f4 <rtems_semaphore_obtain>
if (sc != RTEMS_SUCCESSFUL)
4449e: 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);
444a2: 2400 movel %d0,%d2
if (sc != RTEMS_SUCCESSFUL)
444a4: 6600 0084 bnew 4452a <rtems_termios_write+0xac>
return sc;
if (rtems_termios_linesw[tty->t_line].l_write != NULL) {
444a8: 202b 00cc movel %a3@(204),%d0
444ac: eb88 lsll #5,%d0
444ae: 0680 0005 d1c8 addil #381384,%d0
444b4: 2240 moveal %d0,%a1
444b6: 2051 moveal %a1@,%a0
444b8: 4a88 tstl %a0
444ba: 6718 beqs 444d4 <rtems_termios_write+0x56> <== ALWAYS TAKEN
sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);
444bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
444be: 2f0b movel %a3,%sp@- <== NOT EXECUTED
444c0: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
444c2: 2f2b 0018 movel %a3@(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);
444c6: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
444c8: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return sc;
444ce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
444d2: 6056 bras 4452a <rtems_termios_write+0xac> <== NOT EXECUTED
}
if (tty->termios.c_oflag & OPOST) {
444d4: 7001 moveq #1,%d0
444d6: c0ab 0034 andl %a3@(52),%d0
444da: 6728 beqs 44504 <rtems_termios_write+0x86> <== NEVER TAKEN
uint32_t count = args->count;
444dc: 262a 0010 movel %a2@(16),%d3
char *buffer = args->buffer;
while (count--)
oproc (*buffer++, tty);
444e0: 4bfa fa68 lea %pc@(43f4a <oproc>),%a5
rtems_semaphore_release (tty->osem);
return sc;
}
if (tty->termios.c_oflag & OPOST) {
uint32_t count = args->count;
char *buffer = args->buffer;
444e4: 286a 000c moveal %a2@(12),%a4
while (count--)
444e8: 600e bras 444f8 <rtems_termios_write+0x7a>
oproc (*buffer++, tty);
444ea: 4280 clrl %d0
444ec: 101c moveb %a4@+,%d0
444ee: 5383 subql #1,%d3
444f0: 2f0b movel %a3,%sp@-
444f2: 2f00 movel %d0,%sp@-
444f4: 4e95 jsr %a5@
444f6: 508f addql #8,%sp <== NOT EXECUTED
return sc;
}
if (tty->termios.c_oflag & OPOST) {
uint32_t count = args->count;
char *buffer = args->buffer;
while (count--)
444f8: 4a83 tstl %d3
444fa: 66ee bnes 444ea <rtems_termios_write+0x6c> <== ALWAYS TAKEN
oproc (*buffer++, tty);
args->bytes_moved = args->count;
444fc: 256a 0010 0018 movel %a2@(16),%a2@(24) <== NOT EXECUTED
44502: 601a bras 4451e <rtems_termios_write+0xa0> <== NOT EXECUTED
} else {
rtems_termios_puts (args->buffer, args->count, tty);
44504: 2f0b movel %a3,%sp@- <== NOT EXECUTED
44506: 2f2a 0010 movel %a2@(16),%sp@- <== NOT EXECUTED
4450a: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
4450e: 4eb9 0004 3e52 jsr 43e52 <rtems_termios_puts> <== NOT EXECUTED
args->bytes_moved = args->count;
44514: 256a 0010 0018 movel %a2@(16),%a2@(24) <== NOT EXECUTED
4451a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
rtems_semaphore_release (tty->osem);
4451e: 2f2b 0018 movel %a3@(24),%sp@- <== NOT EXECUTED
44522: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
return sc;
44528: 588f addql #4,%sp <== NOT EXECUTED
}
4452a: 2002 movel %d2,%d0 <== NOT EXECUTED
4452c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
44532: 4e5e unlk %fp <== NOT EXECUTED
0005196c <rtems_timer_cancel>:
*/
rtems_status_code rtems_timer_cancel(
rtems_id id
)
{
5196c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
51970: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51974: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51978: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
5197e: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
51984: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51988: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
5198c: 6620 bnes 519ae <rtems_timer_cancel+0x42> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Timer_Is_dormant_class( the_timer->the_class ) )
5198e: 7204 moveq #4,%d1 <== NOT EXECUTED
51990: 2040 moveal %d0,%a0 <== NOT EXECUTED
51992: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED
51996: 670c beqs 519a4 <rtems_timer_cancel+0x38> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
51998: 4868 0010 pea %a0@(16) <== NOT EXECUTED
5199c: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
519a2: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
519a4: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
519aa: 4280 clrl %d0 <== NOT EXECUTED
519ac: 6002 bras 519b0 <rtems_timer_cancel+0x44> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
519ae: 7004 moveq #4,%d0 <== NOT EXECUTED
}
519b0: 4e5e unlk %fp <== NOT EXECUTED
00045cac <rtems_timer_create>:
rtems_status_code rtems_timer_create(
rtems_name name,
rtems_id *id
)
{
45cac: 4e56 fff4 linkw %fp,#-12
45cb0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
45cb4: 242e 0008 movel %fp@(8),%d2
45cb8: 246e 000c moveal %fp@(12),%a2
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
45cbc: 6766 beqs 45d24 <rtems_timer_create+0x78> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
45cbe: 4a8a tstl %a2
45cc0: 6766 beqs 45d28 <rtems_timer_create+0x7c> <== NEVER TAKEN
45cc2: 2039 0005 dd6a movel 5dd6a <_Thread_Dispatch_disable_level>,%d0
45cc8: 5280 addql #1,%d0
45cca: 23c0 0005 dd6a movel %d0,5dd6a <_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 );
45cd0: 4879 0005 e5cc pea 5e5cc <_Timer_Information>
45cd6: 4eb9 0004 6af8 jsr 46af8 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
45cdc: 588f addql #4,%sp
45cde: 43f9 0004 79b6 lea 479b6 <_Thread_Enable_dispatch>,%a1
45ce4: 2040 moveal %d0,%a0
45ce6: 4a80 tstl %d0
45ce8: 6606 bnes 45cf0 <rtems_timer_create+0x44> <== ALWAYS TAKEN
_Thread_Enable_dispatch();
45cea: 4e91 jsr %a1@ <== NOT EXECUTED
return RTEMS_TOO_MANY;
45cec: 7005 moveq #5,%d0 <== NOT EXECUTED
45cee: 603a bras 45d2a <rtems_timer_create+0x7e> <== NOT EXECUTED
}
the_timer->the_class = TIMER_DORMANT;
45cf0: 7004 moveq #4,%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
45cf2: 4281 clrl %d1
45cf4: 2140 0038 movel %d0,%a0@(56)
information,
_Objects_Get_index( the_object->id ),
45cf8: 2028 0008 movel %a0@(8),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45cfc: 2679 0005 e5e4 moveal 5e5e4 <_Timer_Information+0x18>,%a3
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
45d02: 3200 movew %d0,%d1
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
45d04: 42a8 0018 clrl %a0@(24)
the_watchdog->routine = routine;
45d08: 42a8 002c clrl %a0@(44)
the_watchdog->id = id;
45d0c: 42a8 0030 clrl %a0@(48)
the_watchdog->user_data = user_data;
45d10: 42a8 0034 clrl %a0@(52)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
45d14: 2788 1c00 movel %a0,%a3@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
45d18: 2142 000c movel %d2,%a0@(12)
&_Timer_Information,
&the_timer->Object,
(Objects_Name) name
);
*id = the_timer->Object.id;
45d1c: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
45d1e: 4e91 jsr %a1@
return RTEMS_SUCCESSFUL;
45d20: 4280 clrl %d0
45d22: 6006 bras 45d2a <rtems_timer_create+0x7e>
)
{
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
45d24: 7003 moveq #3,%d0
45d26: 6002 bras 45d2a <rtems_timer_create+0x7e> <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
45d28: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
45d2a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
45d30: 4e5e unlk %fp <== NOT EXECUTED
00051a3c <rtems_timer_delete>:
*/
rtems_status_code rtems_timer_delete(
rtems_id id
)
{
51a3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
51a40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
51a42: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51a46: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51a4a: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51a50: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
51a56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51a5a: 2440 moveal %d0,%a2 <== NOT EXECUTED
51a5c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51a60: 6634 bnes 51a96 <rtems_timer_delete+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
51a62: 2f00 movel %d0,%sp@- <== NOT EXECUTED
51a64: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51a6a: 4eb9 0005 3fc8 jsr 53fc8 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
51a70: 486a 0010 pea %a2@(16) <== NOT EXECUTED
51a74: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Timer_Free (
Timer_Control *the_timer
)
{
_Objects_Free( &_Timer_Information, &the_timer->Object );
51a7a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51a7c: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51a82: 4eb9 0005 4240 jsr 54240 <_Objects_Free> <== NOT EXECUTED
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
51a88: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
51a8e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
51a92: 4280 clrl %d0 <== NOT EXECUTED
51a94: 6002 bras 51a98 <rtems_timer_delete+0x5c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51a96: 7004 moveq #4,%d0 <== NOT EXECUTED
}
51a98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
51a9c: 4e5e unlk %fp <== NOT EXECUTED
00045d34 <rtems_timer_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
45d34: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
45d38: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
45d3c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
45d40: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
45d44: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
45d48: 4a83 tstl %d3 <== NOT EXECUTED
45d4a: 6700 0088 beqw 45dd4 <rtems_timer_fire_after+0xa0> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( !routine )
45d4e: 4a85 tstl %d5 <== NOT EXECUTED
45d50: 6700 0086 beqw 45dd8 <rtems_timer_fire_after+0xa4> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
45d54: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45d58: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45d5a: 4879 0005 e5cc pea 5e5cc <_Timer_Information> <== NOT EXECUTED
45d60: 4eb9 0004 6f50 jsr 46f50 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
45d66: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45d6a: 2440 moveal %d0,%a2 <== NOT EXECUTED
45d6c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45d70: 666a bnes 45ddc <rtems_timer_fire_after+0xa8> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
45d72: 2400 movel %d0,%d2 <== NOT EXECUTED
45d74: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
45d7a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45d7c: 4eb9 0004 8858 jsr 48858 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
45d82: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45d88: 40c1 movew %sr,%d1 <== NOT EXECUTED
45d8a: 8081 orl %d1,%d0 <== NOT EXECUTED
45d8c: 46c0 movew %d0,%sr <== NOT EXECUTED
45d8e: 47f9 0004 79b6 lea 479b6 <_Thread_Enable_dispatch>,%a3 <== 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 ) {
45d94: 588f addql #4,%sp <== NOT EXECUTED
45d96: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
45d9a: 6706 beqs 45da2 <rtems_timer_fire_after+0x6e> <== NOT EXECUTED
_ISR_Enable( level );
45d9c: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
45d9e: 4e93 jsr %a3@ <== NOT EXECUTED
45da0: 602e bras 45dd0 <rtems_timer_fire_after+0x9c> <== 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;
45da2: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
45da6: 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;
45dac: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
45db0: 2545 002c movel %d5,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
45db4: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_ISR_Enable( level );
45db8: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45dba: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
45dbe: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45dc0: 4879 0005 de4a pea 5de4a <_Watchdog_Ticks_chain> <== NOT EXECUTED
45dc6: 4eb9 0004 8730 jsr 48730 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_timer->Ticker, ticks );
_Thread_Enable_dispatch();
45dcc: 4e93 jsr %a3@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45dce: 508f addql #8,%sp <== NOT EXECUTED
45dd0: 4280 clrl %d0 <== NOT EXECUTED
45dd2: 600a bras 45dde <rtems_timer_fire_after+0xaa> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
45dd4: 700a moveq #10,%d0 <== NOT EXECUTED
45dd6: 6006 bras 45dde <rtems_timer_fire_after+0xaa> <== NOT EXECUTED
if ( !routine )
return RTEMS_INVALID_ADDRESS;
45dd8: 7009 moveq #9,%d0 <== NOT EXECUTED
45dda: 6002 bras 45dde <rtems_timer_fire_after+0xaa> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45ddc: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45dde: 4cee 0c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a3 <== NOT EXECUTED
45de4: 4e5e unlk %fp <== NOT EXECUTED
00051b54 <rtems_timer_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
51b54: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
51b58: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
51b5c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
51b60: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
51b64: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
if ( !_TOD_Is_set )
51b68: 4a39 0007 65bc tstb 765bc <_TOD_Is_set> <== NOT EXECUTED
51b6e: 6700 0098 beqw 51c08 <rtems_timer_fire_when+0xb4> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !_TOD_Validate( wall_time ) )
51b72: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51b74: 4eb9 0004 f2b0 jsr 4f2b0 <_TOD_Validate> <== NOT EXECUTED
51b7a: 588f addql #4,%sp <== NOT EXECUTED
51b7c: 4a00 tstb %d0 <== NOT EXECUTED
51b7e: 6700 0090 beqw 51c10 <rtems_timer_fire_when+0xbc> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
51b82: 4a85 tstl %d5 <== NOT EXECUTED
51b84: 6700 0086 beqw 51c0c <rtems_timer_fire_when+0xb8> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
51b88: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51b8a: 4eb9 0004 f214 jsr 4f214 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
51b90: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
51b92: 2600 movel %d0,%d3 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
51b94: b0b9 0007 6656 cmpl 76656 <_TOD_Now>,%d0 <== NOT EXECUTED
51b9a: 6374 blss 51c10 <rtems_timer_fire_when+0xbc> <== NOT EXECUTED
51b9c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51ba0: 2f04 movel %d4,%sp@- <== NOT EXECUTED
51ba2: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51ba8: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
51bae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51bb2: 2440 moveal %d0,%a2 <== NOT EXECUTED
51bb4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51bb8: 665a bnes 51c14 <rtems_timer_fire_when+0xc0> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
51bba: 2400 movel %d0,%d2 <== NOT EXECUTED
51bbc: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
51bc2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51bc4: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
51bca: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY;
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
51bd0: 96b9 0007 6656 subl 76656 <_TOD_Now>,%d3 <== 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;
51bd6: 7002 moveq #2,%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
51bd8: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
51bdc: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
the_watchdog->routine = routine;
51be0: 2545 002c movel %d5,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
51be4: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
51be8: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
51bec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51bee: 4879 0007 6680 pea 76680 <_Watchdog_Seconds_chain> <== NOT EXECUTED
51bf4: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED
&the_timer->Ticker,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
51bfa: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
51c00: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51c04: 4280 clrl %d0 <== NOT EXECUTED
51c06: 600e bras 51c16 <rtems_timer_fire_when+0xc2> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
51c08: 700b moveq #11,%d0 <== NOT EXECUTED
51c0a: 600a bras 51c16 <rtems_timer_fire_when+0xc2> <== NOT EXECUTED
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
51c0c: 7009 moveq #9,%d0 <== NOT EXECUTED
51c0e: 6006 bras 51c16 <rtems_timer_fire_when+0xc2> <== NOT EXECUTED
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
51c10: 7014 moveq #20,%d0 <== NOT EXECUTED
51c12: 6002 bras 51c16 <rtems_timer_fire_when+0xc2> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51c14: 7004 moveq #4,%d0 <== NOT EXECUTED
}
51c16: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
51c1c: 4e5e unlk %fp <== NOT EXECUTED
00051c20 <rtems_timer_get_information>:
rtems_status_code rtems_timer_get_information(
rtems_id id,
rtems_timer_information *the_info
)
{
51c20: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
51c24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51c26: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
51c2a: 4a8a tstl %a2 <== NOT EXECUTED
51c2c: 6740 beqs 51c6e <rtems_timer_get_information+0x4e><== NOT EXECUTED
51c2e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51c32: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51c36: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51c3c: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
51c42: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51c46: 2040 moveal %d0,%a0 <== NOT EXECUTED
51c48: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51c4c: 6624 bnes 51c72 <rtems_timer_get_information+0x52><== NOT EXECUTED
case OBJECTS_LOCAL:
the_info->the_class = the_timer->the_class;
51c4e: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED
the_info->initial = the_timer->Ticker.initial;
51c52: 2568 001c 0004 movel %a0@(28),%a2@(4) <== NOT EXECUTED
the_info->start_time = the_timer->Ticker.start_time;
51c58: 2568 0024 0008 movel %a0@(36),%a2@(8) <== NOT EXECUTED
the_info->stop_time = the_timer->Ticker.stop_time;
51c5e: 2568 0028 000c movel %a0@(40),%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
51c64: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
51c6a: 4280 clrl %d0 <== NOT EXECUTED
51c6c: 6006 bras 51c74 <rtems_timer_get_information+0x54><== NOT EXECUTED
{
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
51c6e: 7009 moveq #9,%d0 <== NOT EXECUTED
51c70: 6002 bras 51c74 <rtems_timer_get_information+0x54><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51c72: 7004 moveq #4,%d0 <== NOT EXECUTED
}
51c74: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
51c78: 4e5e unlk %fp <== NOT EXECUTED
00051c7c <rtems_timer_ident>:
rtems_status_code rtems_timer_ident(
rtems_name name,
rtems_id *id
)
{
51c7c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
51c80: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
51c84: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
51c8a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51c8e: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51c94: 4eb9 0005 4568 jsr 54568 <_Objects_Name_to_id_u32> <== NOT EXECUTED
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
}
51c9a: 41f9 0006 f980 lea 6f980 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
51ca0: 4e5e unlk %fp <== NOT EXECUTED
51ca2: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00052286 <rtems_timer_initiate_server>:
rtems_status_code rtems_timer_initiate_server(
uint32_t priority,
uint32_t stack_size,
rtems_attribute attribute_set
)
{
52286: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5228a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5228e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
52290: 2f02 movel %d2,%sp@- <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
52292: 4a80 tstl %d0 <== NOT EXECUTED
52294: 6712 beqs 522a8 <rtems_timer_initiate_server+0x22><== NOT EXECUTED
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
52296: 4281 clrl %d1 <== NOT EXECUTED
52298: 1239 0007 0942 moveb 70942 <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 ) &&
5229e: b280 cmpl %d0,%d1 <== NOT EXECUTED
522a0: 54c1 scc %d1 <== NOT EXECUTED
522a2: 49c1 extbl %d1 <== NOT EXECUTED
522a4: 4481 negl %d1 <== NOT EXECUTED
522a6: 6002 bras 522aa <rtems_timer_initiate_server+0x24><== NOT EXECUTED
522a8: 4281 clrl %d1 <== NOT EXECUTED
* Make sure the requested priority is valid. The if is
* 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 ) ) {
522aa: 4a01 tstb %d1 <== NOT EXECUTED
522ac: 660c bnes 522ba <rtems_timer_initiate_server+0x34><== NOT EXECUTED
if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY )
522ae: 72ff moveq #-1,%d1 <== NOT EXECUTED
522b0: b280 cmpl %d0,%d1 <== NOT EXECUTED
522b2: 6600 013a bnew 523ee <rtems_timer_initiate_server+0x168><== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
_priority = 0;
522b6: 4282 clrl %d2 <== NOT EXECUTED
522b8: 6002 bras 522bc <rtems_timer_initiate_server+0x36><== NOT EXECUTED
* Make sure the requested priority is valid. The if is
* 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 ) ) {
522ba: 2400 movel %d0,%d2 <== NOT EXECUTED
}
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
522bc: 4eba fc0a jsr %pc@(51ec8 <_Thread_Disable_dispatch>) <== NOT EXECUTED
tmpInitialized = initialized;
initialized = true;
522c0: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
522c2: 1639 0007 1a8a moveb 71a8a <initialized.3677>,%d3 <== NOT EXECUTED
initialized = true;
522c8: 13c0 0007 1a8a moveb %d0,71a8a <initialized.3677> <== NOT EXECUTED
_Thread_Enable_dispatch();
522ce: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
522d4: 4a03 tstb %d3 <== NOT EXECUTED
522d6: 6600 011a bnew 523f2 <rtems_timer_initiate_server+0x16c><== 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(
522da: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
522de: 486e fffc pea %fp@(-4) <== NOT EXECUTED
522e2: 08c1 000f bset #15,%d1 <== NOT EXECUTED
522e6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
522e8: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
522ec: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
522f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
522f2: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED
522f8: 4eb9 0005 1178 jsr 51178 <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) {
522fe: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
52302: 4a80 tstl %d0 <== NOT EXECUTED
52304: 670c beqs 52312 <rtems_timer_initiate_server+0x8c><== NOT EXECUTED
initialized = false;
52306: 4201 clrb %d1 <== NOT EXECUTED
52308: 13c1 0007 1a8a moveb %d1,71a8a <initialized.3677> <== NOT EXECUTED
return status;
5230e: 6000 00e4 braw 523f4 <rtems_timer_initiate_server+0x16e><== 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)
52312: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
52316: 4281 clrl %d1 <== NOT EXECUTED
52318: 2079 0007 6542 moveal 76542 <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED
5231e: 3200 movew %d0,%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(
52320: 41f0 1c00 lea %a0@(00000000,%d1:l:4),%a0 <== 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;
52324: 223c 0007 1a3c movel #465468,%d1 <== NOT EXECUTED
5232a: 23d0 0007 1a0c movel %a0@,71a0c <_Timer_server_Default> <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
52330: 41f9 0007 1a40 lea 71a40 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
52336: 23c1 0007 1a44 movel %d1,71a44 <_Timer_server_Default+0x38><== NOT EXECUTED
5233c: 223c 0007 1a74 movel #465524,%d1 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
52342: 23c8 0007 1a3c movel %a0,71a3c <_Timer_server_Default+0x30><== NOT EXECUTED
52348: 41f9 0007 1a78 lea 71a78 <_Timer_server_Default+0x6c>,%a0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
5234e: 23c1 0007 1a7c movel %d1,71a7c <_Timer_server_Default+0x70><== 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;
52354: 223c 0005 216c movel #336236,%d1 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
5235a: 23c8 0007 1a74 movel %a0,71a74 <_Timer_server_Default+0x68><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
52360: 41f9 0005 4d3c lea 54d3c <_Thread_Delay_ended>,%a0 <== NOT EXECUTED
52366: 23c1 0007 1a10 movel %d1,71a10 <_Timer_server_Default+0x4> <== NOT EXECUTED
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
5236c: 2239 0007 66d6 movel 766d6 <_Watchdog_Ticks_since_boot>,%d1<== NOT EXECUTED
52372: 23c8 0007 1a30 movel %a0,71a30 <_Timer_server_Default+0x24><== NOT EXECUTED
52378: 23c8 0007 1a68 movel %a0,71a68 <_Timer_server_Default+0x5c><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5237e: 41f9 0007 6656 lea 76656 <_TOD_Now>,%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;
52384: 23c1 0007 1a48 movel %d1,71a48 <_Timer_server_Default+0x3c><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5238a: 23d0 0007 1a80 movel %a0@,71a80 <_Timer_server_Default+0x74><== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
52390: 41f9 0007 1a0c lea 71a0c <_Timer_server_Default>,%a0 <== NOT EXECUTED
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
ts->insert_chain = NULL;
ts->active = false;
52396: 4201 clrb %d1 <== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
52398: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5239a: 487a fc06 pea %pc@(51fa2 <_Timer_server_Body>) <== 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;
5239e: 42b9 0007 1a84 clrl 71a84 <_Timer_server_Default+0x78> <== NOT EXECUTED
ts->active = false;
523a4: 13c1 0007 1a88 moveb %d1,71a88 <_Timer_server_Default+0x7c><== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
523aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
head->previous = NULL;
523ac: 42b9 0007 1a40 clrl 71a40 <_Timer_server_Default+0x34> <== NOT EXECUTED
523b2: 42b9 0007 1a78 clrl 71a78 <_Timer_server_Default+0x6c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
523b8: 42b9 0007 1a1c clrl 71a1c <_Timer_server_Default+0x10> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
523be: 23c0 0007 1a34 movel %d0,71a34 <_Timer_server_Default+0x28><== NOT EXECUTED
the_watchdog->user_data = user_data;
523c4: 42b9 0007 1a38 clrl 71a38 <_Timer_server_Default+0x2c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
523ca: 42b9 0007 1a54 clrl 71a54 <_Timer_server_Default+0x48> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
523d0: 23c0 0007 1a6c movel %d0,71a6c <_Timer_server_Default+0x60><== NOT EXECUTED
the_watchdog->user_data = user_data;
523d6: 42b9 0007 1a70 clrl 71a70 <_Timer_server_Default+0x64> <== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
523dc: 23c8 0007 6e88 movel %a0,76e88 <_Timer_server> <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
523e2: 4eb9 0005 1780 jsr 51780 <rtems_task_start> <== NOT EXECUTED
if (status) {
initialized = false;
}
#endif
return status;
523e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
523ec: 6006 bras 523f4 <rtems_timer_initiate_server+0x16e><== 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;
523ee: 7013 moveq #19,%d0 <== NOT EXECUTED
523f0: 6002 bras 523f4 <rtems_timer_initiate_server+0x16e><== NOT EXECUTED
tmpInitialized = initialized;
initialized = true;
_Thread_Enable_dispatch();
if ( tmpInitialized )
return RTEMS_INCORRECT_STATE;
523f2: 700e moveq #14,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
523f4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
523f8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
523fc: 4e5e unlk %fp <== NOT EXECUTED
00051ca8 <rtems_timer_reset>:
*/
rtems_status_code rtems_timer_reset(
rtems_id id
)
{
51ca8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
51cac: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51cae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51cb0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51cb4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
51cb8: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51cbe: 4eb9 0005 43dc jsr 543dc <_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 ) {
51cc4: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51cc8: 2440 moveal %d0,%a2 <== NOT EXECUTED
51cca: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51cce: 6656 bnes 51d26 <rtems_timer_reset+0x7e> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
51cd0: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED
51cd4: 661c bnes 51cf2 <rtems_timer_reset+0x4a> <== NOT EXECUTED
_Watchdog_Remove( &the_timer->Ticker );
51cd6: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED
51cda: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51cdc: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
51ce2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51ce4: 4879 0007 668c pea 7668c <_Watchdog_Ticks_chain> <== NOT EXECUTED
51cea: 4eb9 0005 5eac jsr 55eac <_Watchdog_Insert> <== NOT EXECUTED
51cf0: 6020 bras 51d12 <rtems_timer_reset+0x6a> <== NOT EXECUTED
} else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
51cf2: 7201 moveq #1,%d1 <== NOT EXECUTED
51cf4: b280 cmpl %d0,%d1 <== NOT EXECUTED
51cf6: 6622 bnes 51d1a <rtems_timer_reset+0x72> <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
51cf8: 486a 0010 pea %a2@(16) <== 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;
51cfc: 2679 0007 6e88 moveal 76e88 <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
51d02: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
51d08: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51d0a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51d0c: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
51d10: 4e90 jsr %a0@ <== NOT EXECUTED
51d12: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
51d16: 95ca subal %a2,%a2 <== NOT EXECUTED
51d18: 6004 bras 51d1e <rtems_timer_reset+0x76> <== 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;
51d1a: 347c 000b moveaw #11,%a2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
51d1e: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return status;
51d24: 6004 bras 51d2a <rtems_timer_reset+0x82> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51d26: 347c 0004 moveaw #4,%a2 <== NOT EXECUTED
}
51d2a: 200a movel %a2,%d0 <== NOT EXECUTED
51d2c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
51d30: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
51d34: 4e5e unlk %fp <== NOT EXECUTED
00051d38 <rtems_timer_server_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
51d38: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
51d3c: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
51d40: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
51d44: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
51d48: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
51d4c: 2679 0007 6e88 moveal 76e88 <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server )
51d52: 4a8b tstl %a3 <== NOT EXECUTED
51d54: 6700 0086 beqw 51ddc <rtems_timer_server_fire_after+0xa4><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !routine )
51d58: 4a84 tstl %d4 <== NOT EXECUTED
51d5a: 6700 0084 beqw 51de0 <rtems_timer_server_fire_after+0xa8><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( ticks == 0 )
51d5e: 4a82 tstl %d2 <== NOT EXECUTED
51d60: 6700 0082 beqw 51de4 <rtems_timer_server_fire_after+0xac><== NOT EXECUTED
51d64: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51d68: 2f03 movel %d3,%sp@- <== NOT EXECUTED
51d6a: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51d70: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
51d76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51d7a: 2440 moveal %d0,%a2 <== NOT EXECUTED
51d7c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51d80: 6666 bnes 51de8 <rtems_timer_server_fire_after+0xb0><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
51d82: 486a 0010 pea %a2@(16) <== NOT EXECUTED
51d86: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
51d8c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
51d92: 40c1 movew %sr,%d1 <== NOT EXECUTED
51d94: 8081 orl %d1,%d0 <== NOT EXECUTED
51d96: 46c0 movew %d0,%sr <== NOT EXECUTED
51d98: 49f9 0005 4eb6 lea 54eb6 <_Thread_Enable_dispatch>,%a4 <== 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 ) {
51d9e: 588f addql #4,%sp <== NOT EXECUTED
51da0: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
51da4: 6706 beqs 51dac <rtems_timer_server_fire_after+0x74><== NOT EXECUTED
_ISR_Enable( level );
51da6: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
51da8: 4e94 jsr %a4@ <== NOT EXECUTED
51daa: 602c bras 51dd8 <rtems_timer_server_fire_after+0xa0><== 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;
51dac: 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;
51dae: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
51db4: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
51db8: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
51dbc: 2544 002c movel %d4,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
51dc0: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = ticks;
51dc4: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_ISR_Enable( level );
51dc8: 46c1 movew %d1,%sr <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
51dca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51dcc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51dce: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
51dd2: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
51dd4: 4e94 jsr %a4@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
51dd6: 508f addql #8,%sp <== NOT EXECUTED
51dd8: 4280 clrl %d0 <== NOT EXECUTED
51dda: 600e bras 51dea <rtems_timer_server_fire_after+0xb2><== NOT EXECUTED
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
51ddc: 700e moveq #14,%d0 <== NOT EXECUTED
51dde: 600a bras 51dea <rtems_timer_server_fire_after+0xb2><== NOT EXECUTED
if ( !routine )
return RTEMS_INVALID_ADDRESS;
51de0: 7009 moveq #9,%d0 <== NOT EXECUTED
51de2: 6006 bras 51dea <rtems_timer_server_fire_after+0xb2><== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
51de4: 700a moveq #10,%d0 <== NOT EXECUTED
51de6: 6002 bras 51dea <rtems_timer_server_fire_after+0xb2><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51de8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
51dea: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4 <== NOT EXECUTED
51df0: 4e5e unlk %fp <== NOT EXECUTED
00051df4 <rtems_timer_server_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
51df4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
51df8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
51dfc: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
51e00: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
51e04: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
51e08: 2679 0007 6e88 moveal 76e88 <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server )
51e0e: 4a8b tstl %a3 <== NOT EXECUTED
51e10: 6700 0098 beqw 51eaa <rtems_timer_server_fire_when+0xb6><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
51e14: 4a39 0007 65bc tstb 765bc <_TOD_Is_set> <== NOT EXECUTED
51e1a: 6700 0092 beqw 51eae <rtems_timer_server_fire_when+0xba><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !routine )
51e1e: 4a84 tstl %d4 <== NOT EXECUTED
51e20: 6700 0090 beqw 51eb2 <rtems_timer_server_fire_when+0xbe><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
51e24: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51e26: 4eb9 0004 f2b0 jsr 4f2b0 <_TOD_Validate> <== NOT EXECUTED
51e2c: 588f addql #4,%sp <== NOT EXECUTED
51e2e: 4a00 tstb %d0 <== NOT EXECUTED
51e30: 6700 0084 beqw 51eb6 <rtems_timer_server_fire_when+0xc2><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
51e34: 2f02 movel %d2,%sp@- <== NOT EXECUTED
51e36: 4eb9 0004 f214 jsr 4f214 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
51e3c: 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 );
51e3e: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
51e40: b0b9 0007 6656 cmpl 76656 <_TOD_Now>,%d0 <== NOT EXECUTED
51e46: 636e blss 51eb6 <rtems_timer_server_fire_when+0xc2><== NOT EXECUTED
51e48: 486e fffc pea %fp@(-4) <== NOT EXECUTED
51e4c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
51e4e: 4879 0007 6e4e pea 76e4e <_Timer_Information> <== NOT EXECUTED
51e54: 4eb9 0005 43dc jsr 543dc <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
51e5a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51e5e: 2440 moveal %d0,%a2 <== NOT EXECUTED
51e60: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
51e64: 6654 bnes 51eba <rtems_timer_server_fire_when+0xc6><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
51e66: 486a 0010 pea %a2@(16) <== NOT EXECUTED
51e6a: 4eb9 0005 5fd4 jsr 55fd4 <_Watchdog_Remove> <== NOT EXECUTED
the_watchdog->user_data = user_data;
51e70: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
51e76: 94b9 0007 6656 subl 76656 <_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;
51e7c: 7003 moveq #3,%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
51e7e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
51e82: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
the_watchdog->routine = routine;
51e86: 2544 002c movel %d4,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
51e8a: 2543 0030 movel %d3,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
51e8e: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
51e92: 2f0a movel %a2,%sp@- <== NOT EXECUTED
51e94: 2f0b movel %a3,%sp@- <== NOT EXECUTED
51e96: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
51e9a: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
51e9c: 4eb9 0005 4eb6 jsr 54eb6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
51ea2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
51ea6: 4280 clrl %d0 <== NOT EXECUTED
51ea8: 6012 bras 51ebc <rtems_timer_server_fire_when+0xc8><== NOT EXECUTED
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
51eaa: 700e moveq #14,%d0 <== NOT EXECUTED
51eac: 600e bras 51ebc <rtems_timer_server_fire_when+0xc8><== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
51eae: 700b moveq #11,%d0 <== NOT EXECUTED
51eb0: 600a bras 51ebc <rtems_timer_server_fire_when+0xc8><== NOT EXECUTED
if ( !routine )
return RTEMS_INVALID_ADDRESS;
51eb2: 7009 moveq #9,%d0 <== NOT EXECUTED
51eb4: 6006 bras 51ebc <rtems_timer_server_fire_when+0xc8><== NOT EXECUTED
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
51eb6: 7014 moveq #20,%d0 <== NOT EXECUTED
51eb8: 6002 bras 51ebc <rtems_timer_server_fire_when+0xc8><== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
51eba: 7004 moveq #4,%d0 <== NOT EXECUTED
}
51ebc: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
51ec2: 4e5e unlk %fp <== NOT EXECUTED
...
00042480 <rtems_verror>:
static int rtems_verror(
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
42480: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
42484: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
42488: 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) {
4248c: 0802 001d btst #29,%d2 <== NOT EXECUTED
42490: 672e beqs 424c0 <rtems_verror+0x40> <== NOT EXECUTED
if (rtems_panic_in_progress++)
42492: 2039 0005 d9b0 movel 5d9b0 <rtems_panic_in_progress>,%d0 <== NOT EXECUTED
42498: 2200 movel %d0,%d1 <== NOT EXECUTED
4249a: 5281 addql #1,%d1 <== NOT EXECUTED
4249c: 23c1 0005 d9b0 movel %d1,5d9b0 <rtems_panic_in_progress> <== NOT EXECUTED
424a2: 4a80 tstl %d0 <== NOT EXECUTED
424a4: 670e beqs 424b4 <rtems_verror+0x34> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
424a6: 2039 0005 db08 movel 5db08 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
424ac: 5280 addql #1,%d0 <== NOT EXECUTED
424ae: 23c0 0005 db08 movel %d0,5db08 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch(); /* disable task switches */
/* don't aggravate things */
if (rtems_panic_in_progress > 2)
424b4: 7002 moveq #2,%d0 <== NOT EXECUTED
424b6: b0b9 0005 d9b0 cmpl 5d9b0 <rtems_panic_in_progress>,%d0 <== NOT EXECUTED
424bc: 6d00 0100 bltw 425be <rtems_verror+0x13e> <== NOT EXECUTED
return 0;
}
(void) fflush(stdout); /* in case stdout/stderr same */
424c0: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0 <== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
424c6: 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 */
424c8: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
424cc: 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 */
424d2: 4eb9 0004 ccb6 jsr 4ccb6 <fflush> <== NOT EXECUTED
status = error_flag & ~RTEMS_ERROR_MASK;
if (error_flag & RTEMS_ERROR_ERRNO) /* include errno? */
424d8: 588f addql #4,%sp <== NOT EXECUTED
424da: 0802 001e btst #30,%d2 <== NOT EXECUTED
424de: 670c beqs 424ec <rtems_verror+0x6c> <== NOT EXECUTED
local_errno = errno;
424e0: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
424e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
424e8: 2610 movel %a0@,%d3 <== NOT EXECUTED
424ea: 6002 bras 424ee <rtems_verror+0x6e> <== NOT EXECUTED
rtems_error_code_t error_flag,
const char *printf_format,
va_list arglist
)
{
int local_errno = 0;
424ec: 4283 clrl %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);
424ee: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
424f2: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0 <== NOT EXECUTED
424f8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
424fc: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
42500: 4eb9 0005 34dc jsr 534dc <vfprintf> <== NOT EXECUTED
if (status)
42506: 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);
4250a: 2400 movel %d0,%d2 <== NOT EXECUTED
if (status)
4250c: 4a84 tstl %d4 <== NOT EXECUTED
4250e: 6726 beqs 42536 <rtems_verror+0xb6> <== NOT EXECUTED
chars_written +=
fprintf(stderr, " (status: %s)", rtems_status_text(status));
42510: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42512: 4eb9 0004 2468 jsr 42468 <rtems_status_text> <== NOT EXECUTED
42518: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0 <== NOT EXECUTED
4251e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
42520: 4879 0005 ad6f pea 5ad6f <IMFS_ops+0x4f> <== NOT EXECUTED
42526: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
4252a: 4eb9 0004 d0de jsr 4d0de <fprintf> <== NOT EXECUTED
#endif
chars_written += vfprintf(stderr, printf_format, arglist);
if (status)
chars_written +=
42530: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
42534: d480 addl %d0,%d2 <== NOT EXECUTED
fprintf(stderr, " (status: %s)", rtems_status_text(status));
if (local_errno) {
42536: 4a83 tstl %d3 <== NOT EXECUTED
42538: 6756 beqs 42590 <rtems_verror+0x110> <== NOT EXECUTED
if ((local_errno > 0) && *strerror(local_errno))
4253a: 6f36 bles 42572 <rtems_verror+0xf2> <== NOT EXECUTED
4253c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4253e: 45f9 0004 d974 lea 4d974 <strerror>,%a2 <== NOT EXECUTED
42544: 4e92 jsr %a2@ <== NOT EXECUTED
42546: 588f addql #4,%sp <== NOT EXECUTED
42548: 2040 moveal %d0,%a0 <== NOT EXECUTED
4254a: 4a10 tstb %a0@ <== NOT EXECUTED
4254c: 6724 beqs 42572 <rtems_verror+0xf2> <== NOT EXECUTED
chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
4254e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42550: 4e92 jsr %a2@ <== NOT EXECUTED
42552: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0 <== NOT EXECUTED
42558: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4255a: 4879 0005 ad7d pea 5ad7d <IMFS_ops+0x5d> <== NOT EXECUTED
42560: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
42564: 4eb9 0004 d0de jsr 4d0de <fprintf> <== NOT EXECUTED
4256a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4256e: d480 addl %d0,%d2 <== NOT EXECUTED
42570: 601e bras 42590 <rtems_verror+0x110> <== NOT EXECUTED
else
chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
42572: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42574: 4879 0005 ad8a pea 5ad8a <IMFS_ops+0x6a> <== NOT EXECUTED
4257a: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0 <== NOT EXECUTED
42580: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
42584: 4eb9 0004 d0de jsr 4d0de <fprintf> <== NOT EXECUTED
4258a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4258e: d480 addl %d0,%d2 <== NOT EXECUTED
}
chars_written += fprintf(stderr, "\n");
42590: 4879 0005 b21a pea 5b21a <rtems_status_assoc+0x19e> <== NOT EXECUTED
42596: 2079 0005 c488 moveal 5c488 <_impure_ptr>,%a0 <== NOT EXECUTED
4259c: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
425a0: 4eb9 0004 d0de jsr 4d0de <fprintf> <== NOT EXECUTED
(void) fflush(stderr);
425a6: 2079 0005 c488 moveal 5c488 <_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");
425ac: d480 addl %d0,%d2 <== NOT EXECUTED
(void) fflush(stderr);
425ae: 2f28 000c movel %a0@(12),%sp@- <== NOT EXECUTED
425b2: 4eb9 0004 ccb6 jsr 4ccb6 <fflush> <== NOT EXECUTED
return chars_written;
425b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
425bc: 6002 bras 425c0 <rtems_verror+0x140> <== 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;
425be: 4282 clrl %d2 <== NOT EXECUTED
chars_written += fprintf(stderr, "\n");
(void) fflush(stderr);
return chars_written;
}
425c0: 2002 movel %d2,%d0 <== NOT EXECUTED
425c2: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
425c8: 4e5e unlk %fp <== NOT EXECUTED
0004608a <rtems_workspace_allocate>:
*/
bool rtems_workspace_allocate(
uintptr_t bytes,
void **pointer
)
{
4608a: 4e56 0000 linkw %fp,#0
4608e: 202e 0008 movel %fp@(8),%d0
46092: 2f0a movel %a2,%sp@-
46094: 246e 000c moveal %fp@(12),%a2
void *ptr;
/*
* check the arguments
*/
if ( !pointer )
46098: 4a8a tstl %a2
4609a: 6724 beqs 460c0 <rtems_workspace_allocate+0x36> <== NEVER TAKEN
return false;
if ( !bytes )
4609c: 4a80 tstl %d0
4609e: 6720 beqs 460c0 <rtems_workspace_allocate+0x36> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(
Heap_Control *heap,
uintptr_t size
)
{
return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
460a0: 42a7 clrl %sp@-
460a2: 42a7 clrl %sp@-
460a4: 2f00 movel %d0,%sp@-
460a6: 4879 0005 e436 pea 5e436 <_Workspace_Area>
460ac: 4eb9 0004 7590 jsr 47590 <_Protected_heap_Allocate_aligned_with_boundary>
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
460b2: 4fef 0010 lea %sp@(16),%sp
460b6: 4a80 tstl %d0
460b8: 6706 beqs 460c0 <rtems_workspace_allocate+0x36> <== NEVER TAKEN
return false;
*pointer = ptr;
460ba: 2480 movel %d0,%a2@
return true;
460bc: 7001 moveq #1,%d0
460be: 6002 bras 460c2 <rtems_workspace_allocate+0x38>
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
460c0: 4200 clrb %d0 <== NOT EXECUTED
*pointer = ptr;
return true;
}
460c2: 246e fffc moveal %fp@(-4),%a2
460c6: 4e5e unlk %fp <== NOT EXECUTED
000460ca <rtems_workspace_free>:
* _Workspace_Allocate
*/
bool rtems_workspace_free(
void *pointer
)
{
460ca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Protected_heap_Free( &_Workspace_Area, pointer );
460ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
460d2: 4879 0005 e436 pea 5e436 <_Workspace_Area> <== NOT EXECUTED
460d8: 4eb9 0004 75d0 jsr 475d0 <_Protected_heap_Free> <== NOT EXECUTED
}
460de: 4e5e unlk %fp <== NOT EXECUTED
...
00046068 <rtems_workspace_get_information>:
#include <string.h> /* for memset */
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
46068: 4e56 0000 linkw %fp,#0
4606c: 202e 0008 movel %fp@(8),%d0
if ( !the_info )
46070: 6712 beqs 46084 <rtems_workspace_get_information+0x1c><== NEVER TAKEN
return false;
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
46072: 2f00 movel %d0,%sp@-
46074: 4879 0005 e436 pea 5e436 <_Workspace_Area>
4607a: 4eb9 0004 7608 jsr 47608 <_Protected_heap_Get_information>
46080: 508f addql #8,%sp
46082: 6002 bras 46086 <rtems_workspace_get_information+0x1e>
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
if ( !the_info )
return false;
46084: 4200 clrb %d0
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
}
46086: 4e5e unlk %fp <== NOT EXECUTED
00042df8 <scanInt>:
/*
* Extract an integer value from the database
*/
static int
scanInt(FILE *fp, int *val)
{
42df8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
42dfc: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
42e00: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int c;
unsigned int i = 0;
unsigned int limit = INT_MAX;
int sign = 0;
42e04: 4283 clrl %d3 <== NOT EXECUTED
static int
scanInt(FILE *fp, int *val)
{
int c;
unsigned int i = 0;
unsigned int limit = INT_MAX;
42e06: 283c 7fff ffff movel #2147483647,%d4 <== NOT EXECUTED
*/
static int
scanInt(FILE *fp, int *val)
{
int c;
unsigned int i = 0;
42e0c: 4282 clrl %d2 <== NOT EXECUTED
unsigned int limit = INT_MAX;
int sign = 0;
int d;
for (;;) {
c = getc(fp);
42e0e: 47f9 0004 f27c lea 4f27c <__srget_r>,%a3 <== NOT EXECUTED
42e14: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
42e18: 5380 subql #1,%d0 <== NOT EXECUTED
42e1a: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
42e1e: 6c0e bges 42e2e <scanInt+0x36> <== NOT EXECUTED
42e20: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42e22: 2f39 0005 dd88 movel 5dd88 <_impure_ptr>,%sp@- <== NOT EXECUTED
42e28: 4e93 jsr %a3@ <== NOT EXECUTED
42e2a: 508f addql #8,%sp <== NOT EXECUTED
42e2c: 600a bras 42e38 <scanInt+0x40> <== NOT EXECUTED
42e2e: 2052 moveal %a2@,%a0 <== NOT EXECUTED
42e30: 4280 clrl %d0 <== NOT EXECUTED
42e32: 1010 moveb %a0@,%d0 <== NOT EXECUTED
42e34: 5288 addql #1,%a0 <== NOT EXECUTED
42e36: 2488 movel %a0,%a2@ <== NOT EXECUTED
if (c == ':')
42e38: 723a moveq #58,%d1 <== NOT EXECUTED
42e3a: b280 cmpl %d0,%d1 <== NOT EXECUTED
42e3c: 6750 beqs 42e8e <scanInt+0x96> <== NOT EXECUTED
break;
if (sign == 0) {
42e3e: 4a83 tstl %d3 <== NOT EXECUTED
42e40: 660e bnes 42e50 <scanInt+0x58> <== NOT EXECUTED
if (c == '-') {
42e42: 7c2d moveq #45,%d6 <== NOT EXECUTED
42e44: bc80 cmpl %d0,%d6 <== NOT EXECUTED
42e46: 6606 bnes 42e4e <scanInt+0x56> <== NOT EXECUTED
sign = -1;
limit++;
42e48: 5284 addql #1,%d4 <== NOT EXECUTED
c = getc(fp);
if (c == ':')
break;
if (sign == 0) {
if (c == '-') {
sign = -1;
42e4a: 76ff moveq #-1,%d3 <== NOT EXECUTED
limit++;
continue;
42e4c: 60c6 bras 42e14 <scanInt+0x1c> <== NOT EXECUTED
}
sign = 1;
42e4e: 7601 moveq #1,%d3 <== NOT EXECUTED
}
if (!isdigit(c))
42e50: 2079 0005 dd84 moveal 5dd84 <__ctype_ptr__>,%a0 <== NOT EXECUTED
42e56: 1230 0801 moveb %a0@(00000001,%d0:l),%d1 <== NOT EXECUTED
42e5a: 49c1 extbl %d1 <== NOT EXECUTED
42e5c: 44c1 movew %d1,%ccr <== NOT EXECUTED
42e5e: 6640 bnes 42ea0 <scanInt+0xa8> <== NOT EXECUTED
return 0;
d = c - '0';
if ((i > (limit / 10))
42e60: 2204 movel %d4,%d1 <== NOT EXECUTED
42e62: 7c0a moveq #10,%d6 <== NOT EXECUTED
42e64: 4c46 1005 remul %d6,%d5,%d1 <== NOT EXECUTED
42e68: 4c46 1001 remul %d6,%d1,%d1 <== NOT EXECUTED
42e6c: b282 cmpl %d2,%d1 <== NOT EXECUTED
42e6e: 6530 bcss 42ea0 <scanInt+0xa8> <== NOT EXECUTED
}
sign = 1;
}
if (!isdigit(c))
return 0;
d = c - '0';
42e70: 0680 ffff ffd0 addil #-48,%d0 <== NOT EXECUTED
if ((i > (limit / 10))
|| ((i == (limit / 10)) && (d > (limit % 10))))
42e76: b282 cmpl %d2,%d1 <== NOT EXECUTED
42e78: 6604 bnes 42e7e <scanInt+0x86> <== NOT EXECUTED
42e7a: ba80 cmpl %d0,%d5 <== NOT EXECUTED
42e7c: 6522 bcss 42ea0 <scanInt+0xa8> <== NOT EXECUTED
return 0;
i = i * 10 + d;
42e7e: 2202 movel %d2,%d1 <== NOT EXECUTED
42e80: e789 lsll #3,%d1 <== NOT EXECUTED
42e82: 2241 moveal %d1,%a1 <== NOT EXECUTED
42e84: 41f1 2a00 lea %a1@(00000000,%d2:l:2),%a0 <== NOT EXECUTED
42e88: 2400 movel %d0,%d2 <== NOT EXECUTED
42e8a: d488 addl %a0,%d2 <== NOT EXECUTED
42e8c: 6086 bras 42e14 <scanInt+0x1c> <== NOT EXECUTED
}
if (sign == 0)
42e8e: 4a83 tstl %d3 <== NOT EXECUTED
42e90: 670e beqs 42ea0 <scanInt+0xa8> <== NOT EXECUTED
return 0;
*val = i * sign;
42e92: 4c02 3800 mulsl %d2,%d3 <== NOT EXECUTED
return 1;
42e96: 7001 moveq #1,%d0 <== NOT EXECUTED
return 0;
i = i * 10 + d;
}
if (sign == 0)
return 0;
*val = i * sign;
42e98: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
42e9c: 2083 movel %d3,%a0@ <== NOT EXECUTED
return 1;
42e9e: 6002 bras 42ea2 <scanInt+0xaa> <== NOT EXECUTED
|| ((i == (limit / 10)) && (d > (limit % 10))))
return 0;
i = i * 10 + d;
}
if (sign == 0)
return 0;
42ea0: 4280 clrl %d0 <== NOT EXECUTED
*val = i * sign;
return 1;
}
42ea2: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
42ea8: 4e5e unlk %fp <== NOT EXECUTED
00042eac <scanString>:
/*
* Extract a string value from the database
*/
static int
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{
42eac: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
int c;
*name = *bufp;
42eb0: 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)
{
42eb4: 48d7 3c04 moveml %d2/%a2-%a5,%sp@ <== NOT EXECUTED
42eb8: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
int c;
*name = *bufp;
for (;;) {
c = getc(fp);
42ebc: 4bf9 0004 f27c lea 4f27c <__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)
{
42ec2: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
42ec6: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED
42eca: 242e 0018 movel %fp@(24),%d2 <== NOT EXECUTED
int c;
*name = *bufp;
42ece: 2092 movel %a2@,%a0@ <== NOT EXECUTED
for (;;) {
c = getc(fp);
42ed0: 202c 0004 movel %a4@(4),%d0 <== NOT EXECUTED
42ed4: 5380 subql #1,%d0 <== NOT EXECUTED
42ed6: 2940 0004 movel %d0,%a4@(4) <== NOT EXECUTED
42eda: 6c0e bges 42eea <scanString+0x3e> <== NOT EXECUTED
42edc: 2f0c movel %a4,%sp@- <== NOT EXECUTED
42ede: 2f39 0005 dd88 movel 5dd88 <_impure_ptr>,%sp@- <== NOT EXECUTED
42ee4: 4e95 jsr %a5@ <== NOT EXECUTED
42ee6: 508f addql #8,%sp <== NOT EXECUTED
42ee8: 600a bras 42ef4 <scanString+0x48> <== NOT EXECUTED
42eea: 2054 moveal %a4@,%a0 <== NOT EXECUTED
42eec: 4280 clrl %d0 <== NOT EXECUTED
42eee: 1010 moveb %a0@,%d0 <== NOT EXECUTED
42ef0: 5288 addql #1,%a0 <== NOT EXECUTED
42ef2: 2888 movel %a0,%a4@ <== NOT EXECUTED
if (c == ':') {
42ef4: 723a moveq #58,%d1 <== NOT EXECUTED
42ef6: b280 cmpl %d0,%d1 <== NOT EXECUTED
42ef8: 6606 bnes 42f00 <scanString+0x54> <== NOT EXECUTED
if (nlFlag)
42efa: 4a82 tstl %d2 <== NOT EXECUTED
42efc: 6724 beqs 42f22 <scanString+0x76> <== NOT EXECUTED
42efe: 602e bras 42f2e <scanString+0x82> <== NOT EXECUTED
return 0;
break;
}
if (c == '\n') {
42f00: 720a moveq #10,%d1 <== NOT EXECUTED
42f02: b280 cmpl %d0,%d1 <== NOT EXECUTED
42f04: 6606 bnes 42f0c <scanString+0x60> <== NOT EXECUTED
if (!nlFlag)
42f06: 4a82 tstl %d2 <== NOT EXECUTED
42f08: 6618 bnes 42f22 <scanString+0x76> <== NOT EXECUTED
42f0a: 6022 bras 42f2e <scanString+0x82> <== NOT EXECUTED
return 0;
break;
}
if (c == EOF)
42f0c: 72ff moveq #-1,%d1 <== NOT EXECUTED
42f0e: b280 cmpl %d0,%d1 <== NOT EXECUTED
42f10: 671c beqs 42f2e <scanString+0x82> <== NOT EXECUTED
return 0;
if (*nleft < 2)
42f12: 7201 moveq #1,%d1 <== NOT EXECUTED
42f14: b293 cmpl %a3@,%d1 <== NOT EXECUTED
42f16: 6416 bccs 42f2e <scanString+0x82> <== NOT EXECUTED
return 0;
**bufp = c;
42f18: 2052 moveal %a2@,%a0 <== NOT EXECUTED
42f1a: 1080 moveb %d0,%a0@ <== NOT EXECUTED
++(*bufp);
42f1c: 5292 addql #1,%a2@ <== NOT EXECUTED
--(*nleft);
42f1e: 5393 subql #1,%a3@ <== NOT EXECUTED
}
42f20: 60ae bras 42ed0 <scanString+0x24> <== NOT EXECUTED
**bufp = '\0';
42f22: 2052 moveal %a2@,%a0 <== NOT EXECUTED
++(*bufp);
--(*nleft);
return 1;
42f24: 7001 moveq #1,%d0 <== NOT EXECUTED
return 0;
**bufp = c;
++(*bufp);
--(*nleft);
}
**bufp = '\0';
42f26: 4210 clrb %a0@ <== NOT EXECUTED
++(*bufp);
42f28: 5292 addql #1,%a2@ <== NOT EXECUTED
--(*nleft);
42f2a: 5393 subql #1,%a3@ <== NOT EXECUTED
return 1;
42f2c: 6002 bras 42f30 <scanString+0x84> <== NOT EXECUTED
break;
}
if (c == EOF)
return 0;
if (*nleft < 2)
return 0;
42f2e: 4280 clrl %d0 <== NOT EXECUTED
}
**bufp = '\0';
++(*bufp);
--(*nleft);
return 1;
}
42f30: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
42f36: 4e5e unlk %fp <== NOT EXECUTED
00042f3a <scangr>:
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
42f3a: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
42f3e: 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)
42f42: 42a7 clrl %sp@- <== NOT EXECUTED
42f44: 280e movel %fp,%d4 <== NOT EXECUTED
42f46: 0684 0000 0014 addil #20,%d4 <== NOT EXECUTED
42f4c: 260e movel %fp,%d3 <== NOT EXECUTED
42f4e: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
42f54: 47fa ff56 lea %pc@(42eac <scanString>),%a3 <== NOT EXECUTED
42f58: 2f04 movel %d4,%sp@- <== NOT EXECUTED
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
42f5a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
42f5e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
FILE *fp,
struct group *grp,
char *buffer,
size_t bufsize
)
{
42f60: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int grgid;
char *grmem, *cp;
int memcount;
if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)
42f64: 2f0a movel %a2,%sp@- <== NOT EXECUTED
42f66: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42f68: 4e93 jsr %a3@ <== NOT EXECUTED
42f6a: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
42f6e: 4a80 tstl %d0 <== NOT EXECUTED
42f70: 6700 00b6 beqw 43028 <scangr+0xee> <== NOT EXECUTED
|| !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)
42f74: 42a7 clrl %sp@- <== NOT EXECUTED
42f76: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42f78: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42f7a: 486a 0004 pea %a2@(4) <== NOT EXECUTED
42f7e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42f80: 4e93 jsr %a3@ <== NOT EXECUTED
42f82: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
42f86: 4a80 tstl %d0 <== NOT EXECUTED
42f88: 6700 009e beqw 43028 <scangr+0xee> <== NOT EXECUTED
|| !scanInt(fp, &grgid)
42f8c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
42f90: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42f92: 4eba fe64 jsr %pc@(42df8 <scanInt>) <== NOT EXECUTED
42f96: 508f addql #8,%sp <== NOT EXECUTED
42f98: 4a80 tstl %d0 <== NOT EXECUTED
42f9a: 6700 008c beqw 43028 <scangr+0xee> <== NOT EXECUTED
|| !scanString(fp, &grmem, &buffer, &bufsize, 1))
42f9e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
42fa2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
42fa4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
42fa6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
42faa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
42fac: 4e93 jsr %a3@ <== NOT EXECUTED
42fae: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
42fb2: 4a80 tstl %d0 <== NOT EXECUTED
42fb4: 6772 beqs 43028 <scangr+0xee> <== NOT EXECUTED
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
42fb6: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
42fba: 7001 moveq #1,%d0 <== NOT EXECUTED
42fbc: 2041 moveal %d1,%a0 <== 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;
42fbe: 356e fffe 0008 movew %fp@(-2),%a2@(8) <== NOT EXECUTED
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
42fc4: 600a bras 42fd0 <scangr+0x96> <== NOT EXECUTED
if(*cp == ',')
42fc6: 49c2 extbl %d2 <== NOT EXECUTED
42fc8: 762c moveq #44,%d3 <== NOT EXECUTED
42fca: b682 cmpl %d2,%d3 <== NOT EXECUTED
42fcc: 6602 bnes 42fd0 <scangr+0x96> <== NOT EXECUTED
memcount++;
42fce: 5280 addql #1,%d0 <== NOT EXECUTED
grp->gr_gid = grgid;
/*
* Determine number of members
*/
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
42fd0: 1418 moveb %a0@+,%d2 <== NOT EXECUTED
42fd2: 66f2 bnes 42fc6 <scangr+0x8c> <== NOT EXECUTED
}
/*
* Hack to produce (hopefully) a suitably-aligned array of pointers
*/
if (bufsize < (((memcount+1)*sizeof(char *)) + 15))
42fd4: e588 lsll #2,%d0 <== NOT EXECUTED
42fd6: 0680 0000 0013 addil #19,%d0 <== NOT EXECUTED
42fdc: b0ae 0014 cmpl %fp@(20),%d0 <== NOT EXECUTED
42fe0: 6246 bhis 43028 <scangr+0xee> <== NOT EXECUTED
return 0;
grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);
42fe2: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
42fe6: 74f0 moveq #-16,%d2 <== NOT EXECUTED
42fe8: 0680 0000 000f addil #15,%d0 <== NOT EXECUTED
42fee: c082 andl %d2,%d0 <== NOT EXECUTED
42ff0: 2540 000a movel %d0,%a2@(10) <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
42ff4: 2040 moveal %d0,%a0 <== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
42ff6: 7001 moveq #1,%d0 <== NOT EXECUTED
grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
42ff8: 2081 movel %d1,%a0@ <== NOT EXECUTED
42ffa: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
42ffe: 6018 bras 43018 <scangr+0xde> <== NOT EXECUTED
if(*cp == ',') {
43000: 49c1 extbl %d1 <== NOT EXECUTED
43002: 742c moveq #44,%d2 <== NOT EXECUTED
43004: b481 cmpl %d1,%d2 <== NOT EXECUTED
43006: 6610 bnes 43018 <scangr+0xde> <== NOT EXECUTED
*cp = '\0';
43008: 4203 clrb %d3 <== NOT EXECUTED
4300a: 1143 ffff moveb %d3,%a0@(-1) <== NOT EXECUTED
grp->gr_mem[memcount++] = cp + 1;
4300e: 226a 000a moveal %a2@(10),%a1 <== NOT EXECUTED
43012: 2388 0c00 movel %a0,%a1@(00000000,%d0:l:4) <== NOT EXECUTED
43016: 5280 addql #1,%d0 <== NOT EXECUTED
/*
* Fill in pointer array
*/
grp->gr_mem[0] = grmem;
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
43018: 1218 moveb %a0@+,%d1 <== NOT EXECUTED
4301a: 66e4 bnes 43000 <scangr+0xc6> <== NOT EXECUTED
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
4301c: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
43020: 42b0 0c00 clrl %a0@(00000000,%d0:l:4) <== NOT EXECUTED
return 1;
43024: 7001 moveq #1,%d0 <== NOT EXECUTED
43026: 6002 bras 4302a <scangr+0xf0> <== NOT EXECUTED
/*
* Hack to produce (hopefully) a suitably-aligned array of pointers
*/
if (bufsize < (((memcount+1)*sizeof(char *)) + 15))
return 0;
43028: 4280 clrl %d0 <== NOT EXECUTED
grp->gr_mem[memcount++] = cp + 1;
}
}
grp->gr_mem[memcount] = NULL;
return 1;
}
4302a: 4cee 0c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a3 <== NOT EXECUTED
43030: 4e5e unlk %fp <== NOT EXECUTED
00043034 <scanpw>:
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
43034: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
43038: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
4303c: 42a7 clrl %sp@- <== NOT EXECUTED
4303e: 280e movel %fp,%d4 <== NOT EXECUTED
43040: 0684 0000 0014 addil #20,%d4 <== NOT EXECUTED
43046: 260e movel %fp,%d3 <== NOT EXECUTED
43048: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
4304e: 47fa fe5c lea %pc@(42eac <scanString>),%a3 <== NOT EXECUTED
43052: 2f04 movel %d4,%sp@- <== NOT EXECUTED
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
43054: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
43058: 2f03 movel %d3,%sp@- <== NOT EXECUTED
FILE *fp,
struct passwd *pwd,
char *buffer,
size_t bufsize
)
{
4305a: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
int pwuid, pwgid;
if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)
4305e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
43060: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43062: 4e93 jsr %a3@ <== NOT EXECUTED
43064: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43068: 4a80 tstl %d0 <== NOT EXECUTED
4306a: 6700 00a4 beqw 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)
4306e: 42a7 clrl %sp@- <== NOT EXECUTED
43070: 2f04 movel %d4,%sp@- <== NOT EXECUTED
43072: 2f03 movel %d3,%sp@- <== NOT EXECUTED
43074: 486a 0004 pea %a2@(4) <== NOT EXECUTED
43078: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4307a: 4e93 jsr %a3@ <== NOT EXECUTED
4307c: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43080: 4a80 tstl %d0 <== NOT EXECUTED
43082: 6700 008c beqw 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanInt(fp, &pwuid)
43086: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4308a: 49fa fd6c lea %pc@(42df8 <scanInt>),%a4 <== NOT EXECUTED
4308e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43090: 4e94 jsr %a4@ <== NOT EXECUTED
43092: 508f addql #8,%sp <== NOT EXECUTED
43094: 4a80 tstl %d0 <== NOT EXECUTED
43096: 6778 beqs 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanInt(fp, &pwgid)
43098: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4309c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4309e: 4e94 jsr %a4@ <== NOT EXECUTED
430a0: 508f addql #8,%sp <== NOT EXECUTED
430a2: 4a80 tstl %d0 <== NOT EXECUTED
430a4: 676a beqs 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)
430a6: 42a7 clrl %sp@- <== NOT EXECUTED
430a8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
430aa: 2f03 movel %d3,%sp@- <== NOT EXECUTED
430ac: 486a 000c pea %a2@(12) <== NOT EXECUTED
430b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
430b2: 4e93 jsr %a3@ <== NOT EXECUTED
430b4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
430b8: 4a80 tstl %d0 <== NOT EXECUTED
430ba: 6754 beqs 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)
430bc: 42a7 clrl %sp@- <== NOT EXECUTED
430be: 2f04 movel %d4,%sp@- <== NOT EXECUTED
430c0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
430c2: 486a 0010 pea %a2@(16) <== NOT EXECUTED
430c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
430c8: 4e93 jsr %a3@ <== NOT EXECUTED
430ca: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
430ce: 4a80 tstl %d0 <== NOT EXECUTED
430d0: 673e beqs 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)
430d2: 42a7 clrl %sp@- <== NOT EXECUTED
430d4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
430d6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
430d8: 486a 0014 pea %a2@(20) <== NOT EXECUTED
430dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
430de: 4e93 jsr %a3@ <== NOT EXECUTED
430e0: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
430e4: 4a80 tstl %d0 <== NOT EXECUTED
430e6: 6728 beqs 43110 <scanpw+0xdc> <== NOT EXECUTED
|| !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))
430e8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
430ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED
430ee: 2f03 movel %d3,%sp@- <== NOT EXECUTED
430f0: 486a 0018 pea %a2@(24) <== NOT EXECUTED
430f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
430f6: 4e93 jsr %a3@ <== NOT EXECUTED
430f8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
430fc: 4a80 tstl %d0 <== NOT EXECUTED
430fe: 6710 beqs 43110 <scanpw+0xdc> <== NOT EXECUTED
return 0;
pwd->pw_uid = pwuid;
pwd->pw_gid = pwgid;
return 1;
43100: 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;
43102: 356e fffe 0008 movew %fp@(-2),%a2@(8) <== NOT EXECUTED
pwd->pw_gid = pwgid;
43108: 356e fffa 000a movew %fp@(-6),%a2@(10) <== NOT EXECUTED
return 1;
4310e: 6002 bras 43112 <scanpw+0xde> <== 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;
43110: 4280 clrl %d0 <== NOT EXECUTED
pwd->pw_uid = pwuid;
pwd->pw_gid = pwgid;
return 1;
}
43112: 4cee 1c1c ffe0 moveml %fp@(-32),%d2-%d4/%a2-%a4 <== NOT EXECUTED
43118: 4e5e unlk %fp <== NOT EXECUTED
00045d90 <sched_get_priority_max>:
int sched_get_priority_max(
int policy
)
{
switch ( policy ) {
45d90: 7004 moveq #4,%d0 <== NOT EXECUTED
#include <rtems/posix/priority.h>
int sched_get_priority_max(
int policy
)
{
45d92: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45d96: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
switch ( policy ) {
45d9a: b081 cmpl %d1,%d0 <== NOT EXECUTED
45d9c: 650c bcss 45daa <sched_get_priority_max+0x1a> <== NOT EXECUTED
45d9e: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
45da2: e3a8 lsll %d1,%d0 <== NOT EXECUTED
45da4: 7217 moveq #23,%d1 <== NOT EXECUTED
45da6: c081 andl %d1,%d0 <== NOT EXECUTED
45da8: 6610 bnes 45dba <sched_get_priority_max+0x2a> <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
45daa: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED
45db0: 2040 moveal %d0,%a0 <== NOT EXECUTED
45db2: 7016 moveq #22,%d0 <== NOT EXECUTED
45db4: 2080 movel %d0,%a0@ <== NOT EXECUTED
45db6: 70ff moveq #-1,%d0 <== NOT EXECUTED
45db8: 600a bras 45dc4 <sched_get_priority_max+0x34> <== NOT EXECUTED
}
return POSIX_SCHEDULER_MAXIMUM_PRIORITY;
45dba: 4280 clrl %d0 <== NOT EXECUTED
45dbc: 1039 0005 d2a6 moveb 5d2a6 <rtems_maximum_priority>,%d0 <== NOT EXECUTED
45dc2: 5380 subql #1,%d0 <== NOT EXECUTED
}
45dc4: 4e5e unlk %fp <== NOT EXECUTED
00045dc8 <sched_get_priority_min>:
int sched_get_priority_min(
int policy
)
{
switch ( policy ) {
45dc8: 7004 moveq #4,%d0 <== NOT EXECUTED
#include <rtems/posix/priority.h>
int sched_get_priority_min(
int policy
)
{
45dca: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45dce: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
switch ( policy ) {
45dd2: b081 cmpl %d1,%d0 <== NOT EXECUTED
45dd4: 650c bcss 45de2 <sched_get_priority_min+0x1a> <== NOT EXECUTED
45dd6: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
45dda: e3a8 lsll %d1,%d0 <== NOT EXECUTED
45ddc: 7217 moveq #23,%d1 <== NOT EXECUTED
45dde: c081 andl %d1,%d0 <== NOT EXECUTED
45de0: 6610 bnes 45df2 <sched_get_priority_min+0x2a> <== NOT EXECUTED
case SCHED_RR:
case SCHED_SPORADIC:
break;
default:
rtems_set_errno_and_return_minus_one( EINVAL );
45de2: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED
45de8: 2040 moveal %d0,%a0 <== NOT EXECUTED
45dea: 7016 moveq #22,%d0 <== NOT EXECUTED
45dec: 2080 movel %d0,%a0@ <== NOT EXECUTED
45dee: 70ff moveq #-1,%d0 <== NOT EXECUTED
45df0: 6002 bras 45df4 <sched_get_priority_min+0x2c> <== NOT EXECUTED
}
return POSIX_SCHEDULER_MINIMUM_PRIORITY;
45df2: 7001 moveq #1,%d0 <== NOT EXECUTED
}
45df4: 4e5e unlk %fp <== NOT EXECUTED
00045548 <sched_getparam>:
int sched_getparam(
pid_t pid __attribute__((unused)),
struct sched_param *param __attribute__((unused))
)
{
45548: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4554c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
45552: 4e5e unlk %fp <== NOT EXECUTED
int sched_getparam(
pid_t pid __attribute__((unused)),
struct sched_param *param __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
45554: 2040 moveal %d0,%a0 <== NOT EXECUTED
45556: 7058 moveq #88,%d0 <== NOT EXECUTED
45558: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4555a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00045560 <sched_getscheduler>:
#include <rtems/posix/time.h>
int sched_getscheduler(
pid_t pid __attribute__((unused))
)
{
45560: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
45564: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
4556a: 4e5e unlk %fp <== NOT EXECUTED
int sched_getscheduler(
pid_t pid __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4556c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4556e: 7058 moveq #88,%d0 <== NOT EXECUTED
45570: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
45572: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00045df8 <sched_rr_get_interval>:
int sched_rr_get_interval(
pid_t pid,
struct timespec *interval
)
{
45df8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45dfc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45dfe: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
45e02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45e04: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
/*
* Only supported for the "calling process" (i.e. this node).
*/
if ( pid && pid != getpid() )
45e08: 4a83 tstl %d3 <== NOT EXECUTED
45e0a: 6718 beqs 45e24 <sched_rr_get_interval+0x2c> <== NOT EXECUTED
45e0c: 4eb9 0004 2ec8 jsr 42ec8 <getpid> <== NOT EXECUTED
45e12: b083 cmpl %d3,%d0 <== NOT EXECUTED
45e14: 670e beqs 45e24 <sched_rr_get_interval+0x2c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ESRCH );
45e16: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED
45e1c: 7203 moveq #3,%d1 <== NOT EXECUTED
45e1e: 2040 moveal %d0,%a0 <== NOT EXECUTED
45e20: 2081 movel %d1,%a0@ <== NOT EXECUTED
45e22: 6010 bras 45e34 <sched_rr_get_interval+0x3c> <== NOT EXECUTED
if ( !interval )
45e24: 4a82 tstl %d2 <== NOT EXECUTED
45e26: 6610 bnes 45e38 <sched_rr_get_interval+0x40> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
45e28: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED
45e2e: 2040 moveal %d0,%a0 <== NOT EXECUTED
45e30: 7016 moveq #22,%d0 <== NOT EXECUTED
45e32: 2080 movel %d0,%a0@ <== NOT EXECUTED
45e34: 70ff moveq #-1,%d0 <== NOT EXECUTED
45e36: 6012 bras 45e4a <sched_rr_get_interval+0x52> <== NOT EXECUTED
_Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );
45e38: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45e3a: 2f39 0005 eae0 movel 5eae0 <_Thread_Ticks_per_timeslice>,%sp@-<== NOT EXECUTED
45e40: 4eb9 0004 910c jsr 4910c <_Timespec_From_ticks> <== NOT EXECUTED
return 0;
45e46: 508f addql #8,%sp <== NOT EXECUTED
45e48: 4280 clrl %d0 <== NOT EXECUTED
}
45e4a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
45e4e: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
45e52: 4e5e unlk %fp <== NOT EXECUTED
...
00045578 <sched_setparam>:
int sched_setparam(
pid_t pid __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
45578: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
4557c: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
45582: 4e5e unlk %fp <== NOT EXECUTED
int sched_setparam(
pid_t pid __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
45584: 2040 moveal %d0,%a0 <== NOT EXECUTED
45586: 7058 moveq #88,%d0 <== NOT EXECUTED
45588: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4558a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00045590 <sched_setscheduler>:
int sched_setscheduler(
pid_t pid __attribute__((unused)),
int policy __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
45590: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
45594: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
4559a: 4e5e unlk %fp <== NOT EXECUTED
pid_t pid __attribute__((unused)),
int policy __attribute__((unused)),
const struct sched_param *param __attribute__((unused))
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
4559c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4559e: 7058 moveq #88,%d0 <== NOT EXECUTED
455a0: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
455a2: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00045e58 <sched_yield>:
#include <rtems/seterr.h>
#include <rtems/posix/priority.h>
#include <rtems/posix/time.h>
int sched_yield( void )
{
45e58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45e5c: 2039 0005 eb28 movel 5eb28 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45e62: 5280 addql #1,%d0 <== NOT EXECUTED
45e64: 23c0 0005 eb28 movel %d0,5eb28 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
45e6a: 4879 0005 ebae pea 5ebae <_Scheduler> <== NOT EXECUTED
45e70: 2079 0005 ebb6 moveal 5ebb6 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
45e76: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Scheduler_Yield();
_Thread_Enable_dispatch();
45e78: 4eb9 0004 8646 jsr 48646 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
}
45e7e: 4280 clrl %d0 <== NOT EXECUTED
45e80: 4e5e unlk %fp <== NOT EXECUTED
000482ec <sem_close>:
*/
int sem_close(
sem_t *sem
)
{
482ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
sem_t *id,
Objects_Locations *location
)
{
return (POSIX_Semaphore_Control *)
_Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location );
482f0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
482f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
482f8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
482fa: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
48300: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
48306: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4830a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4830e: 661a bnes 4832a <sem_close+0x3e> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_semaphore->open_count -= 1;
48310: 2040 moveal %d0,%a0 <== NOT EXECUTED
48312: 53a8 0016 subql #1,%a0@(22) <== NOT EXECUTED
_POSIX_Semaphore_Delete( the_semaphore );
48316: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48318: 4eb9 0004 df6c jsr 4df6c <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
4831e: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
48324: 588f addql #4,%sp <== NOT EXECUTED
48326: 4280 clrl %d0 <== NOT EXECUTED
48328: 600e bras 48338 <sem_close+0x4c> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4832a: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
48330: 2040 moveal %d0,%a0 <== NOT EXECUTED
48332: 7016 moveq #22,%d0 <== NOT EXECUTED
48334: 2080 movel %d0,%a0@ <== NOT EXECUTED
48336: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
48338: 4e5e unlk %fp <== NOT EXECUTED
0004833c <sem_destroy>:
*/
int sem_destroy(
sem_t *sem
)
{
4833c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48340: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
48344: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48346: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4834a: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
4834c: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
48352: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
48358: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4835c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48360: 6622 bnes 48384 <sem_destroy+0x48> <== NOT EXECUTED
48362: 45f9 0004 ade2 lea 4ade2 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Undefined operation on a named semaphore.
*/
if ( the_semaphore->named == true ) {
48368: 2040 moveal %d0,%a0 <== NOT EXECUTED
4836a: 4a28 0014 tstb %a0@(20) <== NOT EXECUTED
4836e: 6704 beqs 48374 <sem_destroy+0x38> <== NOT EXECUTED
_Thread_Enable_dispatch();
48370: 4e92 jsr %a2@ <== NOT EXECUTED
48372: 6010 bras 48384 <sem_destroy+0x48> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
_POSIX_Semaphore_Delete( the_semaphore );
48374: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48376: 4eb9 0004 df6c jsr 4df6c <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
4837c: 4e92 jsr %a2@ <== NOT EXECUTED
return 0;
4837e: 588f addql #4,%sp <== NOT EXECUTED
48380: 4280 clrl %d0 <== NOT EXECUTED
48382: 600e bras 48392 <sem_destroy+0x56> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
48384: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4838a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4838c: 7016 moveq #22,%d0 <== NOT EXECUTED
4838e: 2080 movel %d0,%a0@ <== NOT EXECUTED
48390: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
48392: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48396: 4e5e unlk %fp <== NOT EXECUTED
...
0004839c <sem_getvalue>:
int sem_getvalue(
sem_t *sem,
int *sval
)
{
4839c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
483a0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
483a4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
483a8: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
483aa: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
483b0: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
483b6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
483ba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
483be: 6614 bnes 483d4 <sem_getvalue+0x38> <== NOT EXECUTED
case OBJECTS_LOCAL:
*sval = _CORE_semaphore_Get_count( &the_semaphore->Semaphore );
483c0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
483c4: 2240 moveal %d0,%a1 <== NOT EXECUTED
483c6: 20a9 0062 movel %a1@(98),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
483ca: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
483d0: 4280 clrl %d0 <== NOT EXECUTED
483d2: 600e bras 483e2 <sem_getvalue+0x46> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
483d4: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
483da: 2040 moveal %d0,%a0 <== NOT EXECUTED
483dc: 7016 moveq #22,%d0 <== NOT EXECUTED
483de: 2080 movel %d0,%a0@ <== NOT EXECUTED
483e0: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
483e2: 4e5e unlk %fp <== NOT EXECUTED
...
000483e8 <sem_init>:
int sem_init(
sem_t *sem,
int pshared,
unsigned int value
)
{
483e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
483ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
483ee: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
int status;
POSIX_Semaphore_Control *the_semaphore;
if ( !sem )
483f2: 4a8a tstl %a2 <== NOT EXECUTED
483f4: 6610 bnes 48406 <sem_init+0x1e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
483f6: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
483fc: 2040 moveal %d0,%a0 <== NOT EXECUTED
483fe: 7016 moveq #22,%d0 <== NOT EXECUTED
48400: 2080 movel %d0,%a0@ <== NOT EXECUTED
48402: 70ff moveq #-1,%d0 <== NOT EXECUTED
48404: 6026 bras 4842c <sem_init+0x44> <== NOT EXECUTED
status = _POSIX_Semaphore_Create_support(
48406: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4840a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4840e: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
48412: 42a7 clrl %sp@- <== NOT EXECUTED
48414: 4eb9 0004 de78 jsr 4de78 <_POSIX_Semaphore_Create_support> <== NOT EXECUTED
pshared,
value,
&the_semaphore
);
if ( status != -1 )
4841a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4841e: 72ff moveq #-1,%d1 <== NOT EXECUTED
48420: b280 cmpl %d0,%d1 <== NOT EXECUTED
48422: 6708 beqs 4842c <sem_init+0x44> <== NOT EXECUTED
*sem = the_semaphore->Object.id;
48424: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
48428: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return status;
}
4842c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48430: 4e5e unlk %fp <== NOT EXECUTED
00048434 <sem_open>:
int oflag,
...
/* mode_t mode, */
/* unsigned int value */
)
{
48434: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
48438: 2039 0006 2a74 movel 62a74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4843e: 5280 addql #1,%d0 <== NOT EXECUTED
48440: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
48444: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
48448: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4844c: 23c0 0006 2a74 movel %d0,62a74 <_Thread_Dispatch_disable_level><== NOT EXECUTED
POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
_Thread_Disable_dispatch();
if ( oflag & O_CREAT ) {
48452: 2a04 movel %d4,%d5 <== NOT EXECUTED
48454: 0285 0000 0200 andil #512,%d5 <== NOT EXECUTED
4845a: 6706 beqs 48462 <sem_open+0x2e> <== NOT EXECUTED
va_start(arg, oflag);
mode = (mode_t) va_arg( arg, unsigned int );
value = va_arg( arg, unsigned int );
4845c: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
48460: 6002 bras 48464 <sem_open+0x30> <== NOT EXECUTED
/* unsigned int value */
)
{
va_list arg;
mode_t mode;
unsigned int value = 0;
48462: 4283 clrl %d3 <== NOT EXECUTED
mode = (mode_t) va_arg( arg, unsigned int );
value = va_arg( arg, unsigned int );
va_end(arg);
}
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
48464: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48468: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4846a: 4eb9 0004 dfbc jsr 4dfbc <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "semaphore does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
48470: 508f addql #8,%sp <== NOT EXECUTED
mode = (mode_t) va_arg( arg, unsigned int );
value = va_arg( arg, unsigned int );
va_end(arg);
}
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
48472: 2440 moveal %d0,%a2 <== NOT EXECUTED
* and we can just return a pointer to the id. Otherwise we may
* need to check to see if this is a "semaphore does not exist"
* or some other miscellaneous error on the name.
*/
if ( status ) {
48474: 4a80 tstl %d0 <== NOT EXECUTED
48476: 671c beqs 48494 <sem_open+0x60> <== NOT EXECUTED
/*
* Unless provided a valid name that did not already exist
* and we are willing to create then it is an error.
*/
if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {
48478: 7002 moveq #2,%d0 <== NOT EXECUTED
4847a: b08a cmpl %a2,%d0 <== NOT EXECUTED
4847c: 6604 bnes 48482 <sem_open+0x4e> <== NOT EXECUTED
4847e: 4a85 tstl %d5 <== NOT EXECUTED
48480: 665e bnes 484e0 <sem_open+0xac> <== NOT EXECUTED
_Thread_Enable_dispatch();
48482: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( status, sem_t * );
48488: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
4848e: 2040 moveal %d0,%a0 <== NOT EXECUTED
48490: 208a movel %a2,%a0@ <== NOT EXECUTED
48492: 6076 bras 4850a <sem_open+0xd6> <== NOT EXECUTED
48494: 45f9 0004 ade2 lea 4ade2 <_Thread_Enable_dispatch>,%a2 <== NOT EXECUTED
/*
* Check for existence with creation.
*/
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
4849a: 0284 0000 0a00 andil #2560,%d4 <== NOT EXECUTED
484a0: 0c84 0000 0a00 cmpil #2560,%d4 <== NOT EXECUTED
484a6: 6610 bnes 484b8 <sem_open+0x84> <== NOT EXECUTED
_Thread_Enable_dispatch();
484a8: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
484aa: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
484b0: 2040 moveal %d0,%a0 <== NOT EXECUTED
484b2: 7011 moveq #17,%d0 <== NOT EXECUTED
484b4: 2080 movel %d0,%a0@ <== NOT EXECUTED
484b6: 6052 bras 4850a <sem_open+0xd6> <== NOT EXECUTED
484b8: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
484bc: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
484c0: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
484c6: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED
}
the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
the_semaphore->open_count += 1;
484cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
484ce: 52a8 0016 addql #1,%a0@(22) <== NOT EXECUTED
if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
_Thread_Enable_dispatch();
rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
}
the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
484d2: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
the_semaphore->open_count += 1;
_Thread_Enable_dispatch();
484d6: 4e92 jsr %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
484d8: 4e92 jsr %a2@ <== NOT EXECUTED
goto return_id;
484da: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
484de: 6022 bras 48502 <sem_open+0xce> <== NOT EXECUTED
/*
* At this point, the semaphore does not exist and everything has been
* checked. We should go ahead and create a semaphore.
*/
status =_POSIX_Semaphore_Create_support(
484e0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
484e4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
484e6: 42a7 clrl %sp@- <== NOT EXECUTED
484e8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
484ea: 4eb9 0004 de78 jsr 4de78 <_POSIX_Semaphore_Create_support> <== NOT EXECUTED
484f0: 2400 movel %d0,%d2 <== NOT EXECUTED
/*
* errno was set by Create_support, so don't set it again.
*/
_Thread_Enable_dispatch();
484f2: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( status == -1 )
484f8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
484fc: 70ff moveq #-1,%d0 <== NOT EXECUTED
484fe: b082 cmpl %d2,%d0 <== NOT EXECUTED
48500: 6708 beqs 4850a <sem_open+0xd6> <== NOT EXECUTED
return_id:
#if defined(RTEMS_USE_16_BIT_OBJECT)
the_semaphore->Semaphore_id = the_semaphore->Object.id;
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
48502: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
48506: 5080 addql #8,%d0 <== NOT EXECUTED
#endif
return id;
48508: 6002 bras 4850c <sem_open+0xd8> <== NOT EXECUTED
*/
_Thread_Enable_dispatch();
if ( status == -1 )
return SEM_FAILED;
4850a: 70ff moveq #-1,%d0 <== NOT EXECUTED
id = &the_semaphore->Semaphore_id;
#else
id = (sem_t *)&the_semaphore->Object.id;
#endif
return id;
}
4850c: 4cee 043c ffe0 moveml %fp@(-32),%d2-%d5/%a2 <== NOT EXECUTED
48512: 4e5e unlk %fp <== NOT EXECUTED
...
00048518 <sem_post>:
*/
int sem_post(
sem_t *sem
)
{
48518: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4851c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
48520: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48524: 2f10 movel %a0@,%sp@- <== NOT EXECUTED
48526: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
4852c: 4eb9 0004 a2fc jsr 4a2fc <_Objects_Get> <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _POSIX_Semaphore_Get( sem, &location );
switch ( location ) {
48532: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48536: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4853a: 6620 bnes 4855c <sem_post+0x44> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_semaphore_Surrender(
4853c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4853e: 42a7 clrl %sp@- <== NOT EXECUTED
48540: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
48544: 4868 001a pea %a0@(26) <== NOT EXECUTED
48548: 4eb9 0004 9978 jsr 49978 <_CORE_semaphore_Surrender> <== NOT EXECUTED
NULL /* XXX need to define a routine to handle this case */
#else
NULL
#endif
);
_Thread_Enable_dispatch();
4854e: 4eb9 0004 ade2 jsr 4ade2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
48554: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48558: 4280 clrl %d0 <== NOT EXECUTED
4855a: 600e bras 4856a <sem_post+0x52> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4855c: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
48562: 2040 moveal %d0,%a0 <== NOT EXECUTED
48564: 7016 moveq #22,%d0 <== NOT EXECUTED
48566: 2080 movel %d0,%a0@ <== NOT EXECUTED
48568: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4856a: 4e5e unlk %fp <== NOT EXECUTED
...
00048570 <sem_timedwait>:
int sem_timedwait(
sem_t *sem,
const struct timespec *abstime
)
{
48570: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
*
* If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,
* POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
* then we should not wait.
*/
status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );
48574: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48578: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4857c: 4eb9 0004 d4c0 jsr 4d4c0 <_POSIX_Absolute_timeout_to_ticks><== NOT EXECUTED
if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )
do_wait = false;
lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks );
48582: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
48586: 7203 moveq #3,%d1 <== NOT EXECUTED
48588: b280 cmpl %d0,%d1 <== NOT EXECUTED
4858a: 57c0 seq %d0 <== NOT EXECUTED
4858c: 49c0 extbl %d0 <== NOT EXECUTED
4858e: 4480 negl %d0 <== NOT EXECUTED
48590: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48592: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48596: 4eb9 0004 e030 jsr 4e030 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )
rtems_set_errno_and_return_minus_one( ETIMEDOUT );
}
return lock_status;
}
4859c: 4e5e unlk %fp <== NOT EXECUTED
000485a0 <sem_trywait>:
*/
int sem_trywait(
sem_t *sem
)
{
485a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Semaphore_Wait_support(sem, false, THREAD_QUEUE_WAIT_FOREVER);
485a4: 42a7 clrl %sp@- <== NOT EXECUTED
485a6: 42a7 clrl %sp@- <== NOT EXECUTED
485a8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
485ac: 4eb9 0004 e030 jsr 4e030 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
}
485b2: 4e5e unlk %fp <== NOT EXECUTED
...
000485b8 <sem_unlink>:
*/
int sem_unlink(
const char *name
)
{
485b8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
485bc: 2039 0006 2a74 movel 62a74 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
485c2: 5280 addql #1,%d0 <== NOT EXECUTED
485c4: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
485c8: 23c0 0006 2a74 movel %d0,62a74 <_Thread_Dispatch_disable_level><== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
sem_t the_semaphore_id;
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
485ce: 486e fffc pea %fp@(-4) <== NOT EXECUTED
485d2: 47f9 0004 ade2 lea 4ade2 <_Thread_Enable_dispatch>,%a3 <== NOT EXECUTED
485d8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
485dc: 4eb9 0004 dfbc jsr 4dfbc <_POSIX_Semaphore_Name_to_id> <== NOT EXECUTED
if ( status != 0 ) {
485e2: 508f addql #8,%sp <== NOT EXECUTED
register POSIX_Semaphore_Control *the_semaphore;
sem_t the_semaphore_id;
_Thread_Disable_dispatch();
status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
485e4: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( status != 0 ) {
485e6: 6710 beqs 485f8 <sem_unlink+0x40> <== NOT EXECUTED
_Thread_Enable_dispatch();
485e8: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( status );
485ea: 4eb9 0005 07b8 jsr 507b8 <__errno> <== NOT EXECUTED
485f0: 2040 moveal %d0,%a0 <== NOT EXECUTED
485f2: 70ff moveq #-1,%d0 <== NOT EXECUTED
485f4: 2082 movel %d2,%a0@ <== NOT EXECUTED
485f6: 6034 bras 4862c <sem_unlink+0x74> <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
485f8: 4280 clrl %d0 <== NOT EXECUTED
485fa: 2079 0006 2cc2 moveal 62cc2 <_POSIX_Semaphore_Information+0x18>,%a0<== NOT EXECUTED
48600: 302e fffe movew %fp@(-2),%d0 <== NOT EXECUTED
}
the_semaphore = (POSIX_Semaphore_Control *) _Objects_Get_local_object(
48604: 2470 0c00 moveal %a0@(00000000,%d0:l:4),%a2 <== NOT EXECUTED
&_POSIX_Semaphore_Information,
_Objects_Get_index( the_semaphore_id )
);
the_semaphore->linked = false;
48608: 4200 clrb %d0 <== NOT EXECUTED
4860a: 1540 0015 moveb %d0,%a2@(21) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove (
POSIX_Semaphore_Control *the_semaphore
)
{
_Objects_Namespace_remove(
4860e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48610: 4879 0006 2caa pea 62caa <_POSIX_Semaphore_Information> <== NOT EXECUTED
48616: 4eb9 0004 a458 jsr 4a458 <_Objects_Namespace_remove> <== NOT EXECUTED
_POSIX_Semaphore_Namespace_remove( the_semaphore );
_POSIX_Semaphore_Delete( the_semaphore );
4861c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4861e: 4eb9 0004 df6c jsr 4df6c <_POSIX_Semaphore_Delete> <== NOT EXECUTED
_Thread_Enable_dispatch();
48624: 4e93 jsr %a3@ <== NOT EXECUTED
return 0;
48626: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4862a: 4280 clrl %d0 <== NOT EXECUTED
}
4862c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
48632: 4e5e unlk %fp <== NOT EXECUTED
...
00048638 <sem_wait>:
*/
int sem_wait(
sem_t *sem
)
{
48638: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _POSIX_Semaphore_Wait_support( sem, true, THREAD_QUEUE_WAIT_FOREVER );
4863c: 42a7 clrl %sp@- <== NOT EXECUTED
4863e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48642: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48646: 4eb9 0004 e030 jsr 4e030 <_POSIX_Semaphore_Wait_support> <== NOT EXECUTED
}
4864c: 4e5e unlk %fp <== NOT EXECUTED
000450cc <seteuid>:
int seteuid( uid_t euid )
{
_POSIX_types_Euid = euid;
return 0;
}
450cc: 4280 clrl %d0 <== NOT EXECUTED
#include <unistd.h>
#include <rtems/userenv.h>
int seteuid( uid_t euid )
{
450ce: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Euid = euid;
450d2: 2079 0005 e750 moveal 5e750 <rtems_current_user_env>,%a0 <== NOT EXECUTED
450d8: 316e 000a 0036 movew %fp@(10),%a0@(54) <== NOT EXECUTED
return 0;
}
450de: 4e5e unlk %fp <== NOT EXECUTED
...
00044248 <setgid>:
gid_t gid
)
{
_POSIX_types_Gid = gid;
return 0;
}
44248: 4280 clrl %d0 <== NOT EXECUTED
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setgid(
gid_t gid
)
{
4424a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Gid = gid;
4424e: 2079 0005 dcc0 moveal 5dcc0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
44254: 316e 000a 0034 movew %fp@(10),%a0@(52) <== NOT EXECUTED
return 0;
}
4425a: 4e5e unlk %fp <== NOT EXECUTED
...
000435ac <setgrent>:
void setgrent(void)
{
435ac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
init_etc_passwd_group();
435b0: 4eb9 0004 311c jsr 4311c <init_etc_passwd_group> <== NOT EXECUTED
if (group_fp != NULL)
435b6: 2039 0005 eac0 movel 5eac0 <group_fp>,%d0 <== NOT EXECUTED
435bc: 670a beqs 435c8 <setgrent+0x1c> <== NOT EXECUTED
fclose(group_fp);
435be: 2f00 movel %d0,%sp@- <== NOT EXECUTED
435c0: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
435c6: 588f addql #4,%sp <== NOT EXECUTED
group_fp = fopen("/etc/group", "r");
435c8: 4879 0005 d365 pea 5d365 <_global_impure_ptr+0xbf> <== NOT EXECUTED
435ce: 4879 0005 cae8 pea 5cae8 <rtems_status_assoc+0x21a> <== NOT EXECUTED
435d4: 4eb9 0004 def4 jsr 4def4 <fopen> <== NOT EXECUTED
435da: 508f addql #8,%sp <== NOT EXECUTED
}
435dc: 4e5e unlk %fp <== NOT EXECUTED
{
init_etc_passwd_group();
if (group_fp != NULL)
fclose(group_fp);
group_fp = fopen("/etc/group", "r");
435de: 23c0 0005 eac0 movel %d0,5eac0 <group_fp> <== NOT EXECUTED
}
00045354 <setitimer>:
int setitimer(
int which,
const struct itimerval *value,
struct itimerval *ovalue
)
{
45354: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( !value )
45358: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
4535c: 6706 beqs 45364 <setitimer+0x10> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
if ( !ovalue )
4535e: 4aae 0010 tstl %fp@(16) <== NOT EXECUTED
45362: 660e bnes 45372 <setitimer+0x1e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
45364: 4eb9 0004 cf50 jsr 4cf50 <__errno> <== NOT EXECUTED
4536a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4536c: 700e moveq #14,%d0 <== NOT EXECUTED
4536e: 2080 movel %d0,%a0@ <== NOT EXECUTED
45370: 6020 bras 45392 <setitimer+0x3e> <== NOT EXECUTED
45372: 41f9 0004 cf50 lea 4cf50 <__errno>,%a0 <== NOT EXECUTED
switch ( which ) {
45378: 7002 moveq #2,%d0 <== NOT EXECUTED
4537a: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
4537e: 650a bcss 4538a <setitimer+0x36> <== NOT EXECUTED
case ITIMER_REAL:
case ITIMER_VIRTUAL:
case ITIMER_PROF:
rtems_set_errno_and_return_minus_one( ENOSYS );
45380: 4e90 jsr %a0@ <== NOT EXECUTED
45382: 7258 moveq #88,%d1 <== NOT EXECUTED
45384: 2040 moveal %d0,%a0 <== NOT EXECUTED
45386: 2081 movel %d1,%a0@ <== NOT EXECUTED
45388: 6008 bras 45392 <setitimer+0x3e> <== NOT EXECUTED
default:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4538a: 4e90 jsr %a0@ <== NOT EXECUTED
4538c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4538e: 7016 moveq #22,%d0 <== NOT EXECUTED
45390: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
45392: 70ff moveq #-1,%d0 <== NOT EXECUTED
45394: 4e5e unlk %fp <== NOT EXECUTED
00044260 <setpgid>:
int setpgid(
pid_t pid __attribute__((unused)),
pid_t pgid __attribute__((unused))
)
{
44260: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
44264: 4eb9 0004 d6a8 jsr 4d6a8 <__errno> <== NOT EXECUTED
}
4426a: 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 );
4426c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4426e: 7058 moveq #88,%d0 <== NOT EXECUTED
44270: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
44272: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00043466 <setpwent>:
void setpwent(void)
{
43466: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
init_etc_passwd_group();
4346a: 4eb9 0004 311c jsr 4311c <init_etc_passwd_group> <== NOT EXECUTED
if (passwd_fp != NULL)
43470: 2039 0005 eb9a movel 5eb9a <passwd_fp>,%d0 <== NOT EXECUTED
43476: 670a beqs 43482 <setpwent+0x1c> <== NOT EXECUTED
fclose(passwd_fp);
43478: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4347a: 4eb9 0004 d7f6 jsr 4d7f6 <fclose> <== NOT EXECUTED
43480: 588f addql #4,%sp <== NOT EXECUTED
passwd_fp = fopen("/etc/passwd", "r");
43482: 4879 0005 d365 pea 5d365 <_global_impure_ptr+0xbf> <== NOT EXECUTED
43488: 4879 0005 ca73 pea 5ca73 <rtems_status_assoc+0x1a5> <== NOT EXECUTED
4348e: 4eb9 0004 def4 jsr 4def4 <fopen> <== NOT EXECUTED
43494: 508f addql #8,%sp <== NOT EXECUTED
}
43496: 4e5e unlk %fp <== NOT EXECUTED
{
init_etc_passwd_group();
if (passwd_fp != NULL)
fclose(passwd_fp);
passwd_fp = fopen("/etc/passwd", "r");
43498: 23c0 0005 eb9a movel %d0,5eb9a <passwd_fp> <== NOT EXECUTED
}
00044278 <setsid>:
*
* 4.3.2 Create Session and Set Process Group ID, P1003.1b-1993, p. 88
*/
pid_t setsid( void )
{
44278: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EPERM );
4427c: 4eb9 0004 d6a8 jsr 4d6a8 <__errno> <== NOT EXECUTED
}
44282: 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 );
44284: 2040 moveal %d0,%a0 <== NOT EXECUTED
44286: 7001 moveq #1,%d0 <== NOT EXECUTED
44288: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
4428a: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00044290 <setuid>:
uid_t uid
)
{
_POSIX_types_Uid = uid;
return 0;
}
44290: 4280 clrl %d0 <== NOT EXECUTED
* 4.2.2 Set User and Group IDs, P1003.1b-1993, p. 84
*/
int setuid(
uid_t uid
)
{
44292: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_POSIX_types_Uid = uid;
44296: 2079 0005 dcc0 moveal 5dcc0 <rtems_current_user_env>,%a0 <== NOT EXECUTED
4429c: 316e 000a 0032 movew %fp@(10),%a0@(50) <== NOT EXECUTED
return 0;
}
442a2: 4e5e unlk %fp <== NOT EXECUTED
...
00045c98 <sigaction>:
int sigaction(
int sig,
const struct sigaction *act,
struct sigaction *oact
)
{
45c98: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
45c9c: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
45ca0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
45ca4: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
45ca8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
if ( oact )
45cac: 4a81 tstl %d1 <== NOT EXECUTED
45cae: 6722 beqs 45cd2 <sigaction+0x3a> <== NOT EXECUTED
*oact = _POSIX_signals_Vectors[ sig ];
45cb0: 2602 movel %d2,%d3 <== NOT EXECUTED
45cb2: 2002 movel %d2,%d0 <== NOT EXECUTED
45cb4: 4878 000c pea c <OPER1> <== NOT EXECUTED
45cb8: e58b lsll #2,%d3 <== NOT EXECUTED
45cba: e988 lsll #4,%d0 <== NOT EXECUTED
45cbc: 9083 subl %d3,%d0 <== NOT EXECUTED
45cbe: 0680 0005 fc74 addil #392308,%d0 <== NOT EXECUTED
45cc4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45cc6: 2f01 movel %d1,%sp@- <== NOT EXECUTED
45cc8: 4eb9 0004 e0a0 jsr 4e0a0 <memcpy> <== NOT EXECUTED
45cce: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !sig )
45cd2: 4a82 tstl %d2 <== NOT EXECUTED
45cd4: 6710 beqs 45ce6 <sigaction+0x4e> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
45cd6: 2002 movel %d2,%d0 <== NOT EXECUTED
45cd8: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(sig) )
45cda: 721f moveq #31,%d1 <== NOT EXECUTED
45cdc: b280 cmpl %d0,%d1 <== NOT EXECUTED
45cde: 6506 bcss 45ce6 <sigaction+0x4e> <== NOT EXECUTED
*
* NOTE: Solaris documentation claims to "silently enforce" this which
* contradicts the POSIX specification.
*/
if ( sig == SIGKILL )
45ce0: 7009 moveq #9,%d0 <== NOT EXECUTED
45ce2: b082 cmpl %d2,%d0 <== NOT EXECUTED
45ce4: 6610 bnes 45cf6 <sigaction+0x5e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
45ce6: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
45cec: 2040 moveal %d0,%a0 <== NOT EXECUTED
45cee: 7016 moveq #22,%d0 <== NOT EXECUTED
45cf0: 2080 movel %d0,%a0@ <== NOT EXECUTED
45cf2: 70ff moveq #-1,%d0 <== NOT EXECUTED
45cf4: 6060 bras 45d56 <sigaction+0xbe> <== NOT EXECUTED
/*
* Evaluate the new action structure and set the global signal vector
* appropriately.
*/
if ( act ) {
45cf6: 4a8a tstl %a2 <== NOT EXECUTED
45cf8: 675a beqs 45d54 <sigaction+0xbc> <== NOT EXECUTED
/*
* Unless the user is installing the default signal actions, then
* we can just copy the provided sigaction structure into the vectors.
*/
_ISR_Disable( level );
45cfa: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
45d00: 40c3 movew %sr,%d3 <== NOT EXECUTED
45d02: 8083 orl %d3,%d0 <== NOT EXECUTED
45d04: 46c0 movew %d0,%sr <== NOT EXECUTED
45d06: 780c moveq #12,%d4 <== NOT EXECUTED
45d08: 4c02 4800 mulsl %d2,%d4 <== NOT EXECUTED
45d0c: 47f9 0004 e0a0 lea 4e0a0 <memcpy>,%a3 <== NOT EXECUTED
if ( act->sa_handler == SIG_DFL ) {
45d12: 4aaa 0008 tstl %a2@(8) <== NOT EXECUTED
45d16: 661e bnes 45d36 <sigaction+0x9e> <== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
45d18: 4878 000c pea c <OPER1> <== NOT EXECUTED
45d1c: 2004 movel %d4,%d0 <== NOT EXECUTED
45d1e: 0680 0005 d1f0 addil #381424,%d0 <== NOT EXECUTED
45d24: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45d26: 0684 0005 fc74 addil #392308,%d4 <== NOT EXECUTED
45d2c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45d2e: 4e93 jsr %a3@ <== NOT EXECUTED
45d30: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45d34: 601c bras 45d52 <sigaction+0xba> <== NOT EXECUTED
} else {
_POSIX_signals_Clear_process_signals( sig );
45d36: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = *act;
45d38: 0684 0005 fc74 addil #392308,%d4 <== NOT EXECUTED
_ISR_Disable( level );
if ( act->sa_handler == SIG_DFL ) {
_POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
} else {
_POSIX_signals_Clear_process_signals( sig );
45d3e: 4eb9 0004 ae94 jsr 4ae94 <_POSIX_signals_Clear_process_signals><== NOT EXECUTED
_POSIX_signals_Vectors[ sig ] = *act;
45d44: 4878 000c pea c <OPER1> <== NOT EXECUTED
45d48: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45d4a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
45d4c: 4e93 jsr %a3@ <== NOT EXECUTED
45d4e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
_ISR_Enable( level );
45d52: 46c3 movew %d3,%sr <== NOT EXECUTED
* now (signals not posted when SIG_IGN).
* + If we are now ignoring a signal that was previously pending,
* we clear the pending signal indicator.
*/
return 0;
45d54: 4280 clrl %d0 <== NOT EXECUTED
}
45d56: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
45d5c: 4e5e unlk %fp <== NOT EXECUTED
00045d60 <sigaddset>:
int sigaddset(
sigset_t *set,
int signo
)
{
45d60: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45d64: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
45d68: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
if ( !set )
45d6c: 4a88 tstl %a0 <== NOT EXECUTED
45d6e: 670c beqs 45d7c <sigaddset+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
45d70: 4a81 tstl %d1 <== NOT EXECUTED
45d72: 6708 beqs 45d7c <sigaddset+0x1c> <== NOT EXECUTED
45d74: 5381 subql #1,%d1 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(signo) )
45d76: 701f moveq #31,%d0 <== NOT EXECUTED
45d78: b081 cmpl %d1,%d0 <== NOT EXECUTED
45d7a: 6410 bccs 45d8c <sigaddset+0x2c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
45d7c: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
45d82: 2040 moveal %d0,%a0 <== NOT EXECUTED
45d84: 7016 moveq #22,%d0 <== NOT EXECUTED
45d86: 2080 movel %d0,%a0@ <== NOT EXECUTED
45d88: 70ff moveq #-1,%d0 <== NOT EXECUTED
45d8a: 6008 bras 45d94 <sigaddset+0x34> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
45d8c: 7001 moveq #1,%d0 <== NOT EXECUTED
45d8e: e3a8 lsll %d1,%d0 <== NOT EXECUTED
*set |= signo_to_mask(signo);
45d90: 8190 orl %d0,%a0@ <== NOT EXECUTED
return 0;
45d92: 4280 clrl %d0 <== NOT EXECUTED
}
45d94: 4e5e unlk %fp <== NOT EXECUTED
00047a94 <sigdelset>:
int sigdelset(
sigset_t *set,
int signo
)
{
47a94: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47a98: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47a9c: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
if ( !set )
47aa0: 4a88 tstl %a0 <== NOT EXECUTED
47aa2: 670c beqs 47ab0 <sigdelset+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
47aa4: 4a81 tstl %d1 <== NOT EXECUTED
47aa6: 6720 beqs 47ac8 <sigdelset+0x34> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
47aa8: 5381 subql #1,%d1 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
47aaa: 701f moveq #31,%d0 <== NOT EXECUTED
47aac: b081 cmpl %d1,%d0 <== NOT EXECUTED
47aae: 6410 bccs 47ac0 <sigdelset+0x2c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
47ab0: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED
47ab6: 2040 moveal %d0,%a0 <== NOT EXECUTED
47ab8: 7016 moveq #22,%d0 <== NOT EXECUTED
47aba: 2080 movel %d0,%a0@ <== NOT EXECUTED
47abc: 70ff moveq #-1,%d0 <== NOT EXECUTED
47abe: 600a bras 47aca <sigdelset+0x36> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
47ac0: 7001 moveq #1,%d0 <== NOT EXECUTED
47ac2: e3a8 lsll %d1,%d0 <== NOT EXECUTED
*set &= ~signo_to_mask(signo);
47ac4: 4680 notl %d0 <== NOT EXECUTED
47ac6: c190 andl %d0,%a0@ <== NOT EXECUTED
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
47ac8: 4280 clrl %d0 <== NOT EXECUTED
if ( !is_valid_signo(signo) )
rtems_set_errno_and_return_minus_one( EINVAL );
*set &= ~signo_to_mask(signo);
return 0;
}
47aca: 4e5e unlk %fp <== NOT EXECUTED
...
0004a548 <sigemptyset>:
#include <rtems/seterr.h>
int sigemptyset(
sigset_t *set
)
{
4a548: 4e56 0000 linkw %fp,#0
4a54c: 206e 0008 moveal %fp@(8),%a0
if ( !set )
4a550: 4a88 tstl %a0
4a552: 6610 bnes 4a564 <sigemptyset+0x1c> <== ALWAYS TAKEN
rtems_set_errno_and_return_minus_one( EINVAL );
4a554: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
4a55a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4a55c: 7016 moveq #22,%d0 <== NOT EXECUTED
4a55e: 2080 movel %d0,%a0@ <== NOT EXECUTED
4a560: 70ff moveq #-1,%d0 <== NOT EXECUTED
4a562: 6004 bras 4a568 <sigemptyset+0x20> <== NOT EXECUTED
*set = 0;
4a564: 4290 clrl %a0@
return 0;
4a566: 4280 clrl %d0
}
4a568: 4e5e unlk %fp <== NOT EXECUTED
00047af4 <sigfillset>:
#include <rtems/seterr.h>
int sigfillset(
sigset_t *set
)
{
47af4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47af8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !set )
47afc: 4a88 tstl %a0 <== NOT EXECUTED
47afe: 6610 bnes 47b10 <sigfillset+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
47b00: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED
47b06: 7216 moveq #22,%d1 <== NOT EXECUTED
47b08: 2040 moveal %d0,%a0 <== NOT EXECUTED
47b0a: 70ff moveq #-1,%d0 <== NOT EXECUTED
47b0c: 2081 movel %d1,%a0@ <== NOT EXECUTED
47b0e: 6006 bras 47b16 <sigfillset+0x22> <== NOT EXECUTED
*set = SIGNAL_ALL_MASK;
47b10: 70ff moveq #-1,%d0 <== NOT EXECUTED
47b12: 2080 movel %d0,%a0@ <== NOT EXECUTED
return 0;
47b14: 4280 clrl %d0 <== NOT EXECUTED
}
47b16: 4e5e unlk %fp <== NOT EXECUTED
...
00047b1c <sigismember>:
int sigismember(
const sigset_t *set,
int signo
)
{
47b1c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47b20: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47b24: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
if ( !set )
47b28: 4a88 tstl %a0 <== NOT EXECUTED
47b2a: 670c beqs 47b38 <sigismember+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !signo )
47b2c: 4a81 tstl %d1 <== NOT EXECUTED
47b2e: 6726 beqs 47b56 <sigismember+0x3a> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
47b30: 5381 subql #1,%d1 <== NOT EXECUTED
return 0;
if ( !is_valid_signo(signo) )
47b32: 701f moveq #31,%d0 <== NOT EXECUTED
47b34: b081 cmpl %d1,%d0 <== NOT EXECUTED
47b36: 6410 bccs 47b48 <sigismember+0x2c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
47b38: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED
47b3e: 2040 moveal %d0,%a0 <== NOT EXECUTED
47b40: 7016 moveq #22,%d0 <== NOT EXECUTED
47b42: 2080 movel %d0,%a0@ <== NOT EXECUTED
47b44: 70ff moveq #-1,%d0 <== NOT EXECUTED
47b46: 6010 bras 47b58 <sigismember+0x3c> <== NOT EXECUTED
static inline sigset_t signo_to_mask(
uint32_t sig
)
{
return 1u << (sig - 1);
47b48: 7001 moveq #1,%d0 <== NOT EXECUTED
47b4a: e3a8 lsll %d1,%d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
47b4c: c090 andl %a0@,%d0 <== NOT EXECUTED
const sigset_t *set,
int signo
)
{
if ( !set )
rtems_set_errno_and_return_minus_one( EINVAL );
47b4e: 56c0 sne %d0 <== NOT EXECUTED
47b50: 49c0 extbl %d0 <== NOT EXECUTED
47b52: 4480 negl %d0 <== NOT EXECUTED
47b54: 6002 bras 47b58 <sigismember+0x3c> <== NOT EXECUTED
if ( !signo )
return 0;
47b56: 4280 clrl %d0 <== NOT EXECUTED
if ( *set & signo_to_mask(signo) )
return 1;
return 0;
}
47b58: 4e5e unlk %fp <== NOT EXECUTED
00045cdc <signal>:
sighandler_t signal(
int signum,
sighandler_t handler
)
{
45cdc: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
struct sigaction s;
struct sigaction old;
s.sa_handler = handler ;
45ce0: 2d6e 000c fffc movel %fp@(12),%fp@(-4) <== NOT EXECUTED
sigemptyset(&s.sa_mask);
45ce6: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45cea: 4eb9 0004 5cb8 jsr 45cb8 <sigemptyset> <== NOT EXECUTED
s.sa_flags = SA_RESTART;
#else
s.sa_flags = 0;
#endif
sigaction( signum, &s, &old );
45cf0: 486e ffe8 pea %fp@(-24) <== NOT EXECUTED
45cf4: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
45cf8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
s.sa_flags = SA_RESTART | SA_INTERRUPT | SA_NOMASK;
s.sa_restorer= NULL ;
#elif defined(signal_like_SVR4)
s.sa_flags = SA_RESTART;
#else
s.sa_flags = 0;
45cfc: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
#endif
sigaction( signum, &s, &old );
45d00: 4eb9 0004 5bb8 jsr 45bb8 <sigaction> <== NOT EXECUTED
return (sighandler_t) old.sa_handler;
}
45d06: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
45d0a: 4e5e unlk %fp <== NOT EXECUTED
...
00045dbc <sigpending>:
#include <rtems/seterr.h>
int sigpending(
sigset_t *set
)
{
45dbc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45dc0: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
POSIX_API_Control *api;
if ( !set )
45dc4: 4a88 tstl %a0 <== NOT EXECUTED
45dc6: 6610 bnes 45dd8 <sigpending+0x1c> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
45dc8: 4eb9 0004 d7dc jsr 4d7dc <__errno> <== NOT EXECUTED
45dce: 2040 moveal %d0,%a0 <== NOT EXECUTED
45dd0: 7016 moveq #22,%d0 <== NOT EXECUTED
45dd2: 2080 movel %d0,%a0@ <== NOT EXECUTED
45dd4: 70ff moveq #-1,%d0 <== NOT EXECUTED
45dd6: 6018 bras 45df0 <sigpending+0x34> <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
45dd8: 2279 0005 fc42 moveal 5fc42 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
*set = api->signals_pending | _POSIX_signals_Pending;
45dde: 2039 0005 fe68 movel 5fe68 <_POSIX_signals_Pending>,%d0 <== NOT EXECUTED
45de4: 2269 0102 moveal %a1@(258),%a1 <== NOT EXECUTED
45de8: 80a9 00d4 orl %a1@(212),%d0 <== NOT EXECUTED
45dec: 2080 movel %d0,%a0@ <== NOT EXECUTED
return 0;
45dee: 4280 clrl %d0 <== NOT EXECUTED
}
45df0: 4e5e unlk %fp <== NOT EXECUTED
00045df4 <sigprocmask>:
int sigprocmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
45df4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_POSIX_API)
return pthread_sigmask( how, set, oset );
#else
return -1;
#endif
}
45df8: 4e5e unlk %fp <== NOT EXECUTED
/*
* P1003.1c/Draft 10, p. 38 maps sigprocmask to pthread_sigmask.
*/
#if defined(RTEMS_POSIX_API)
return pthread_sigmask( how, set, oset );
45dfa: 4ef9 0004 b540 jmp 4b540 <pthread_sigmask> <== NOT EXECUTED
00047ba0 <sigqueue>:
int sigqueue(
pid_t pid,
int signo,
const union sigval value
)
{
47ba0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return killinfo( pid, signo, &value );
47ba4: 486e 0010 pea %fp@(16) <== NOT EXECUTED
47ba8: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47bac: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47bb0: 4eb9 0004 cdac jsr 4cdac <killinfo> <== NOT EXECUTED
}
47bb6: 4e5e unlk %fp <== NOT EXECUTED
...
00047bbc <sigsuspend>:
#include <rtems/seterr.h>
int sigsuspend(
const sigset_t *sigmask
)
{
47bbc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47bc0: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
/*
* We use SIG_BLOCK and not SIG_SETMASK because there may be
* signals which might be pending, which might get caught here.
* We want the signals to be caught inside sigtimedwait.
*/
status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked );
47bc4: 240e movel %fp,%d2 <== NOT EXECUTED
47bc6: 5982 subql #4,%d2 <== NOT EXECUTED
47bc8: 45f9 0004 7b94 lea 47b94 <sigprocmask>,%a2 <== NOT EXECUTED
47bce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
#include <rtems/seterr.h>
int sigsuspend(
const sigset_t *sigmask
)
{
47bd0: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
/*
* We use SIG_BLOCK and not SIG_SETMASK because there may be
* signals which might be pending, which might get caught here.
* We want the signals to be caught inside sigtimedwait.
*/
status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked );
47bd4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47bd6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
47bda: 4e92 jsr %a2@ <== NOT EXECUTED
current_unblocked_signals = ~(*sigmask);
47bdc: 2013 movel %a3@,%d0 <== NOT EXECUTED
47bde: 4680 notl %d0 <== NOT EXECUTED
status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL );
47be0: 42a7 clrl %sp@- <== NOT EXECUTED
47be2: 42a7 clrl %sp@- <== NOT EXECUTED
47be4: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
* signals which might be pending, which might get caught here.
* We want the signals to be caught inside sigtimedwait.
*/
status = sigprocmask( SIG_BLOCK, sigmask, &saved_signals_blocked );
current_unblocked_signals = ~(*sigmask);
47be8: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
status = sigtimedwait( ¤t_unblocked_signals, NULL, NULL );
47bec: 4eb9 0004 7c64 jsr 47c64 <sigtimedwait> <== NOT EXECUTED
(void) sigprocmask( SIG_SETMASK, &saved_signals_blocked, NULL );
47bf2: 42a7 clrl %sp@- <== NOT EXECUTED
47bf4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47bf6: 42a7 clrl %sp@- <== NOT EXECUTED
47bf8: 4e92 jsr %a2@ <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
assert( status != -1 );
#endif
rtems_set_errno_and_return_minus_one( EINTR );
47bfa: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
47bfe: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED
}
47c04: 4cee 0c04 ffec moveml %fp@(-20),%d2/%a2-%a3 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
assert( status != -1 );
#endif
rtems_set_errno_and_return_minus_one( EINTR );
47c0a: 2040 moveal %d0,%a0 <== NOT EXECUTED
47c0c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47c0e: 4e5e unlk %fp <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
assert( status != -1 );
#endif
rtems_set_errno_and_return_minus_one( EINTR );
47c10: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
47c12: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
0004607c <sigtimedwait>:
int sigtimedwait(
const sigset_t *set,
siginfo_t *info,
const struct timespec *timeout
)
{
4607c: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
46080: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
46084: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
46088: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4608c: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
/*
* Error check parameters before disabling interrupts.
*/
if ( !set )
46090: 4a8b tstl %a3 <== NOT EXECUTED
46092: 6730 beqs 460c4 <sigtimedwait+0x48> <== NOT EXECUTED
/* NOTE: This is very specifically a RELATIVE not ABSOLUTE time
* in the Open Group specification.
*/
interval = 0;
if ( timeout ) {
46094: 4a82 tstl %d2 <== NOT EXECUTED
46096: 673c beqs 460d4 <sigtimedwait+0x58> <== NOT EXECUTED
if ( !_Timespec_Is_valid( timeout ) )
46098: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4609a: 4eb9 0004 93f4 jsr 493f4 <_Timespec_Is_valid> <== NOT EXECUTED
460a0: 588f addql #4,%sp <== NOT EXECUTED
460a2: 4a00 tstb %d0 <== NOT EXECUTED
460a4: 6610 bnes 460b6 <sigtimedwait+0x3a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
460a6: 4eb9 0004 dd50 jsr 4dd50 <__errno> <== NOT EXECUTED
460ac: 7616 moveq #22,%d3 <== NOT EXECUTED
460ae: 2240 moveal %d0,%a1 <== NOT EXECUTED
460b0: 2283 movel %d3,%a1@ <== NOT EXECUTED
460b2: 6000 0144 braw 461f8 <sigtimedwait+0x17c> <== NOT EXECUTED
interval = _Timespec_To_ticks( timeout );
460b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
460b8: 4eb9 0004 9460 jsr 49460 <_Timespec_To_ticks> <== NOT EXECUTED
if ( !interval )
460be: 588f addql #4,%sp <== NOT EXECUTED
460c0: 4a80 tstl %d0 <== NOT EXECUTED
460c2: 6612 bnes 460d6 <sigtimedwait+0x5a> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
460c4: 4eb9 0004 dd50 jsr 4dd50 <__errno> <== NOT EXECUTED
460ca: 7416 moveq #22,%d2 <== NOT EXECUTED
460cc: 2040 moveal %d0,%a0 <== NOT EXECUTED
460ce: 2082 movel %d2,%a0@ <== NOT EXECUTED
460d0: 6000 0126 braw 461f8 <sigtimedwait+0x17c> <== NOT EXECUTED
/* NOTE: This is very specifically a RELATIVE not ABSOLUTE time
* in the Open Group specification.
*/
interval = 0;
460d4: 4280 clrl %d0 <== NOT EXECUTED
/*
* Initialize local variables.
*/
the_info = ( info ) ? info : &signal_information;
460d6: 4a8a tstl %a2 <== NOT EXECUTED
460d8: 6604 bnes 460de <sigtimedwait+0x62> <== NOT EXECUTED
460da: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED
the_thread = _Thread_Executing;
460de: 2079 0006 0002 moveal 60002 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
460e4: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
the_info = ( info ) ? info : &signal_information;
the_thread = _Thread_Executing;
api = the_thread->API_Extensions[ THREAD_API_POSIX ];
460ea: 2868 0102 moveal %a0@(258),%a4 <== NOT EXECUTED
* What if they are already pending?
*/
/* API signals pending? */
_ISR_Disable( level );
460ee: 40c3 movew %sr,%d3 <== NOT EXECUTED
460f0: 8283 orl %d3,%d1 <== NOT EXECUTED
460f2: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( *set & api->signals_pending ) {
460f4: 2413 movel %a3@,%d2 <== NOT EXECUTED
460f6: 2802 movel %d2,%d4 <== NOT EXECUTED
460f8: 222c 00d4 movel %a4@(212),%d1 <== NOT EXECUTED
460fc: c881 andl %d1,%d4 <== NOT EXECUTED
460fe: 672a beqs 4612a <sigtimedwait+0xae> <== NOT EXECUTED
/* XXX real info later */
the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
46100: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46102: 4eb9 0004 6030 jsr 46030 <_POSIX_signals_Get_lowest> <== NOT EXECUTED
46108: 2480 movel %d0,%a2@ <== NOT EXECUTED
_POSIX_signals_Clear_signals(
4610a: 4297 clrl %sp@ <== NOT EXECUTED
4610c: 42a7 clrl %sp@- <== NOT EXECUTED
4610e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
46110: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46112: 2f0c movel %a4,%sp@- <== NOT EXECUTED
46114: 4eb9 0004 b4d0 jsr 4b4d0 <_POSIX_signals_Clear_signals> <== NOT EXECUTED
the_info->si_signo,
the_info,
false,
false
);
_ISR_Enable( level );
4611a: 46c3 movew %d3,%sr <== NOT EXECUTED
the_info->si_code = SI_USER;
4611c: 7001 moveq #1,%d0 <== NOT EXECUTED
the_info->si_value.sival_int = 0;
4611e: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
return the_info->si_signo;
46122: 2412 movel %a2@,%d2 <== NOT EXECUTED
false,
false
);
_ISR_Enable( level );
the_info->si_code = SI_USER;
46124: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
46128: 6036 bras 46160 <sigtimedwait+0xe4> <== NOT EXECUTED
return the_info->si_signo;
}
/* Process pending signals? */
if ( *set & _POSIX_signals_Pending ) {
4612a: 2239 0006 0228 movel 60228 <_POSIX_signals_Pending>,%d1 <== NOT EXECUTED
46130: 4bf9 0004 b4d0 lea 4b4d0 <_POSIX_signals_Clear_signals>,%a5<== NOT EXECUTED
46136: c481 andl %d1,%d2 <== NOT EXECUTED
46138: 672e beqs 46168 <sigtimedwait+0xec> <== NOT EXECUTED
signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );
4613a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4613c: 4eb9 0004 6030 jsr 46030 <_POSIX_signals_Get_lowest> <== NOT EXECUTED
46142: 2400 movel %d0,%d2 <== NOT EXECUTED
_POSIX_signals_Clear_signals( api, signo, the_info, true, false );
46144: 4297 clrl %sp@ <== NOT EXECUTED
46146: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4614a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4614c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4614e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
46150: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
46152: 46c3 movew %d3,%sr <== NOT EXECUTED
the_info->si_signo = signo;
the_info->si_code = SI_USER;
46154: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( *set & _POSIX_signals_Pending ) {
signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );
_POSIX_signals_Clear_signals( api, signo, the_info, true, false );
_ISR_Enable( level );
the_info->si_signo = signo;
46156: 2482 movel %d2,%a2@ <== NOT EXECUTED
the_info->si_code = SI_USER;
46158: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
the_info->si_value.sival_int = 0;
4615c: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
return signo;
46160: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
46164: 6000 0094 braw 461fa <sigtimedwait+0x17e> <== NOT EXECUTED
}
the_info->si_signo = -1;
46168: 72ff moveq #-1,%d1 <== NOT EXECUTED
4616a: 2481 movel %d1,%a2@ <== NOT EXECUTED
4616c: 2239 0005 fb78 movel 5fb78 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
46172: 5281 addql #1,%d1 <== NOT EXECUTED
46174: 23c1 0005 fb78 movel %d1,5fb78 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
the_thread->Wait.return_code = EINTR;
4617a: 7204 moveq #4,%d1 <== NOT EXECUTED
}
the_info->si_signo = -1;
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
4617c: 43f9 0006 01c0 lea 601c0 <_POSIX_signals_Wait_queue>,%a1 <== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
46182: 2141 0034 movel %d1,%a0@(52) <== NOT EXECUTED
the_thread->Wait.option = *set;
46186: 2153 0030 movel %a3@,%a0@(48) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4618a: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
the_thread->Wait.return_argument = the_info;
4618e: 214a 0028 movel %a2,%a0@(40) <== NOT EXECUTED
}
the_info->si_signo = -1;
_Thread_Disable_dispatch();
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
46192: 2149 0044 movel %a1,%a0@(68) <== NOT EXECUTED
46196: 23c1 0006 01f0 movel %d1,601f0 <_POSIX_signals_Wait_queue+0x30><== NOT EXECUTED
the_thread->Wait.return_code = EINTR;
the_thread->Wait.option = *set;
the_thread->Wait.return_argument = the_info;
_Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue );
_ISR_Enable( level );
4619c: 46c3 movew %d3,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );
4619e: 4879 0004 90a4 pea 490a4 <_Thread_queue_Timeout> <== NOT EXECUTED
461a4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
461a6: 4879 0006 01c0 pea 601c0 <_POSIX_signals_Wait_queue> <== NOT EXECUTED
461ac: 4eb9 0004 8d90 jsr 48d90 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
461b2: 4eb9 0004 892e jsr 4892e <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* When the thread is set free by a signal, it is need to eliminate
* the signal.
*/
_POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, false, false );
461b8: 42a7 clrl %sp@- <== NOT EXECUTED
461ba: 42a7 clrl %sp@- <== NOT EXECUTED
461bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
461be: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
461c0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
461c2: 4e95 jsr %a5@ <== NOT EXECUTED
/* Set errno only if return code is not EINTR or
* if EINTR was caused by a signal being caught, which
* was not in our set.
*/
if ( (_Thread_Executing->Wait.return_code != EINTR)
461c4: 2079 0006 0002 moveal 60002 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
461ca: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
461ce: 7004 moveq #4,%d0 <== NOT EXECUTED
461d0: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
461d4: 6610 bnes 461e6 <sigtimedwait+0x16a> <== NOT EXECUTED
|| !(*set & signo_to_mask( the_info->si_signo )) ) {
461d6: 2412 movel %a2@,%d2 <== NOT EXECUTED
461d8: 2202 movel %d2,%d1 <== NOT EXECUTED
461da: 5381 subql #1,%d1 <== NOT EXECUTED
461dc: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
461e0: e3a8 lsll %d1,%d0 <== NOT EXECUTED
461e2: c093 andl %a3@,%d0 <== NOT EXECUTED
461e4: 6614 bnes 461fa <sigtimedwait+0x17e> <== NOT EXECUTED
errno = _Thread_Executing->Wait.return_code;
461e6: 4eb9 0004 dd50 jsr 4dd50 <__errno> <== NOT EXECUTED
461ec: 2079 0006 0002 moveal 60002 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
461f2: 2240 moveal %d0,%a1 <== NOT EXECUTED
461f4: 22a8 0034 movel %a0@(52),%a1@ <== NOT EXECUTED
return -1;
461f8: 74ff moveq #-1,%d2 <== NOT EXECUTED
}
return the_info->si_signo;
}
461fa: 2002 movel %d2,%d0 <== NOT EXECUTED
461fc: 4cee 3c1c ffd8 moveml %fp@(-40),%d2-%d4/%a2-%a5 <== NOT EXECUTED
46202: 4e5e unlk %fp <== NOT EXECUTED
...
00047e08 <sigwait>:
int sigwait(
const sigset_t *set,
int *sig
)
{
47e08: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47e0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47e0e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
int status;
status = sigtimedwait( set, NULL, NULL );
47e12: 42a7 clrl %sp@- <== NOT EXECUTED
47e14: 42a7 clrl %sp@- <== NOT EXECUTED
47e16: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47e1a: 4eb9 0004 7c64 jsr 47c64 <sigtimedwait> <== NOT EXECUTED
if ( status != -1 ) {
47e20: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47e24: 72ff moveq #-1,%d1 <== NOT EXECUTED
47e26: b280 cmpl %d0,%d1 <== NOT EXECUTED
47e28: 6708 beqs 47e32 <sigwait+0x2a> <== NOT EXECUTED
if ( sig )
47e2a: 4a8a tstl %a2 <== NOT EXECUTED
47e2c: 6710 beqs 47e3e <sigwait+0x36> <== NOT EXECUTED
*sig = status;
47e2e: 2480 movel %d0,%a2@ <== NOT EXECUTED
47e30: 600c bras 47e3e <sigwait+0x36> <== NOT EXECUTED
return 0;
}
return errno;
47e32: 4eb9 0004 f588 jsr 4f588 <__errno> <== NOT EXECUTED
47e38: 2040 moveal %d0,%a0 <== NOT EXECUTED
47e3a: 2010 movel %a0@,%d0 <== NOT EXECUTED
47e3c: 6002 bras 47e40 <sigwait+0x38> <== NOT EXECUTED
status = sigtimedwait( set, NULL, NULL );
if ( status != -1 ) {
if ( sig )
*sig = status;
return 0;
47e3e: 4280 clrl %d0 <== NOT EXECUTED
}
return errno;
}
47e40: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47e44: 4e5e unlk %fp <== NOT EXECUTED
00047df0 <sigwaitinfo>:
int sigwaitinfo(
const sigset_t *set,
siginfo_t *info
)
{
47df0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return sigtimedwait( set, info, NULL );
47df4: 42a7 clrl %sp@- <== NOT EXECUTED
47df6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47dfa: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47dfe: 4eb9 0004 7c64 jsr 47c64 <sigtimedwait> <== NOT EXECUTED
}
47e04: 4e5e unlk %fp <== NOT EXECUTED
00044416 <siproc>:
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
44416: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4441a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4441c: 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)) {
44420: 202a 003c movel %a2@(60),%d0 <== NOT EXECUTED
/*
* Process input character, with semaphore.
*/
static int
siproc (unsigned char c, struct rtems_termios_tty *tty)
{
44424: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44426: 4282 clrl %d2 <== NOT EXECUTED
44428: 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)) {
4442c: 0280 0000 0e78 andil #3704,%d0 <== NOT EXECUTED
44432: 6734 beqs 44468 <siproc+0x52> <== NOT EXECUTED
rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
44434: 42a7 clrl %sp@- <== NOT EXECUTED
44436: 42a7 clrl %sp@- <== NOT EXECUTED
44438: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
4443c: 4eb9 0004 55f4 jsr 455f4 <rtems_semaphore_obtain> <== NOT EXECUTED
i = iproc (c, tty);
44442: 2f0a movel %a2,%sp@- <== NOT EXECUTED
44444: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44446: 4eba fe66 jsr %pc@(442ae <iproc>) <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
4444a: 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);
4444e: 2400 movel %d0,%d2 <== NOT EXECUTED
rtems_semaphore_release (tty->osem);
44450: 4eb9 0004 56fc jsr 456fc <rtems_semaphore_release> <== NOT EXECUTED
}
else {
i = iproc (c, tty);
}
return i;
}
44456: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4445a: 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);
4445c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
}
else {
i = iproc (c, tty);
}
return i;
}
44460: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44464: 4e5e unlk %fp <== NOT EXECUTED
44466: 4e75 rts <== 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);
44468: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
}
return i;
}
4446c: 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);
44470: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return i;
}
44474: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44478: 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);
4447a: 6000 fe32 braw 442ae <iproc> <== NOT EXECUTED
000432cc <stat>:
int _STAT_NAME(
const char *path,
struct stat *buf
)
{
432cc: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
432d0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
432d4: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
432d8: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
/*
* Check to see if we were passed a valid pointer.
*/
if ( !buf )
432dc: 660e bnes 432ec <stat+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
432de: 4eb9 0004 b064 jsr 4b064 <__errno> <== NOT EXECUTED
432e4: 740e moveq #14,%d2 <== NOT EXECUTED
432e6: 2040 moveal %d0,%a0 <== NOT EXECUTED
432e8: 2082 movel %d2,%a0@ <== NOT EXECUTED
432ea: 605c bras 43348 <stat+0x7c> <== NOT EXECUTED
status = rtems_filesystem_evaluate_path( path, strlen( path ),
432ec: 2f04 movel %d4,%sp@- <== NOT EXECUTED
432ee: 240e movel %fp,%d2 <== NOT EXECUTED
432f0: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
432f6: 4eb9 0004 c38c jsr 4c38c <strlen> <== NOT EXECUTED
432fc: 7201 moveq #1,%d1 <== NOT EXECUTED
432fe: 2e81 movel %d1,%sp@ <== NOT EXECUTED
43300: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43302: 42a7 clrl %sp@- <== NOT EXECUTED
43304: 2f00 movel %d0,%sp@- <== NOT EXECUTED
43306: 2f04 movel %d4,%sp@- <== NOT EXECUTED
43308: 4eb9 0004 2764 jsr 42764 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
4330e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
43312: 4a80 tstl %d0 <== NOT EXECUTED
43314: 6632 bnes 43348 <stat+0x7c> <== NOT EXECUTED
/*
* Zero out the stat structure so the various support
* versions of stat don't have to.
*/
memset( buf, 0, sizeof(struct stat) );
43316: 4878 0046 pea 46 <DBL_MANT_DIG+0x11> <== NOT EXECUTED
4331a: 42a7 clrl %sp@- <== NOT EXECUTED
4331c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4331e: 4eb9 0004 b980 jsr 4b980 <memset> <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
43324: 206e fff4 moveal %fp@(-12),%a0 <== NOT EXECUTED
43328: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4332a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4332c: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
43330: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
43332: 2f02 movel %d2,%sp@- <== NOT EXECUTED
43334: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
43338: 4eb9 0004 2830 jsr 42830 <rtems_filesystem_freenode> <== NOT EXECUTED
return status;
4333e: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
43342: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
43346: 6002 bras 4334a <stat+0x7e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
status = rtems_filesystem_evaluate_path( path, strlen( path ),
0, &loc, _STAT_FOLLOW_LINKS );
if ( status != 0 )
return -1;
43348: 70ff moveq #-1,%d0 <== NOT EXECUTED
status = (*loc.handlers->fstat_h)( &loc, buf );
rtems_filesystem_freenode( &loc );
return status;
}
4334a: 4cee 001c ffdc moveml %fp@(-36),%d2-%d4 <== NOT EXECUTED
43350: 4e5e unlk %fp <== NOT EXECUTED
0004570c <statvfs>:
#include <sys/statvfs.h>
int
statvfs (const char *path, struct statvfs *sb)
{
4570c: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
45710: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
45714: 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 ) )
45718: 240e movel %fp,%d2 <== NOT EXECUTED
4571a: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
45720: 2f0a movel %a2,%sp@- <== NOT EXECUTED
#include <sys/statvfs.h>
int
statvfs (const char *path, struct statvfs *sb)
{
45722: 262e 000c movel %fp@(12),%d3 <== 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 ) )
45726: 4eb9 0005 0d10 jsr 50d10 <strlen> <== NOT EXECUTED
4572c: 7201 moveq #1,%d1 <== NOT EXECUTED
4572e: 2e81 movel %d1,%sp@ <== NOT EXECUTED
45730: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45732: 42a7 clrl %sp@- <== NOT EXECUTED
45734: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45736: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45738: 4eb9 0004 4484 jsr 44484 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
4573e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45742: 4a80 tstl %d0 <== NOT EXECUTED
45744: 6638 bnes 4577e <statvfs+0x72> <== NOT EXECUTED
return -1;
mt_entry = loc.mt_entry;
fs_mount_root = &mt_entry->mt_fs_root;
memset (sb, 0, sizeof (struct statvfs));
45746: 4878 0038 pea 38 <DBL_MANT_DIG+0x3> <== NOT EXECUTED
*/
if ( rtems_filesystem_evaluate_path( path, strlen( path ), 0x0, &loc, true ) )
return -1;
mt_entry = loc.mt_entry;
4574a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
fs_mount_root = &mt_entry->mt_fs_root;
memset (sb, 0, sizeof (struct statvfs));
4574e: 42a7 clrl %sp@- <== NOT EXECUTED
45750: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45752: 4eb9 0004 fb40 jsr 4fb40 <memset> <== NOT EXECUTED
result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );
45758: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
4575c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4575e: 486a 001c pea %a2@(28) <== NOT EXECUTED
45762: 2068 0044 moveal %a0@(68),%a0 <== NOT EXECUTED
45766: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45768: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4576a: 2d40 ffe8 movel %d0,%fp@(-24) <== NOT EXECUTED
4576e: 4eb9 0004 4550 jsr 44550 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
45774: 202e ffe8 movel %fp@(-24),%d0 <== NOT EXECUTED
45778: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4577c: 6002 bras 45780 <statvfs+0x74> <== NOT EXECUTED
* 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 ) )
return -1;
4577e: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = ( fs_mount_root->ops->statvfs_h )( fs_mount_root, sb );
rtems_filesystem_freenode( &loc );
return result;
}
45780: 4cee 040c ffdc moveml %fp@(-36),%d2-%d3/%a2 <== NOT EXECUTED
45786: 4e5e unlk %fp <== NOT EXECUTED
...
000451c8 <symlink>:
int symlink(
const char *actualpath,
const char *sympath
)
{
451c8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
451cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
451ce: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
451d2: 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 );
451d4: 240e movel %fp,%d2 <== NOT EXECUTED
451d6: 0682 ffff ffe4 addil #-28,%d2 <== NOT EXECUTED
451dc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
451de: 486e fffc pea %fp@(-4) <== NOT EXECUTED
451e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
451e4: 4eb9 0004 50e4 jsr 450e4 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
result = (*loc.ops->evalformake_h)( &sympath[i], &loc, &name_start );
451ea: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
451ee: d6ae fffc addl %fp@(-4),%d3 <== NOT EXECUTED
451f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
451f4: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
451f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
451fa: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
451fe: 4e90 jsr %a0@ <== NOT EXECUTED
if ( result != 0 )
45200: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
45204: 4a80 tstl %d0 <== NOT EXECUTED
45206: 662a bnes 45232 <symlink+0x6a> <== NOT EXECUTED
return -1;
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
45208: 2f2e fff8 movel %fp@(-8),%sp@- <== NOT EXECUTED
4520c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45210: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45214: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45216: 2068 0038 moveal %a0@(56),%a0 <== NOT EXECUTED
4521a: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
4521c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4521e: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
45222: 4eb9 0004 3fd0 jsr 43fd0 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
45228: 202e ffe0 movel %fp@(-32),%d0 <== NOT EXECUTED
4522c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45230: 6002 bras 45234 <symlink+0x6c> <== 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;
45232: 70ff moveq #-1,%d0 <== NOT EXECUTED
result = (*loc.ops->symlink_h)( &loc, actualpath, name_start);
rtems_filesystem_freenode( &loc );
return result;
}
45234: 242e ffd8 movel %fp@(-40),%d2 <== NOT EXECUTED
45238: 262e ffdc movel %fp@(-36),%d3 <== NOT EXECUTED
4523c: 4e5e unlk %fp <== NOT EXECUTED
0004469a <sync>:
* We have to extern it here.
*/
extern struct _reent * const _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
void sync(void)
{
4469a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* Walk the one used initially by RTEMS.
*/
_fwalk(_global_impure_ptr, sync_wrapper);
4469e: 487a ffce pea %pc@(4466e <sync_wrapper>) <== NOT EXECUTED
446a2: 2f39 0005 d402 movel 5d402 <_global_impure_ptr>,%sp@- <== NOT EXECUTED
446a8: 4eb9 0004 e7d0 jsr 4e7d0 <_fwalk> <== NOT EXECUTED
*/
/*
* Now walk all the per-thread reentrancy structures.
*/
rtems_iterate_over_all_threads(sync_per_thread);
446ae: 487a ff7c pea %pc@(4462c <sync_per_thread>) <== NOT EXECUTED
446b2: 4eb9 0004 7ab8 jsr 47ab8 <rtems_iterate_over_all_threads> <== NOT EXECUTED
446b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
446bc: 4e5e unlk %fp <== NOT EXECUTED
0004462c <sync_per_thread>:
fdatasync(fn);
}
/* iterate over all FILE *'s for this thread */
static void sync_per_thread(Thread_Control *t)
{
4462c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44630: 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;
44634: 2028 00fa movel %a0@(250),%d0 <== NOT EXECUTED
fdatasync(fn);
}
/* iterate over all FILE *'s for this thread */
static void sync_per_thread(Thread_Control *t)
{
44638: 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 ) {
4463a: 4a80 tstl %d0 <== NOT EXECUTED
4463c: 6728 beqs 44666 <sync_per_thread+0x3a> <== NOT EXECUTED
current_reent = _Thread_Executing->libc_reent;
4463e: 2279 0005 f9f2 moveal 5f9f2 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
44644: 2429 00fa movel %a1@(250),%d2 <== NOT EXECUTED
_Thread_Executing->libc_reent = this_reent;
44648: 2340 00fa movel %d0,%a1@(250) <== NOT EXECUTED
_fwalk (t->libc_reent, sync_wrapper);
4464c: 487a 0020 pea %pc@(4466e <sync_wrapper>) <== NOT EXECUTED
44650: 2f28 00fa movel %a0@(250),%sp@- <== NOT EXECUTED
44654: 4eb9 0004 e7d0 jsr 4e7d0 <_fwalk> <== NOT EXECUTED
_Thread_Executing->libc_reent = current_reent;
4465a: 2079 0005 f9f2 moveal 5f9f2 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
44660: 508f addql #8,%sp <== NOT EXECUTED
44662: 2142 00fa movel %d2,%a0@(250) <== NOT EXECUTED
}
}
44666: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4466a: 4e5e unlk %fp <== NOT EXECUTED
0004466e <sync_wrapper>:
/* XXX check standards -- Linux version appears to be void */
void _fwalk(struct _reent *, void *);
static void sync_wrapper(FILE *f)
{
4466e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44672: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int fn = fileno(f);
44674: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
44678: 4eb9 0004 dc58 jsr 4dc58 <fileno> <== NOT EXECUTED
4467e: 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);
44680: 2f00 movel %d0,%sp@- <== NOT EXECUTED
44682: 4eb9 0004 34dc jsr 434dc <fsync> <== NOT EXECUTED
fdatasync(fn);
44688: 508f addql #8,%sp <== NOT EXECUTED
4468a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
4468e: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
44692: 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);
44694: 4ef9 0004 3264 jmp 43264 <fdatasync> <== NOT EXECUTED
000451f0 <sysconf>:
long sysconf(
int name
)
{
if ( name == _SC_CLK_TCK )
451f0: 7002 moveq #2,%d0 <== NOT EXECUTED
*/
long sysconf(
int name
)
{
451f2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
451f6: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
451fa: 2f02 movel %d2,%sp@- <== NOT EXECUTED
if ( name == _SC_CLK_TCK )
451fc: b081 cmpl %d1,%d0 <== NOT EXECUTED
451fe: 6612 bnes 45212 <sysconf+0x22> <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
45200: 41f9 0005 c7b4 lea 5c7b4 <Configuration+0xc>,%a0 <== NOT EXECUTED
45206: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
4520c: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
45210: 6034 bras 45246 <sysconf+0x56> <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick());
if ( name == _SC_OPEN_MAX )
45212: 7004 moveq #4,%d0 <== NOT EXECUTED
45214: b081 cmpl %d1,%d0 <== NOT EXECUTED
45216: 6608 bnes 45220 <sysconf+0x30> <== NOT EXECUTED
return rtems_libio_number_iops;
45218: 2039 0005 c6d4 movel 5c6d4 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
4521e: 6026 bras 45246 <sysconf+0x56> <== NOT EXECUTED
if ( name == _SC_GETPW_R_SIZE_MAX )
return 1024;
45220: 203c 0000 0400 movel #1024,%d0 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick());
if ( name == _SC_OPEN_MAX )
return rtems_libio_number_iops;
if ( name == _SC_GETPW_R_SIZE_MAX )
45226: 7433 moveq #51,%d2 <== NOT EXECUTED
45228: b481 cmpl %d1,%d2 <== NOT EXECUTED
4522a: 671a beqs 45246 <sysconf+0x56> <== NOT EXECUTED
return 1024;
if ( name == _SC_PAGESIZE )
4522c: 143c 0008 moveb #8,%d2 <== NOT EXECUTED
return PAGE_SIZE;
45230: 303c 1000 movew #4096,%d0 <== NOT EXECUTED
return rtems_libio_number_iops;
if ( name == _SC_GETPW_R_SIZE_MAX )
return 1024;
if ( name == _SC_PAGESIZE )
45234: b481 cmpl %d1,%d2 <== NOT EXECUTED
45236: 670e beqs 45246 <sysconf+0x56> <== NOT EXECUTED
#if defined(__sparc__)
if ( name == 515 ) /* Solaris _SC_STACK_PROT */
return 0;
#endif
rtems_set_errno_and_return_minus_one( EINVAL );
45238: 4eb9 0004 ce08 jsr 4ce08 <__errno> <== NOT EXECUTED
4523e: 2040 moveal %d0,%a0 <== NOT EXECUTED
45240: 7016 moveq #22,%d0 <== NOT EXECUTED
45242: 2080 movel %d0,%a0@ <== NOT EXECUTED
45244: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
45246: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4524a: 4e5e unlk %fp <== NOT EXECUTED
...
00046b4c <tcdrain>:
#include <rtems/libio.h>
int tcdrain(
int fd
)
{
46b4c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return ioctl( fd, RTEMS_IO_TCDRAIN, 0 );
46b50: 42a7 clrl %sp@- <== NOT EXECUTED
46b52: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
46b56: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
46b5a: 4eb9 0004 d278 jsr 4d278 <ioctl> <== NOT EXECUTED
}
46b60: 4e5e unlk %fp <== NOT EXECUTED
000435a0 <tcflow>:
int tcflow (
int fd __attribute__((unused)),
int action
)
{
435a0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
case TCOOFF:
case TCOON:
case TCIOFF:
case TCION:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
435a4: 4eb9 0004 b2ac jsr 4b2ac <__errno> <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
}
435aa: 4e5e unlk %fp <== NOT EXECUTED
case TCOOFF:
case TCOON:
case TCIOFF:
case TCION:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
435ac: 2040 moveal %d0,%a0 <== NOT EXECUTED
435ae: 7016 moveq #22,%d0 <== NOT EXECUTED
435b0: 2080 movel %d0,%a0@ <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
}
435b2: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
000435b8 <tcflush>:
int tcflush (
int fd __attribute__((unused)),
int queue
)
{
435b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
switch (queue) {
case TCIFLUSH:
case TCOFLUSH:
case TCIOFLUSH:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
435bc: 4eb9 0004 b2ac jsr 4b2ac <__errno> <== NOT EXECUTED
/* fd is not validated */
/* When this is supported, implement it here */
rtems_set_errno_and_return_minus_one( ENOTSUP );
return 0;
}
435c2: 4e5e unlk %fp <== NOT EXECUTED
switch (queue) {
case TCIFLUSH:
case TCOFLUSH:
case TCIOFLUSH:
default:
rtems_set_errno_and_return_minus_one( EINVAL );
435c4: 2040 moveal %d0,%a0 <== NOT EXECUTED
435c6: 7016 moveq #22,%d0 <== NOT EXECUTED
435c8: 2080 movel %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;
}
435ca: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00044c14 <tcgetattr>:
int tcgetattr(
int fd,
struct termios *tp
)
{
44c14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return ioctl( fd, RTEMS_IO_GET_ATTRIBUTES, tp );
44c18: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
44c1c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
44c20: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
44c24: 4eb9 0004 b204 jsr 4b204 <ioctl> <== NOT EXECUTED
}
44c2a: 4e5e unlk %fp <== NOT EXECUTED
...
000435d0 <tcgetpgrp>:
#include <sys/types.h>
#include <unistd.h>
pid_t tcgetpgrp(int fd __attribute__((unused)))
{
435d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return getpid();
}
435d4: 4e5e unlk %fp <== NOT EXECUTED
#include <sys/types.h>
#include <unistd.h>
pid_t tcgetpgrp(int fd __attribute__((unused)))
{
return getpid();
435d6: 4ef9 0004 2a78 jmp 42a78 <getpid> <== NOT EXECUTED
000435dc <tcsendbreak>:
int tcsendbreak (
int fd __attribute__((unused)),
int duration __attribute__((unused)) )
{
return 0;
}
435dc: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/libio.h>
int tcsendbreak (
int fd __attribute__((unused)),
int duration __attribute__((unused)) )
{
435de: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
435e2: 4e5e unlk %fp <== NOT EXECUTED
...
00044c30 <tcsetattr>:
int tcsetattr(
int fd,
int opt,
struct termios *tp
)
{
44c30: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
44c34: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
44c38: 2f03 movel %d3,%sp@- <== NOT EXECUTED
44c3a: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
44c3e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44c40: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
switch (opt) {
44c44: 4a80 tstl %d0 <== NOT EXECUTED
44c46: 672c beqs 44c74 <tcsetattr+0x44> <== NOT EXECUTED
44c48: 7201 moveq #1,%d1 <== NOT EXECUTED
44c4a: b280 cmpl %d0,%d1 <== NOT EXECUTED
44c4c: 6710 beqs 44c5e <tcsetattr+0x2e> <== NOT EXECUTED
default:
rtems_set_errno_and_return_minus_one( ENOTSUP );
44c4e: 4eb9 0004 e100 jsr 4e100 <__errno> <== NOT EXECUTED
44c54: 2040 moveal %d0,%a0 <== NOT EXECUTED
44c56: 20bc 0000 0086 movel #134,%a0@ <== NOT EXECUTED
44c5c: 6034 bras 44c92 <tcsetattr+0x62> <== NOT EXECUTED
case TCSADRAIN:
if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)
44c5e: 42a7 clrl %sp@- <== NOT EXECUTED
44c60: 4878 0003 pea 3 <DIVIDE> <== NOT EXECUTED
44c64: 2f02 movel %d2,%sp@- <== NOT EXECUTED
44c66: 4eb9 0004 b204 jsr 4b204 <ioctl> <== NOT EXECUTED
44c6c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
44c70: 4a80 tstl %d0 <== NOT EXECUTED
44c72: 6d1e blts 44c92 <tcsetattr+0x62> <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
44c74: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
44c78: 7002 moveq #2,%d0 <== NOT EXECUTED
44c7a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
}
44c7e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44c82: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
44c86: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
44c8a: 4e5e unlk %fp <== NOT EXECUTED
return -1;
/*
* Fall through to....
*/
case TCSANOW:
return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );
44c8c: 4ef9 0004 b204 jmp 4b204 <ioctl> <== NOT EXECUTED
}
}
44c92: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
44c96: 70ff moveq #-1,%d0 <== NOT EXECUTED
44c98: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
44c9c: 4e5e unlk %fp <== NOT EXECUTED
000435e8 <tcsetpgrp>:
int tcsetpgrp(
int fd __attribute__((unused)),
pid_t pid __attribute__((unused)) )
{
return 0;
}
435e8: 4280 clrl %d0 <== NOT EXECUTED
#include <rtems/libio.h>
int tcsetpgrp(
int fd __attribute__((unused)),
pid_t pid __attribute__((unused)) )
{
435ea: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return 0;
}
435ee: 4e5e unlk %fp <== NOT EXECUTED
...
00045294 <timer_create>:
timer_t *timerid
)
{
POSIX_Timer_Control *ptimer;
if ( clock_id != CLOCK_REALTIME )
45294: 7001 moveq #1,%d0 <== NOT EXECUTED
int timer_create(
clockid_t clock_id,
struct sigevent *evp,
timer_t *timerid
)
{
45296: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4529a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4529c: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
452a0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
452a2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Timer_Control *ptimer;
if ( clock_id != CLOCK_REALTIME )
452a6: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
452aa: 6620 bnes 452cc <timer_create+0x38> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !timerid )
452ac: 4a8b tstl %a3 <== NOT EXECUTED
452ae: 671c beqs 452cc <timer_create+0x38> <== NOT EXECUTED
/*
* The data of the structure evp are checked in order to verify if they
* are coherent.
*/
if (evp != NULL) {
452b0: 4a8a tstl %a2 <== NOT EXECUTED
452b2: 6726 beqs 452da <timer_create+0x46> <== NOT EXECUTED
/* The structure has data */
if ( ( evp->sigev_notify != SIGEV_NONE ) &&
452b4: 2012 movel %a2@,%d0 <== NOT EXECUTED
452b6: 7201 moveq #1,%d1 <== NOT EXECUTED
452b8: 5380 subql #1,%d0 <== NOT EXECUTED
452ba: b280 cmpl %d0,%d1 <== NOT EXECUTED
452bc: 650e bcss 452cc <timer_create+0x38> <== NOT EXECUTED
( evp->sigev_notify != SIGEV_SIGNAL ) ) {
/* The value of the field sigev_notify is not valid */
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( !evp->sigev_signo )
452be: 202a 0004 movel %a2@(4),%d0 <== NOT EXECUTED
452c2: 6708 beqs 452cc <timer_create+0x38> <== NOT EXECUTED
static inline bool is_valid_signo(
int signo
)
{
return ((signo) >= 1 && (signo) <= 32 );
452c4: 5380 subql #1,%d0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( !is_valid_signo(evp->sigev_signo) )
452c6: 721f moveq #31,%d1 <== NOT EXECUTED
452c8: b280 cmpl %d0,%d1 <== NOT EXECUTED
452ca: 640e bccs 452da <timer_create+0x46> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
452cc: 4eb9 0004 d23c jsr 4d23c <__errno> <== NOT EXECUTED
452d2: 7216 moveq #22,%d1 <== NOT EXECUTED
452d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
452d6: 2081 movel %d1,%a0@ <== NOT EXECUTED
452d8: 6034 bras 4530e <timer_create+0x7a> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
452da: 2039 0005 e688 movel 5e688 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
452e0: 5280 addql #1,%d0 <== NOT EXECUTED
452e2: 23c0 0005 e688 movel %d0,5e688 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free timer control blocks.
*/
RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void )
{
return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information );
452e8: 4879 0005 e8f8 pea 5e8f8 <_POSIX_Timer_Information> <== NOT EXECUTED
452ee: 4eb9 0004 6f54 jsr 46f54 <_Objects_Allocate> <== NOT EXECUTED
/*
* Allocate a timer
*/
ptimer = _POSIX_Timer_Allocate();
if ( !ptimer ) {
452f4: 588f addql #4,%sp <== NOT EXECUTED
452f6: 2040 moveal %d0,%a0 <== NOT EXECUTED
452f8: 4a80 tstl %d0 <== NOT EXECUTED
452fa: 6616 bnes 45312 <timer_create+0x7e> <== NOT EXECUTED
_Thread_Enable_dispatch();
452fc: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EAGAIN );
45302: 4eb9 0004 d23c jsr 4d23c <__errno> <== NOT EXECUTED
45308: 2040 moveal %d0,%a0 <== NOT EXECUTED
4530a: 700b moveq #11,%d0 <== NOT EXECUTED
4530c: 2080 movel %d0,%a0@ <== NOT EXECUTED
4530e: 70ff moveq #-1,%d0 <== NOT EXECUTED
45310: 606a bras 4537c <timer_create+0xe8> <== NOT EXECUTED
}
/* The data of the created timer are stored to use them later */
ptimer->state = POSIX_TIMER_STATE_CREATE_NEW;
45312: 7002 moveq #2,%d0 <== NOT EXECUTED
45314: 1140 003c moveb %d0,%a0@(60) <== NOT EXECUTED
ptimer->thread_id = _Thread_Executing->Object.id;
45318: 2279 0005 eb12 moveal 5eb12 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4531e: 2169 0008 0038 movel %a1@(8),%a0@(56) <== NOT EXECUTED
if ( evp != NULL ) {
45324: 4a8a tstl %a2 <== NOT EXECUTED
45326: 6710 beqs 45338 <timer_create+0xa4> <== NOT EXECUTED
ptimer->inf.sigev_notify = evp->sigev_notify;
45328: 2152 003e movel %a2@,%a0@(62) <== NOT EXECUTED
ptimer->inf.sigev_signo = evp->sigev_signo;
4532c: 216a 0004 0042 movel %a2@(4),%a0@(66) <== NOT EXECUTED
ptimer->inf.sigev_value = evp->sigev_value;
45332: 216a 0008 0046 movel %a2@(8),%a0@(70) <== NOT EXECUTED
uint32_t name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
45338: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
4533c: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4533e: 2279 0005 e910 moveal 5e910 <_POSIX_Timer_Information+0x18>,%a1<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
uint32_t name
)
{
_Objects_Set_local_object(
45344: 3200 movew %d0,%d1 <== NOT EXECUTED
}
ptimer->overrun = 0;
45346: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED
ptimer->timer_data.it_value.tv_sec = 0;
4534a: 42a8 005a clrl %a0@(90) <== NOT EXECUTED
ptimer->timer_data.it_value.tv_nsec = 0;
4534e: 42a8 005e clrl %a0@(94) <== NOT EXECUTED
ptimer->timer_data.it_interval.tv_sec = 0;
45352: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
ptimer->timer_data.it_interval.tv_nsec = 0;
45356: 42a8 0056 clrl %a0@(86) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4535a: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
4535e: 42a8 002c clrl %a0@(44) <== NOT EXECUTED
the_watchdog->id = id;
45362: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
45366: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4536a: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
_Objects_Get_index( the_object->id ),
the_object
);
/* ASSERT: information->is_string == false */
the_object->name.name_u32 = name;
4536e: 42a8 000c clrl %a0@(12) <== NOT EXECUTED
_Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );
_Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);
*timerid = ptimer->Object.id;
45372: 2680 movel %d0,%a3@ <== NOT EXECUTED
_Thread_Enable_dispatch();
45374: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4537a: 4280 clrl %d0 <== NOT EXECUTED
}
4537c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
45380: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
45384: 4e5e unlk %fp <== NOT EXECUTED
00045bc0 <timer_delete>:
int timer_delete(
timer_t timerid
)
{
45bc0: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
45bc4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
timer_t id,
Objects_Locations *location
)
{
return (POSIX_Timer_Control *)
_Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
45bc6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45bca: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45bce: 4879 0005 f2f0 pea 5f2f0 <_POSIX_Timer_Information> <== NOT EXECUTED
45bd4: 4eb9 0004 7b8c jsr 47b8c <_Objects_Get> <== NOT EXECUTED
*/
POSIX_Timer_Control *ptimer;
Objects_Locations location;
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
45bda: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45bde: 2440 moveal %d0,%a2 <== NOT EXECUTED
45be0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
45be4: 663a bnes 45c20 <timer_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_POSIX_Timer_Information, &ptimer->Object );
45be6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45be8: 4879 0005 f2f0 pea 5f2f0 <_POSIX_Timer_Information> <== NOT EXECUTED
45bee: 4eb9 0004 77b0 jsr 477b0 <_Objects_Close> <== NOT EXECUTED
ptimer->state = POSIX_TIMER_STATE_FREE;
45bf4: 7001 moveq #1,%d0 <== NOT EXECUTED
45bf6: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
(void) _Watchdog_Remove( &ptimer->Timer );
45bfa: 486a 0010 pea %a2@(16) <== NOT EXECUTED
45bfe: 4eb9 0004 9578 jsr 49578 <_Watchdog_Remove> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free (
POSIX_Timer_Control *the_timer
)
{
_Objects_Free( &_POSIX_Timer_Information, &the_timer->Object );
45c04: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45c06: 4879 0005 f2f0 pea 5f2f0 <_POSIX_Timer_Information> <== NOT EXECUTED
45c0c: 4eb9 0004 7a28 jsr 47a28 <_Objects_Free> <== NOT EXECUTED
_POSIX_Timer_Free( ptimer );
_Thread_Enable_dispatch();
45c12: 4eb9 0004 85f2 jsr 485f2 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
45c18: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45c1c: 4280 clrl %d0 <== NOT EXECUTED
45c1e: 600e bras 45c2e <timer_delete+0x6e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
45c20: 4eb9 0004 ddc8 jsr 4ddc8 <__errno> <== NOT EXECUTED
45c26: 2040 moveal %d0,%a0 <== NOT EXECUTED
45c28: 7016 moveq #22,%d0 <== NOT EXECUTED
45c2a: 2080 movel %d0,%a0@ <== NOT EXECUTED
45c2c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
45c2e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
45c32: 4e5e unlk %fp <== NOT EXECUTED
...
00046660 <timer_getoverrun>:
* its execution, _POSIX_Timer_TSR will have to set this counter to 0.
*/
int timer_getoverrun(
timer_t timerid
)
{
46660: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
46664: 2f02 movel %d2,%sp@- <== NOT EXECUTED
timer_t id,
Objects_Locations *location
)
{
return (POSIX_Timer_Control *)
_Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
46666: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4666a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4666e: 4879 0006 071c pea 6071c <_POSIX_Timer_Information> <== NOT EXECUTED
46674: 4eb9 0004 85b4 jsr 485b4 <_Objects_Get> <== NOT EXECUTED
int overrun;
POSIX_Timer_Control *ptimer;
Objects_Locations location;
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
4667a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4667e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46682: 6612 bnes 46696 <timer_getoverrun+0x36> <== NOT EXECUTED
case OBJECTS_LOCAL:
overrun = ptimer->overrun;
46684: 2040 moveal %d0,%a0 <== NOT EXECUTED
46686: 2428 0066 movel %a0@(102),%d2 <== NOT EXECUTED
ptimer->overrun = 0;
4668a: 42a8 0066 clrl %a0@(102) <== NOT EXECUTED
_Thread_Enable_dispatch();
4668e: 4eb9 0004 901a jsr 4901a <_Thread_Enable_dispatch> <== NOT EXECUTED
return overrun;
46694: 600e bras 466a4 <timer_getoverrun+0x44> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46696: 4eb9 0004 e4b0 jsr 4e4b0 <__errno> <== NOT EXECUTED
4669c: 74ff moveq #-1,%d2 <== NOT EXECUTED
4669e: 2040 moveal %d0,%a0 <== NOT EXECUTED
466a0: 7016 moveq #22,%d0 <== NOT EXECUTED
466a2: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
466a4: 2002 movel %d2,%d0 <== NOT EXECUTED
466a6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
466aa: 4e5e unlk %fp <== NOT EXECUTED
...
000466b0 <timer_gettime>:
int timer_gettime(
timer_t timerid,
struct itimerspec *value
)
{
466b0: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
466b4: 2f0b movel %a3,%sp@- <== NOT EXECUTED
466b6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
466b8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
POSIX_Timer_Control *ptimer;
Objects_Locations location;
struct timespec current_time;
Watchdog_Interval left;
if ( !value )
466bc: 4a8a tstl %a2 <== NOT EXECUTED
466be: 6760 beqs 46720 <timer_gettime+0x70> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
/* Reads the current time */
_TOD_Get( ¤t_time );
466c0: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
466c4: 4eb9 0004 7c50 jsr 47c50 <_TOD_Get> <== NOT EXECUTED
466ca: 486e fffc pea %fp@(-4) <== NOT EXECUTED
466ce: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
466d2: 4879 0006 071c pea 6071c <_POSIX_Timer_Information> <== NOT EXECUTED
466d8: 4eb9 0004 85b4 jsr 485b4 <_Objects_Get> <== NOT EXECUTED
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
466de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
466e2: 2640 moveal %d0,%a3 <== NOT EXECUTED
466e4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
466e8: 6636 bnes 46720 <timer_gettime+0x70> <== NOT EXECUTED
left =
(ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */
_Watchdog_Ticks_since_boot; /* now */
_Timespec_From_ticks( left, &value->it_value );
466ea: 486a 0008 pea %a2@(8) <== NOT EXECUTED
case OBJECTS_LOCAL:
/* Calculates the time left before the timer finishes */
left =
(ptimer->Timer.start_time + ptimer->Timer.initial) - /* expire */
466ee: 222b 001c movel %a3@(28),%d1 <== NOT EXECUTED
466f2: d2ab 0024 addl %a3@(36),%d1 <== NOT EXECUTED
466f6: 2039 0006 05d6 movel 605d6 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
_Watchdog_Ticks_since_boot; /* now */
_Timespec_From_ticks( left, &value->it_value );
466fc: 9280 subl %d0,%d1 <== NOT EXECUTED
466fe: 2f01 movel %d1,%sp@- <== NOT EXECUTED
46700: 4eb9 0004 9ae0 jsr 49ae0 <_Timespec_From_ticks> <== NOT EXECUTED
value->it_interval = ptimer->timer_data.it_interval;
46706: 202b 0052 movel %a3@(82),%d0 <== NOT EXECUTED
4670a: 222b 0056 movel %a3@(86),%d1 <== NOT EXECUTED
4670e: 2480 movel %d0,%a2@ <== NOT EXECUTED
46710: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
_Thread_Enable_dispatch();
46714: 4eb9 0004 901a jsr 4901a <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
4671a: 508f addql #8,%sp <== NOT EXECUTED
4671c: 4280 clrl %d0 <== NOT EXECUTED
4671e: 600e bras 4672e <timer_gettime+0x7e> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
46720: 4eb9 0004 e4b0 jsr 4e4b0 <__errno> <== NOT EXECUTED
46726: 2040 moveal %d0,%a0 <== NOT EXECUTED
46728: 7016 moveq #22,%d0 <== NOT EXECUTED
4672a: 2080 movel %d0,%a0@ <== NOT EXECUTED
4672c: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4672e: 246e ffec moveal %fp@(-20),%a2 <== NOT EXECUTED
46732: 266e fff0 moveal %fp@(-16),%a3 <== NOT EXECUTED
46736: 4e5e unlk %fp <== NOT EXECUTED
...
00045388 <timer_settime>:
timer_t timerid,
int flags,
const struct itimerspec *value,
struct itimerspec *ovalue
)
{
45388: 4e56 ffd4 linkw %fp,#-44 <== NOT EXECUTED
4538c: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
45390: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
45394: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
45398: 242e 0014 movel %fp@(20),%d2 <== NOT EXECUTED
Objects_Locations location;
bool activated;
uint32_t initial_period;
struct itimerspec normalize;
if ( !value )
4539c: 4a8b tstl %a3 <== NOT EXECUTED
4539e: 6700 017c beqw 4551c <timer_settime+0x194> <== NOT EXECUTED
/*
* First, it verifies if the structure "value" is correct
* if the number of nanoseconds is not correct return EINVAL
*/
if ( !_Timespec_Is_valid( &(value->it_value) ) ) {
453a2: 486b 0008 pea %a3@(8) <== NOT EXECUTED
453a6: 45f9 0004 8908 lea 48908 <_Timespec_Is_valid>,%a2 <== NOT EXECUTED
453ac: 4e92 jsr %a2@ <== NOT EXECUTED
453ae: 588f addql #4,%sp <== NOT EXECUTED
453b0: 4a00 tstb %d0 <== NOT EXECUTED
453b2: 6700 0168 beqw 4551c <timer_settime+0x194> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {
453b6: 2f0b movel %a3,%sp@- <== NOT EXECUTED
453b8: 4e92 jsr %a2@ <== NOT EXECUTED
453ba: 588f addql #4,%sp <== NOT EXECUTED
453bc: 4a00 tstb %d0 <== NOT EXECUTED
453be: 6700 015c beqw 4551c <timer_settime+0x194> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {
453c2: 7004 moveq #4,%d0 <== NOT EXECUTED
453c4: b083 cmpl %d3,%d0 <== NOT EXECUTED
453c6: 6706 beqs 453ce <timer_settime+0x46> <== NOT EXECUTED
453c8: 4a83 tstl %d3 <== NOT EXECUTED
453ca: 6600 0150 bnew 4551c <timer_settime+0x194> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
}
normalize = *value;
453ce: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
453d2: 2f0b movel %a3,%sp@- <== NOT EXECUTED
453d4: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
453d8: 4eb9 0004 dae8 jsr 4dae8 <memcpy> <== NOT EXECUTED
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
453de: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
453e2: 7004 moveq #4,%d0 <== NOT EXECUTED
453e4: b083 cmpl %d3,%d0 <== NOT EXECUTED
453e6: 6638 bnes 45420 <timer_settime+0x98> <== NOT EXECUTED
struct timespec now;
_TOD_Get( &now );
453e8: 45ee fff4 lea %fp@(-12),%a2 <== NOT EXECUTED
/* Check for seconds in the past */
if ( _Timespec_Greater_than( &now, &normalize.it_value ) )
453ec: 260e movel %fp,%d3 <== NOT EXECUTED
453ee: 0683 ffff ffec addil #-20,%d3 <== NOT EXECUTED
normalize = *value;
/* Convert absolute to relative time */
if (flags == TIMER_ABSTIME) {
struct timespec now;
_TOD_Get( &now );
453f4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
453f6: 4eb9 0004 6a70 jsr 46a70 <_TOD_Get> <== NOT EXECUTED
/* Check for seconds in the past */
if ( _Timespec_Greater_than( &now, &normalize.it_value ) )
453fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
453fe: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45400: 4eb9 0004 88d8 jsr 488d8 <_Timespec_Greater_than> <== NOT EXECUTED
45406: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4540a: 4a00 tstb %d0 <== NOT EXECUTED
4540c: 6600 010e bnew 4551c <timer_settime+0x194> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
_Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
45410: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45412: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45414: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45416: 4eb9 0004 8930 jsr 48930 <_Timespec_Subtract> <== NOT EXECUTED
4541c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
timer_t id,
Objects_Locations *location
)
{
return (POSIX_Timer_Control *)
_Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
45420: 486e fffc pea %fp@(-4) <== NOT EXECUTED
45424: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
45428: 4879 0005 e8f8 pea 5e8f8 <_POSIX_Timer_Information> <== NOT EXECUTED
4542e: 4eb9 0004 73ac jsr 473ac <_Objects_Get> <== NOT EXECUTED
* something with the structure of times of the timer: to stop, start
* or start it again
*/
ptimer = _POSIX_Timer_Get( timerid, &location );
switch ( location ) {
45434: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45438: 2440 moveal %d0,%a2 <== NOT EXECUTED
4543a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4543e: 6600 00dc bnew 4551c <timer_settime+0x194> <== NOT EXECUTED
case OBJECTS_LOCAL:
/* First, it verifies if the timer must be stopped */
if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
45442: 4aae ffec tstl %fp@(-20) <== NOT EXECUTED
45446: 6650 bnes 45498 <timer_settime+0x110> <== NOT EXECUTED
45448: 4aae fff0 tstl %fp@(-16) <== NOT EXECUTED
4544c: 664a bnes 45498 <timer_settime+0x110> <== NOT EXECUTED
/* Stop the timer */
(void) _Watchdog_Remove( &ptimer->Timer );
4544e: 486a 0010 pea %a2@(16) <== NOT EXECUTED
45452: 4eb9 0004 8d5c jsr 48d5c <_Watchdog_Remove> <== NOT EXECUTED
/* The old data of the timer are returned */
if ( ovalue )
45458: 588f addql #4,%sp <== NOT EXECUTED
4545a: 4a82 tstl %d2 <== NOT EXECUTED
4545c: 6714 beqs 45472 <timer_settime+0xea> <== NOT EXECUTED
*ovalue = ptimer->timer_data;
4545e: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
45462: 486a 0052 pea %a2@(82) <== NOT EXECUTED
45466: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45468: 4eb9 0004 dae8 jsr 4dae8 <memcpy> <== NOT EXECUTED
4546e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
/* The new data are set */
ptimer->timer_data = normalize;
45472: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
45476: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
4547a: 486a 0052 pea %a2@(82) <== NOT EXECUTED
4547e: 4eb9 0004 dae8 jsr 4dae8 <memcpy> <== NOT EXECUTED
/* Indicates that the timer is created and stopped */
ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;
45484: 7004 moveq #4,%d0 <== NOT EXECUTED
45486: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
/* Returns with success */
_Thread_Enable_dispatch();
4548a: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
45490: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45494: 6000 0082 braw 45518 <timer_settime+0x190> <== NOT EXECUTED
}
/* Convert from seconds and nanoseconds to ticks */
ptimer->ticks = _Timespec_To_ticks( &value->it_interval );
45498: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4549a: 47f9 0004 8974 lea 48974 <_Timespec_To_ticks>,%a3 <== NOT EXECUTED
454a0: 4e93 jsr %a3@ <== NOT EXECUTED
454a2: 2540 0062 movel %d0,%a2@(98) <== NOT EXECUTED
initial_period = _Timespec_To_ticks( &normalize.it_value );
454a6: 486e ffec pea %fp@(-20) <== NOT EXECUTED
454aa: 4e93 jsr %a3@ <== NOT EXECUTED
activated = _POSIX_Timer_Insert_helper(
454ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
454ae: 4879 0004 5534 pea 45534 <_POSIX_Timer_TSR> <== NOT EXECUTED
454b4: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
454b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
454ba: 486a 0010 pea %a2@(16) <== NOT EXECUTED
454be: 4eb9 0004 ad44 jsr 4ad44 <_POSIX_Timer_Insert_helper> <== NOT EXECUTED
initial_period,
ptimer->Object.id,
_POSIX_Timer_TSR,
ptimer
);
if ( !activated ) {
454c4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
454c8: 4a00 tstb %d0 <== NOT EXECUTED
454ca: 6608 bnes 454d4 <timer_settime+0x14c> <== NOT EXECUTED
_Thread_Enable_dispatch();
454cc: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED
454d2: 6044 bras 45518 <timer_settime+0x190> <== NOT EXECUTED
/*
* The timer has been started and is running. So we return the
* old ones in "ovalue"
*/
if ( ovalue )
454d4: 4a82 tstl %d2 <== NOT EXECUTED
454d6: 6714 beqs 454ec <timer_settime+0x164> <== NOT EXECUTED
*ovalue = ptimer->timer_data;
454d8: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
454dc: 486a 0052 pea %a2@(82) <== NOT EXECUTED
454e0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
454e2: 4eb9 0004 dae8 jsr 4dae8 <memcpy> <== NOT EXECUTED
454e8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
ptimer->timer_data = normalize;
454ec: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
454f0: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
454f4: 486a 0052 pea %a2@(82) <== NOT EXECUTED
454f8: 4eb9 0004 dae8 jsr 4dae8 <memcpy> <== NOT EXECUTED
/* Indicate that the time is running */
ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;
454fe: 7003 moveq #3,%d0 <== NOT EXECUTED
45500: 1540 003c moveb %d0,%a2@(60) <== NOT EXECUTED
_TOD_Get( &ptimer->time );
45504: 486a 006a pea %a2@(106) <== NOT EXECUTED
45508: 4eb9 0004 6a70 jsr 46a70 <_TOD_Get> <== NOT EXECUTED
_Thread_Enable_dispatch();
4550e: 4eb9 0004 7e12 jsr 47e12 <_Thread_Enable_dispatch> <== NOT EXECUTED
return 0;
45514: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45518: 4280 clrl %d0 <== NOT EXECUTED
4551a: 600e bras 4552a <timer_settime+0x1a2> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
rtems_set_errno_and_return_minus_one( EINVAL );
4551c: 4eb9 0004 d23c jsr 4d23c <__errno> <== NOT EXECUTED
45522: 2040 moveal %d0,%a0 <== NOT EXECUTED
45524: 7016 moveq #22,%d0 <== NOT EXECUTED
45526: 2080 movel %d0,%a0@ <== NOT EXECUTED
45528: 70ff moveq #-1,%d0 <== NOT EXECUTED
}
4552a: 4cee 0c0c ffd4 moveml %fp@(-44),%d2-%d3/%a2-%a3 <== NOT EXECUTED
45530: 4e5e unlk %fp <== NOT EXECUTED
00044fb0 <times>:
*/
clock_t times(
struct tms *ptms
)
{
44fb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _times( ptms );
}
44fb4: 4e5e unlk %fp <== NOT EXECUTED
clock_t times(
struct tms *ptms
)
{
return _times( ptms );
44fb6: 4ef9 0004 4f1c jmp 44f1c <_times> <== NOT EXECUTED
000483d0 <truncate>:
int truncate(
const char *path,
off_t length
)
{
483d0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
483d4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
483d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_WRONLY );
483d8: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
483dc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
483e0: 4eb9 0004 6470 jsr 46470 <open> <== NOT EXECUTED
if ( fd == -1 )
483e6: 508f addql #8,%sp <== NOT EXECUTED
)
{
int status;
int fd;
fd = open( path, O_WRONLY );
483e8: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( fd == -1 )
483ea: 70ff moveq #-1,%d0 <== NOT EXECUTED
483ec: b082 cmpl %d2,%d0 <== NOT EXECUTED
483ee: 6720 beqs 48410 <truncate+0x40> <== NOT EXECUTED
return -1;
status = ftruncate( fd, length );
483f0: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
483f4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
483f8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
483fa: 4eb9 0004 d198 jsr 4d198 <ftruncate> <== NOT EXECUTED
48400: 2600 movel %d0,%d3 <== NOT EXECUTED
(void) close( fd );
48402: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48404: 4eb9 0004 503c jsr 4503c <close> <== NOT EXECUTED
return status;
4840a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4840e: 6002 bras 48412 <truncate+0x42> <== NOT EXECUTED
int status;
int fd;
fd = open( path, O_WRONLY );
if ( fd == -1 )
return -1;
48410: 76ff moveq #-1,%d3 <== NOT EXECUTED
status = ftruncate( fd, length );
(void) close( fd );
return status;
}
48412: 2003 movel %d3,%d0 <== NOT EXECUTED
48414: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48418: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4841c: 4e5e unlk %fp <== NOT EXECUTED
0004545a <ualarm>:
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
4545a: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4545e: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
45462: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
/*
* Initialize the timer used to implement alarm().
*/
if ( !the_timer->routine ) {
45466: 4ab9 0005 fb28 tstl 5fb28 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED
4546c: 6620 bnes 4548e <ualarm+0x34> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4546e: 42b9 0005 fb14 clrl 5fb14 <_POSIX_signals_Ualarm_timer+0x8><== NOT EXECUTED
the_watchdog->routine = routine;
45474: 203c 0004 5418 movel #283672,%d0 <== NOT EXECUTED
the_watchdog->id = id;
4547a: 42b9 0005 fb2c clrl 5fb2c <_POSIX_signals_Ualarm_timer+0x20><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45480: 23c0 0005 fb28 movel %d0,5fb28 <_POSIX_signals_Ualarm_timer+0x1c><== NOT EXECUTED
the_watchdog->id = id;
the_watchdog->user_data = user_data;
45486: 42b9 0005 fb30 clrl 5fb30 <_POSIX_signals_Ualarm_timer+0x24><== NOT EXECUTED
4548c: 6056 bras 454e4 <ualarm+0x8a> <== NOT EXECUTED
_Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
} else {
Watchdog_States state;
state = _Watchdog_Remove( the_timer );
4548e: 4879 0005 fb0c pea 5fb0c <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED
45494: 4eb9 0004 8bf0 jsr 48bf0 <_Watchdog_Remove> <== NOT EXECUTED
if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
4549a: 588f addql #4,%sp <== NOT EXECUTED
4549c: 7201 moveq #1,%d1 <== NOT EXECUTED
4549e: 5580 subql #2,%d0 <== NOT EXECUTED
454a0: b280 cmpl %d0,%d1 <== NOT EXECUTED
454a2: 6540 bcss 454e4 <ualarm+0x8a> <== NOT EXECUTED
* boot. Since alarm() is dealing in seconds, we must account for
* this.
*/
ticks = the_timer->initial;
ticks -= (the_timer->stop_time - the_timer->start_time);
454a4: 2039 0005 fb20 movel 5fb20 <_POSIX_signals_Ualarm_timer+0x14>,%d0<== NOT EXECUTED
454aa: d0b9 0005 fb18 addl 5fb18 <_POSIX_signals_Ualarm_timer+0xc>,%d0<== NOT EXECUTED
/* remaining is now in ticks */
_Timespec_From_ticks( ticks, &tp );
454b0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
454b4: 90b9 0005 fb24 subl 5fb24 <_POSIX_signals_Ualarm_timer+0x18>,%d0<== NOT EXECUTED
remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
454ba: 283c 000f 4240 movel #1000000,%d4 <== NOT EXECUTED
ticks = the_timer->initial;
ticks -= (the_timer->stop_time - the_timer->start_time);
/* remaining is now in ticks */
_Timespec_From_ticks( ticks, &tp );
454c0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
454c2: 4eb9 0004 8708 jsr 48708 <_Timespec_From_ticks> <== NOT EXECUTED
remaining = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;
454c8: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
454cc: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
remaining += tp.tv_nsec / 1000;
454d0: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED
454d6: 508f addql #8,%sp <== NOT EXECUTED
454d8: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
454dc: 4c44 2802 remsl %d4,%d2,%d2 <== NOT EXECUTED
454e0: d480 addl %d0,%d2 <== NOT EXECUTED
454e2: 6002 bras 454e6 <ualarm+0x8c> <== NOT EXECUTED
useconds_t ualarm(
useconds_t useconds,
useconds_t interval
)
{
useconds_t remaining = 0;
454e4: 4282 clrl %d2 <== NOT EXECUTED
/*
* If useconds is non-zero, then the caller wants to schedule
* the alarm repeatedly at that interval. If the interval is
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
454e6: 4a83 tstl %d3 <== NOT EXECUTED
454e8: 674e beqs 45538 <ualarm+0xde> <== NOT EXECUTED
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
454ea: 283c 0000 03e8 movel #1000,%d4 <== NOT EXECUTED
ticks = _Timespec_To_ticks( &tp );
454f0: 45f9 0004 8788 lea 48788 <_Timespec_To_ticks>,%a2 <== NOT EXECUTED
* less than a single clock tick, then fudge it to a clock tick.
*/
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
454f6: 223c 000f 4240 movel #1000000,%d1 <== NOT EXECUTED
454fc: 4c41 3000 remul %d1,%d0,%d3 <== NOT EXECUTED
45500: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED
45504: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
45508: 4c00 4800 mulsl %d0,%d4 <== NOT EXECUTED
ticks = _Timespec_To_ticks( &tp );
4550c: 260e movel %fp,%d3 <== NOT EXECUTED
4550e: 5183 subql #8,%d3 <== NOT EXECUTED
*/
if ( useconds ) {
Watchdog_Interval ticks;
tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;
tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;
45510: 2d44 fffc movel %d4,%fp@(-4) <== NOT EXECUTED
ticks = _Timespec_To_ticks( &tp );
45514: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45516: 4e92 jsr %a2@ <== NOT EXECUTED
if ( ticks == 0 )
ticks = 1;
_Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );
45518: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4551a: 4e92 jsr %a2@ <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4551c: 4879 0005 fb0c pea 5fb0c <_POSIX_signals_Ualarm_timer> <== NOT EXECUTED
45522: 4879 0005 f3b8 pea 5f3b8 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45528: 23c0 0005 fb18 movel %d0,5fb18 <_POSIX_signals_Ualarm_timer+0xc><== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4552e: 4eb9 0004 8ac8 jsr 48ac8 <_Watchdog_Insert> <== NOT EXECUTED
45534: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
}
return remaining;
}
45538: 2002 movel %d2,%d0 <== NOT EXECUTED
4553a: 4cee 041c ffe8 moveml %fp@(-24),%d2-%d4/%a2 <== NOT EXECUTED
45540: 4e5e unlk %fp <== NOT EXECUTED
00045f2c <umask>:
#include <rtems/libio_.h>
mode_t umask(
mode_t cmask
)
{
45f2c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
mode_t old_mask;
old_mask = rtems_filesystem_umask;
45f30: 2079 0005 de20 moveal 5de20 <rtems_current_user_env>,%a0 <== NOT EXECUTED
45f36: 2028 002c movel %a0@(44),%d0 <== NOT EXECUTED
rtems_filesystem_umask = cmask;
45f3a: 216e 0008 002c movel %fp@(8),%a0@(44) <== NOT EXECUTED
return old_mask;
}
45f40: 4e5e unlk %fp <== NOT EXECUTED
00045404 <uname>:
*/
int uname(
struct utsname *name
)
{
45404: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
45408: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
4540c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
release = 5.3
version = Generic_101318-12
machine = sun4m
*/
if ( !name )
45410: 4a8a tstl %a2 <== NOT EXECUTED
45412: 6610 bnes 45424 <uname+0x20> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EFAULT );
45414: 4eb9 0004 d510 jsr 4d510 <__errno> <== NOT EXECUTED
4541a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4541c: 700e moveq #14,%d0 <== NOT EXECUTED
4541e: 2080 movel %d0,%a0@ <== NOT EXECUTED
45420: 70ff moveq #-1,%d0 <== NOT EXECUTED
45422: 6074 bras 45498 <uname+0x94> <== NOT EXECUTED
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
45424: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
45428: 47f9 0004 e8cc lea 4e8cc <strncpy>,%a3 <== NOT EXECUTED
4542e: 4879 0005 c2c1 pea 5c2c1 <rtems_filesystem_default_pathconf+0xb5><== NOT EXECUTED
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
45434: 49f9 0004 e128 lea 4e128 <snprintf>,%a4 <== NOT EXECUTED
*/
if ( !name )
rtems_set_errno_and_return_minus_one( EFAULT );
strncpy( name->sysname, "RTEMS", sizeof(name->sysname) );
4543a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4543c: 4e93 jsr %a3@ <== NOT EXECUTED
snprintf( name->nodename, sizeof(name->nodename), "Node %" PRId16, _Objects_Local_node );
4543e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
45442: 4879 0005 c2c7 pea 5c2c7 <rtems_filesystem_default_pathconf+0xbb><== NOT EXECUTED
45448: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
4544c: 486a 0020 pea %a2@(32) <== NOT EXECUTED
45450: 4e94 jsr %a4@ <== NOT EXECUTED
strncpy( name->release, RTEMS_VERSION, sizeof(name->release) );
45452: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
45456: 4879 0005 c2cf pea 5c2cf <rtems_filesystem_default_pathconf+0xc3><== NOT EXECUTED
4545c: 486a 0040 pea %a2@(64) <== NOT EXECUTED
45460: 4e93 jsr %a3@ <== NOT EXECUTED
strncpy( name->version, "", sizeof(name->version) );
45462: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
45466: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
4546a: 4879 0005 c2c0 pea 5c2c0 <rtems_filesystem_default_pathconf+0xb4><== NOT EXECUTED
45470: 486a 0060 pea %a2@(96) <== NOT EXECUTED
45474: 4e93 jsr %a3@ <== NOT EXECUTED
snprintf( name->machine, sizeof(name->machine), "%s/%s", CPU_NAME, CPU_MODEL_NAME );
45476: 4879 0005 c2d9 pea 5c2d9 <rtems_filesystem_default_pathconf+0xcd><== NOT EXECUTED
4547c: 4879 0005 c2e5 pea 5c2e5 <rtems_filesystem_default_pathconf+0xd9><== NOT EXECUTED
45482: 4879 0005 c2f7 pea 5c2f7 <rtems_filesystem_default_pathconf+0xeb><== NOT EXECUTED
45488: 4878 0020 pea 20 <OPER2+0xc> <== NOT EXECUTED
4548c: 486a 0080 pea %a2@(128) <== NOT EXECUTED
45490: 4e94 jsr %a4@ <== NOT EXECUTED
return 0;
45492: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
45496: 4280 clrl %d0 <== NOT EXECUTED
}
45498: 4cee 1c00 fff4 moveml %fp@(-12),%a2-%a4 <== NOT EXECUTED
4549e: 4e5e unlk %fp <== NOT EXECUTED
...
00045af4 <unlink>:
#include <rtems/seterr.h>
int unlink(
const char *path
)
{
45af4: 4e56 ffbc linkw %fp,#-68 <== NOT EXECUTED
45af8: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
45afc: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Get the node to be unlinked. Find the parent path first.
*/
parentpathlen = rtems_filesystem_dirname ( path );
45b00: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b02: 4eb9 0004 33d0 jsr 433d0 <rtems_filesystem_dirname> <== NOT EXECUTED
if ( parentpathlen == 0 )
45b08: 588f addql #4,%sp <== NOT EXECUTED
/*
* Get the node to be unlinked. Find the parent path first.
*/
parentpathlen = rtems_filesystem_dirname ( path );
45b0a: 2a00 movel %d0,%d5 <== NOT EXECUTED
45b0c: 200e movel %fp,%d0 <== NOT EXECUTED
45b0e: 0680 ffff ffe8 addil #-24,%d0 <== NOT EXECUTED
if ( parentpathlen == 0 )
45b14: 4a85 tstl %d5 <== NOT EXECUTED
45b16: 6616 bnes 45b2e <unlink+0x3a> <== NOT EXECUTED
rtems_filesystem_get_start_loc( path, &i, &parentloc );
45b18: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45b1a: 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;
45b1e: 4204 clrb %d4 <== NOT EXECUTED
*/
parentpathlen = rtems_filesystem_dirname ( path );
if ( parentpathlen == 0 )
rtems_filesystem_get_start_loc( path, &i, &parentloc );
45b20: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b22: 4eb9 0004 41f4 jsr 441f4 <rtems_filesystem_get_start_loc> <== NOT EXECUTED
45b28: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45b2c: 601e bras 45b4c <unlink+0x58> <== NOT EXECUTED
else {
result = rtems_filesystem_evaluate_path( path, parentpathlen,
45b2e: 42a7 clrl %sp@- <== NOT EXECUTED
45b30: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45b32: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
45b36: 2f05 movel %d5,%sp@- <== NOT EXECUTED
45b38: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b3a: 4eb9 0004 3384 jsr 43384 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
RTEMS_LIBIO_PERMS_WRITE,
&parentloc,
false );
if ( result != 0 )
45b40: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45b44: 4a80 tstl %d0 <== NOT EXECUTED
45b46: 6600 00c2 bnew 45c0a <unlink+0x116> <== NOT EXECUTED
return -1;
free_parentloc = true;
45b4a: 7801 moveq #1,%d4 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
45b4c: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
45b50: 260e movel %fp,%d3 <== NOT EXECUTED
45b52: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
45b58: 240e movel %fp,%d2 <== NOT EXECUTED
45b5a: 0682 ffff ffd4 addil #-44,%d2 <== NOT EXECUTED
name = path + parentpathlen;
45b60: d5c5 addal %d5,%a2 <== NOT EXECUTED
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
45b62: 47f9 0005 14b0 lea 514b0 <strlen>,%a3 <== NOT EXECUTED
/*
* Start from the parent to find the node that should be under it.
*/
loc = parentloc;
45b68: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45b6a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45b6c: 4eb9 0005 09b8 jsr 509b8 <memcpy> <== NOT EXECUTED
name = path + parentpathlen;
name += rtems_filesystem_prefix_separators( name, strlen( name ) );
45b72: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b74: 4e93 jsr %a3@ <== NOT EXECUTED
45b76: 2e80 movel %d0,%sp@ <== NOT EXECUTED
45b78: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b7a: 4eb9 0004 3412 jsr 43412 <rtems_filesystem_prefix_separators><== NOT EXECUTED
45b80: d5c0 addal %d0,%a2 <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
45b82: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b84: 4e93 jsr %a3@ <== NOT EXECUTED
45b86: 4297 clrl %sp@ <== NOT EXECUTED
45b88: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45b8a: 42a7 clrl %sp@- <== NOT EXECUTED
45b8c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45b8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45b90: 4eb9 0004 3314 jsr 43314 <rtems_filesystem_evaluate_relative_path><== NOT EXECUTED
0, &loc, false );
if ( result != 0 ) {
45b96: 4fef 0028 lea %sp@(40),%sp <== NOT EXECUTED
45b9a: 4a80 tstl %d0 <== NOT EXECUTED
45b9c: 6710 beqs 45bae <unlink+0xba> <== NOT EXECUTED
if ( free_parentloc )
45b9e: 4a04 tstb %d4 <== NOT EXECUTED
45ba0: 6768 beqs 45c0a <unlink+0x116> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
45ba2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45ba4: 4eb9 0004 3450 jsr 43450 <rtems_filesystem_freenode> <== NOT EXECUTED
45baa: 588f addql #4,%sp <== NOT EXECUTED
45bac: 605c bras 45c0a <unlink+0x116> <== NOT EXECUTED
return -1;
}
if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) {
45bae: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
45bb2: 45f9 0004 3450 lea 43450 <rtems_filesystem_freenode>,%a2 <== NOT EXECUTED
45bb8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45bba: 2068 0010 moveal %a0@(16),%a0 <== NOT EXECUTED
45bbe: 4e90 jsr %a0@ <== NOT EXECUTED
45bc0: 588f addql #4,%sp <== NOT EXECUTED
45bc2: 7201 moveq #1,%d1 <== NOT EXECUTED
45bc4: b280 cmpl %d0,%d1 <== NOT EXECUTED
45bc6: 661e bnes 45be6 <unlink+0xf2> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45bc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45bca: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_parentloc )
45bcc: 588f addql #4,%sp <== NOT EXECUTED
45bce: 4a04 tstb %d4 <== NOT EXECUTED
45bd0: 6706 beqs 45bd8 <unlink+0xe4> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
45bd2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45bd4: 4e92 jsr %a2@ <== NOT EXECUTED
45bd6: 588f addql #4,%sp <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EISDIR );
45bd8: 4eb9 0005 010c jsr 5010c <__errno> <== NOT EXECUTED
45bde: 2040 moveal %d0,%a0 <== NOT EXECUTED
45be0: 7015 moveq #21,%d0 <== NOT EXECUTED
45be2: 2080 movel %d0,%a0@ <== NOT EXECUTED
45be4: 6024 bras 45c0a <unlink+0x116> <== NOT EXECUTED
}
result = (*loc.ops->unlink_h)( &parentloc, &loc );
45be6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45be8: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
45bec: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45bee: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
45bf2: 4e90 jsr %a0@ <== NOT EXECUTED
45bf4: 2a00 movel %d0,%d5 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45bf6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45bf8: 4e92 jsr %a2@ <== NOT EXECUTED
if ( free_parentloc )
45bfa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
45bfe: 4a04 tstb %d4 <== NOT EXECUTED
45c00: 670a beqs 45c0c <unlink+0x118> <== NOT EXECUTED
rtems_filesystem_freenode( &parentloc );
45c02: 2f03 movel %d3,%sp@- <== NOT EXECUTED
45c04: 4e92 jsr %a2@ <== NOT EXECUTED
45c06: 588f addql #4,%sp <== NOT EXECUTED
45c08: 6002 bras 45c0c <unlink+0x118> <== NOT EXECUTED
result = rtems_filesystem_evaluate_relative_path( name , strlen( name ),
0, &loc, false );
if ( result != 0 ) {
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return -1;
45c0a: 7aff moveq #-1,%d5 <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
if ( free_parentloc )
rtems_filesystem_freenode( &parentloc );
return result;
}
45c0c: 2005 movel %d5,%d0 <== NOT EXECUTED
45c0e: 4cee 0c3c ffbc moveml %fp@(-68),%d2-%d5/%a2-%a3 <== NOT EXECUTED
45c14: 4e5e unlk %fp <== NOT EXECUTED
00045e68 <unmount>:
*/
int unmount(
const char *path
)
{
45e68: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
45e6c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
45e70: 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 ) )
45e74: 7401 moveq #1,%d2 <== NOT EXECUTED
45e76: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45e78: 4eb9 0004 ed48 jsr 4ed48 <strlen> <== NOT EXECUTED
45e7e: 2e82 movel %d2,%sp@ <== NOT EXECUTED
45e80: 240e movel %fp,%d2 <== NOT EXECUTED
45e82: 0682 ffff ffec addil #-20,%d2 <== NOT EXECUTED
45e88: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45e8a: 42a7 clrl %sp@- <== NOT EXECUTED
45e8c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45e8e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45e90: 4eb9 0004 3370 jsr 43370 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
45e96: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45e9a: 4a80 tstl %d0 <== NOT EXECUTED
45e9c: 6600 00e8 bnew 45f86 <unmount+0x11e> <== NOT EXECUTED
return -1;
mt_entry = loc.mt_entry;
45ea0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
45ea4: 47f9 0004 343c lea 4343c <rtems_filesystem_freenode>,%a3 <== NOT EXECUTED
/*
* Verify this is the root node for the file system to be unmounted.
*/
if ( fs_root_loc->node_access != loc.node_access ){
45eaa: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
45eae: b0aa 001c cmpl %a2@(28),%d0 <== NOT EXECUTED
45eb2: 6716 beqs 45eca <unmount+0x62> <== NOT EXECUTED
rtems_filesystem_freenode( &loc );
45eb4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45eb6: 4e93 jsr %a3@ <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EACCES );
45eb8: 4eb9 0004 d854 jsr 4d854 <__errno> <== NOT EXECUTED
45ebe: 588f addql #4,%sp <== NOT EXECUTED
45ec0: 720d moveq #13,%d1 <== NOT EXECUTED
45ec2: 2040 moveal %d0,%a0 <== NOT EXECUTED
45ec4: 2081 movel %d1,%a0@ <== NOT EXECUTED
45ec6: 6000 00be braw 45f86 <unmount+0x11e> <== NOT EXECUTED
/*
* Free the loc node and just use the nodes from the mt_entry .
*/
rtems_filesystem_freenode( &loc );
45eca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45ecc: 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 )
45ece: 2079 0005 e3d4 moveal 5e3d4 <rtems_current_user_env>,%a0 <== NOT EXECUTED
45ed4: 588f addql #4,%sp <== NOT EXECUTED
45ed6: b5e8 0014 cmpal %a0@(20),%a2 <== NOT EXECUTED
45eda: 6724 beqs 45f00 <unmount+0x98> <== NOT EXECUTED
/*
* Verify there are no file systems below the path specified
*/
if ( rtems_filesystem_mount_iterate( is_fs_below_mount_point,
45edc: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
45ee0: 487a ff6e pea %pc@(45e50 <is_fs_below_mount_point>) <== NOT EXECUTED
45ee4: 4eb9 0004 3c1e jsr 43c1e <rtems_filesystem_mount_iterate> <== NOT EXECUTED
45eea: 508f addql #8,%sp <== NOT EXECUTED
45eec: 4a00 tstb %d0 <== NOT EXECUTED
45eee: 6610 bnes 45f00 <unmount+0x98> <== 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 )
45ef0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45ef2: 4eb9 0004 3788 jsr 43788 <rtems_libio_is_open_files_in_fs> <== NOT EXECUTED
45ef8: 588f addql #4,%sp <== NOT EXECUTED
45efa: 7201 moveq #1,%d1 <== NOT EXECUTED
45efc: b280 cmpl %d0,%d1 <== NOT EXECUTED
45efe: 660e bnes 45f0e <unmount+0xa6> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EBUSY );
45f00: 4eb9 0004 d854 jsr 4d854 <__errno> <== NOT EXECUTED
45f06: 2040 moveal %d0,%a0 <== NOT EXECUTED
45f08: 7010 moveq #16,%d0 <== NOT EXECUTED
45f0a: 2080 movel %d0,%a0@ <== NOT EXECUTED
45f0c: 6078 bras 45f86 <unmount+0x11e> <== 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 )
45f0e: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
45f12: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f14: 2068 0028 moveal %a0@(40),%a0 <== NOT EXECUTED
45f18: 4e90 jsr %a0@ <== NOT EXECUTED
45f1a: 588f addql #4,%sp <== NOT EXECUTED
45f1c: 4a80 tstl %d0 <== NOT EXECUTED
45f1e: 6666 bnes 45f86 <unmount+0x11e> <== 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){
45f20: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
45f24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f26: 2068 002c moveal %a0@(44),%a0 <== NOT EXECUTED
45f2a: 4e90 jsr %a0@ <== NOT EXECUTED
45f2c: 588f addql #4,%sp <== NOT EXECUTED
45f2e: 4a80 tstl %d0 <== NOT EXECUTED
45f30: 671a beqs 45f4c <unmount+0xe4> <== NOT EXECUTED
if (( fs_mount_loc->ops->mount_h )( mt_entry ) != 0 )
45f32: 206a 0014 moveal %a2@(20),%a0 <== NOT EXECUTED
45f36: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f38: 2068 0020 moveal %a0@(32),%a0 <== NOT EXECUTED
45f3c: 4e90 jsr %a0@ <== NOT EXECUTED
45f3e: 588f addql #4,%sp <== NOT EXECUTED
45f40: 4a80 tstl %d0 <== NOT EXECUTED
45f42: 6742 beqs 45f86 <unmount+0x11e> <== NOT EXECUTED
rtems_fatal_error_occurred( 0 );
45f44: 42a7 clrl %sp@- <== NOT EXECUTED
45f46: 4eb9 0004 6e84 jsr 46e84 <rtems_fatal_error_occurred> <== 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 );
45f4c: 42a7 clrl %sp@- <== NOT EXECUTED
45f4e: 42a7 clrl %sp@- <== NOT EXECUTED
45f50: 2f39 0005 fa5c movel 5fa5c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
45f56: 4eb9 0004 6824 jsr 46824 <rtems_semaphore_obtain> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void rtems_chain_extract(
rtems_chain_node *the_node
)
{
_Chain_Extract( the_node );
45f5c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f5e: 4eb9 0004 71d0 jsr 471d0 <_Chain_Extract> <== NOT EXECUTED
}
static inline void rtems_libio_unlock( void )
{
rtems_semaphore_release( rtems_libio_semaphore );
45f64: 2f39 0005 fa5c movel 5fa5c <rtems_libio_semaphore>,%sp@- <== NOT EXECUTED
45f6a: 4eb9 0004 692c jsr 4692c <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 );
45f70: 486a 0008 pea %a2@(8) <== NOT EXECUTED
45f74: 4e93 jsr %a3@ <== NOT EXECUTED
free( mt_entry );
45f76: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f78: 4eb9 0004 3450 jsr 43450 <free> <== NOT EXECUTED
return 0;
45f7e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
45f82: 4280 clrl %d0 <== NOT EXECUTED
45f84: 6002 bras 45f88 <unmount+0x120> <== 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;
45f86: 70ff moveq #-1,%d0 <== NOT EXECUTED
rtems_filesystem_freenode( fs_mount_loc );
free( mt_entry );
return 0;
}
45f88: 4cee 0c04 ffe0 moveml %fp@(-32),%d2/%a2-%a3 <== NOT EXECUTED
45f8e: 4e5e unlk %fp <== NOT EXECUTED
...
00045f44 <utime>:
int utime(
const char *path,
const struct utimbuf *times
)
{
45f44: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
45f48: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45f4a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
45f4e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45f50: 242e 0008 movel %fp@(8),%d2 <== 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 ) )
45f54: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45f56: 4eb9 0004 f958 jsr 4f958 <strlen> <== NOT EXECUTED
45f5c: 7201 moveq #1,%d1 <== NOT EXECUTED
45f5e: 2e81 movel %d1,%sp@ <== NOT EXECUTED
45f60: 486e ffe4 pea %fp@(-28) <== NOT EXECUTED
45f64: 42a7 clrl %sp@- <== NOT EXECUTED
45f66: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45f68: 2f02 movel %d2,%sp@- <== NOT EXECUTED
45f6a: 4eb9 0004 3010 jsr 43010 <rtems_filesystem_evaluate_path> <== NOT EXECUTED
45f70: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
45f74: 4a80 tstl %d0 <== NOT EXECUTED
45f76: 6646 bnes 45fbe <utime+0x7a> <== NOT EXECUTED
return -1;
if ( times == NULL ) {
45f78: 4a8a tstl %a2 <== NOT EXECUTED
45f7a: 6616 bnes 45f92 <utime+0x4e> <== NOT EXECUTED
now.actime = now.modtime = time( NULL );
45f7c: 42a7 clrl %sp@- <== NOT EXECUTED
times = &now;
45f7e: 45ee fff8 lea %fp@(-8),%a2 <== 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 );
45f82: 4eb9 0005 1c20 jsr 51c20 <time> <== NOT EXECUTED
45f88: 588f addql #4,%sp <== NOT EXECUTED
45f8a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
45f8e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
times = &now;
}
result = (*temp_loc.ops->utime_h)( &temp_loc, times->actime, times->modtime );
45f92: 2f2a 0004 movel %a2@(4),%sp@- <== NOT EXECUTED
45f96: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
45f98: 45ee ffe4 lea %fp@(-28),%a2 <== NOT EXECUTED
45f9c: 206e fff0 moveal %fp@(-16),%a0 <== NOT EXECUTED
45fa0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45fa2: 2068 0030 moveal %a0@(48),%a0 <== NOT EXECUTED
45fa6: 4e90 jsr %a0@ <== NOT EXECUTED
rtems_filesystem_freenode( &temp_loc );
45fa8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
45faa: 2d40 ffe0 movel %d0,%fp@(-32) <== NOT EXECUTED
45fae: 4eb9 0004 3394 jsr 43394 <rtems_filesystem_freenode> <== NOT EXECUTED
return result;
45fb4: 202e ffe0 movel %fp@(-32),%d0 <== NOT EXECUTED
45fb8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
45fbc: 6002 bras 45fc0 <utime+0x7c> <== 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;
45fbe: 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;
}
45fc0: 242e ffd8 movel %fp@(-40),%d2 <== NOT EXECUTED
45fc4: 246e ffdc moveal %fp@(-36),%a2 <== NOT EXECUTED
45fc8: 4e5e unlk %fp <== NOT EXECUTED
00045fcc <utimes>:
int utimes(
const char *path,
const struct timeval times[2]
)
{
45fcc: 43f9 0004 5f44 lea 45f44 <utime>,%a1 <== NOT EXECUTED
45fd2: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
45fd6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45fda: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
struct utimbuf timeinsecs;
if ( times == NULL )
45fde: 4a88 tstl %a0 <== NOT EXECUTED
45fe0: 6604 bnes 45fe6 <utimes+0x1a> <== NOT EXECUTED
return utime( path, NULL );
45fe2: 42a7 clrl %sp@- <== NOT EXECUTED
45fe4: 600e bras 45ff4 <utimes+0x28> <== NOT EXECUTED
timeinsecs.actime = (time_t) times[0].tv_sec;
45fe6: 2d50 fff8 movel %a0@,%fp@(-8) <== NOT EXECUTED
timeinsecs.modtime = (time_t) times[1].tv_sec;
45fea: 2d68 0008 fffc movel %a0@(8),%fp@(-4) <== NOT EXECUTED
return utime( path, &timeinsecs );
45ff0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
45ff4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45ff6: 4e91 jsr %a1@ <== NOT EXECUTED
45ff8: 508f addql #8,%sp <== NOT EXECUTED
}
45ffa: 4e5e unlk %fp <== NOT EXECUTED
...
000455a8 <vfork>:
#include <unistd.h>
pid_t vfork(void)
{
return -1;
}
455a8: 70ff moveq #-1,%d0 <== NOT EXECUTED
#include <sys/types.h>
#include <unistd.h>
pid_t vfork(void)
{
455aa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return -1;
}
455ae: 4e5e unlk %fp <== NOT EXECUTED
...
00044d64 <vprintk>:
*/
void vprintk(
const char *fmt,
va_list ap
)
{
44d64: 4e56 ffc4 linkw %fp,#-60
44d68: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
if ( sign && (num < 0) ) {
BSP_output_char('-');
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
} else {
unsigned_num = (unsigned long) num;
44d6c: 2c0e movel %fp,%d6
44d6e: 0686 ffff ffec addil #-20,%d6
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)])]);
44d74: 49f9 0005 b2d1 lea 5b2d1 <rtems_filesystem_default_pathconf+0xb5>,%a4
*/
void vprintk(
const char *fmt,
va_list ap
)
{
44d7a: 266e 0008 moveal %fp@(8),%a3
44d7e: 246e 000c moveal %fp@(12),%a2
for (; *fmt != '\0'; fmt++) {
44d82: 6000 022a braw 44fae <vprintk+0x24a>
bool minus = false;
bool sign = false;
char lead = ' ';
char c;
if (*fmt != '%') {
44d86: 49c0 extbl %d0
44d88: 7225 moveq #37,%d1
44d8a: b280 cmpl %d0,%d1
44d8c: 6600 0162 bnew 44ef0 <vprintk+0x18c>
BSP_output_char(*fmt);
continue;
}
fmt++;
44d90: 528b addql #1,%a3
if (*fmt == '0' ) {
44d92: 7430 moveq #48,%d2
44d94: 1013 moveb %a3@,%d0
44d96: 49c0 extbl %d0
44d98: b480 cmpl %d0,%d2
44d9a: 6608 bnes 44da4 <vprintk+0x40> <== ALWAYS TAKEN
lead = '0';
fmt++;
44d9c: 528b addql #1,%a3 <== NOT EXECUTED
BSP_output_char(*fmt);
continue;
}
fmt++;
if (*fmt == '0' ) {
lead = '0';
44d9e: 3a7c 0030 moveaw #48,%a5 <== NOT EXECUTED
44da2: 6004 bras 44da8 <vprintk+0x44> <== NOT EXECUTED
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
bool sign = false;
char lead = ' ';
44da4: 3a7c 0020 moveaw #32,%a5
fmt++;
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
44da8: 782d moveq #45,%d4
44daa: 1013 moveb %a3@,%d0
44dac: 49c0 extbl %d0
44dae: b880 cmpl %d0,%d4
44db0: 6606 bnes 44db8 <vprintk+0x54> <== ALWAYS TAKEN
minus = true;
fmt++;
44db2: 528b addql #1,%a3 <== NOT EXECUTED
if (*fmt == '0' ) {
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
44db4: 7a01 moveq #1,%d5 <== NOT EXECUTED
44db6: 6002 bras 44dba <vprintk+0x56> <== NOT EXECUTED
{
for (; *fmt != '\0'; fmt++) {
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
44db8: 4205 clrb %d5
lead = '0';
fmt++;
}
if (*fmt == '-' ) {
minus = true;
fmt++;
44dba: 200b movel %a3,%d0
{
for (; *fmt != '\0'; fmt++) {
unsigned base = 0;
unsigned width = 0;
bool lflag = false;
bool minus = false;
44dbc: 4283 clrl %d3
44dbe: 6010 bras 44dd0 <vprintk+0x6c>
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
width *= 10;
44dc0: 2e03 movel %d3,%d7 <== NOT EXECUTED
44dc2: e78f lsll #3,%d7 <== NOT EXECUTED
44dc4: 2047 moveal %d7,%a0 <== NOT EXECUTED
44dc6: 41f0 3a00 lea %a0@(00000000,%d3:l:2),%a0 <== NOT EXECUTED
width += ((unsigned) *fmt - '0');
44dca: 41f0 48d0 lea %a0@(ffffffd0,%d4:l),%a0 <== NOT EXECUTED
44dce: 2608 movel %a0,%d3 <== NOT EXECUTED
44dd0: 2640 moveal %d0,%a3
}
if (*fmt == '-' ) {
minus = true;
fmt++;
}
while (*fmt >= '0' && *fmt <= '9' ) {
44dd2: 4281 clrl %d1
44dd4: 5280 addql #1,%d0
44dd6: 1413 moveb %a3@,%d2
44dd8: 2e02 movel %d2,%d7
44dda: 0687 ffff ffd0 addil #-48,%d7
44de0: 1207 moveb %d7,%d1
44de2: 7e09 moveq #9,%d7
44de4: 1802 moveb %d2,%d4
44de6: 49c4 extbl %d4
44de8: be81 cmpl %d1,%d7
44dea: 64d4 bccs 44dc0 <vprintk+0x5c> <== NEVER TAKEN
44dec: 2e03 movel %d3,%d7
width *= 10;
width += ((unsigned) *fmt - '0');
fmt++;
}
if ((c = *fmt) == 'l') {
44dee: 726c moveq #108,%d1
44df0: b284 cmpl %d4,%d1
44df2: 6604 bnes 44df8 <vprintk+0x94> <== ALWAYS TAKEN
lflag = true;
c = *++fmt;
44df4: 2640 moveal %d0,%a3 <== NOT EXECUTED
44df6: 1413 moveb %a3@,%d2 <== NOT EXECUTED
}
if ( c == 'c' ) {
44df8: 7863 moveq #99,%d4
44dfa: 1002 moveb %d2,%d0
44dfc: 49c0 extbl %d0
44dfe: b880 cmpl %d0,%d4
44e00: 6618 bnes 44e1a <vprintk+0xb6>
/* need a cast here since va_arg() only takes fully promoted types */
char chr = (char) va_arg(ap, int);
44e02: 2012 movel %a2@,%d0
BSP_output_char(chr);
44e04: 49c0 extbl %d0
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);
44e06: 280a movel %a2,%d4
44e08: 5884 addql #4,%d4
BSP_output_char(chr);
44e0a: 2f00 movel %d0,%sp@-
44e0c: 2079 0005 c2a0 moveal 5c2a0 <BSP_output_char>,%a0
44e12: 4e90 jsr %a0@
continue;
44e14: 588f addql #4,%sp
44e16: 6000 0192 braw 44faa <vprintk+0x246>
}
if ( c == 's' ) {
44e1a: 7873 moveq #115,%d4
44e1c: b880 cmpl %d0,%d4
44e1e: 667a bnes 44e9a <vprintk+0x136>
unsigned i, len;
char *s, *str;
str = va_arg(ap, char *);
44e20: 280a movel %a2,%d4
44e22: 5884 addql #4,%d4
44e24: 2452 moveal %a2@,%a2
if ( str == NULL ) {
44e26: 4a8a tstl %a2
44e28: 6606 bnes 44e30 <vprintk+0xcc> <== ALWAYS TAKEN
str = "";
44e2a: 45f9 0005 b2d0 lea 5b2d0 <rtems_filesystem_default_pathconf+0xb4>,%a2<== NOT EXECUTED
}
/* calculate length of string */
for ( len=0, s=str ; *s ; len++, s++ )
44e30: 204a moveal %a2,%a0
44e32: 4282 clrl %d2
44e34: 6002 bras 44e38 <vprintk+0xd4>
44e36: 5282 addql #1,%d2
44e38: 4a18 tstb %a0@+
44e3a: 66fa bnes 44e36 <vprintk+0xd2>
;
/* leading spaces */
if ( !minus )
44e3c: 4a05 tstb %d5
44e3e: 6618 bnes 44e58 <vprintk+0xf4> <== NEVER TAKEN
44e40: 2e02 movel %d2,%d7
44e42: 6010 bras 44e54 <vprintk+0xf0>
for ( i=len ; i<width ; i++ )
BSP_output_char(' ');
44e44: 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++ )
44e48: 5287 addql #1,%d7 <== NOT EXECUTED
BSP_output_char(' ');
44e4a: 2079 0005 c2a0 moveal 5c2a0 <BSP_output_char>,%a0 <== NOT EXECUTED
44e50: 4e90 jsr %a0@ <== NOT EXECUTED
for ( len=0, s=str ; *s ; len++, s++ )
;
/* leading spaces */
if ( !minus )
for ( i=len ; i<width ; i++ )
44e52: 588f addql #4,%sp <== NOT EXECUTED
44e54: b687 cmpl %d7,%d3
44e56: 62ec bhis 44e44 <vprintk+0xe0> <== NEVER TAKEN
BSP_output_char(' ');
/* no width option */
if (width == 0) {
44e58: 4a83 tstl %d3
44e5a: 6616 bnes 44e72 <vprintk+0x10e> <== NEVER TAKEN
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
44e5c: 4a82 tstl %d2
44e5e: 6718 beqs 44e78 <vprintk+0x114>
44e60: 2602 movel %d2,%d3
44e62: 600e bras 44e72 <vprintk+0x10e>
BSP_output_char(*str);
44e64: 49c0 extbl %d0
44e66: 2079 0005 c2a0 moveal 5c2a0 <BSP_output_char>,%a0
44e6c: 2f00 movel %d0,%sp@-
44e6e: 4e90 jsr %a0@
44e70: 588f addql #4,%sp
if (width == 0) {
width = len;
}
/* output the string */
for ( i=0 ; i<width && *str ; str++ )
44e72: 101a moveb %a2@+,%d0
44e74: 66ee bnes 44e64 <vprintk+0x100>
44e76: 6002 bras 44e7a <vprintk+0x116>
44e78: 2602 movel %d2,%d3
BSP_output_char(*str);
/* trailing spaces */
if ( minus )
44e7a: 4a05 tstb %d5
44e7c: 6700 012c beqw 44faa <vprintk+0x246>
44e80: 6010 bras 44e92 <vprintk+0x12e> <== NOT EXECUTED
for ( i=len ; i<width ; i++ )
BSP_output_char(' ');
44e82: 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++ )
44e86: 5282 addql #1,%d2 <== NOT EXECUTED
BSP_output_char(' ');
44e88: 2079 0005 c2a0 moveal 5c2a0 <BSP_output_char>,%a0 <== NOT EXECUTED
44e8e: 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++ )
44e90: 588f addql #4,%sp <== NOT EXECUTED
44e92: b682 cmpl %d2,%d3 <== NOT EXECUTED
44e94: 62ec bhis 44e82 <vprintk+0x11e> <== NOT EXECUTED
44e96: 6000 0112 braw 44faa <vprintk+0x246> <== NOT EXECUTED
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
44e9a: 786f moveq #111,%d4
44e9c: b880 cmpl %d0,%d4
44e9e: 6762 beqs 44f02 <vprintk+0x19e> <== NEVER TAKEN
44ea0: 183c 004f moveb #79,%d4
44ea4: b880 cmpl %d0,%d4
44ea6: 675a beqs 44f02 <vprintk+0x19e> <== NEVER TAKEN
base = 8; sign = false;
} else if ( c == 'i' || c == 'I' ||
44ea8: 183c 0069 moveb #105,%d4
44eac: b880 cmpl %d0,%d4
44eae: 6758 beqs 44f08 <vprintk+0x1a4> <== NEVER TAKEN
44eb0: 183c 0049 moveb #73,%d4
44eb4: b880 cmpl %d0,%d4
44eb6: 6750 beqs 44f08 <vprintk+0x1a4> <== NEVER TAKEN
44eb8: 183c 0064 moveb #100,%d4
44ebc: b880 cmpl %d0,%d4
44ebe: 6748 beqs 44f08 <vprintk+0x1a4> <== ALWAYS TAKEN
c == 'd' || c == 'D' ) {
44ec0: 183c 0044 moveb #68,%d4 <== NOT EXECUTED
44ec4: b880 cmpl %d0,%d4 <== NOT EXECUTED
44ec6: 6740 beqs 44f08 <vprintk+0x1a4> <== NOT EXECUTED
base = 10; sign = true;
} else if ( c == 'u' || c == 'U' ) {
44ec8: 183c 0075 moveb #117,%d4 <== NOT EXECUTED
44ecc: b880 cmpl %d0,%d4 <== NOT EXECUTED
44ece: 673c beqs 44f0c <vprintk+0x1a8> <== NOT EXECUTED
44ed0: 183c 0055 moveb #85,%d4 <== NOT EXECUTED
44ed4: b880 cmpl %d0,%d4 <== NOT EXECUTED
44ed6: 6734 beqs 44f0c <vprintk+0x1a8> <== NOT EXECUTED
base = 10; sign = false;
} else if ( c == 'x' || c == 'X' ) {
44ed8: 1002 moveb %d2,%d0 <== NOT EXECUTED
44eda: 7478 moveq #120,%d2 <== NOT EXECUTED
44edc: 49c0 extbl %d0 <== NOT EXECUTED
44ede: b480 cmpl %d0,%d2 <== NOT EXECUTED
44ee0: 6730 beqs 44f12 <vprintk+0x1ae> <== NOT EXECUTED
44ee2: 183c 0058 moveb #88,%d4 <== NOT EXECUTED
44ee6: b880 cmpl %d0,%d4 <== NOT EXECUTED
44ee8: 6728 beqs 44f12 <vprintk+0x1ae> <== NOT EXECUTED
base = 16; sign = false;
} else if ( c == 'p' ) {
44eea: 7270 moveq #112,%d1 <== NOT EXECUTED
44eec: b280 cmpl %d0,%d1 <== NOT EXECUTED
44eee: 6722 beqs 44f12 <vprintk+0x1ae> <== NOT EXECUTED
base = 16; sign = false; lflag = true;
} else {
BSP_output_char(c);
44ef0: 2f00 movel %d0,%sp@-
44ef2: 2079 0005 c2a0 moveal 5c2a0 <BSP_output_char>,%a0
continue;
44ef8: 280a movel %a2,%d4
} 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);
44efa: 4e90 jsr %a0@
continue;
44efc: 588f addql #4,%sp
44efe: 6000 00aa braw 44faa <vprintk+0x246>
continue;
}
/* must be a numeric format or something unsupported */
if ( c == 'o' || c == 'O' ) {
base = 8; sign = false;
44f02: 7408 moveq #8,%d2 <== NOT EXECUTED
44f04: 4200 clrb %d0 <== NOT EXECUTED
44f06: 600e bras 44f16 <vprintk+0x1b2> <== NOT EXECUTED
} else if ( c == 'i' || c == 'I' ||
c == 'd' || c == 'D' ) {
base = 10; sign = true;
44f08: 7001 moveq #1,%d0
44f0a: 6002 bras 44f0e <vprintk+0x1aa>
} else if ( c == 'u' || c == 'U' ) {
base = 10; sign = false;
44f0c: 4200 clrb %d0 <== NOT EXECUTED
44f0e: 740a moveq #10,%d2
44f10: 6004 bras 44f16 <vprintk+0x1b2>
} else if ( c == 'x' || c == 'X' ) {
base = 16; sign = false;
} else if ( c == 'p' ) {
base = 16; sign = false; lflag = true;
44f12: 7410 moveq #16,%d2 <== NOT EXECUTED
44f14: 4200 clrb %d0 <== NOT EXECUTED
} else {
BSP_output_char(c);
continue;
}
printNum(
44f16: 2a12 movel %a2@,%d5
44f18: 380d movew %a5,%d4
44f1a: 49c4 extbl %d4
44f1c: 2a44 moveal %d4,%a5
44f1e: 280a movel %a2,%d4
44f20: 5884 addql #4,%d4
unsigned long unsigned_num;
unsigned long n;
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
44f22: 4a00 tstb %d0
44f24: 6720 beqs 44f46 <vprintk+0x1e2> <== NEVER TAKEN
44f26: 4a85 tstl %d5
44f28: 6c1c bges 44f46 <vprintk+0x1e2> <== ALWAYS TAKEN
BSP_output_char('-');
44f2a: 4878 002d pea 2d <OPER2+0x19> <== NOT EXECUTED
44f2e: 2079 0005 c2a0 moveal 5c2a0 <BSP_output_char>,%a0 <== NOT EXECUTED
44f34: 4e90 jsr %a0@ <== NOT EXECUTED
unsigned_num = (unsigned long) -num;
if (maxwidth) maxwidth--;
44f36: 588f addql #4,%sp <== NOT EXECUTED
unsigned count;
char toPrint[20];
if ( sign && (num < 0) ) {
BSP_output_char('-');
unsigned_num = (unsigned long) -num;
44f38: 2005 movel %d5,%d0 <== NOT EXECUTED
44f3a: 4480 negl %d0 <== NOT EXECUTED
if (maxwidth) maxwidth--;
44f3c: 4a83 tstl %d3 <== NOT EXECUTED
44f3e: 670a beqs 44f4a <vprintk+0x1e6> <== NOT EXECUTED
44f40: 2e03 movel %d3,%d7 <== NOT EXECUTED
44f42: 5387 subql #1,%d7 <== NOT EXECUTED
44f44: 6004 bras 44f4a <vprintk+0x1e6> <== NOT EXECUTED
} else {
unsigned_num = (unsigned long) num;
44f46: 2005 movel %d5,%d0
44f48: 2e03 movel %d3,%d7
44f4a: 2046 moveal %d6,%a0
}
count = 0;
44f4c: 4281 clrl %d1
while ((n = unsigned_num / base) > 0) {
toPrint[count++] = (char) (unsigned_num - (n * base));
44f4e: 3242 moveaw %d2,%a1
44f50: 600c bras 44f5e <vprintk+0x1fa>
44f52: 3209 movew %a1,%d1
44f54: c3c5 mulsw %d5,%d1
44f56: 9081 subl %d1,%d0
44f58: 2203 movel %d3,%d1
44f5a: 10c0 moveb %d0,%a0@+
44f5c: 2005 movel %d5,%d0
} else {
unsigned_num = (unsigned long) num;
}
count = 0;
while ((n = unsigned_num / base) > 0) {
44f5e: 2a00 movel %d0,%d5
44f60: 4c42 5005 remul %d2,%d5,%d5
44f64: 2601 movel %d1,%d3
44f66: 5283 addql #1,%d3
44f68: 4a85 tstl %d5
44f6a: 66e6 bnes 44f52 <vprintk+0x1ee>
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
44f6c: 2407 movel %d7,%d2
count = 0;
while ((n = unsigned_num / base) > 0) {
toPrint[count++] = (char) (unsigned_num - (n * base));
unsigned_num = n;
}
toPrint[count++] = (char) unsigned_num;
44f6e: 1d80 18ec moveb %d0,%fp@(ffffffec,%d1:l)
44f72: 600e bras 44f82 <vprintk+0x21e>
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
44f74: 2f0d movel %a5,%sp@- <== NOT EXECUTED
44f76: 2079 0005 c2a0 moveal 5c2a0 <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-- )
44f7c: 5382 subql #1,%d2 <== NOT EXECUTED
BSP_output_char(lead);
44f7e: 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-- )
44f80: 588f addql #4,%sp <== NOT EXECUTED
44f82: b682 cmpl %d2,%d3
44f84: 65ee bcss 44f74 <vprintk+0x210> <== NEVER TAKEN
* console is not yet initialized or in ISR's.
*
* Arguments:
* as in printf: fmt - format string, ... - unnamed arguments.
*/
void vprintk(
44f86: 2446 moveal %d6,%a2
44f88: d5c3 addal %d3,%a2
44f8a: 4282 clrl %d2
44f8c: 6018 bras 44fa6 <vprintk+0x242>
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)])]);
44f8e: 2079 0005 c2a0 moveal 5c2a0 <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++) {
44f94: 5282 addql #1,%d2
BSP_output_char("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);
44f96: 1022 moveb %a2@-,%d0
44f98: 49c0 extbl %d0
44f9a: 1034 0800 moveb %a4@(00000000,%d0:l),%d0
44f9e: 49c0 extbl %d0
44fa0: 2f00 movel %d0,%sp@-
44fa2: 4e90 jsr %a0@
toPrint[count++] = (char) unsigned_num;
for (n=maxwidth ; n > count; n-- )
BSP_output_char(lead);
for (n = 0; n < count; n++) {
44fa4: 588f addql #4,%sp
44fa6: b682 cmpl %d2,%d3
44fa8: 62e4 bhis 44f8e <vprintk+0x22a>
void vprintk(
const char *fmt,
va_list ap
)
{
for (; *fmt != '\0'; fmt++) {
44faa: 528b addql #1,%a3
44fac: 2444 moveal %d4,%a2
44fae: 1013 moveb %a3@,%d0
44fb0: 6600 fdd4 bnew 44d86 <vprintk+0x22>
sign,
width,
lead
);
}
}
44fb4: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5
44fba: 4e5e unlk %fp
...
000455b4 <wait>:
#include <rtems/seterr.h>
int wait(
int *stat_loc
)
{
455b4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
455b8: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
455be: 4e5e unlk %fp <== NOT EXECUTED
int wait(
int *stat_loc
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
455c0: 2040 moveal %d0,%a0 <== NOT EXECUTED
455c2: 7058 moveq #88,%d0 <== NOT EXECUTED
455c4: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
455c6: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
000455cc <waitpid>:
int waitpid(
pid_t pid,
int *stat_loc,
int options
)
{
455cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( ENOSYS );
455d0: 4eb9 0004 d19c jsr 4d19c <__errno> <== NOT EXECUTED
}
455d6: 4e5e unlk %fp <== NOT EXECUTED
pid_t pid,
int *stat_loc,
int options
)
{
rtems_set_errno_and_return_minus_one( ENOSYS );
455d8: 2040 moveal %d0,%a0 <== NOT EXECUTED
455da: 7058 moveq #88,%d0 <== NOT EXECUTED
455dc: 2080 movel %d0,%a0@ <== NOT EXECUTED
}
455de: 70ff moveq #-1,%d0 <== NOT EXECUTED
...
00059fec <write>:
ssize_t write(
int fd,
const void *buffer,
size_t count
)
{
59fec: 4e56 fff4 linkw %fp,#-12
59ff0: 202e 0008 movel %fp@(8),%d0
59ff4: 222e 000c movel %fp@(12),%d1
59ff8: 206e 0010 moveal %fp@(16),%a0
59ffc: 48d7 040c moveml %d2-%d3/%a2,%sp@
ssize_t rc;
rtems_libio_t *iop;
rtems_libio_check_fd( fd );
5a000: b0b9 0005 c1a4 cmpl 5c1a4 <rtems_libio_number_iops>,%d0
5a006: 641a bccs 5a022 <write+0x36> <== NEVER TAKEN
iop = rtems_libio_iop( fd );
5a008: 2400 movel %d0,%d2
5a00a: ed88 lsll #6,%d0
5a00c: e78a lsll #3,%d2
5a00e: 2479 0005 d9b4 moveal 5d9b4 <rtems_libio_iops>,%a2
5a014: 9082 subl %d2,%d0
5a016: d5c0 addal %d0,%a2
rtems_libio_check_is_open( iop );
5a018: 202a 0014 movel %a2@(20),%d0
5a01c: 0800 0008 btst #8,%d0
5a020: 660e bnes 5a030 <write+0x44> <== ALWAYS TAKEN
5a022: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a028: 7209 moveq #9,%d1 <== NOT EXECUTED
5a02a: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a02c: 2081 movel %d1,%a0@ <== NOT EXECUTED
5a02e: 6018 bras 5a048 <write+0x5c> <== NOT EXECUTED
rtems_libio_check_buffer( buffer );
5a030: 4a81 tstl %d1
5a032: 6708 beqs 5a03c <write+0x50> <== NEVER TAKEN
rtems_libio_check_count( count );
5a034: 4a88 tstl %a0
5a036: 6742 beqs 5a07a <write+0x8e> <== NEVER TAKEN
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
5a038: 44c0 movew %d0,%ccr
5a03a: 6710 beqs 5a04c <write+0x60> <== ALWAYS TAKEN
5a03c: 4eb9 0004 c94c jsr 4c94c <__errno> <== NOT EXECUTED
5a042: 2040 moveal %d0,%a0 <== NOT EXECUTED
5a044: 7016 moveq #22,%d0 <== NOT EXECUTED
5a046: 2080 movel %d0,%a0@ <== NOT EXECUTED
5a048: 70ff moveq #-1,%d0 <== NOT EXECUTED
5a04a: 6030 bras 5a07c <write+0x90> <== NOT EXECUTED
/*
* Now process the write() request.
*/
rc = (*iop->pathinfo.handlers->write_h)( iop, buffer, count );
5a04c: 226a 0020 moveal %a2@(32),%a1
5a050: 2f08 movel %a0,%sp@-
5a052: 2f01 movel %d1,%sp@-
5a054: 2f0a movel %a2,%sp@-
5a056: 2069 000c moveal %a1@(12),%a0
5a05a: 4e90 jsr %a0@
if ( rc > 0 )
5a05c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5a060: 4a80 tstl %d0 <== NOT EXECUTED
5a062: 6f18 bles 5a07c <write+0x90> <== NOT EXECUTED
iop->offset += rc;
5a064: 2400 movel %d0,%d2 <== NOT EXECUTED
5a066: 5bc1 smi %d1 <== NOT EXECUTED
5a068: 49c1 extbl %d1 <== NOT EXECUTED
5a06a: d5aa 0010 addl %d2,%a2@(16) <== NOT EXECUTED
5a06e: 262a 000c movel %a2@(12),%d3 <== NOT EXECUTED
5a072: d781 addxl %d1,%d3 <== NOT EXECUTED
5a074: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
5a078: 6002 bras 5a07c <write+0x90> <== 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 );
5a07a: 4280 clrl %d0 <== NOT EXECUTED
if ( rc > 0 )
iop->offset += rc;
return rc;
}
5a07c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
5a082: 4e5e unlk %fp <== NOT EXECUTED
...
00045f80 <writev>:
ssize_t writev(
int fd,
const struct iovec *iov,
int iovcnt
)
{
45f80: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
45f84: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
45f88: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
45f8c: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
45f90: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
int bytes;
rtems_libio_t *iop;
ssize_t old;
bool all_zeros;
rtems_libio_check_fd( fd );
45f94: b0b9 0005 cc04 cmpl 5cc04 <rtems_libio_number_iops>,%d0 <== NOT EXECUTED
45f9a: 641a bccs 45fb6 <writev+0x36> <== NOT EXECUTED
iop = rtems_libio_iop( fd );
45f9c: 2200 movel %d0,%d1 <== NOT EXECUTED
45f9e: ed88 lsll #6,%d0 <== NOT EXECUTED
45fa0: e789 lsll #3,%d1 <== NOT EXECUTED
45fa2: 2679 0005 e414 moveal 5e414 <rtems_libio_iops>,%a3 <== NOT EXECUTED
45fa8: 9081 subl %d1,%d0 <== NOT EXECUTED
45faa: d7c0 addal %d0,%a3 <== NOT EXECUTED
rtems_libio_check_is_open( iop );
45fac: 202b 0014 movel %a3@(20),%d0 <== NOT EXECUTED
45fb0: 0800 0008 btst #8,%d0 <== NOT EXECUTED
45fb4: 6610 bnes 45fc6 <writev+0x46> <== NOT EXECUTED
45fb6: 4eb9 0004 d5c8 jsr 4d5c8 <__errno> <== NOT EXECUTED
45fbc: 7209 moveq #9,%d1 <== NOT EXECUTED
45fbe: 2040 moveal %d0,%a0 <== NOT EXECUTED
45fc0: 2081 movel %d1,%a0@ <== NOT EXECUTED
45fc2: 6000 00a4 braw 46068 <writev+0xe8> <== NOT EXECUTED
rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );
45fc6: 44c0 movew %d0,%ccr <== NOT EXECUTED
45fc8: 6636 bnes 46000 <writev+0x80> <== NOT EXECUTED
/*
* Argument validation on IO vector
*/
if ( !iov )
45fca: 4a8a tstl %a2 <== NOT EXECUTED
45fcc: 6732 beqs 46000 <writev+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt <= 0 )
45fce: 4a83 tstl %d3 <== NOT EXECUTED
45fd0: 6f2e bles 46000 <writev+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iovcnt > IOV_MAX )
45fd2: 0c83 0000 0400 cmpil #1024,%d3 <== NOT EXECUTED
45fd8: 6e26 bgts 46000 <writev+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
45fda: 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 )
45fdc: 93c9 subal %a1,%a1 <== NOT EXECUTED
45fde: 4281 clrl %d1 <== NOT EXECUTED
45fe0: 7001 moveq #1,%d0 <== NOT EXECUTED
45fe2: 6002 bras 45fe6 <writev+0x66> <== 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++ ) {
45fe4: 2202 movel %d2,%d1 <== 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 )
45fe6: 4a90 tstl %a0@ <== NOT EXECUTED
45fe8: 6716 beqs 46000 <writev+0x80> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
45fea: 2428 0004 movel %a0@(4),%d2 <== NOT EXECUTED
all_zeros = false;
45fee: 57c4 seq %d4 <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
45ff0: d481 addl %d1,%d2 <== NOT EXECUTED
*/
if ( iov[v].iov_base == 0 )
rtems_set_errno_and_return_minus_one( EINVAL );
if ( iov[v].iov_len )
all_zeros = false;
45ff2: c084 andl %d4,%d0 <== NOT EXECUTED
/* check for wrap */
old = total;
total += iov[v].iov_len;
if ( total < old || total > SSIZE_MAX )
45ff4: b282 cmpl %d2,%d1 <== NOT EXECUTED
45ff6: 6e08 bgts 46000 <writev+0x80> <== NOT EXECUTED
45ff8: 0c82 0000 7fff cmpil #32767,%d2 <== NOT EXECUTED
45ffe: 6f0e bles 4600e <writev+0x8e> <== NOT EXECUTED
rtems_set_errno_and_return_minus_one( EINVAL );
46000: 4eb9 0004 d5c8 jsr 4d5c8 <__errno> <== NOT EXECUTED
46006: 2040 moveal %d0,%a0 <== NOT EXECUTED
46008: 7016 moveq #22,%d0 <== NOT EXECUTED
4600a: 2080 movel %d0,%a0@ <== NOT EXECUTED
4600c: 605a bras 46068 <writev+0xe8> <== 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++ ) {
4600e: 5289 addql #1,%a1 <== NOT EXECUTED
46010: 5088 addql #8,%a0 <== NOT EXECUTED
46012: b689 cmpl %a1,%d3 <== NOT EXECUTED
46014: 6ece bgts 45fe4 <writev+0x64> <== NOT EXECUTED
}
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
46016: 4a00 tstb %d0 <== NOT EXECUTED
46018: 664a bnes 46064 <writev+0xe4> <== NOT EXECUTED
#include <sys/uio.h>
#include <rtems/libio_.h>
#include <rtems/seterr.h>
ssize_t writev(
4601a: 588a addql #4,%a2 <== NOT EXECUTED
4601c: 4284 clrl %d4 <== NOT EXECUTED
4601e: 4282 clrl %d2 <== NOT EXECUTED
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
/* all zero lengths has no effect */
if ( iov[v].iov_len == 0 )
46020: 2012 movel %a2@,%d0 <== NOT EXECUTED
46022: 6736 beqs 4605a <writev+0xda> <== NOT EXECUTED
continue;
bytes = (*iop->pathinfo.handlers->write_h)(
46024: 206b 0020 moveal %a3@(32),%a0 <== NOT EXECUTED
46028: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4602a: 2f2a fffc movel %a2@(-4),%sp@- <== NOT EXECUTED
4602e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
46030: 2068 000c moveal %a0@(12),%a0 <== NOT EXECUTED
46034: 4e90 jsr %a0@ <== NOT EXECUTED
iop,
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
46036: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4603a: 4a80 tstl %d0 <== NOT EXECUTED
4603c: 6d2a blts 46068 <writev+0xe8> <== NOT EXECUTED
return -1;
if ( bytes > 0 ) {
4603e: 6716 beqs 46056 <writev+0xd6> <== NOT EXECUTED
iop->offset += bytes;
total += bytes;
46040: d480 addl %d0,%d2 <== NOT EXECUTED
if ( bytes < 0 )
return -1;
if ( bytes > 0 ) {
iop->offset += bytes;
46042: 2c00 movel %d0,%d6 <== NOT EXECUTED
46044: 5bc5 smi %d5 <== NOT EXECUTED
46046: 49c5 extbl %d5 <== NOT EXECUTED
46048: ddab 0010 addl %d6,%a3@(16) <== NOT EXECUTED
4604c: 222b 000c movel %a3@(12),%d1 <== NOT EXECUTED
46050: d385 addxl %d5,%d1 <== NOT EXECUTED
46052: 2741 000c movel %d1,%a3@(12) <== NOT EXECUTED
total += bytes;
}
if (bytes != iov[ v ].iov_len)
46056: b092 cmpl %a2@,%d0 <== NOT EXECUTED
46058: 6610 bnes 4606a <writev+0xea> <== NOT EXECUTED
}
/*
* Now process the writev().
*/
for ( total=0, v=0 ; v < iovcnt ; v++ ) {
4605a: 5284 addql #1,%d4 <== NOT EXECUTED
4605c: 508a addql #8,%a2 <== NOT EXECUTED
4605e: b684 cmpl %d4,%d3 <== NOT EXECUTED
46060: 6ebe bgts 46020 <writev+0xa0> <== NOT EXECUTED
46062: 6006 bras 4606a <writev+0xea> <== NOT EXECUTED
/*
* A writev with all zeros is supposed to have no effect per OpenGroup.
*/
if ( all_zeros == true ) {
return 0;
46064: 4282 clrl %d2 <== NOT EXECUTED
46066: 6002 bras 4606a <writev+0xea> <== NOT EXECUTED
iov[v].iov_base,
iov[v].iov_len
);
if ( bytes < 0 )
return -1;
46068: 74ff moveq #-1,%d2 <== NOT EXECUTED
if (bytes != iov[ v ].iov_len)
break;
}
return total;
}
4606a: 2002 movel %d2,%d0 <== NOT EXECUTED
4606c: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
46072: 4e5e unlk %fp <== NOT EXECUTED
...